Building for the Web: A Series
Product and technical considerations.
July 10, 2026
This week’s discussion of the ChatGPT app and its move to Electron merits a link to my evergreen article The Persistent Gravity of Cross Platform:
At the highest level, cross-platform UI technologies prioritize coordinated featurefulness over polished simplicity.
I’ve added a coda to that article about how coding agents actually strengthen the argument for Electron on large teams, at least for now.
The initial release of the new ChatGPT app has been clumsy – there’s a lot of work to do to get Electron ChatGPT (née Codex) as polished as it should be. But, like it or not, cross-platform code is the least-bad way to coordinate a massive team on a rapidly changing product.
January 31, 2026
Or, getting a 100x speedup with one dumb line of code.
You always know it’s a good bug when your first reaction is, “How could this even happen?” The other day, I was refining the dashboard of a web app we’re working on – as you do – and I noticed it was taking forever to load. Like, it had been...
7 min read →
February 28, 2025
The new frameworks will continue until morale improves.
In recent months, I’ve returned to writing code daily. It’s been a lot of fun. While I enjoy Swift, Python, and Ruby, we’ve been building in TypeScript lately since it’s a good fit for our latest project. After about a decade away from regularly writing JavaScript, it’s been fun to...
7 min read →
September 1, 2021
Coordinating a large product org is hard.
Update, July 2026: Added a postscript about how the rise of agentic coding has made these dynamics even stronger, on the heels of the ChatGPT app going Electron. AgileBits recently caused a stir with their announcement that they’ve rewritten 1Password 8 as a cross-platform Electron app, replacing their well-loved native...
8 min read →
May 1, 2018
A Meetup competitor lives and dies.
In 2013, I decided it was time to start an iOS development meet up. I’d run VanJS for many years, which was great. There was one thing about running VanJS that was not great though, and that was using Meetup.com. You see, Meetup is optimized for getting small groups assembled...
6 min read →
April 30, 2015
The user-agent string just can’t stop.
Yesterday, Microsoft released a preview of Edge, their next-generation web browser. Edge’s new rendering engine brings it more in line with modern layout engines like WebKit, and finally introduces a modern replacement for Internet Explorer. IE’s dark past means that millions of existing websites serve it old and busted...
4 min read →
February 28, 2015
There are too many JavaScript frameworks.
Most programming languages support a small number of popular, stable application frameworks. Objective-C and Swift apps use Apple’s excellent Cocoa framework. Ruby apps more often than not use Rails. Java has a handful of established web app frameworks, and they come and go relatively slowly. In the meantime, the latest...
7 min read →
April 30, 2014
Chrome considers hiding the location field.
Today, a Canary build of Google Chrome removed something kind of important from the browser: the URL. Of course it still supports them, but the time where users actually see URLs is ending. With Chrome’s “Enable origin chip in Omnibox” flag, Location becomes a write-only field. Clicking there no longer...
3 min read →
November 20, 2011
When discussing mobile apps, we’re often asked, “native or HTML5”? For some products it really makes sense to build a mobile web site, for others a 100% native app is the best approach. What often surprises people is when we recommend some of each. Once you’ve made the call to...
1 min read →