← Back to blog


To Cache, Perchance to Invalidate

3/31/2025

"There are only two hard things in Computer Science: cache invalidation and naming things," said Phil Karlton, in a quote so frequently cited that finding its original source feels akin to tracing the lineage of ancient scripture.1

But like every sacred text, this nugget of programmer wisdom has spawned enough variations to imply it's less an observation than a desperate plea for empathy. Leon Bambrick, for instance, dryly extended Karlton’s duo into a triad, helpfully alerting us that "There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors."2 Clearly, Bambrick had stumbled onto a meta-joke, proof positive that perhaps the real hard problem in computer science might just be humour itself.

Further down this existential rabbit hole, Mathias Verraes lamented with a recursive confusion particularly familiar to anyone who's ever waited for a text message:

"There are only two hard problems in distributed systems:
2. Exactly-once delivery

  1. Guaranteed order of messages

  2. Exactly-once delivery."3

Thus, he masterfully introduces a Schrödinger-esque dilemma, asking implicitly whether it’s the message or the joke itself that's irreparably broken.

Not to be left out, Phillip Scott Bowden succinctly addressed the elephant in the repository: "there's two hard problems in computer science: we only have one joke and it's not funny."4 True enough, this observation slices cleanly to the quick, making one wonder if perhaps the deepest irony isn't that computer programmers—masters of logic, kings and queens of pattern recognition—can't collectively craft two decent jokes.

Nat Pryce, finally, brought a sober clarity amidst the chaos, speculating that the sheer volume of variations might point to an uncomfortable truth:

"There are so many variations on the 'there are only two hard problems in computer programming...' joke that I'm starting to suspect that programming isn’t actually very easy."5

He might well have nailed it, suggesting implicitly that the effort programmers pour into humour betrays a collective anxiety about complexity masked as simplicity.

I know what you're thinking; it's somewhere between "thank you for sharing these jokes with me, I wish for your sake that they were funny" and "I am very sad that this is the best your profession has to offer". But I have a point, I promise. This is actually all about vibe coding.

Enter artificial intelligence, stage left, with its promise to resolve these seemingly unsolvable conundrums, yes, even naming things. Anyone who has dabbled with GPT models knows how effortlessly they produce catchy, appropriate, and even elegant names. Naming variables, functions, classes—once a torturous, soul-crushing chore—now feels pleasantly trivial. Copilot, a now hopelessly ancient and outdated AI tool, though of perfect names for functions and variables before you had even decided to add them. Cache invalidation, too, stands to be transformed by predictive AI systems that eagerly anticipate and manage data freshness, eliminating the guesswork once synonymous with such Sisyphean tasks.

Thus, we confront a strange new reality where AI, much to the chagrin of human programmers, casually resolves problems once declared insurmountable. But there's a nagging anxiety lurking beneath this victory, isn't there? If AI solves naming, and AI solves cache invalidation, and perhaps even the dreaded off-by-one error, what’s left for us poor mortals? Perhaps, just perhaps, programmers might find solace in the one problem AI hasn't quite mastered yet: crafting a second joke that's actually funny.

But don’t worry. AI is working on that too. It’s currently training on every Reddit thread from 2008 onward, which means sometime soon, a neural net will produce a passable XKCD-style strip that will finally make programmers laugh twice.6

More interestingly, and more pressingly, AI has begun to inch its way into the actual practice of coding. Not just naming variables and generating boilerplate, but suggesting entire architectures, debugging memory leaks before they manifest, and reshaping logic flows with a sort of eerie prescience.8 This isn’t just autocomplete on steroids. This is vibe-based programming. Your intent, loosely phrased and occasionally contradictory, becomes the seed for a cascade of agentic interventions.

You start typing "make it so the page doesn’t crash when Jeff uploads a .tiff" and suddenly you’ve got an entire MIME-type-checking middleware with graceful fallbacks and user-friendly error messages that quote The Big Lebowski.9 You didn’t design that. You just vibed it into existence.

These agentic tools aren't just answering our questions, they’re anticipating our incompetence. They're learning the shape of our laziness.10 They know when we meant to write a binary tree but accidentally created a recursive regret loop. They see our TODO comments and silently cry. And then they fix it.

So yes, AI is solving the two hardest problems in computer science. And it's coming for the rest. Not by brute force, but by hanging out in your terminal like a weirdly helpful ghost of interns past, quietly nudging your code toward something that might actually compile.11

What does that mean for the future of programming? If you've followed my adventures in vibe coding you might think me a critic, or ambivalent at best. But I am hooked, truly addicted. Not because it's better than me at writing code right now, but because it will be better than ten of me, and then better than 100 of me.

The software engineers of the future12 won't be writing code by hand, they will be managing AI agents. Right now tools like Claude and Cursor can, in limited scenarios, make decisions on par with your best programmer13, they can pick services they can add whole libraries worth of code to your codebase and trivialise the cost of app creation. But they can't do this alone.

Right now, the engineers building tools like Claude, CodeWhisperer, Cursor—they're not just coding. They're generating the training data for the next generation of tools. Soon, we’ll have tools that wrangle tools, agent-herders whispering into the circuits of increasingly autonomous systems—compute allowing, of course. The programmer’s job won’t be writing functions. It’ll be guiding behaviour, nudging agentic systems to stay on mission, correcting them when they wander off like a well-meaning but slightly concussed Roomba.14

This future is inevitable. That dopamine-zap, fireworks-in-your-cortex feeling you get from watching Cursor turn a half-thought into production code? That’s the gateway drug. You either learn to steer the agents, or you become one of the supervised tasks they’re trained to replace. Maybe you pivot into product, maybe you learn to speak fluent human, maybe you specialize in getting agents to talk to customers who lie—but one way or another, the job you have is not the job you’ll keep. And that's not doom. That’s just the upload bar filling.


1 Original sources being suspiciously elusive for tech aphorisms, much like trying to find the origin of a meme you've been assured is older than you.

2 Off-by-one errors, an especially cruel joke programmers repeatedly play on themselves. Being a European helps as we at least zero index our buildings.

3 If you don’t immediately appreciate the brilliance of this, you've either never spent days debugging a Kafka queue or you are a well adjusted person. I am given to believe there is a correlation between the two.

4 Harsh, perhaps, but fair.

5 Nat Pryce, finally admitting the quiet part aloud: programming is complicated, and humour is simply cope.

6 Whether or not it’s funny will be decided via a community poll consisting of Stack Overflow mods and one extremely disillusioned Java developer named Andy7.

7 Andy is actually the least disillusioned Java developer we could find, they said this is due to good genetics.

8 Like a coworker who’s read all your Slack messages and somehow still likes you.

9 This is not hypothetical. This is a feature currently in beta at three startups and one sentient fridge.

10 And God help us, they are optimising it.

11 It’s not magic. It’s just code that finally loves you back.

12 I hate to say it, but the future is going to be now faster than you can ctrl + S and regret it.

13 Sometimes at least.

14 Our ability to attach human personalities to cold calculating machines is a long and, currently, troubling phenomena

© Alexander Cannon – All disclaimers disclaimable, the author is not ready to go on the record discussing his addiction to agentic AI tools at this time.

← Read more articles

Comments

No comments yet.

Add a Comment