Seven years
In 2009, my father was diagnosed with kidney disease. He had to stop working. For the next ten years, we lived off his savings and some smart financial manoeuvring. I don’t think I fully understood…
CSS-native parallax effect
jun 02, 2026 🔗 CSS-native parallax effect Parallax effects have a long history, and while there are countless ways and libraries to achieve them, a new CSS-native way was recently made possible with…
Favorites from May 2026
Favorites from May 2026
4.88 Billion Tokens for $120 — Why I Stopped Using Frontier Models for Everything
Last month, I processed 4.88 billion tokens through an LLM. My bill: $120. If I had run the same workload on a famous frontier model, the minimum estimate would have been $4,900. On other frontier…
The Biotechnology Renaissance Driven by AI
A draft map of why AI may be starting a new biotechnology cycle: protein design, AI drug discovery, automated labs, longevity, and the bottlenecks that still matter.
Recap of Dokomi 2026
Damn, it's been a long time since I wrote a blog post...a whole year. And I'm back with exactly the same topic as last year, a Dokomi recap! Things outside Dokomi ...or in short, the "where did I go…
Eggs and Baskets
Running a microblog on Cloudflare and asking about competitors.
Don't mop the floor. Fix the leaky faucet.
Complexity is a choice. Simplicity is also a choice. Look for the root cause.
How to stream OpenTelemetry data to Iceberg and DuckLake with just DuckDB
Is duckdb all you need for storing and querying OTel? In a previous post about OpenTelemetry, parquet, and data lakehouses, I mentioned difficulties when you want to push lots of metrics, logs, or…
S-expressions the wrong way
S-expressions are attracted towards Lisp S-expressions give us that natural syntax for expressing nested hierarchical trees, and once our program is written as trees, it becomes tempting to let those…
The SDLC Song Cycle: AI music about shipping software
Seven Gemini-generated tracks walk the software delivery lifecycle—from human sign-off to legacy maintenance—and now live on this blog with video, MP3s, and a persistent player.
This Blog Has Moved
This blog has moved to a new section. Please be sure to update your feed reader to point to the new RSS feed as well. Old posts will remain in this path for the foreseeable future, though most have…
TUI Stability
Dear beta testers, I’ve just shipped the latest version of Terminal Click: TC v0.8.8. Recall that we are re-examining the basics to get us out of the beta and become a “fully grown”…
Designing an App Icon That Feels Like an Album Cover
How a Pink Floyd prism, an album cover's refusal to explain itself, and Top Gun helped an indie dev design an app icon where light becomes music.
Building a personal book library with NotebookLM and Claude Code
Ever since I started highlighting text on my Kindle, then my PocketBook, and also the old-fashioned way with pen and paper, I have been trying to store those highlights in my digital garden — which…
Introducing SwiftTUI
I’ve spent the last 8 months building a SwiftUI like engine that renders in the terminal. Today, I think it’s time for a reveal. Let me introduce you to SwiftTUI. Startup Like every project, it comes…
Chevrons Up Down Icon
Animated chevrons icon that morphs between up and down directions.
Radical Builtins
This is my entry for the June 2026 Emacs Carnival Underappreciated Emacs Builtins. There is a lot of functionality in default vanilla Emacs that is certainly less talked about. I'm going to constrain…
Ego Necromancy
What are hiveminds made of? Interconnected minds, obviously. Or is it more complicated than that? Are selves more than illusion — a mere cope for apes pretending to be human? Perhaps truly picking…
Go West, Nerd.
I have been constantly thinking about what it means for individuals and companies to be able to independently use AI models. Especially specific ones, ones where they are extremely personalized,…
New history books in May 2026
Here's the list from last month (history books published here in the UK in hardback): only nine but a wide range of topics. A couple I am curious about are: This Little World: A New History of…
Brontosaurus: A Voice-Driven Generative AI Canvas
With additional thoughts on human-AI collaboration
Chasing 1 Million RPS
yes, this is clickbait. kind of.
Æon: Sound as a Function of Time
I always thought a purely functional audio engine would be cool and utterly stupid. Æon is that little toy. The whole engine is one pure function of time, built from small functions you chain…
Wrestling with Windows: Avoid the switch to AZERTY mid-sentence while Spell-Checking French
If you write in multiple languages on Windows, you’ve probably run into this frustrating scenario: you want the OS to autocorrect and spell-check a second language (like French). So, you go ahead and…
It's always been the damn phone
Back in 2014, I was on a cruise with family (boomer parents, I don’t actually like cruises) - and I did not have my phone or internet access for 17 days. This was in the time when internet access out…
Search Engine Optimization
SEO (search engine optimization) is a shitshow of wrong incentives: not good work / content / reputation counts but who can allocate most resources (money and time) to play the SEO game well (place…
Feed RSS dei podcast Rai v2
Questo post è l’evoluzione del precedente post Feed RSS dei podcast Rai con la modifica che gli URLs vengono risolti fino alla CDN Rai, evitando il problema di alcuni client podcast (come…
Topographic Wallpaper
Fun with stylized maps. Inspired by Basic Apple Guy’s Topographic Amoeba wallpapers, I thought I’d try to find a way to create my own that contour places I’ve lived. I didn’t get anywhere close, but…
Slugs out -> dogs out
Why get a pair of shoes wet when I can do flops and flats? People said the road riding was good around here but I thought, nah, it can’t be as good as the MTB trails. But woah. It is absolutely…
Thoughts on Using AI for Creative Stuff
Reflections on where AI fits into creative work — and where it doesn't.
Self-hosting static sites on a Caddy-powered VPS
I operate a few different static websites, relatively low-traffic ones. So far these sites were hosted on managed hosting providers, including Netlify, Cloudflare Pages, and Bunny CDN. Last weekend I…
8 Useful Ways to Configure Your Zsh History
Being able to search your shell history is important, this will help you control where and how your commands get saved.
The CD Emoji 2
We were spending the day at my in-laws, when we discovered the CD collection of a long lost era. These were our picks: The Original Soundtrack of the Fifth Element, "If you're Feeling Sinister" by…
Daily writing retrospective
Back in April, I decided to write daily for my newsletter. Up to that point, my newsletter was mostly a delivery mechanism for my blog. But I wanted to change that. I wanted to write more.
Liquid Primitives: Building on a Stream
Notes from replacing runners, instructions, and implementations while keeping tests and behavior stable.
The 2026 DeFi Content Map: Every Platform Worth Publishing On
Every platform worth publishing DeFi content on in 2026 — ranked by actual utility. Parasite SEO tiers, Web3-native publishers, established crypto media, and the cross-posting stack that drives both…
WeasyPrint v69 Has Been Released
WeasyPrint v69 has been released! Among the new features and bug fixes, the changelog contains important API changes and security information. ⚠️ If you use presentational hints and restrict CSS…
Cognitive Debt
What cognitive debt is, whether it is scary, and how to manage it.
Vim Classic 8.3.0 released
Following up on my earlier announcement that I was forking Vim, I’m happy to announce the first release of my fork today: Vim Classic 8.3.0.I have written a release announcement for vim-classic.org,…
Editing Text in-stream
A small helper to more easily edit files mid-stream
Bergen, by someone who lives here
I keep emailing this list to friends visiting Bergen, so here it is properly: the city the way I’d hand it to someone I know. I’ve wished I had it written down more than once. Bergen is small, wet,…
Keeping a Raspberry Pi Cluster Cool
Why temperature thresholds weren't enough, and how topology-aware automation improved thermal management in my cluster.
Jully Cuis Meeting
What. It is a “Demo Meeting” for demonstration then discussion. Milan Lajtos will present his experience on using a code agent to develop Blueprint, a revisit of the Cuis-Smalltalk system desktop.
iddqd, or the hardest kind of unsafe Rust
How Oxide’s Rust collections library defends against adversarial trait implementations. Mirrored from the canonical version on the Oxide blog . I’m the main author of iddqd , a Rust library for maps…
codimg: code blocks -> syntax highlighted SVG
Leaving my general dislike for Webflow aside for now, let’s at least agree on one specific thing: it is terrible at code. We have markdown.enso.no for the actual writing – you draft in…
How to visualize Cloudflare D1 data in Grafana with the Infinity plugin
Use Grafana's Infinity data source to query Cloudflare D1 over HTTP, parse the JSON response, and build dashboards without writing a custom connector.
May 2026
Plenty of signal and plenty of rain.
The Functional Analysis of DeepSeek-V4
The Functional Analysis of DeepSeek-V4: Bounding Operators at 1.6 Trillion Parameters When DeepSeek-V4 dropped, the immediate industry focus was on the replacement of Multi-head Latent Attention…