How Markdown took over the world
A blog about making culture. Since 1999.
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,…
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
Dropping Cloudflare and migrating to bunny.net, starting out with my blog.
The one where I crowdsource an argument winner.
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.
Here are some of the best techniques for keeping email addresses hidden from spammers—along with the statistics on how likely they are to be broken.
I love a good side-project. Like most geeks, I have a tendency to go down rabbit holes when faced with problems - give me a minor inconvenience and I’ll happily spend weeks building something far more elaborate than the situation warrants. There’s joy in having a playground to explore ideas and “what ifs”; Building…
I used to see that retro multi-stroke text effect quite often and tried to replicate it using the CSS text-stroke property, but the results never quite matched. Because text-stroke accepts a single value, stacking elements was the only workaround I could think of, though it didn't seem to work.
This second installment in the "You don't know HTML" series is going to be all about the ways that we put collections of things together
A dynamic ASCII art cloud generator that creates cloud patterns in real-time
Where are they now? You won't believe her new look!
Traditional Wayland compositors have a monolithic architecture that combines the compositor and window manager into a single program. This has the downside of requiring Wayland window managers to do the significant work of implementing an entire Wayland compositor as well.
Guillaume Técher — Personal website
DHH's opening keynote had shockingly little to say about Rails.
JPEG XL has landed, but how does it compare?
For years, advocates for web standards, performance, and accessibility have implored web developers to “use the platform”. I’ve often been one of those…
Wayland is the successor to the X server (X11, Xorg) to implement the graphics stack on Linux. The Wayland project was actually started in 2008, a year before I created the i3 tiling window manager for X11 in 2009 — but for the last 18 years (!), Wayland was never usable on my computers. I don’t want to be stuck on…