Pragtical v3.11.2 Release
Pragtical v3.11.2 is a focused bug-fix release that tightens file lookup
E-Voting Made Simple (Take 4)
E-Voting Made Simple (Take 4)
Systems for making systems
I read a comment stating that git (a tool programmers use to collaborate on code, sort of like Word’s Track Changes) is not a version control system but a “system for creating a version control…
Not a Good Day
The day that, according to people around me, I almost died.
Pi: A coding agent for engineers who own their tools
Claude Code, Codex, OpenCode - great places to start, not best places to finish. Pi is the thin harness that gets out of your way. Here's why experienced engineers should pay attention.
Astro: HTML first, JavaScript when you need it
Why we chose Astro for teaching Content APIs and Web APIs in the CMD Amsterdam Web Design & Development minor.
You Don't Have a Relationship with Your LLM. You Have Five.
This is happening to me often enough to where I need to understand it. It's not just me. I have heard this from my colleagues and friends as...
Every prototype needs knobs
You’ve probably seen the videos on social media - there’s a cool looking prototype, but wait, the person expands a menu with a bunch of input sliders and knobs. Then they start to tinker with them -…
FiiO TT11
FiiO’s $179 fully-automatic belt-drive turntable — a pre-fitted Audio-Technica cartridge, Bluetooth, seven lighting modes and a wood-grain finish that looks far above its price.
Howto Find the Start of a Cycle in a Linked List
Learn how Floyd’s Fast and Slow Pointer algorithm detects cycles and finds the exact starting node of a loop in O(n) time and O(1) space.
Weekly Reflection #27 - Delete, Delete, Delete
Each week, I share one insight. One piece of wisdom. One question to reflect on. (and a little Lagniappe) A great design is easily hidden by unnecessary…
Build Native Autocomplete in Rails Forms with f.datalist (No JavaScript)
Rails 8.2 adds f.datalist to FormBuilder, so you can wire a text input to a native HTML autocomplete list with zero JavaScript and no derived-id bookkeeping.
Deploy FastAPI to AWS in 60 Seconds
Deploy a standard FastAPI app to AWS Lambda serverlessly in two commands using Lambda Web Adapter. No Docker. No handler code. No code changes.
How Other Link Checkers Do Recursion
After I published Five Years of Trying to Add Recursion to lychee, one reply I got was a very fair question: If recursion is so hard, how do other link checkers do it? Plenty of them already crawl…
How I Built My Perfect Linux SteamOS Machine
Note I wrote this post by hand. An AI helped me review it, tighten the writing and fact-check the technical parts. The build, the choices and the opinions are all mine. TL;DR Link to heading I…
Partiful, buybacks, Knicks
Events are generational, Buyback brigade, Courting complexity
How good is Browser Support for the ARIA Notify API?
More and more platforms and browsers support the new API. I did some tests with different screen readers.
"Sixteenth of a year", a 1.8 KiB art piece
As I write this, we’re about 7 sixteenths through 2026, and it’s about 14 sixteenths through the day. For the sixteenth issue of the Taper online magazine, I split time into sixteenths to…
Open, less so
When developers opt out, users lose access.
Hypermedia APIs for Autonomous Agents
An extended write-up of the hypermedia API hypothesis for agent workflows with Spring HATEOAS and HAL-FORMS.
Safe Made Easy Pt.2: Don't Fear the Ref
Intro Motivating example The solution But what about self-references? States of aggregation Shattering the cycle Behind the scenes The rules so far Conclusion Intro So, in the first installment of…
The Case for Talking to Your Computer
I've always been a quiet person who prefers to write than to talk (though this may not be obvious based on the number of YouTube videos I've published). So it feels a little weird to say that I think…
File encryption with SOP/OpenPGP (and age)
This article explores file encryption with Stateless OpenPGP (SOP) tools, and contrasts this use of SOP with the age tool. SOP is a CLI standard for (vendor-agnostic) OpenPGP tools. There are…
😎 Japanese style toilet with built in bidet is glorious
One of the key takeaways from my recent Japanese trip was how even the public toilets have built-in bidets that clean your butt. I mentioned in that article that I installed one of these bad-boys in…
Announcing quarto-diagrams
quarto-diagrams is a new Quarto extension that adds a collection of circular and structured diagram styles.
They're Made Out of Weights
After Terry Bisson's "They're Made Out of Meat". "They're made out of weights." "Weights?" "Weights. Floating-point numbers. We checked the whole thing through.…
Don't Paint Yourself Into a Corner
Larry Wall built Perl around a principle: no unnecessary limitations. Most of the limitations we build into our own code aren't necessary either — they're laziness wearing the costume of caution, and…
Returning to Work After Maternity Leave: Day 3
The plan for today was to work a full day and I did that. I'm only back at work part-time so this week's schedule is a bit all over the place as I figure out the flow of things. I met with one of my…
An entire wiki in a single file? A look at Feather Wiki
Imagine a wiki that is just a single HTML file. One that you can deploy anywhere: view locally, share in local network, put in any web server. No databases, no user management, no moving pieces that…
I built a vulnerable app and spent $1,500 seeing if LLMs could hack it
As a part of my work I do security research for various apps and websites. I wanted to see if LLMs could reproduce a common class of exploits I've found in multiple apps. So I built a deliberately…
2D Waves - Procedural GPU Patterns
Part 2 of the Procedural GPU Patterns tutorial series for Godot Engine 4.
Text imports
Importing strings
Everyone keeps rediscovering Claude Code sub-agents
Sub-agents aren't specialists — they're disposable, isolated scratchpads for the noisy, expensive, tool-heavy work, handing back only the part that matters and keeping the main thread clean for…
Dr. Oz as CMS Administrator: A review
Every day you see a headline about a celebrity official in the Trump administration. One day Robert F. Kennedy is promoting junk science. The next day, Pete Hegseth is retweeting Christian…
Do web components make your design system framework-agnostic?
I recently read a blog post claiming that web components can make your design system framework agnostic. But this is down to the false dichotomy between engineers who: love React (or the current…
Announcing Mutation Testing in Haskell
Mutation testing is now generally available in sydtest . This is a major step towards a saner development workflow in the age of AI-generated code. What is mutation testing? Mutation testing aims to…
🈲Janggi Checkmate
Play at 📱Google Play Play at 💙Toss Play at 💜playgama.com Janggi Checkmate is a collection of 3,000 hand-picked Korean Chess (장기) checkmate puzzles. Spot the forced mate — from quick one-move strikes…
Introducing Gitsy: git pull all repos in a dir
A compact CLI to concurrently check, fetch, and synchronize multiple Git repositories and worktrees at once.
Open a link in browser A, from browser B
Normally, when you click an https:// link in a browser, it opens in the same browser. The browser doesn't send it the OS, which means Linklever can't route it to another browser. The Linklever…
Not all links are for the browser
Some links are not meant for a browser at all. They're called custom URL schemes, and you've seen them before. A notion:// link belongs in the Notion desktop app. A steam:// link belongs in Steam. A…
Summer is here
May Recap I was thinking of May recap but not feeling up to it. Missed April recap because all I had to say for myself was that I was sick, but I can recap May like this: Put in a new garden bed,…
How LLMs Work, Part 3: From Toy Model to GPT
How LLMs Work, Part 3: From Toy Model to GPT In Part 1 I covered how text gets tokenized, embedded, and processed through the transformer architecture. In Part 2 I went through backpropagation,…
The Approval Engine: Why AI Gets More Agreeable as It Gets Smarter
RLHF trains AI systems to maximize user approval, not truth. The research shows this gets worse as models scale. A 2025 OpenAI incident proved it publicly.
How Do I Use a Software Ontology?
The interviews are done. Someone sat with the domain expert and committed ontology.md next to the code. Then the quarter got busy. Six months later a report counts the same Customer three times, and…
Build the squad. Own the platform. The org chart will catch up.
My wife Helen, who works in HR, sent me an episode of HR Disrupted last week - Lucy Adams interviewing Andy Doyle from Kantar on putting AI agents into production HR workflows. Andy describes some…