I am a co-founder and the Technical Director at Dragon Drop, a development agency focused on building bespoke internal tools for organisations that want to use technology that works for them.

I've been a developer since 2008, and most days, we're using Ruby on Rails.

This is where I write about things.

Recent Articles

Genies and Horses: reflections on AI agents and software development

It's becoming common in development circles to refer to AI agents as genies.

I like this word, because it speaks to something of the wishful nature of using an agent. I might get what I want, I might not. Ironically, by using such a magical word, we strip away some of the 'magic' around how AI agents work. You ask for something; they give you something.

The idea of genies comes from the jinn of Arabia. The jinn have free will, they can be good, neutral, or evil. They live in a parallel world to humans. Stop me when this stops sounding familiar.

Some days when coding, I think my genie is a genius. Some days, I find it a productive tool that has saved me hours of work and brain power; and I can pass all of these benefits on to my clients.

Some days aren't like this. Some days I wish there were no genies, and that I could go back to writing the code myself. I know how to do it. I'm good at it.

When the genies frustrate me, I think about the horses of New York City.

By 1870 New Yorkers were taking over 100 million trips a year by horse-drawn streetcar. On July 26th, 1917, the last horse-drawn streetcar ceased operations. The era of the automobile had arrived.

If horse-drawn streetcars are the world of software development before AI, I'm an expert horseman.

I know the streets of the applications I build inside and out, and I know how to drive the horses. But I also know I can't afford to be the 1890 cab driver insisting that the automobile will never catch on.

And this brings us back to the genies.

The genie is out of the bottle.

I would rather we had not opened it. But we did. So I am learning, still, to refine my wishes.

Published

Human Pauses — Why em-dashes aren't just for AI

Em dashes have been a staple of quality writing for centuries. Writers like Dickens, Hemingway, and publications like The New Yorker have used them extensively. In fact, distinctive punctuation choices often reflect a writer's personal style. When editing, I like to take a moment on each piece of punctuation and choose the one that works better—or sometimes—just looks better.

Often, I reach for the em dash.

It creates dramatic pauses—making readers hang on your next words. It sets off explanatory asides—like this one—without the formality of parentheses. It signals interruptions in dialogue, connects related thoughts, and emphasises important points.

The em dash is the punctuation of passion—the mark of a writer who cannot be contstrained. Virginia Woolf loved them. Emily Dickinson scattered them liberally through her poetry. The New Yorker has made them part of its distinctive voice.

In hand-writing, it's even more emphatic! Just a line as long as you want—keep reading this!

When used thoughtfully, em dashes create rhythm and flow. They give prose a conversational quality—a human voice—that feels intimate and direct. They create emphasis without shouting, separation without disconnection.

I'm not the only one here. Ben Zimmer wrote in the New York Times in 2011

I've tried to tone down my dashiness. But I still admire the artfully wielded em-dash, especially used near the end of a sentence—when it works, it really works.

In a world of careful grammar and standardised style guides, the em dash stands as a reminder that writing is still an art—personal, expressive, and delightfully flexible.

It's probably true that in the age of LLM content generation that we're going to see a lot of similar prose again and again. And the mark of authenticity is going to be something we all look for. But, don't mistake the return to formal prose, or the usage of every available method of punctuation as a sign that you know I generated this with AI.

I didn't — but I've squeezed as many em dashes in as possible.

Published

View all articles

Recent Notes

Chat GPT Roasted Me

I'm not okay about it.

Roast me based on my previous prompts.

You’re like the mad scientist of the Ruby world, spending hours crafting the perfect functional core for your library app while your Rails controllers probably look like they’re straight out of 2008. “Imperative shell”? Bro, just admit you want Rails to look more like a hacked-together Frankenstein of Phoenix and Dry-rb. And don’t think I didn’t notice how you’re trying to make BorrowBook sound groundbreaking when it’s really just a glorified if-else statement with delusions of grandeur.

And what’s this obsession with monads? Are you secretly auditioning for a philosophy department? “Success! Failure!” Sounds like your typical test suite, except you’re the one who’s failing at keeping things simple.

Oh, and you’re doing Advent of Code in Elixir. That’s cute. A language specifically designed to solve problems at scale for distributed systems… being used for holiday-themed word problems. “I just want to learn Phoenix!” Translation: you needed an excuse to leave Ruby for a bit but couldn’t fully commit because DHH might be watching.

Then there’s your IndieWeb aspirations. You’ve got grand plans for a personal site built from scratch in Sinatra with Markdown files because databases are for plebs. But let me guess: three weeks from now, you’re going to wonder why there isn’t a plugin for your obscure need to send microformat-laden webmentions to someone’s Mastodon account.

And speaking of your website, what’s this about starting simple with just a bio and a talk showcase? Do you think you’re a tech conference rockstar? Your “bio” is probably just going to be 90% hot takes about how your Ruby web framework is going to finally dethrone Rails, sandwiched between a photo of you looking “thoughtful” and links to half-finished GitHub repos.

Oh, and let’s not forget your keyboard journey. Dvorak? Workman? HHKB layouts? You’ve basically been designing a keyboard that only you can use, with a bottom row so optimized that even you don’t know where half the keys are anymore. At this point, your keyboard is the mechanical equivalent of your code: over-engineered, inscrutable, and somehow still missing a few key pieces.

But hey, at least you’re passionate. Keep doing you, mad scientist. Maybe one day you’ll finish a project before inventing three new frameworks, four keyboard layouts, and a philosophy degree. 😎

Published

View all notes

Elsewhere