Emulating NeXTStep and the First Web Browser
I’ve been rewatching Halt and Catch Fire and just finished season 3 which concluded with an episode titled NeXT and is set during the dawn of the web. In this episode you can see a few of the characters booting up an early web browser on a NeXTcube.
I got inspired to see if I could do this for myself in an emulator.
My first thought was to try Infinite Mac since they have various versions of NeXTStep running. However, I couldn’t find a way to mount external data or active network access, so I changed course and tried to get a local emulator working.
My first attempt was with qemu, but I ran into issues finding a bootable installer CD that worked well with qemu.
Then I found the Previous project and, after a little bit of searching, some disk images with NeXTStep 3 installed.
Now, it was just a matter of installing the developer tools, which you can find ISOs of on the Internet Archive. Interestingly, the install process is very similar to modern MacOS, which makes sense given its lineage.
CERN has a great page on the birth of the web, but I wasn’t sure if the code for Tim Berners-Lee’s original browser, called WorldWideWeb was published there.
Thankfully, some folks at CERN had completed a project to rebuild the WorldWideWeb app so it could run inside modern browsers. Sadly, it doesn’t seem like that actual project is available on the site any more. But, they do link to the original NeXTStep code!
Previous makes it easy to mount a directory on your host system as an NFS share inside NeXT, which is what I did to easily make the source available inside the emulator.
After poking around the codebase for a bit, I found there was a Makefile…could it be as easy as just running the “make” command?
Yes, yes it is!
This build process would be very familiar to anyone who has spent time working with C/C++ projects on Unix/Linux environments.
And, as expected, the “make install” command puts the built application into place!
I also was able to get the source building in ProjectBuilder, which is the NeXT development environment.
And here it is, the world’s first browser, up and running!
CERN hosts a copy of the first website which failed to load with a HTTP error, likely because their server doesn’t accept older versions of HTTP requests (or immediately tries to redirect to HTTPS). But, FrogFind saves the day!
This was a fun tour through the dawn of the web! It’s amazing to see how much the concepts implemented in this early code are still relevant today, so much so that stripped down HTML served over HTTP can still be loaded.
This was also the most time I’ve spent using NeXTStep. There were a few quirks I had to get past at first, but after that it was a familiar environment. I think writing code in this environment would be a challenge where a plain text editor seems to be the state of the art. I suppose there was always vi available, but I’m not sure how commonly used that was for NeXT developers.
One thing that I noted was how most applications, including WorldWideWeb, defaulted to opening every document in a new window which is very different from the modern trend of single window applications, often filled with tabs. I think I kinda miss the era when apps favored windows over tabs.
End of an era
After 13 amazing years, creating awesome software and collecting a ton of great memories, my Squarespace chapter has come to a close.
I feel super lucky and thankful to have been part of this company, from its early days as a little-known website builder to helping it grow into what it is today.
I also got to work with some incredibly cool people along the way. It's honestly hard to put into words just how much this all means to me.
It's been an epic run, but now it's time for me to take a break and chill for a bit before I dive into whatever's next.
Solar Wallpaper Shortcut for iOS
Introducing: Solar Wallpaper a Shortcut for iOS that dynamically changes your wallpaper based on the solar cycle.
One of my favorite features of macOS is the dynamic desktops that change with the time of day. I found myself missing this feature on my iPhone and decided to replicate it, in a fashion, using Shortcuts and automation.
It’s Automation April over at MacStories and I was inspired to clean up the Shortcut that I had been using and improve the user experience so that it’d be easier to share and would make for a decent entry into the contest.
This version of the shortcut relies on the app Lumy to produce a wallpaper overlay based on the current solar lighting conditions as well as the Moon phase at night. I think this shortcut works best with a patterned wallpaper, like this wallpaper from Basic Apple Guy’s blog.
Here you can see how my wallpaper looks throughout the day and night.
This shortcut is intended to be automated and I found it easiest to trigger the transition times based off of sunrise and sunset.
Here’s how I’ve set up my automations. Each entry just needs to run the Solar Wallpaper shortcut and the while running the shortcut will automatically figure out what time of day it is and generate the appropriate wallpaper.
Lumy’s settings allow you to customize the colors used when the wallpaper is generated.
The History of OS/2
I’ve been reading Steven Sinofsky’s Hardcore Software Substack which follows his career at Microsoft. In the early sections there are lots of mentions of Microsoft’s partnership with IBM on the OS/2 operating system. I was familiar with this effort in name, but never knew the details and turns out they are fascinating. The story of OS/2 is the story of IBM’s fall from dominance in the personal computer industry.
By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=18849795
If you are into computer history, give this a read.
Ars Technica’s history of OS/2.
And if you want this in podcast format, Flashback #14 covers OS/2.