Total Internal Reflection

Technology and Art



Code

Mojo LSP
Cartographer
PICK Basic Tree-Sitter LSP
Cobol REKT
Tape/Z
Plenoxels
Transformer
Basis-Processing
Cataract
COMRADE
Duck-Angular
Exo
IRIS
MuchHeap
Snail-MapReduce
Underline
Lambda-Queuer
jQuery-Jenkins Radiator

Contact

Github
Twitter
LinkedIn

Site Feed

Engineering

Anatomy of a Refactoring Using AI

13 March 2026

Tracing the full arc of a multi-phase refactoring — from “Java string concatenation crashes the VM” to “every value in the system carries its type” — done across a dozen sessions with Claude Code over two days.

Tags: Software Engineering, Refactoring, AI-Assisted Development, Type Systems

Building Non-Trivial Systems with an AI Coding Assistant: A Practitioner's Account

12 March 2026

Notes from building a multi-language code analysis engine across 400+ conversation sessions with Claude Code.

Tags: Software Engineering, Compilers, Program Analysis, AI-Assisted Development

RedDragon: A Deterministic Compiler Pipeline with LLM-Assisted Repair for Analysing Incomplete Code and Unknown Languages

1 March 2026

A universal IR, 15 deterministic frontends, LLM-assisted repair/lowering/execution, a deterministic VM with class hierarchy support and cross-language slicing, a structured type system with generics/unions/variance/traits and interface-aware inference, and iterative dataflow analysis.

Tags: Software Engineering, Compilers, Program Analysis, AI-Assisted Development

An Ode to the Generalist

13 March 2023

This post is probably a spiritual successor to Resilient Knowledge Bases.

Tags: Software Engineering

Economic Factors in Software Architectural Decisions

20 February 2023

This article continues from where Every Software Engineer is an Accountant left off. I have had feedback that I need to make my posts on these a little more explainable; I will attempt to do that here.

Tags: Software Engineering, Software Engineering Economics

Advice I'd give a younger me

13 February 2023

This is a weird mix of advice I’d give the less-experienced me, as well as reflections of my personal value system. This verbal diarrhoea came out all at once in a single sitting of 45 minutes. I apologise for some of the strong language in here, but I thought I’d share it without much censoring.

Tags: Software Engineering, Value System

Every Software Engineer is an Accountant

4 February 2023

This article continues from where Every Software Engineer is an Economist left off, and delves slightly deeper into some of the topics already introduced there, as well as several new ones. In the spirit of continuing the theme of “Every Software Engineer is an X”, we’ve chosen accounting as the next profession.

Tags: Software Engineering, Software Engineering Economics

Every Software Engineer is an Economist

22 January 2023

Background: This post took me a while to write: much of this is motivated by problems that I’ve noticed teams facing day-to-day at work. To be clear, this post does not offer a solution; only some thoughts, and maybe a path forward in aligning developers’ and architects’ thinking more closely with the frameworks used by people controlling the purse-strings of software development projects.

Tags: Software Engineering, Software Engineering Economics

Tests increase our Knowledge of the System: A Proof from Probability

10 January 2023

Note: This is a post from July 13, 2011, rescued from my old blog. This is only for archival purposes, and is reproduced verbatim, but I make no claims about its rigour, though it does still seem plausible.

Tags: Proof, Tests, Software Engineering, Probability

A Pipeline for Adaptive Bitrate Video Encoding

9 January 2023

Note: This is a post from July 13, 2011, rescued from my old blog. This is only for archival purposes, and is reproduced verbatim, but is hopelessly outdated.

Tags: Video Processing, Archive, Software Engineering

Two Phase Commit: Indistinguishable Commit Scenario

18 November 2021

We review the most interesting failure scenario for the Two Phase Commit (2PC) protocol. There are excellent explanations of 2PC out there, and I won’t bother too much with the basic explanation. The focus of this post is a walkthrough of the indistinguishable state scenario, where neither a global commit, nor a global abort command can be issued.

Tags: Distributed Systems, Software Engineering

     

All content on this site was written by a human. No language models were used to generate, summarise, or rephrase any of the content here.

Upcoming Posts