MoreRSS

site icon Brent SimmonsModify

The creator of NetNewsWire.
Please copy the RSS to your reader, or quickly subscribe to:

Inoreader Feedly Follow Feedbin Local Reader

Rss preview of Blog of Brent Simmons

Seattle Xcoders Presentation by Justin Miller Tonight

2026-06-05 00:23:00

I’m psyched for @incanus Justin Miller’s presentation tonight at Xcoders on “Swift Result Builders Case Study: Parsing.” I like writing parsers, and I’m very curious about Swift result builders. Should be a good one!

See this post on the Xcoders blog for more details about the talk and for when and where to be.

I Tried to Explain What I Do

2026-03-04 01:15:08

I’ve known for decades that most of family and friends (except for family and friends in tech) have no idea what I do — they just think it’s math-heavy and mysterious.

Well. It’s definitely not math-heavy and it shouldn’t be mysterious. So I figured I’d write up What I Do.

Even if I never actually send this page around to everybody — because that would actually be kind of weird, like giving them homework to understand me, me who suddenly (suddenly?) seems like a complete narcissist — it was a good exercise for me to do anyway. Especially the part about explaining why I write NetNewsWire.

Seattle Xcoders Talks This Week Considered Unmissable

2026-03-03 03:09:01

The title is a little over the top, but barely — we have two fantastic talks this Thursday (March 5) that you should go to. (I’ll be there!)

Laura Savino will present “Learn Out Loud”:

As devs today, we’re supposed to demonstrate immediate skills in tools whose configs change once a fortnight, while shipping cutting-edge features in long-standing apps (that may still have a legacy bug or two). Laura is a trained teacher and Photoshop engineer who brings humor and solidarity to today’s dev environment with concrete advice on the mechanics of real learning and change, including encouraging without proselytizing, being vulnerable about what you don’t know, and staying curious amidst existential dread.

If you’ve seen Laura talk before, then you know how good she is, and you know how you come away with insights and ways to be a better engineer and better human-who-works-with-people. Every single time.

This is one of those very rare chances to see Laura in a small setting before she does this talk at a conference keynote. Like seeing the Beatles in a small bar in Liverpool, only it’s Laura in Seattle. 🎸

Jake Savin will present a talk on using Claude to do a really big ambitious job — rebuilding UserLand Frontier as a modern app:

It’s a huge job and Jake’s made a ton of progress — and he’s learned a lot about how to use Claude to make these kinds of projects work. As we learn to use LLMs to do more and more ambitious things, we’ll be walking in Jake’s footsteps. Jake will provide a map of this new territory.

I’m not the only one to have a try — more than one try, actually, as recently as last year — at rebuilding Frontier. It took Jake and Claude together to make this work (and it’s not done yet, but far advanced from any previous try).

I’m so ready to have Frontier back in my toolbox — and ready to learn from Jake on how he’s making this happen.

What’s Frontier?

UserLand Frontier is Dave Winer’s app from the ’90s, and it was with that app that Dave invented and/or fleshed-out and popularized much of the open web that we take for granted today: blogs, RSS, podcasts, and web services, for starters. This is a historically important piece of software, and Jake is bringing it to the modern age.

Anyway — here’s the scoop on where and when to be:

Where
North Seattle College
9600 College Way N

Room LB 1106 in the library

When
Thursday, March 5, 2026
6:30 pm — gather and mingle
7:00 pm — watch Jake’s and Laura’s talks

For anyone who wants to hang out after — we go to the nearby Watershed Pub and Kitchen (all ages friendly).

Why Objective-C

2026-02-28 09:21:48

In my previous post I talk about how I got rid of hundreds of thousands of lines of Objective-C code while at Audible and I explain why keeping Objective-C code around is a terrible idea. And I explain that…

I’m not stuck in the old ways; I’m not the guy insisting on the supremacy of Objective-C despite the obvious evidence against. I’m the guy who got rid of Objective-C — with glee and (oops, sorry Audible marketing team for the screwup) wild abandon!

Then of course I wrote some Objective-C code recently and really, really loved it.

Command line app

I wanted to replace my homegrown static website/blog generator because I no longer wanted to use the language it was written in, for reasons.

I took it as an opportunity to learn Python — but it turned out that my heart wasn’t in it (not Python’s fault; great language) and I ended up screwing it up. (See Blog Fuckup).

I thought about some alternatives: Swift, which I know well; Rust and Go, which would have the advantage of helping me branch out from the Apple ecosystem; and good old C, my happy-go-lucky friend who still sprints faster than every brash new language.

Of those I was leaning toward C because speed is an issue. I wanted to make rendering this blog, over 25 years old and with thousands of posts, to happen in under one second. The system I was replacing took a few seconds. But I wanted more speed (personality flaw).

And then I thought, I swear just for a split second, about how great it would be if C had something a little nicer than C structs for modeling my app’s data — and oh well too bad there’s nothing like that.

And then I remembered Objective-C, which is C plus some things a little nicer than C structs. 🎩🦖

Objective-C looks insane

Anyone new to Objective-C thinks it’s difficult and maybe a bit harsh because [[those squareBrackets] lookInsane:YES].

Once you get past that, which takes a day or two given a good-faith effort, you’ll realize how small a language it is, how easy to hold in your palm and turn around and understand all sides of it. And you’ll appreciate how easy it is to make good decisions when you don’t have a surplus of language features to choose from.

And you’d be reassured to know that Objective-C is probably never going to change, which means tech debt will accumulate much more slowly than with newer languages. (Unless, of course, you count Objective-C itself as tech debt. You don’t have to, though.)

It’s a cliché to call Objective-C a more elegant weapon for a more civilized age. It’s better thought of, these days, as a loaded footgun.

But I did absolutely love writing this code! So much fun. And now I’ve got another little thing brewing, also in Objective-C, coming soon-ish.

PS The website/blog generator app is called SalmonBay. I really don’t expect anyone else in the world to use it, and I expect no contributions, but it is available as open source. (I put it on Codeberg, for reasons.)

PPS SalmonBay does a clean build of this blog in under a second. 🎸

Why Not Objective-C

2026-02-19 07:00:00

At my last job, at Audible (hi Audible folks, if you’re reading this!), I led the effort to port our remaining Objective-C to Swift. When I started that project, Objective-C was about 25% of the code; when I retired it was in the low single digits (and has gone even lower since, I’ve heard).

Why do this? It was working code! Don’t we all know not to rewrite working code?

Why get rid of Objective-C

Well, we knew a few things: one was that our Objective-C code was where a lot of our crashing bugs and future crashing bugs (and bugs of all kinds) lived.

So it was working code, yes, but we knew there were crashes hidden in there, and that some of those crashes were ambush hunters, playing the long game, waiting for years before pouncing. Best just to rewrite it all in Swift, the safer language.

A second thing we knew was that having to interoperate between Swift and Objective-C is a huge pain. It often means dumbing-down the Swift code and not using modern features, which limited our options for good Swift code.

And a third thing we knew was that very few of our engineers had a background writing Objective-C. Maintaining that code — fixing bugs, adding features — was more expensive than it was for Swift code. (Duh, right? When you have many engineers working on a project, it’s best if the language you use is one everybody knows well.)

Not that this went perfectly

This is still risky, by the way. Rewriting code is always risky.

At one point I was responsible for a bug where we sent an integer to some API and it should have been a boolean — because the original code was using NSNumber and it wasn’t obvious which it should be. This caused a partial outage of push notifications, which I estimated (very roughly) to have cost the company a few hundred thousand dollars.

(Really? A little bug like this? NS-fucking-Number cost all this money? Yes. Audible scale may not be Facebook scale, but it’s far beyond the scale of indie apps. Before Audible I always worked for smaller companies with smaller audiences — working on something with many millions of users was enlightening and terrifying.)

But here’s the thing: this proved my point. Someone trying to maintain that code as Objective-C might have easily made the same mistake and caused the same outage. The Swift code we replaced it with is type-safe: it’s unmistakably and clearly a boolean and not an integer (once we fixed it; other way around at first). Replacing Objective-C code with Swift is clearly a win.

Goodbye to all those square brackets

I didn’t count how many hundreds of thousands of lines of Objective-C my project was responsible for rewriting (and sometimes just deleting). It was a lot. Multiple entire apps could fit in those lines-of-code counts.

And if you look at NetNewsWire’s code, you see that it’s almost entirely Swift, with just a little Objective-C for the various parsers and FMDB. It’s not just a Swift app but a modern Swift app that uses async await and structured concurrency. (Mostly modern — there’s still some code to update to async await. Work continues.)

I say all of the above to show that I’m not stuck in the old ways; I’m not the guy insisting on the supremacy of Objective-C despite the obvious evidence against. I’m the guy who got rid of Objective-C — with glee and (oops, sorry Audible marketing team for the screwup) wild abandon!

I want you to know all the above in advance because in my next post I’m going to talk about how I wrote some new code in Objective-C and loved it.

Blog Fuckup

2026-02-02 09:00:00

I’ve been working on my blog software (a static site generator) and I managed to screw things up enough that random old posts got published on the site and in the RSS feed.

As soon as I saw the issue I fixed it, but I’ve been getting email from folks about some of the posts, so I know they got picked up by some RSS readers.

Those posts are ancient! Sorry for the confusion.