#MARCHintosh: The End is the Beginning

31 Mar 2024


In Friday’s post, I described how I’d tried various browsers, but MacWeb was the only one that could run on the very constrained setup I have. I was pleased to get something working, but the results were very basic. It looked like this was as far as I was going to get, but then I remembered one option that I’d not tried: NCSA Mosaic, the very first web browser I ever used (and one of the first anyone ever used).

Mosaic wasn’t the first browser, but it introduced a lot of features that now seem fundamental to the web: inline images, bookmarks, and history navigation. It was the first browser aimed at a broad user base, and was many people’s first experience of the web. Its preeminence was short-lived, however: a student working on the project (one Marc Andreessen) built on the foundations to make Netscape1, which marked the moment when then the web really exploded.

When I was an undergraduate, my usual haunt was the lab full of SparcStations and Windows/Netware PCs2. However, occasionally I’d pay a visit to the more general-use computer room on the floor below, which was intended not for Computer Scientists, but for students of all types to type up essays and check their email. There were more Windows PCs there, but there were also Macs, and it was on one of those that I think I first encountered both Mosaic and the web itself. This was a a long time ago, and I can’t recall the specific model of machine it was — I can’t even recall if the display was monochrome or colour — but I do recall a sense that the web was something very different, and something with a lot of potential.

Back in present day, it was a simple matter to find a period version of Mosaic on Macintosh Repository. Alas, the NCSA FTP archive they refer to no longer appears to be up, so I got it on to the SE via the SD card rather than Fetch, but once there it unpacked fine. I clicked on it with some trepidation, expecting it to fail with an error complaining about the lack of Open Transport, or requiring 8MB of RAM or a 68020, but… it worked! I entered the URL, and up came this site. After a short wait, it even rendered the #MARCHintosh GIF. The presentation was somewhat more polished than MacWeb as well — no CSS, obviously, but a usable if minimal view of the web.

Screenshot of Mosaic viewing this site

(One interesting note — by default, Mosaic doesn’t show the URL, just the page title. This was a controversial change when Chrome and Safari made it a couple of years back, but it turns out to have a very long pedigree.)

This is pretty much exactly what I was hoping for when I kicked off the project at the start of the month. It seems especially fitting that, in the end, the solution has come full circle to my own first steps on the web.

  1. Originally referred to internally as a Mosaic Killer, or for short Mozilla [back]

  2. It also had a few BBC Micros set up as terminals, and as time went on Windows was increasingly replaced by Linux on the PCs. [back]

#MARCHintosh: MacWeb

29 Mar 2024


We went away for a week mid-March, which put my MARCHintosh project on hold. However, we’re now back and caught up, and the Easter weekend presents a chance to pick it up with a few days left. After eliminating iCab (incompatible) and MacLynx (seems to work, but the default window is bigger than the 512x342 screen, making it unusable), I managed to have some success with MacWeb:

Screenshot of MacWeb viewing this site

This is plain old HTTP, of course — anything like modern TLS seems infeasible. Even then, I hit some problems initially. Some websites would work, but http://rob.rho.org.uk received a few hundred bytes but didn’t actually show a web page.

I suspected that this was a redirect, and confirmed this from the Apache logs, but couldn’t see why. The base domain, http://rho.org.uk, redirects to that one, but the request should be going to it directly. Then I remembered virtual hosts, which rely on the client sending a Host: header. This is required for HTTP 1.0, but it looks like MacWeb wasn’t being 100% compliant. In any case, once I’d figured this out, it was a simple matter to make the blog the default host, and we were off to the races.

As is apparent from the above screenshot, it’s not very racy. There’s no CSS, no images1, and some modern constructs (notably inline style and script tags) result in source being dumped into the document. However, the basics are there: headings, links, and so on. For a site like this one, with reasonable sensible and semantic HTML at its core, the backwards compatibility story is pretty good. It may be minimal, but I certainly count it as a win: browsing a website from 2024 on hardware that’s older than the web itself.

Side note: I made some progress on the screenshot issue; after a lot of failed attempts to get the screenshots working on modern macOS, and discovering that the obvious ways to convert them to GIFs in classic Mac OS are beyond an SE with 4MB and System 7.0, I’ve come up with a slightly better workflow:

  • Transfer the file to the SD card using the BlueSCSI Toolbox. As the SD card is formatted in FAT32, this loses the resource fork and type/creator codes.
  • Upload the file to a System 7.0 machine on Infinite Mac
  • Use ResEdit to set the type to PICT
  • Convert it into a GIF using Graphics Converter there
  • Download the result

This is far from ideal, but the result is a pixel-accurate image. I may revisit this rabbit hole at some point in the future, but for now I’m happy to move on to more interesting things.

  1. PNGs were obviously not going to happen, but I was hoping GIFs would work. For some reason, the ones I’m serving seem to be broken, but I’m not sure why. [back]

#MARCHintosh: Partial Success

10 Mar 2024

#MARCHinstosh I’ve not had much time to tinker since the start of the month, but in the time I have had I’ve had some partial success: the Mac SE is now talking to the Internet!

Screenshot of a successful MacTCP Ping

This turned out to be pretty straightforward, mainly following along with the instructions from BlueSCSI. The one wrinkle I hit was that I couldn’t mount the image with the drivers with the software I had. I worked around this by duping it to an actual, honest-to-goodness 3.5” floppy disk. Running from that, everything went smoothly, and pretty soon MacTCP was talking to my router, and from there the world.

So, why am I only calling this a partial success? While, strictly speaking, I’ve already achieved my stated aim, it doesn’t match the picture I had in my mind. When I said “on the Internet”, I was really meaning “browsing the web” — I want to be able to access this very blog from the SE. The networking layer is solved, but when I came to installing Netscape Navigator 2 (which seems like a reasonable baseline), I found that, rather than MacTCP, it requires OpenTransport (an alternative TCP/IP stack — yes, you needed to bring your own back in the day). BlueSCSI/DynaPORT also supports that, so I’m optimistic I’ll be able to sort it out.

Side note: while taking screenshots in System 7 is trivial (just Command-Shift-3), I’ve yet to figure out a smooth way of getting them off the SE in a form readable by modern software. My current workaround is to mount one of the SE’s hard drive images in InfiniteMac, open it there, and then take a screenshot of that. Hence, the above image isn’t of the highest fidelity. I still have the original PICT, and will replace it with a better version once I’ve fixed the workflow.

Tim Berners-Lee and Vint Cerf wearing T-shirts reading I didn't invent the internet and I didn't invent the web


29 Feb 2024


I came across #MARCHintosh a few days ago — it’s a loose collection of retro Mac content for the month of March — and I’m going to give it a go. My goal will be to get the recently-revived Mac SE on the internet via the BlueSCSI’s Pico-W WiFi support; a modest project compared to others out there, but should be fun to do it as part of a larger event.


23 Feb 2024

This blog has had a variety of structures since it started, but for many years it’s been whittled down to the very basics: a reverse-chronological list of posts, with an archive. However, as I pick up the amount I’m posting here (both frequency and volume), I’ve come to the conclusion that it would be useful to start adding long-lived summary pages to bring together pages on particular themes.

To that end, I’ve added a page summarising my various keyboard projects. This gives an overview of each project, and links to the relevant posts and external resources.

Behind the curtain, I’m trying out Jeykyll’s data files as an easier way to produce structured pages. The page itself is a Liquid template that iterates over a separate YAML file which looks like this:

yaml - title: Full Keyboards keyboards: - key: corne name: Corne thumbnail: images/keyboard_thumbnails/corne.jpg hero_image: /2021/12/corne_full.jpg firmware: https://github.com/robhague/qmk_firmware/tree/master/keyboards/crkbd/keymaps/robhague description: | This is the first proper keyboard I made, and is still in daily ...

This turns out to be a good fit for how I think about these things, so I can see myself using the technique more in the future.

I anticipate adding these kind of topic pages as other themes emerge, but sparingly. The reverse-chronological list of posts is the heart of blogging, and this blog is no exception.

This site is maintained by me, Rob Hague. The opinions here are my own, and not those of my employer or anyone else. You can mail me at rob@rho.org.uk, and I'm @robhague@mas.to on Mastodon and robhague on Twitter. The site has a full-text RSS feed if you're so inclined.

Body text is set in Georgia or the nearest equivalent. Headings and other non-body text is set in Cooper Hewitt Light. The latter is © 2014 Cooper Hewitt Smithsonian Design Museum, and used under the SIL Open Font License.

All content © Rob Hague 2002-2024, except where otherwise noted.