I wrote a post for the Sierra blog about building our internal "MCP Gateway". An early draft was was formatted as a development diary; we ended up abandoning that approach due to its length and lack of "catchiness". But I thought it would be fun to preserve for posterity, so I'm archiving it here. Context is the lifeblood of internal agents - even the best model in the most full-featured harness…
“The coldest winter I ever spent was a summer in San Francisco.” — Mark Twain While Mark Twain did not actually say that , I do share the sentiment - I commute into the city (from Cupertino) 3 days a week, and every summer there are days when I realize I am underdressed for the temperatures that await me. I have long wanted to add a “work location” mode to Weather Text , my bespoke weather app.…
tl;dr: I’ve added Sky Feeder and Tweeter Feeder to join my earlier Masto Feeder tool, allowing me (or anyone else who signs in) to follow accounts from all three social networks in a feed reader. In what has now become a trilogy of posts 1 I thought I would write up some of the custom tooling that I’ve written to allow me to keep up with Bluesky in a feed reader (in my case, still NetNewsWire ).…
One of the frequent emails that I get about Infinite Mac is “I’ve been copying over these files to every mac I’ve owned for the past 20 (or 30 or 40) years, how can I load them into your site?” While there’s been a “The Outside World” drive from the very beginning , all it can do is a best-effort import/export using available browser APIs. Classic Mac OS used resource forks for structured data and…
I've been using Pair Domains (née pairNIC ) as my default domain registrar for 20+ years. It dates back to my using Pair Networks for website hosting (since 1998, and mscape.com still lives there) - this is a spin-off service. The admin UI is not the fanciest, but it has the control that I need, and the (human) support has always been great. I recently got a renewal notice for a .com domain, and…
tl;dr: You can now embed any OS from Infinite Mac into your website, from 1984’s System 1.0 through 2005’s Mac OS X 10.4. There’s documentation for customizing and controlling embedded instances programmatically. As a demo of what’s possible, Infinite Monkey hooks up an emulated Mac 128K to OpenAI’s and Anthropic’s computer-using models, letting the technologies of 1984 and 2025 to finally meet.…
tl;dr: Infinite Mac can now run early Mac OS X , with 10.1 and 10.3 being the best supported versions. It’s not particularly snappy, but as someone who lived through that period, I can tell you that it wasn’t much better on real hardware. Infinite HD has also been rebuilt to have some notable indie software from that era. Porting PearPC I’ve been tracking DingusPPC progress since my initial port…
New company , new corporate blog for me to post on. Gardening Week is a post about an engineering team ritual that we've developed at Sierra . Once again you can tell that it was not ghost-written because I got to cram in a lot of links to obscure articles. More seriously, it's been great to be at Sierra from the start and get to influence the engineering culture in such a fundamental way. I know…
The Macintosh Garden is a great resource in the retro Mac community. It has an archive of nearly every piece of software released in the 80s and 90s, complete with screenshots, manuals, and metadata like year of release and operating system requirements. From its debut Infinite Mac would let you use files from the Garden: download it to your computer, and then drag it in to have it appear in the…
I was a happy user of the Dark Sky weather app for many years. Even more than the localized and timely notifications (I live in a place with predictable weather ) I appreciated its Apple Watch complications. I specifically used the three-line textual summary shown in the middle of the Modular face. My preferred Apple Watch face, circa 2022 Apple acquired Dark Sky in 2020, incorporated many of its…
tl;dr: No, not Windows¹, but I’ve decided to expand Infinite Mac to the the black hardware that Mac users secretly lusted after in the 80s and 90s: NeXT. There is now a runnable collection of all notable NeXTStep versions , going from the initial 0.8 preview in 1988 to the final OPENSTEP 4.2 release in 1997. Porting Previous About a year ago I came across the Previous emulator – it appeared to be…
I had previously mentioned that I ended up fixing some DingusPPC CPU emulation bugs. This was my first time working at this (lower) level of the Infinite Mac emulators, and I thought it would be interesting to write up such an investigation. There was an issue that was immediately apparent when I first got DingusPPC building: while starting up from the 7.1.2 Disk Tools floppy would result in a…
One of my goals for Infinite Mac is to learn more about computer architecture and other fundamentals. While fiddling with actual old hardware is not as interesting to me (the one classic Mac I own is a PowerBook 550c that I turn on about once a year), I do enjoy operating at lower levels of the stack than I normally encounter. Interacting with the emulators that I’ve ported to Emscripten has…
Infinite Mac has supported a limited form of persistence since its initial launch . This was done by exporting the contents of the “Saved” folder in “The Outside World” to IndexedDB when the emulator was shut down. While this worked, it had several limitations: Saving was best-effort during the page unload process. The beforeunload event that it relied on does not always fire, and it required an…
The first proper blog post on this site was 20 years ago today . It lived under a different URL , I didn’t register persistent.info until later (when .info was a new-and-shiny top-level domain). It also looked different (I don’t have a screenshot of the first version, but I switched themes a few months later ) and was published by very different software ( Movable Type 2.64 ), but there is…
Here are a few highlights of what’s been happening with Infinite Mac since my last update . Improving Disk Abstractions My broad goal this time around was to make it easier to load external software . To lay the groundwork for this, I first needed to improve some of the disk abstractions that the project used. One of the things that makes the emulated Macs relatively fast to boot is that they…
I finally got access to the recently-launched Slack canvas feature. This project was the last thing I worked on before I left Quip/Slack/Salesforce in April of 2022, and I was curious how it had evolved since then. Canvas started as a prototype in mid-2021 to reuse Quip technology to power a collaborative editing surface inside of Slack. The initial phase involved Michael Hahn and I doing…
It doesn't feel like it's been 5 years since my last post about Reader , but I guess the past few years have suffered from time compression. For this anniversary I don't have any cool projects to unveil , but that's OK, because David Pierce wrote a great article – Who killed Google Reader? – that serves as a nice encapsulation of the entire saga. Other Reader team members and I had a chance to…
I wrote a valedictory blog post about the instrumentation we're adding to the Tailscale client to get a handle on battery life issues. It's been an interesting "full-stack" project, involving thinking about cell phone internals, hacking on the Go standard library, and exploring visualization options.
Darwin was one of the first things Apple open-sourced ( 24 years ago ). It's been mostly a "throw it over the wall" approach, but being able to peek under the hood has been very handy. I wrote a short tailscale.dev blog post showing how we've been able to improve Tailscale's macOS and iOS apps by seeing how things are implemented.
tl;dr: Infinite Mac has a new home at infinitemac.org . Using a new Emscripten port of Mini vMac, it is now able to run almost every notable version of Mac OS, from 1984’s System 1.0 to 2000’s Mac OS 9.0.4 . The project is also now accepting donations (via GitHub Sponsors or PayPal ). Spot the odd one out. Mini vMac As I mentioned in my last post on the project , my immediate plans were to make…
One of the less visible changes in Tailscale v1.36 is that the macOS binary is 35MB smaller. I wrote a post on the Tailscale blog about the chance observation and investigations that led to this size win. If you're interested in this kind of low-level shennanigans, we are hiring iOS and macOS engineers .
tl;dr: I use Masto Feeder to generate a nicely-formatted RSS feed of my timeline, and then I can read it in my preferred feed reader. A bit more than 10 years ago I wrote a post called “ How I Consume Twitter ”. It described how I contort Twitter to my completionist tendencies by generating RSS¹ feeds for my timeline (for more fine-grained updates) and lists (to read some accounts in a digest).…
I worked on adding iOS and macOS Shortcuts support for Tailscale's latest release. I wrote a blog post with examples of shortcuts and automations that the Tailscale actions could be combined with. One that didn't make the cut was using sound recognition, for things like “In case of an emergency, break glass to activate Tailscale”. Other possibilities include "Cry/shout/scream to connect" and "Let…
I've been running lolcommits for 10 years, and it's captured some interesting moments from my time at Quip and Tailscale . I've put together a gallery , it was a fun nostalgia trip to revisit so many places and coworkers.