Native all the way, until you need text
Why building a rich, selectable, streaming Markdown chat UI on macOS still pushes you toward WebKit or Electron.
Why building a rich, selectable, streaming Markdown chat UI on macOS still pushes you toward WebKit or Electron.
The Web streams API has become ubiquitous in JavaScript runtimes but was designed for a different era. Here's what a modern streaming API could (should?) look like.
The Django community wants to collaborate with you, not a facade of you.
The semantics you didn’t know you needed.
A blog about making culture. Since 1999.
The current state of app bloat.
What comes to mind when you hear "frontend optimization"? For most of us it's things like reducing network requests, shrinking the bundle,…
When companies get caught doing this sort of thing, the response is almost always the same: "we're using this technology to combat fraud," or "ensure positive user experience," or "save computing resources," or some other hog wash. The simple truth, there's no reason to be collecting data that can be used to identify…
The MapLibre Organization is an umbrella for open-source mapping libraries.
Math.tanh, every CSS trig function, and the Web Audio compressor all route through the host libm, so the rounding of a cosine betrays the OS a browser actually …
If coding agents make native ports cheap, why does Anthropic still ship Claude as an Electron app? Because code is cheap but maintenance isn’t.
Terminal User Interfaces (TUIs) are making a comeback. DHH’s Omarchy is made of three types of user interfaces: TUIs, for immediate feedback and bonus geek poi…
For FastCGI's 30th birthday, let's look at how it avoids the security problems inherent in HTTP reverse proxying
`import defer`, six new subcommands (`deno transpile`, `deno pack`, `deno bump-version`, `deno ci`, `deno why`, `deno audit fix`), network debugging in Chrome DevTools, framework-aware `deno compile`, and 3.66x faster cold npm installs.
Today at Next ‘26, we’re launching Google Cloud Fraud Defense, the trust platform for the agentic web and the next evolution of reCAPTCHA.
Dropping Cloudflare and migrating to bunny.net, starting out with my blog.
Get it while it’s hot
The one where I crowdsource an argument winner.
Disabling asm.js optimizations in SpiderMonkey
AI is doing to programming what framework-brain did to the frontend before. Deskilling, or just working at a higher level of abstraction?
I read a lot of printed papers these days. While I enjoy reading on a laptop as much as the next guy, marking up a printed document engages me better. Also, there's something about sitting with a whit…
Signal boosting Laura's post that you should absolutely download and archive the stuff that matters to you.
A fun little project that came out of a creative exercise around the word 'Overgrowth'.
One year ago, on 28 February 2025, Wikipedia user Moyogo updated the page for Angzarr with a citation to the type foundry H. Berthold AG’s 1950 symbol catalogue listing ⍼ as Azimut, Richtungswinkel , or “azimuth”, “direction angle”. Mystery solved!
I was creating a Google Workspace account for my company, as everyone knows, it’s a pretty straightforward sign-up process, until I’m hit with a weird, confusing error when I type my domain name:
Like all good nerds, I generate a unique email address for every service I sign up to. This has several advantages - it allows me to see if a message is legitimately from a service, if a service is hacked the hackers can't go credential stuffing, and I instantly know who leaked my address. A few weeks ago I signed up…
AI agents produce slop when not restricted. Here are 10 things to watch out for
Make QR codes with photos in them
Posts on software engineering – engineering culture, system legibility, and performance.
Self-Managed OAuth is now available to all developers on Cloudflare. Here's how we executed a zero-downtime migration of our core OAuth engine to make it happen.