Data race freedom in OxCaml
x-ocaml { font-size: 0.8em; display: block; margin-bottom: 1.4rem; } x-ocaml.hidden { display: none; } A while back I wired up x-ocaml so this blog could embed live, editable OCaml notebooks. That…
How I Spent Half a Day Fixing a WordPress Charset Problem (and What I Learned)
A WooCommerce site with an ERP integration in progress. The external developer reported a mixed encoding in the database: latin1, utf8mb3, and utf8mb4. ALTER TABLE looked like the right move. But it…
Putting The House In Order
Photo by Mike Smith on Unsplash The fortnight that’s just ended started with one of the smallest possible problems: commandspace, “screenlock”, return, and the wrong version of…
Don't sell the build effort.
There's a trend I have noticed when folks try sell software, their perception of how hard it was to build the software influences their comfort in setting a price. More difficult to build, more…
PC Engine CPU
I’ve been working on a PC Engine emulator (aka TurboGrafx-16) after getting the bug to start looking at a new system, and I’ve found it to be pretty interesting hardware-wise. Originally…
Coding is not solved
“coding is a solved problem”
Learn Ring - 13. CSS
Notes CSS CSS in Hiccup CSS with garden
What makes a good extension language?
“Scripting languages are designed for gluing”, wrote John Ousterhout, the creator of Tcl, in 1998.1 What Ousterhout had in mind was writing an application in a scripting language and…
How OR clauses were silently killing our query performance
Recently at work (on my last day), I dealt with a SQL query that got pretty complex because of new features making the business logic increasingly involved. The query ended up quite lengthy, but it…
💭 Programming Still Sucks. — Writing
!https://www.stvn.sh/writing/programming-still-sucks-fqffhyp
Tracking redirects minimally
Everyone needs a tracking URL shortener. Why tracking? I want to know if they opened my email and clicked the link. Why shortener? I want them to know what the link is about. For example,…
A low-code pipeline to personalize conversational agents
Low-code and AI are now giving you the opportunity to adapt your chatbots to better fit the profile of your different users
Some examples of how I use saved searches in beorg
The new search engine, introduced in beorg 3.39.0, gives you a much more expressive syntax for finding what you need. Not only is it a more powerful syntax, but beorg now gives you the results almost…
Adding edit, delete and reposition for nested forms in Rails with Stimulus
In a previous article , I explored building nested forms with Stimulus. But what about when you need to edit existing questions, remove ones you no longer need or reorganize them? Let’s extend that…
Your SDLC is a power tool, not a compliance document
The Software Delivery Lifecycle (SDLC) document sitting in your governance folder is one of the most useful tools in the business. Most orgs never use it that way. They treat it as a compliance box…
bug found in Intel's ASTC compressor (part of ispc_texcomp)
I've ported Intel's ASTC compressor (in ispc_texcomp) to pure C for benchmarking and discovered this gem during the process. The swap() utility function for float values, located near the top, has a…
DeepSeek V4 Flash in OpenCode
I decided to try different models at OpenRouter for my OpenCode use. It was easy enough to set up OpenCode; all that is needed is an API key, and the rest worked automatically. I was interested in…
Unveiling I/O Riot NG 1.0.0 — Part 1: a guided tour
I rewrote I/O Riot. The old version, written in C and SystemTap, dates back to 2017. The new version (called `ior`) uses Go, C, and BPF via libbpfgo. It runs on Linux and is primarily a TUI dashboard…
Notes on GPT 5.x Model Regressions
I’ve been getting annoyed at constant code regressions in piclaw for the past few weeks. Something was off–even after bumping the test suite to the point where it catches most mechanical errors,…
QuantLib and A.I.
I don’t use A.I. for my posts; I prefer the human touch (and if you suspected I did use it because of em-dashes, I can point you to a snapshot of my blog from 2015 where you can see that I averaged a…
Getting started with the GitHub Copilot SDK in .NET
In the previous post talked about why the GitHub Copilot SDK matters: it gives you a production-grade agent harness out of the box, so you can skip building the infrastructure and focus on your…
How fast does it serve? Throughput, latency, and picking the right GPU
Part 2 of 2 on inference engineering for AI engineers.
Motivation, Productivity Barriers, and Engineering Friction
What looks like a motivation problem in software work is often the cost of entering the next step - context load, cross-system design, LLM drift, verification, and re-entry. The fix is not more…
Design Thinking
--> I think about my code while writing it, and at other times. Here’s what I think today. As I wake up in the morning, I often think, often in an almost dreamlike state, about my current programming…
How Next.js Works Under the Hood, Server vs Client components
Hello, I wanted to do a deep dive into Next.js's structure and how it differs from traditional HTTP servers such as Flask, Express.js, and many other frameworks.As you know, Next.js is…
Dev Journal #116: The Tech Tree in the Room
[confluence title=""]https://stardock.atlassian.net/wiki/spaces/SDEnt/pages/3492381043/Dev+Journal+116+The+Tech+Tree+in+the+Room[/confluence]
Compaction in `sid`
My coding agent, sid has a compaction strategy I’ve not seen in use elsewhere; I call it, “Ask an Expert!”
AI and the Art of Code: Navigating a New Frontier in Software Development
The Evolution of AI: Embracing a New Era of Software Development Artificial Intelligence (AI) has rapidly emerged as a transformative force within the tech industry, reshaping the paradigms of how we…
Chaining Find Commands
For the better part of my career I used 'find' incorrectly, or at the very least very naively. The '-exec' trickery eluded me for over a decade; I often relied on running child processes or _worse_…
What I learned from vibe-coding "Every time Daniel Molloy comes on screen play SexyBack" in an hour with Claude Code
Substack: What I learned from vibe-coding “Every time Daniel Molloy comes on screen play SexyBack” in an hour with Claude Code valstechblog/molloy-detector on GitHub The motivating user story On…
housekeeping 2 electric boogaloo
So a week ago I added the human.json protocol to my site and wrote a quick and dirty script to load a ton of vouch links in it and added it to the links page and while I was at it updated my youtube…
Op Snap — Visualising West Midlands driving offence data
On the walk to nursery this morning my wife and kids were startled by a car that drove onto the pavement within a foot of them. After reporting the offence via Operation Snap I spotted all of the…
Google Summer of Code 2026 Announcement
An announcement of the Google Summer of Code 2026. Four accepted candidates.
Sutton & Barto, Ch. 13: Policy Gradient Methods (Personal Notes)
Almost all the algorithms/methods covered so far have been action-value methods (except gradient-bandit algorithms, Section 2.8). Action-value methods learn the values of actions and then derive the…
30 Days of Vibe Coding - The Wrapup
30 projects in 30 days using AI-assisted coding. Here’s what was easy, what was hard, what was unexpected, and where this is all going.
Book Update: RC 2 Is Out
RC 2 of the book is out. When I asked for readers a few weeks ago, I half expected polite “looks great!” replies. I got that, but also the opposite, which honestly is more helpful. Almost…
Compatibility packages in 2026
Posted on 2026-05-07 by Oleg Grenrus engineering Seven years ago I wrote a post about compatibility packages. It is now highly outdated, so let us revisit the matter. Recently there have been a small…
Deconstructing these auto-generated OG images
Contents Introduction Specifying what I wanted The Satori plus sharp libraries What posts are eligible for a generated og image? The renderer Caching the generated PNGs The orchestrator Conclusion…
Pivot is more than a shorter, fatter group by
In a previous post , I explained that the pivot operation on a table of data is equivalent to a groupby operation on that data, but with the output table rearranged into a squatter configuration. But…
Announcing the CSS Property Type Validator Extension for VSCode
A new editor extension that validates your CSS @property registrations and catches incompatible var() usage as you type.
Library dependency version specifiers aren't for fixing vulnerabilities
Let's say you are the maintainer of a Python library that depends on another Python library like “ urllib3 ”. Because you want to make sure users receive a compatible version of urllib3 you add a…
TP-7 CLI
TP-7 CLI is a Rust command-line tool for humans and agents to manage files on a Teenage Engineering TP-7 field recorder from macOS. It can browse the recorder, download recordings from the device,…
The agent principal-agent problem
The agent principal-agent problem 2026-05-07 Code review is broken. The industry-established code review process, review-then-commit, was a straightforward mechanism that allowed a relatively…
NLnet Labs
Every time you load a website, send an email, or update an app, you’re quietly relying on a handful of unglamorous services that route your packets to the right place: DNS to translate names into…
From Stringly to Strongly Typed
Imagine a D&D character sheet. It has typed fields (Strength 1 to 18, Class is Fighter or Wizard or Rogue) and rules between them (Halflings can’t be Paladins, Hit Points depend on Class and…
Projecting React
An AI-generated projection of React's public API, shaped around what a TanStack Start app needs. ~9KB client, 2–3× faster on our workloads. Powers this blog today; capable of running tanstack.com…
How to Build an Agent Platform
Cloud platforms, data platforms, and now agent platforms. Every company wants to build one and run a fleet of agents. Having built cloud, compute and data platforms before, I'm hoping we can learn…
Hugo Site Publishing with Respectful Caching and IndexNow Submission
Hugo builds static pages; publishing determines whether deployed artifacts carry accurate cache validators and whether search engines receive explicit update notification. The implementation…
Zed is pretty nice
Recently, the Zed editor had its 1.0 release. While I can't say what it's going to be like in a few years, even now it has largely replaced Visual Studio Code as my editor for non-IDE tasks (though I…