By John Gruber
WorkOS — Agents need context. Ship the integrations that give it to them.
From his family, on Atkinson’s Facebook page:
We regret to write that our beloved husband, father, and stepfather Bill Atkinson passed away on the night of Thursday, June 5th, 2025, due to pancreatic cancer. He was at home in Portola Valley in his bed, surrounded by family. We will miss him greatly, and he will be missed by many of you, too. He was a remarkable person, and the world will be forever different because he lived in it. He was fascinated by consciousness, and as he has passed on to a different level of consciousness, we wish him a journey as meaningful as the one it has been to have him in our lives. He is survived by his wife, two daughters, stepson, stepdaughter, two brothers, four sisters, and dog, Poppy.
One of the great heroes in not just Apple history, but computer history. If you want to cheer yourself up, go to Andy Hertzfeld’s Folklore.org site and (re-)read all the entries about Atkinson. Here’s just one, with Steve Jobs inspiring Atkinson to invent the roundrect. Here’s another (surely near and dear to my friend Brent Simmons’s heart) with this kicker of a closing line: “I’m not sure how the managers reacted to that, but I do know that after a couple more weeks, they stopped asking Bill to fill out the form, and he gladly complied.”
Some of his code and algorithms are among the most efficient and elegant ever devised. The original Macintosh team was chock full of geniuses, but Atkinson might have been the most essential to making the impossible possible under the extraordinary technical limitations of that hardware. Atkinson’s genius dithering algorithm was my inspiration for the name of Dithering, my podcast with Ben Thompson. I find that effect beautiful and love that it continues to prove useful, like on the Playdate and apps like BitCam.
In addition to his low-level contributions like QuickDraw, Atkinson was also the creator of MacPaint (which to this day stands as the model for bitmap image editors — Photoshop, I would argue, was conceptually derived directly from MacPaint) and HyperCard (“inspired by a mind-expanding LSD journey in 1985”), the influence of which cannot be overstated.
I say this with no hyperbole: Bill Atkinson may well have been the best computer programmer who ever lived. Without question, he’s on the short list. What a man, what a mind, what gifts to the world he left us.
Kyle Hughes, in a brief thread on Mastodon last week:
At work I’m developing a new iOS app on a small team alongside a small Android team doing the same. We are getting lapped to an unfathomable degree because of how productive they are with Kotlin, Compose, and Cursor. They are able to support all the way back to Android 10 (2019) with the latest features; we are targeting iOS 16 (2022) and have to make huge sacrifices (e.g Observable, parameter packs in generics on types). Swift 6 makes a mockery of LLMs. It is almost untenable.
This wasn’t the case in the 2010s. The quality and speed of implementation of every iOS app I have ever worked on, in teams of every size, absolutely cooked Android. [...] There has never been a worse time in the history of computers to launch, and require, fundamental and sweeping changes to languages and frameworks.
The problem isn’t necessarily inherent to the design of the Swift language, but that throughout Swift’s evolution Apple has introduced sweeping changes with each major new version. (Secondarily, that compared to other languages, a lower percentage of Swift code that’s written is open source, and thus available to LLMs for use in training corpuses.) Swift was introduced at WWDC 2014 (that one again) and last year Apple introduced Swift 6. That’s a lot of major version changes for a programming language in one decade. There were pros and cons to Apple’s approach over the last decade. But now there’s a new, and major con: because Swift 6 only debuted last year, there’s no great corpus of Swift 6 code for LLMs to have trained on, and so they’re just not as good — from what I gather, not nearly as good — at generating Swift 6 code as they are at generating code in other languages, and for other programming frameworks like React.
The new features in Swift 6 are for the better, but, in a group chat, my friend Daniel Jalkut described them to me as, “I think Swift 6 changed very little, but the little it changed has huge sweeping implications. Akin to the switch from MRR to ARC.” That’s a reference to the change in Objective-C memory management from manual retain/release (MRR) to automatic reference counting (ARC) back in 2011. Once ARC came out, no one wanted to be writing new code using manual retain/release (which was both tedious and a common source of memory-leak bugs). But if LLMs had been around in 2011/2012, they’d only have been able to generate MRR Objective-C code because that’s what all the existing code they’d been trained on used.
I’m quite certain everyone at Apple who ought to be concerned about this is concerned about it. The question is, do they have solutions ready to be announced next week? This whole area — language, frameworks, and tooling in the LLM era — is top of mind for me heading into WWDC next week.
Thomas Ptacek:
LLMs can write a large fraction of all the tedious code you’ll ever need to write. And most code on most projects is tedious. LLMs drastically reduce the number of things you’ll ever need to Google. They look things up themselves. Most importantly, they don’t get tired; they’re immune to inertia.
Think of anything you wanted to build but didn’t. You tried to home in on some first steps. If you’d been in the limerent phase of a new programming language, you’d have started writing. But you weren’t, so you put it off, for a day, a year, or your whole career.
I can feel my blood pressure rising thinking of all the bookkeeping and Googling and dependency drama of a new project. An LLM can be instructed to just figure all that shit out. Often, it will drop you precisely at that golden moment where shit almost works, and development means tweaking code and immediately seeing things work better. That dopamine hit is why I code.
Ptacek says he mostly writes in Go and Python, and his essay doesn’t even mention Swift. But the whole essay is worth keeping in mind ahead of WWDC. There is no aspect of the AI revolution where Apple, right now today, is further behind than agentic LLM programming. (Swift Assist, announced and even demoed last year at WWDC, would have been a first step in this direction, but it never shipped, even in beta.)
My thanks to WorkOS for sponsoring last week at DF. Modern authentication should be seamless and secure. WorkOS makes it easy to integrate features like MFA, SSO, and RBAC. Whether you’re replacing passwords, stopping fraud, or adding enterprise auth, WorkOS can help you build frictionless auth that scales.
New features they launched just last month include:
Future-proof your authentication stack with the identity layer trusted by OpenAI, Cursor, Perplexity, and Vercel.
I don’t use the web interface to Movable Type, my moribund-but-works-just-great CMS, very often. But I was using it today and noticed something odd. Next to the small-text metadata that says I’ve written 35,086 entries in total, it said I had one draft. One. I don’t use the drafts feature in Movable Type — my drafts are stored locally as text files in BBEdit or unpublished posts in MarsEdit. I didn’t recall ever saving a draft in Movable Type, but, I thought to myself, I probably did it from my phone — which is the one device where I do publish and edit posts through the MT web interface because (to my knowledge) there’s no equivalent of MarsEdit for iOS.
It was a Linked List post pointing to Bob Lefsetz’s reaction to the then-new Beats acquisition by Apple for $3 billion, which was considered a lot of money for an acquisition at the time. The blockquote wasn’t fully Markdown-formatted yet — which is sort of tedious for me on the phone, but a single keyboard shortcut in either BBEdit or MarsEdit on my Mac. That’s probably why I left it as a draft. So, just now, I finished the formatting, and changed it from draft to published. Voila — a post I wrote on 1 June 2014 that hadn’t been published until a few minutes ago. I suspect many of you will think Lefsetz’s 2014 remarks on Tim Cook ring more true today than they did then. Others (I’m more in this camp) look at Lefsetz’s 2014 remarks as more than a little absurd — the only mark Jimmy Iovine left at Apple was the record for being the least prepared executive ever to appear on stage in a keynote. He was like Biden at the debate up there.
Lending strong credence to my theory that this forgotten draft was created on my phone is that 1 June 2014 was the Sunday before WWDC 2014, when I’d have been travelling, and thus using my phone for posting. Funny coincidence that I happened to notice it today, on the cusp of WWDC 2025.
A brief follow-up to my love letter to Apple’s discontinued MagSafe Battery Pack this week. I wrote:
They’re the only Lightning devices left in my life and they’re so good I’m happy to still keep one Lightning cable in my travel bag to use them.
Among its other unique bits of cleverness, Apple’s MagSafe Battery Pack supports another cool feature: when attached to your phone, you can plug the charging cable into the phone, and after the phone gets to 100 percent charge, the phone will recharge the connected battery pack. So, if you own a MagSafe Battery Pack, you can recharge it even if you don’t have a Lightning cable handy. Just attach it to your iPhone and plug your USB-C cable into the phone, not the battery pack. I’m not aware of any other battery packs that support this.
That said, I still keep that one Lightning cable in my travel bag for the MagSafe Battery Pack because I want to be able to charge it whenever I want. Like, say, if I want to leave it behind, recharging, while I go elsewhere with my iPhone. Also, I like using the MagSafe Battery Pack as my bedside MagSafe charger. I like being able to check my phone from bed without worrying about a cable. In fact, I use one of my MagSafe Battery Packs as my bedside charger at home, not just while travelling.
Such a great little device. Really hope they make a sequel.
WhatsApp, on their official blog back in April 2023:
Last year, we introduced the ability for users globally to message seamlessly across all their devices, while maintaining the same level of privacy and security.
Today, we’re improving our multi-device offering further by introducing the ability to use the same WhatsApp account on multiple phones.
A feature highly requested by users, now you can link your phone as one of up to four additional devices, the same as when you link with WhatsApp on web browsers, tablets and desktops. Each linked phone connects to WhatsApp independently, ensuring that your personal messages, media, and calls are end-to-end encrypted, and if your primary device is inactive for a long period, we automatically log you out of all companion devices.
When I wrote about WhatsApp finally shipping for iPad earlier this week, I mentioned that you couldn’t use a secondary phone as a linked device to your primary phone. That used to be true, but obviously, I missed that this changed two years ago. Glad to know it. I’ve already added my Android burner and my spare iPhone that I use for summer iOS betas. WhatsApp has a support document on linking devices that explains the somewhat hidden way you do this with a secondary phone. My thanks to several readers who pointed me to this.
This makes it seem all the more spiteful, though, that Meta didn’t allow the iPhone version of WhatsApp to run on iPads (like they do with the still-iPhone-only Instagram app). I heard from a little birdie this week — second- or maybe even third-hand, so take it with a grain of salt — that Meta had this WhatsApp for iPad version ready to go for a while, and has been more or less sitting on an iPad version of Instagram, as a couple negotiating chits with Apple. Negotiating for what, I don’t know. But if that’s true, perhaps some (but definitely not all) of the ice has thawed between the two companies. I don’t see it happening, but it sure would get a big audience response if Instagram for iPad got some sort of announcement during the WWDC keynote, perhaps as part of an “iPadOS is now a fuller, more complete, computing experience than ever” segment.
One other oddity I encountered, when adding my Android phone as a linked device: by design, there is no way to sign out of WhatsApp on your primary iOS or Android device. If you are signed in to WhatsApp using another phone number, the only way to sign out on that device and then set it up as a linked device to your primary WhatsApp account is to delete WhatsApp from your phone and reinstall it. Weird.