Technology and Art
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 SystemsNotes from building a multi-language code analysis engine across 400+ conversation sessions with Claude Code.
Tags: Software Engineering, Compilers, Program Analysis, AI-Assisted DevelopmentA 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 DevelopmentThis post is probably a spiritual successor to Resilient Knowledge Bases.
Tags: Software EngineeringThis 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 EconomicsThis 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 SystemThis 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 EconomicsBackground: 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 EconomicsNote: 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, ProbabilityNote: 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 EngineeringWe 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