Start here
Ten years of posts, sorted by the reason you might be visiting.
I've been writing here since 2016. It started as a weekly diary of trying to bootstrap a company in Portugal, and drifted through WebGL, web components, WebGPU, and tiny languages. Lately it's about what making software feels like now that machines make it too. That's a lot of ground for a first visit, so this page is the map.
Software in the age of AI
The recent essays, and how most people end up here.
- The end of creativity: two groups of friends, two AI wedding videos, one identical result. A short story about regression to the mean.
- Lost in the middle: the post where I admitted my strongest skill had gone fragile, and decided this blog would change.
- R.I.P. Rest In Prompt: designing software architecture for machine collaboration instead of human readers.
- I was banned from Claude for scaffolding a CLAUDE.md file: exactly what the title says.
Graphics programming
Where I spend most of my time: WebGPU, WGSL, and color.
- WebGPU shader limits and the limits you won't find in the spec: an empirical hunt for the boundaries nobody wrote down.
- WebGPU and the price of compiling WGSL: what shader compilation actually costs, measured with a tool you can run in your own browser.
- Color picking Oklch for mortals: perceptual color without abandoning the classic color picker.
- Infinite grid with just one square: a WebGL 2 instancing trick I still like.
Small languages and tools
I like building tools for creative code, and lately everything is s-expressions.
- S-expressions the wrong way: the detours that led me to SJON, my s-expression data format.
- S-Rausch: the demoscene DSL behind Farbrausch's Masagin, and the start of that obsession.
- PNGine: WebGPU shaders and pipelines bundled into a PNG file.
- Introducing miniray: a WGSL minifier born from a demoparty disaster.
- The Zen of index.html: the case for developing a web app with nothing but one file.
- The life of a Web Component: a five-part series on the uncommon corners of web components.
The bootstrapping years
Before all of that, this blog was a diary of building a design tool in Portugal with no money, from 2016 to 2018.
- Bootstrapping, week 1: where it starts, hopeful.
- Meeting the President: an unexpected detour through Portuguese startup-land.
- Eviction and Debt: where it bottoms out. The most honest thing on this site.
- The tool survived: Grid Generator is still up, and still free.
If none of these fit, all posts are in one list, newest first, and there's a feed you can point your reader at. And if you just want some old-school comfort food: vi is not vim.