Everyday CLI commands and shortcuts
Using the terminal can make a lot of fun and speed up productivity. Either using it during development and switching between different projects and files or when logging into a server: Knowing some…
WebAuthn and TOTP Without a Framework
Passkeys and authenticator apps in plain PHP: relying-party identity, session ceremonies, trusted-device cookies, recovery codes, and an explicit CLI exception.
How I Found Myself Writing reverse-bin
This is the backstory for reverse-bin: My Retro-Futuristic Successor to CGI-BIN. In the early 2000s Linux was cool, corporate types used Windows and kids were learning Linux. Linux systems were…
Stop Using Other People's Skills
There are a number of software engineering skills out there and I’m here to tell you to stop using them. The three most popular plugins for software engineering skills are:…
GitHub's new license gate can block merges. Roll it out carefully.
GitHub's new enterprise license controls evaluate dependency changes in pull requests and can block noncompliant merges. Here is who can use them, how to roll out safely, and the branch-protection…
BazelCon 2026: My Notes and Observations
I always find BazelCon to be an exceptional experience, and this year was no exception. From the things I learned by randomly talking to people, to meeting familiar faces and learning from the talks…
New version of pcsc-lite: 2.5.3
I have just released a new version of pcsc-lite 2.5.3. pcsc-lite is a Free Software implementation of the PC/SC (also known as WinSCard) API for Unix systems. It provides an API for using smart cards…
Creating a Static Site Generator
A feature-complete rebuild of the static site generator for ko(9), including a Markdown parser, HTML and XML renderers, and live reloading.
The Problem with C++ Safety (Part 1): Why “It Works” Isn’t Good Enough
Rainer Grimm’s blog continues. In this first article of a new series, Klaus Iglberger looks at why C++ is called memory unsafe and argues that the real problem isn’t the language itself, but how we…
Many Actors, One Worker: Running Multi-Actor Workflows In Agent Substrate
How do you run multiple actors on one worker in Agent Substrate? This guide covers multi-actor workflows, scheduling, and maximizing worker density.
DRY+ (Don’t Repeat Yourself+) Principle
The DRY (Don’t Repeat Yourself) principle is fundamentally a software development principle focused on avoiding duplicated code, logic, and knowledge. While that remains its primary intent, the same…
Creating Apps in SailfishOS using Golang: Daemons and stuff
In this article we'll learn how to create parts of the code for SailfishOS apps in Golang. Namely we'll use an approach where the GUI is written in standard Qt and communicates with the daemon using…
Why I archived Burrow
In March I announced Burrow as my framework for personal web projects. In October I archived it. Here's why.
Pattern: a new calendar
I built a new calendar app on top of Google Calendar, with timeboxes, holds that clear themselves, buffers, private notes, time zone tools, and Google Meet links that join from the right account.
A page looks innocent: the algorithms behind a typeset page
When you look at a page of a well-typeset book or catalog, you usually don’t notice anything special. There is some text, maybe a table, a picture or a footnote. But every line on such a page…
How to Reassemble 98 Mixed Document Scans Locally with OCR and AI Reasoning
When closing complex physical transactions, camera snapshots leave you with dozens of jumbled, upside-down JPEGs with arbitrary filenames. Here is how we used native Windows OCR and local reasoning…
Ancient VOX issues unearthed and fixed in Telltale Speech Extractor
I’ve updated Telltale Speech Extractor again and this one is quite a significant change. Investigating a bug report that the speech in the German version of Sam and Max 101 was exporting at a…
Rust Don't Panic
THE MISTAKE let (feature_values, _) = features .append_with_names(&self.config.feature_names) .unwrap(); -- Cloudflare Hi friends my name is Tris and this is No Boilerplate, where I focus on fast,…
Clean Architecture API Lesson Learned
BLUF Clean Architecture means implementation choices can be revoked. Ignore the "Dependency Inversion" part of the SOLID design principles at your peril. Think through at least one…
Neural Codec2 decoding for DroidStar
Our experimental fork of DroidStar can now decode M17 voice with a neural vocoder. The new decoder comes from Codec2-mod-neural, which uses the FARGAN network from the Opus project. It takes the same…
Software for One: My Star Trek Computer [Built by AI Agents]
Michael Okuda designed Star Trek’s LCARS screens. In an interview with Adam Savage, he tells how Marina Sirtis found the bridge’s control panels intimidating on the first day of filming.…
Let's reverse-engineer how someone reverse-engineered a secret hiding in F-Zero GX for 23 years
Plus: Open source FPGA hardware's going to give the busy Android scene a run for its money.
S3 files support in Parquet Java
Carpet S3 lets Java applications read and write Parquet files directly from Amazon S3 and other S3-compatible services, without copying them to a local file system.
<script src=”test.js”/> or <script src=”test.js”> </script>?
<script src=”test.js”></script> is correct in HTML5. Self-closed script tag is illegal in html5. The following content after <script src=”test.js”/>…
Inside my @ilinmaksbot: project questions, an estimate and a brief
How I built @ilinmaksbot: project questions, an initial estimate and a brief sent to me in Telegram. A three-language portfolio and the limits of automation.
Findings from the web
Some interesting links I found on the web. Origami by Dan Q (via). HTML boilerplate by Vale and Manuel (via). Improved CSS Text-Stroke. CSS for underlines. Thanks for reading this post via RSS.…
How I turn my API doc course into a PDF and sell it on Buy Me a Coffee
My API documentation course is free on the web, but I also sell a PDF version of it through Buy Me a Coffee. This post walks through each step of how I turn about 170 web pages into a 975-page PDF…
Batch apply: one transaction, three lists
Last post looked at TTSession<T>, the unit-of-work layer: you hand it a list, work on clones, and mark each one with Insert, Update or Delete. This post is about the other way to write a batch:…
Personal software factories are a waste of time
Why the last thing you should spend time on is your own software factory.
I Made a Jukebox
I had my first success home-cooking an app with robot assistance this weekend. After half-starts in high school, college, and covid lockdown, I could finally bring one of my tool ideas to fruition.…
Refactor UnlockedClient type (failed)
Goal My goal for today is to refactor the UnlockedClient type so that command like backup and restore easy to implememnt. Plan Run tests. Refactor. Notes Unfortunately, I have been lax in keeping up…
PVM - PHP Version Manager for Windows
PVM (PHP Version Manager) is a Windows-native command-line tool that eliminates the complexity of managing multiple PHP versions on Windows systems. With simple commands like pvm use 8.2.0 or pvm…
Logging in to GitHub CLI on a Headless VM
I run `gh auth login` on a VM that doesn't have a GUI and, as part of the flow, I inevitably end up with `lynx` having been fired up. What I really want is `GH_BROWSER="echo"`.
Staying off the hot path
Why simple ideas go untested: we all follow the same “hot path” and assume someone else already checked the obvious.
Sungrow in Lean, part 2
In part 1 we implemented a simple Modbus TCP library and read a single sensor from the Sungrow inverter. Our next step is to parse the full list of registers so that we can read all the values of…
Flux Limiter: GCRA Rate Limiting Made Easy
The announcement post I wrote for flux-limiter a year ago and never published, shown essentially as-written — overconfident claims, race-condition code samples, and all. Part 0 of the re-opening the…
Suggested OpenCode settings for Windows
Running AI coding tools natively on Windows can sometimes feel like playing on hard mode compared to Linux or macOS. OpenCode works well on Windows out of the box, but a couple of friction points…
From Java to Web App: Building a Currency Explorer with TeaVM
Build a Java currency explorer with TeaVM, a Spring Boot API, asynchronous JSON requests and a Chart.js rate timeline.
What’s new on BetterTyping, and how its bots work
In January I wrote about reviving bettertyping.org with AI coding agents. The project didn’t stop there. This post covers what changed since then, and takes a closer look at one part I find…
Simplifying NAudio 3 Target Frameworks
When I originally created NAudio in 2002, it was on the old .NET Framework which was Windows-only. The whole NAudio library was a single package, containing all the capabilities. Over time, I…
Integrating Antigravity CLI into External Programs
Starting around last year, Google AI Plus/Pro quietly became one of the best-value AI subscriptions out there: higher-tier models and generous quotas in Gemini, Audio Overviews in NotebookLM, video…
GetWill, and the case for keeping Word open
Why I’m making Word part of GetWill: meeting clients and fee earners in Microsoft Office, and preserving what they meant when their instructions come back.
Buffers and shapes
Starting code · Completed code In the last installment, we got a C# kernel running on the GPU and checked all 1,031 answers. The data was a pair of flat arrays. Each invocation took two values at the…
Contributions: Oct 11–18, 2026
18 merged, 12 in progress in workerd and node
From Python to Rust
As you may know I have a lot of software projects. I used to program Ruby by hand, now I do all in Claude Code and most of it in Rust or Assembly. Apart from the latest passion for games I have a…
Week 42, 2026 - Python 3.15, Tidy Traces and Bot Workflows
I explore Python 3.15, revisit Grok subscriptions, start Tidy Traces and build a private dashboard while working out how much of each workflow I can automate.
The Documentation I Wish I Had
How I brought a Rust microkernel OS onto a real RISC-V board: measure the vendor system, turn the numbers into gates, then write the driver.
Django’s Brightest Timeline
Did you know that we're in Django's brightest timeline? One reason is that the process to add new features to Django is in a wonderful state.