Introduction Like many others, my employer has been pushing its workers to use AI as much as possible so that we might reach the promised land of 10-100x productivity. I have written about my views on generative AI before and will not rehash this here. This short blog is meant to be a more positive read. The proliferation of AI-assisted or AI-led software engineering has sparked a desire in me to…
Introduction The ascent of AI-assisted (or, rather, AI-led) coding has made me feel very jaded about programming as a practice. In my dayjob, engineers are being pushed fairly hard to lean heavily on tools like Claude Code; speed is of the essence, quality less so, understanding even less. This is not necessarily a damning judgment of my employer specifically, as the same dynamics are at play in…
As a software engineer working for a large-ish multinational tech company, it has been entirely impossible to ignore the all-consuming AI hype. My employer is not quite mandating AI use, but it is heavily encouraging it (and paying for it), and it is setting expectations of enhanced productivity across our R&D organisation. My colleagues are adopting agentic coding to an increasing extent; some…
As a software engineer, I have been skeptical about AI-assisted coding. The hype cycle is off-putting, giving the impression that many generative AI applications are solutions in search of problems. Combined with the obscene resource usage required by training and running these models, I have generally refrained from using them, criticising them from the sidelines like the curmudgeon I am. Yet…
Drivel Over the past few weeks, I built a small CLI tool called drivel . The purpose of drivel is twofold: to infer a schema from a bunch of JSON data to produce synthetic data (drivel) based on the inferred schema I work with a lot of divergent data sets in my day job, and having a tool like drivel makes it easy to explore input data or generate large test datasets for things like performance…
Bulldozers and lightning bolts In his blog post "What Mob Programming is Bad At", Hillel Wayne discusses the practice of mob programming.[^1] Although he is generally in favour of the practice, his article focuses on types of work for which he thinks mob programming is not a good fit. Wayne compares mob programming to the way a bulldozer moves. The practice of mob programming is likely to yield…
I recently read Rebecca Solnit's article "In the Shadow of Silicon Valley".[^1] In it, she laments the negative consequences of the tech industry and its billionaire moguls for the city of San Fransisco, where she has lived since her youth. The article is interesting for many reasons, and I urge you to read it. What struck me most, however, was Solnit's observation about the workers in…
Introduction I have often felt that there is a kinship between software design and conceptual analysis. Both practices are fundamentally about drawing boundaries; they are concerned with demarcation and categorisation. Software design, like conceptual analysis, requires grouping together things that, according to some intuition or heuristic, belong together; and separating those that do not. Until…
stroming codeberg repo The what and why of stream stores A stream store is a kind of database that stores messages - or events. These messages live within a given stream; hence the name. Stream stores are designed to work well well as a backing data store for event sourcing, especially in combination with patterns such as aggregates and asynchronous read models. Streams and deciders The team I…