Jeremy Keith

Jeremy Keith

Making websites. Writing books. Hosting a podcast. Speaking at events. Living in Brighton. Working at Clearleft. Playing music. Taking photos. Answering email.

Journal 3235 sparkline Links 10825 sparkline Articles 87 sparkline Notes 8096 sparkline

Friday, April 17th, 2026

Thursday, April 16th, 2026

Threat models

People talk about the effectiveness (or lack thereof) of large language models as though all tasks are comparable. But it strikes me that there are three broad categories of work that large language models are applied to:

  1. Compression.
  2. Transformation.
  3. Expansion.

Compression is when you feed a large language model something big that you want to make small. Summarise this book. Give me the gist of this meeting. Large language models are generally pretty good at this, which makes sense given that they themselves are kind of like compressed artifacts.

Transformation is when large language models convert from one format into another. Turn this audio into text. Turn this jumble of data into structured JSON. A large language model can handle these tasks pretty well. There’ll probably be a few errors so make sure that’s not a deal-breaker.

Expansion is when you give a large language model a prompt to generate something from scratch. An image. A presentation. An email. A poem. This is where slop lives. The output inevitably betrays its origins, glistening with a sheen of mediocrity.

Laurie spotted this three-way split a while back:

Is what you’re doing taking a large amount of text and asking the LLM to convert it into a smaller amount of text? Then it’s probably going to be great at it. If you’re asking it to convert into a roughly equal amount of text it will be so-so. If you’re asking it to create more text than you gave it, forget about it.

I hope that when the bubble finally bursts, we’ll see the surviving large language models put to work on the first two categories. The boring stuff. The work that’s tedious for humans.

But tedious is as tedious does. Something I consider drudgery might be the very thing that gives you life. Like Giles says:

I have a feeling that everyone likes using AI tools to try doing someone else’s profession. They’re much less keen when someone else uses it for their profession.

The big exception seems to be programming. Apparently there are plenty of coders who never before expressed an interest in being managers who are now happily hanging up their coding spurs in favour being the overseer of non-human workers.

It’s a reasonable outlook. It could even be considered a user-centred approach. Users don’t care about the elegance of your code; they care about accomplishing their tasks.

Programming is something of an exception to the efficacy of large language models in general. Instead of relying on the subjectivity of painting, poetry, or prose, programming can be objectively tested. Throw enough money at the worst people in the world and they’ll give you tokens you can use to get the machines to test their own output. So you can get a large language model to create something reasonably good from scratch as long as that something is code.

If you had asked me about the threat model of large language models two years ago, I probably would’ve been worried for artists, writers, and musicians. I thought that software had enough inherent complexity to be relatively safe.

Now my opinion has completely reversed. Software is almost certainly the killer app for large language models.

I think the artists, writers, and musicians will be okay, or at least as okay as they ever were. It turns out that humans like things made by other humans.

And y’know what? If I had to choose which endeavour I’d rather see automated away—programming or art—it’s no competition.

Don’t get me wrong—it would be nice if everyone got paid for doing what they enjoy. It’s just that I’m okay with software engineers not being at the front of that line.

I remember when I first started getting paid money to make websites. “Really?” I thought, “Someone is willing to pay me to do something I’d do anyway?” I kept waiting for the jig to be up. Instead I saw my profession grow and expand.

Perhaps there’s a long-overdue compression happening.

Or maybe it’s more like a transformation.

Wednesday, April 15th, 2026

Tuesday, April 14th, 2026

No-stack web development – David Bushell – Web Dev (UK)

A stack is also technical debt, non-transferable knowledge, accelerated obsolescence, and vendor lock-in. That means fragility and overall unnecessary complication. Popular stacks inevitably turn into cargo cults that build in spite of the web, not for it.

The web platform does not require build toolchains. Always default to, and regress to, the fundamentals of CSS, HTML, and JavaScript. Those core standards are the web stack.

Just heard the sad news about Moya Brennan passing. Some of the first records I ever bought were by Clannad—Macalla, Magical Ring, Legend.

Ar dheis Dé go raibh a hanam.

Monday, April 13th, 2026

Saturday, April 11th, 2026

The bots are swarming hard today, laying waste to the meadows of the open web. This is what powers vibe-coding.

The slop must flow.

Friday, April 10th, 2026

I know a young student in Germany who needs to learn about relevance of the Entscheidungsproblem and Alan Turing to today’s work in computation—who should I put them in touch with?

Thursday, April 9th, 2026

Wednesday, April 8th, 2026

My salary history

Times are tough out there. I know that a lot of people are looking for work, which can be a very stressful experience.

One of the things that can make the job search stressful is uncertainty. There’s a real taboo around talking about salaries. This taboo ends up benefiting employers and punishing potential employees. There’s an information gap that can be exploited (see also: job postings that don’t list salary ranges).

That’s why I’m always pleased when people voluntarily share their income. Here are some of the people who have done this over the years:

Because the jobs are generally in software or design, you can sort of make apples-to-apples comparisons. You can definitely get the general gist of what kind of salary to expect for certain roles.

In the interest of full transparency, I figured I’d share my own income numbers, though as you’ll see, they’re not very representative of a normal career:

  • 2003: £15,434 (freelance)
  • 2004: £15,900 (freelance)
  • 2005: £14,125 (freelance)
  • 2006: £43,009 (freelance/Clearleft)
  • 2007: £34,900 (Clearleft)
  • 2008: £33,833 (Clearleft)
  • 2009: £35,549 (Clearleft)
  • 2010: £37,174 (Clearleft)
  • 2011: £40,666 (Clearleft)
  • 2012: £39,750 (Clearleft)
  • 2013: £39,500 (Clearleft)
  • 2014: £48,655 (Clearleft)
  • 2015: £46,499 (Clearleft)
  • 2016: £52,106 (Clearleft)
  • 2017: £56,492 (Clearleft)
  • 2018: £59,498 (Clearleft)
  • 2019: £59,670 (Clearleft)
  • 2020: £43,807 (Clearleft)
  • 2021: £48,344 (Clearleft)
  • 2022: £60,446 (Clearleft)
  • 2023: £55,721 (Clearleft)
  • 2024: £47,104 (Clearleft)
  • 2025: £42,133 (Clearleft)

The first thing you’ll notice is that agency work isn’t nearly as well paid as in-house work at a technology company. So don’t embrace agency life for the money. Speaking personally, the benefits are in autonomy and variety. Those are things I value highly.

Also, I haven’t put any job titles or levels on there because they’ve never really been codified for me. I just made up my own job titles as I went along. Again, this is not very helpful to you if you’re looking for a job at a typical company.

You’ll see that things got weird in 2020, which is to be expected because things did get weird in 2020. I was furloughed, and I also took some more time off. I got a taste for it, which is why I went down to a four-day week and later a three-day week, which is what I’m doing now. So those last five years of numbers are loopy—I’m making less than before, but if you were to adjust it for a five-day week, I’m still getting paid more than before …if that makes sense.

Perhaps the most unusual thing about my career trajectory is that I’ve been at the same place for twenty years now. That’s pretty much unheard of in tech. It’s far more usual to see people switch companies—and get a salary bump—every couple of years.

So I’m not sure if there’s any value in me sharing my numbers like this. But like I said, I admire when other people do it so I figured I’d throw mine out there.

Perhaps you’d like to share your numbers too.

Tuesday, April 7th, 2026

TinyStart

Sometimes I look back through my blogging archives and notice what’s changed over time.

For example, I used to write quite enthusiastically about the arrival of a new operating system from Apple. That is no longer the case, to put it mildly. I’m currently holed up on Sequioa, trying to resist all the nudgings to “upgrade” to the tacky design nightmare that is Tahoe. I feel like the protagonist of Pluribus.

I used to write about software I really liked. Sometimes it was software made by Apple. More often it was from some independent developer.

Like, I remember how much I loved a little application called Quicksilver. It just did one thing. You pressed control and space and then started typing the name of any programme installed on your computer. After a few characters Quicksilver would show you the match, you hit enter and the programme launched.

If that process sounds familiar, it’s because Apple ended up incorporating it into their own Spotlight feature. Quicksilver got sherlocked (ask your parents).

Recently though, Spotlight got worse and worse at doing its one job. It’s been laggy and inaccurate, even though I set my Spotlight indexing options to only index the Applications folder.

Then I found TinyStart. It’s like Quicksilver reborn!

A tiny launcher for macOS, fast and focused on the essentials.

Actually, it does double duty. As well as being an application launcher, it’s also an emoji picker. 👍

Best of all, not only is TinyStart a return to the focus and quality of software of yore, it’s also a return to the pricing model. You buy the software—for a measly €5—and that’s it. You own it now. There’s no subscription you have to pay every month.

I love everything about this.

AI Might Be Our Best Shot At Taking Back The Open Web | Techdirt

Not sure I buy the argument here, though I do very much look forward to local language models getting better so we can ditch the predatory peddlars of today’s slop. But this trip down memory lane to the early web of the 1990s could’ve been describing my own experience:

But the thing I do remember was the first time I came across Derek Powazek’s Fray online magazine. It was the first time I had seen a website look beautiful. This was without CSS and without Javascript. I still remember quite clearly an “issue” of Fray that used frames to create some kind of “doors” you could slide open to reveal an article inside.

Fray was what made me want to make websites:

I distinctly remember sites like prehensile tales, 0sil8 and the inimitable Fray triggering something in my brain that made me realise what it was I wanted to do with my life.

Monday, April 6th, 2026

Sunday, April 5th, 2026

I used AI. It worked. I hated it.: Taggart Tech

There’s a fundamental problem with these tools beyond the capacity of any deployment strategy to solve: the tool requires expertise to validate, but its use diminishes expertise and stunts its growth. How does one become an expert? There are no shortcuts; there is only continuous hard work and dedication. I was once told of writing, great writers learn how to break the rules in new and ingenious ways by first learning the rules.

But how is a new developer meant to learn the rules if their day-to-day work is nothing but the babysitting of models? How will they gain the hard-won experience that allows a human in the loop to be a useful safeguard?

These models alter cognition in ways deleterious to human prosperity. In other words, for as much output as they provide, they take something important from us.

Saturday, April 4th, 2026

Older »