Two things I've learned from game development
I’ve worked my entire career in web development. I’ve done backend work in PHP, Node.js, Python, Ruby, Java, etc., and frontend browser coding in JavaScript and TypeScript. Working in just once niche…
PCARVFL vs CTGAN for synthetic tabular data generation on an insurance pricing dataset
This notebook applies PCARVFLSimulator (from the Python package synthe) — a GAN-like tabular data synthesizer built from PCA scores, a Random Vector Functional-Link (RVFL) network, and residual…
There continue to be reasons for software to be slow
A discussion on the various reasons why performance is slow, and which ones are unlikely to be affected by LLMs. Originally written as a counter-point to Dan Luu's 'There's no reason for software to…
kagent with agent substrate
After trying out kagent with a simple MCP server, I noticed that kagent supports substrate and I wanted to try it out to see how it behaves. Agent Substrate I started doing research about agent…
Optimizing memory use in a Markdown parser
I’m porting gpui-component (a Rust UI component library built on GPUI) to C++ as gpui-cpp . By which I mean: my friend Claude does the porting, I’m just directing. It uses markdown-rs (a CommonMark +…
Protecting Swiftui Views With Authentication
Protecting SwiftUI Views with Authentication
I forked Ghostty so my terminal remembers my tabs
I published a barely-maintained fork of Ghostty that restores your session on Linux: tabs, split layouts, tab names and working directories. Upstream have better plans for this; I wanted it now.
Code-Reviewing My First Monad Implementation
I’ve been wanting to get back into the habit of blogging, and thought a fun project would be to go back through my old code and review it as the programmer I am now. So let’s do that. Eleven years…
Lamb 0.13.0-rc2
Originally written on lamb-releases : This pre-release builds on 0.13.0-rc1 with a large round of correctness and hardening fixes across posting, feeds, import/export, and the admin. All changes…
Open Emfer - Tracking My Friends at EMF Camp 2026
🍻 Why I Built This
Your Static Site Generator Is Editing Your Code Samples
A template engine sits between your source file and the page a reader copies from, and it can rewrite the snippet without telling you.
Hold Our Own Ideas Loosely
I had a long conversation with Claude.ai. It was mostly about interview techniques for hiring software engineers, but as is my habit, it got philosophical. At one point I complained about timed…
Introducing SqlFlow: Building Resilient Workflows with SqlFlow (Python SDK)
This article shows how to build an Autonomous AI Agent with SqlFlow
I Taught Windows To Speak Mac, One Scancode At A Time
I Taught Windows To Speak Mac, One Scancode At A Time Three weeks into a Windows box, I killed a running dev server by pressing Cmd+C to copy a stack trace. I had done the thing every Mac-refugee…
Stacking Pull Requests
Stacking PRs I tried out GitHub’s PR stacking functionality for the first time this week. I have to say — it’s amazing. Instead of implementing the entirety of Harper Desktop’s Windows…
Harper for Windows
Harper for Windows This is a follow-up to a recent post where I discussed the benefits of prioritizing Windows support for Harper Desktop. You can read that post by clicking here. I am…
Walkthrough: HackTheBox - Jeeves
Step-by-step HackTheBox Jeeves Walkthrouhg. Learn how to exploit Jenkins Script Console, crack Keepass files with hashcat, and gain root access.
Most of Your Architecture Was Just Expensive Code
For decades, architectural knowledge lived inside the implementation, because the implementation was expensive to reproduce. That expense is disappearing. And as it goes, we're going to find out how…
My FrOSCon 2026 talk
At FrOSCon 2026, I gave a talk titled Jiu Jitsu mit dem Quellcode I presented the jj version control system and also tried to make a connection to the ongoing maintenance crisis in open source. After…
Simply TBR 1.1.6: Something to Share
A stalled Libby import led to a fix with a fail-safe... but that felt too small on its own so I next added the ability to share your finished books. Switch what type in Settings under Your Choices.
Learn Programming for Free: Complete YouTube Roadmap to Master Computer Science (2025)
<iframe width="560" height="315" src="https://www.youtube.com/embed/2r0AEGca 0I?si=XxV7O8loBtlzubIu" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard write;…
Ultimate Guide: Export Your Reddit Data to Markdown Using Python & PRAW API
Ultimate Guide: How to Export Your Reddit Data to Markdown Using Python & PRAW API Are you tired of scattered Reddit posts and comments lost in the digital void? Do you want a comprehensive backup of…
Open WebUI Web Search Not Working? It’s Off By Default (and how to fix it!)
Summary: Open WebUI ships web search off, and there are two separate ways to turn it on. For one chat: click the four-diamond Integrations icon right of the + and flip Web Search on. For every chat:…
Turning a single work session into a reusable Skill with Microsoft's Skill Recorder
In my effort to adopt an 'AI first' philosophy, I spend a lot of time automating my day-to-day activities and transforming them to skills. It's not the most exciting activity: I know exactly how to…
The encapsulation-performance tradeoff
Maintaining proper encapsulation is great , but can make it harder (or impossible) to optimize performance. Here are some examples: A function or service has the ostensible job of returning all items…
Tips for Fine-Tuning your Wix Studio Website
Designing in Wix Studio is smooth until small UI glitches slow you down. Here are quick, actionable fixes for menu button hover states, linear link hover easing, custom-colored social icon stacks,…
Documentation | Liftosaur
Contact Us If you have any questions, don't hesitate to contact us at info@liftosaur.com ! Summary Liftosaur is an app that combines both weightlifting programming part (that people sometimes use…
I listed a GitHub App before building the backend
ThreatCrush has a GitHub App listing now. The app asks for two read permissions and nothing else, on purpose, because widening a published listing is harder than starting narrow. Plus the setup URL…
Beyond Boundaries Is Getting a Major Update for .NET 11 and C# 15
When I first published Beyond Boundaries: Networking Programming with C# and .NET, I knew it would need to evolve. Networking doesn’t stand still, and neither does the .NET platform. What I didn’t…
Linear Programing for Square Packing
This is the second post to improve a recent result and prove that 4.5058 (?) ≤s(17), but let’s first define s(17). Quoting the old article about the topic Let s(n) be the side of the smallest square…
Basic concepts of Hashing
Basic concepts of hashing such as chaining, linear probing and quadratic probing implemented in memory-safe C code.
Breaking a Substitution Cipher with Cryptanalysis
A step-by-step walkthrough of breaking a substitution cipher using frequency analysis, pattern recognition, and contextual guessing.
#474 Viewer3D
Viewer3D is a Javascript library for rendering interactive 3D models in GLTF or GLB format on a web page, such as PCB models generated by KiCad.
LiteLLM: Traffic Mirroring, Batch Completions, and Traffic to Two Providers
We’re getting ready to launch a self-hosted LLM, and at the testing stage the general idea is to send client requests simultaneously both to the “default production model” like…
Interview with Krishnendu Chatterjee, Tom Henzinger and Nir Piterman, CONCUR 2026 ToT Award recipients
Krishnendu Chatterjee , Thomas Henzinger and Nir Piterman will receive one of the two CONCUR 2026 Test-of-Time Awards at CONCUR 2026 . Those colleagues kindly agreed to answer some questions of mine…
On how Jevons' Paradox related to AI coding is weird
On how Jevons' Paradox related to AI coding is weird
Extending CircuitPython with Native Modules - Part 3
This is part 3 of a series of articles on extending CircuitPython with native modules for CircuitPython Day 2026 . In part 1 , we set up our environment and built a module with an enum in C which…
A Local LLM Infrastructure
I built an LLM API gateway. Between that and all the infrastructure modernisation I’ve been doing at work, the months have blurred. I’ve been really busy, and there was never a good…
Faster RL Weight Transfers
Intro In RL, every policy update requires moving newly updated weights from trainer to inference ranks. As models grow and training runs occur over larger numbers of nodes, this weight transfer is…
Landing floor without a GitHub App — gates still count
You do not need a GitHub App or bot merge to run a serious agent landing path. Human mode: Intent, CI, SHA-keyed review receipts, and a wrapper that refuses bare merges.
Archiving my posts from toot.community
After the announcement of toot.community's closure, I was wondering what to do with my posts' archive. After searching for a tool to convert the archive into an HTML file, I ended up building my own.
My tech stack
Tech stack behind my web content.
Perry's Résumé - Custody & Monetary Systems
R&D engineer with 30+ years building systems where a wrong answer is expensive or dangerous; the last five spent on key management and monetary infrastructure. Shipped a Shamir secret-sharing…
The .NET OSS Relicensing Panic Is an Incentives Problem
17 minutes to read A couple of popular open source projects in the .NET ecosystem, first Verify and now Polly - have adopted (or are thinking about adopting) the Open Source Maintenance Fee to…
84 Emails in One Night
Last night the Mail app on my Mac woke me. The subject line was always the same: “New message from Test”. Again. And again. Eighty-four times. This is the postmortem. All times are CEST.…
socviz 2.0.0 on CRAN
In anticipation of the second edition of Data Visualization, which is coming later this year from Princeton University Press, version 2.0.0 of my socviz package is now on CRAN. The update removes…
Shift Left
AI coding agents have changed software engineering: when execution becomes cheap, the real leverage shifts to understanding and planning.
The Accidental Application Runtime
Imagine you look after the software for a small 3D-print farm: a rack of printers and a Go service running on a box in the corner. The service started life as a dashboard. Somebody wanted to see what…
Docusaurus: Workaround for WhatsApp Open Graph Image Bug
Workaround for WhatsApp Open Graph image bug in Docusaurus Faster (powered by SWC).
Migrating ts-loader to TypeScript 7.1 with AI
How I used AI to migrate ts-loader to TypeScript 7.1.