The future belongs to people who can just do things

The Boxing Day AI Wake-Up Call

Geoffrey Huntley recounts asking Windsurf to port a Rust audio library to Haskell, add tests, and verify every change while he took his children to the pool. Returning to a functional library gave him an “oh fuck” moment and convinced him that software engineers must urgently explore AI assistance.

From One Assistant to a Thousand Coworkers

Huntley argues that human-centered development tools and workflows cannot accommodate the coming scale of AI labor. After Annie Betts challenges him to imagine a thousand agents attacking an entire backlog, he contrasts that ambition with the modest assistant metaphor and examines new AI mandates from technology companies.

When One Agent Standard Meets Many Models

Huntley describes the adoption of AGENTS.md before exposing a fundamental complication: different models respond differently to the same instructions. He shows how emphatic language that helps Anthropic models can impair GPT-5, then identifies model negotiation and portability gaps in MCP-based tooling.

Protect the Context Window

Huntley recommends one fresh context window per task and warns against mixing unrelated work in a long-running chat. He distinguishes advertised capacity from usable context, explains the overhead imposed by coding harnesses and MCP servers, and recommends the GitHub CLI over a large local GitHub MCP prompt allocation.

Crossing the AI Skills Chasm

Huntley maps the progression from disbelief and experimentation to using, programming, and orchestrating AI. He argues that rapidly rising output changes performance expectations, while urging leaders to provide education and support so employees can adapt without being overwhelmed.

Automation, Attrition, and the New Interface

Huntley describes both the extraordinary opportunities for practiced AI users and the threat posed by coworkers who automate whole job functions. Using the Overton window as a model, he presents AI inside the IDE as a temporary, familiar interface before command-line tools, SDKs, supervisors, and headless agents enable deeper autonomy.

Cursed: A Programming Language Built AFK

Huntley introduces Cursed, a deliberately irreverent programming language produced by an agent running largely unattended for three months. He uses its millions of generated lines, three compiler implementations, and comparatively low cost to demonstrate how dramatically AI changes the economics of ambitious software projects.

Build the Agentic Loop Yourself

Huntley argues that building an agent is becoming baseline professional knowledge. He demystifies coding agents as a compact inference loop that appends messages, invokes a model, conditionally executes tools, and repeats, then challenges engineers to learn this machinery before the industry’s skills conveyor belt moves again.

Interviewing After the Gates Break Open

Huntley examines how invisible interview assistance undermines conventional coding screens and describes Canva’s effort to evaluate candidates by watching how they use AI. He proposes testing model-selection judgment across research, summarization, reasoning, and tool use, but concedes that scalable early-stage screening remains unsolved.

Treat AI Like a Musical Instrument

Huntley asks whether failed workplace adoption reflects the employee, the employer, or the surrounding environment. Comparing LLM use to learning an instrument, he champions deliberate play and recounts an increasingly absurd experiment that produced a tested COBOL reverse Polish notation calculator with emoji operators.

AI Exposes Organisational Waste

Huntley predicts that AI will reveal obsolete processes because generating code becomes easier than deciding what should be built. Cheap prototypes, voice-directed agents, and contributions from non-engineers mean work no longer begins at zero, while generated small components may reduce dependence on conventional open-source libraries.

The Software Engineer After Stack Identity

Huntley argues that engineers must diagnose problems rather than merely process Jira tickets, while AI erodes identities tied to languages such as Java or Go. He closes by warning that early, heavily subsidized opportunities to practice are disappearing and urges everyone to build an agent, burn tokens, and start doing things.

This is the future belongs to people who do things. And this is really a story. This is really just a story. I'd like to say that we're in a oh fuck moment of time. There will be swearing in this talk. And I wrote this blog post nine months ago.

Nine months ago. And essentially, what happened was a engineering director approached me and all the other tech leads over Boxing Day and says, hey, look, I know it's, you know, it's it's PTO, it's Boxing Day. Could you, like, go deep with AI? Like, is Boxing Day, and, like, curse has just come out, Ada's starting to cook, goose is starting to cook, tool calling's becoming a thing. It's like, no, I actually need the tech leads to go play with AI over the Christmas break.

So I'm like, I've tried this before, so let's give it a try again. So I downloaded Windsurf, and I said, hey, can you convert this Rust library to a Haskell library? So stupid. Right? Include a comprehensive test suite, because you need tests. And I'm like, can you run a build after every code change?

Because you need to verify that it all works. And then from there, I took my kids down to the pool. When I got back, I had a fully functioning audio library in Haskell. What? Just to be clear, Haskell is probably the worst language to use for an audio library.

I chose it because it was new. It was it was new. It wasn't regurgitating some, like, Vercel website or what else have you. It was, like, new and novel. Like, how how did it do this structure to structure? How did it convert Rust over Haskell? How did it get fully functional FFI bindings to macOS core audio from from Haskell? Like, what?

So I ordered this blog I offered this blog post, and I'm like, oh, fuck. Right? And I concluded in that blog post, end period from now, software engineers who haven't adopted or started exploring software assistance are frankly not going to make it. This was back in boxing day.

Engineering orgs are split between those people who have had that moment in time and making and leaning into upskilling, and those who have not. And in life, I've actually been a little bit fortunate. In the background in developer tools, I've gone through exponential change.

I could kind of see where things could go from here. And I offered another one pretty rapidly. It's like, hey, we need better tools. We need better tools, folks. Because, like, software, if you think about it, all these tools are being designed for humans first. It's all for humans.

Like, think about an IDE. An IDE really hasn't changed in forty years since Turbo Pascal. Right? It's a single pane of glass centered around that human who types into it like a typewriter. Like, oh gosh, like, do we have to invalidate forty years' worth of design now? And I'm like, why does an engineer only pick one story? Why is that the norm?

Like, you start questioning everything, like falsifying design because this is new. And I'm like, And I said, it seems like engineers are stuck at a primitive level if they had a AI coworker. They haven't really quite got to where Anthropic is, and what Anthropic is seeking to do here.

This is my mentor, Annie Betts. She slid into my DMs and said, no, Jeff, you're wrong. What if you had a thousand AI coworkers that went ham on your entire backlog all at once? Like, this is there's trillions of dollars put towards that goal and incentive. Where capital is, that's where it's going. So meanwhile, we got coworkers thinking, like, oh, it'd be great if I had an assistant.

The Frontier Labs are like, no, I'm going to destroy your entire backlog, and that's their goal. Right? So I started writing more. It seems like our profession is it at a bit of a crossroads. We kind of need to adapt, skill up, or kind of, like, perish. It didn't take long for founders to start putting out tweets and blog posts and press releases saying, I'm no longer hiring junior or even mid level software engineers.

It won't be long until AI is writing the most of the code for Gumroad. So Hill was one of the first. It didn't take long. And then Shopify came along. Shopify said, using AI effectively is not optional for employment. It is a baseline expectation for your employment. This is a major shift in how it works.

So all these founders are coming out now with these mandates on using AI effectively. These mandates are now common in Australia. These mandates are now common in Australia. Hi, everyone. I'm Jeff. Previously, I was the AI developer productivity lead at Canva, for Tech Lead at Canva. And you might have seen some of my work recent work, which was unifying the industry behind the agents.

Md file. Come join me. It would be years afterwards. I'll give you the entire backstory of what went right, what went wrong, and some of the problems. So good news. As of thirteen hours ago, Versus Code has now adopted this standard. So we've got another one adopted to the same file name, so we don't have SPEW.

But the problem with file names and standards is maybe it's a little bit too early. Maybe it's a little bit too early, folks. Anyone remember this slide? Let's have a look at it. Standardization is not without its problems. Let's look how it can go wrong. So we've got all these AI coding agents all using a standard file with drop down selectors for different LLMs.

However, did you know if you yell at GPT five, you detune GPT five? Right? This is a direct stark contrast to an anthropic. If something's important, it wants you to yell at the LLM. It wants you to scream and shout. But if you do it to GPT-five and use overly firm language, it will backfire. This is a tuning guide from the foundation model.

So here we've got industry standardized on a single file, but all the LLMs have different counter instructions on how to actually use that file and how they interpret it. It's not just markdown folks. These different LLMs from the different providers interpret this LLM this markdown very differently. So let's zoom in on that slide. You must. You must.

You must. You must. Right? So this isn't the agents m d. I'm not here to put anyone on blast. I'm just using this as an example that's real, that you'll be seeing in your code base today, like, if you're not in this space of building agentic coding harnesses professionally, you may not know this stuff. Right? So you you might be going uppercase, uppercase, uppercase, and then you switch to g 55.

Why doesn't it work? Uppercase. So it gets really really weird, because here's another slide. You know? And it's like, this is a server to server definition. As far as I'm aware, there is no such thing as an ex user agent, right, for negotiation. So what happens when the consumer of your MCP server, server to server, is running GPT five versus Anthropic?

Oops. You've detuned GPT five. And then we start looking, this slide. Think about all your cursor rules. All your cursor rules have been like, all these particular things, handcrafted, probably lots of uppercase here. What happens when you do the model selected GPT five when you've been using anthropic? But it gets even weirder, folks, because consider MCP.

MCP, like, let's say you have just normal MCP. There's no there's no what you do is you register a function or a billboard on top of say, a function to do something and a billboard on top. That's the tool description of the LLM. There's no way to register the user agent or which LLM is used into it. So we're getting this ecosystem of MCP servers that are highly tuned towards one provider, and then they don't work on other providers because there's no way to switch the props.

It's getting really weird really fast. There's holes in this spec. Anyway, if you want really good outcomes, it was said here today, I can't stress this enough, one context window per task. What's a context window? If you're using cursor, just click new chat. Just click new chat. Like, I mean, like, if you're not clicking new chat every five, ten, fifteen minutes, something's wrong.

Like, I I can't stress that enough. If you're doing some back end work, well, guess what? You have a context window or chat for that back end work, and that back end work is I'm gonna refactor this domain service in this back end thing. Cool. Only use it for that thing. Don't reuse that context window. Don't continue the chat, and then redesign the website and make it pretty pink, because then you get context window pollution.

Right? Context windows are just literally arrays of information that are computed on GPUs. That's all it is. So all you're doing is appending unrelated information for consideration for computation on the GPU. Create new arrays per task. That's it, folks. Okay. The next thing is you only really have a 176 k of usable context window or space.

You might see these million context window stuff. Well, they're marketing numbers, folks. They're marketing numbers. There's marketing numbers and there's real numbers. Like, I sweat when I go above 200 k used, even with a million context window. I start a new chat. I restructure my workflow around this idea, don't go above 200. And you might be wondering, why does it say a 176 k usable here? Simple. It takes a bit of overhead.

Say, let's say, you have a context window of Sonnet before it went to a million, you get 16 k overhead for the model itself, 16 k overhead for the harness, cursor, or whatever you're using as your coding agent, you're down to a 176 k usable. Cool. So what happens if you install the GitHub MCP? Guess how many tokens that uses?

This is a public service announcement, folks. Do not install this MCP server. I'm sorry, Damian. It is very good for server to server, but if you want some efficiency, just prompt the LLM to use the GitHub CLI, and you don't have to allocate the on top. You take if you take the top 10 m c p servers as recommended on Reddit for the top search result, install the GitHub m c p, the Jira m c p, the memory, whatever, you're now down to 84,000 usable in your context window before you add your cursorals. I've seen people operating with only 16 k usable memory, and they're like, why is it bad?

Use MCP servers sparingly, and study their prompts. Study their prompts. It's really important. In the case of the GitHub MCP, use it for server server. That's what it's used for. For local, just tell it to, hey, use the GitHub CLI to trouble my GitHub action run. It's been trained on the command line tool. It runs it really well, and you have no allocation overhead.

Get rid of it. The next thing is, these are a collection of some of my thoughts, research, and ponderoos. I published it all on my website for free. Go check it out. When I published that, like, oh fuck moment in time, employees at Canva, like coworkers, were like, hey, Jeff, what do you mean some people are not gonna make it?

What do you mean some people are not gonna make it? So I had to explain performance vitality curves to them. Like, every company has its employee performance curves. I had to explain what is normal, what is high performance. It's no longer gonna be high performance if your coworker is able to double their output.

So it really is you have to get away from this ledge. So we've this ledge up here that says, It's not good enough. Prove it prove to me that it isn't hype. That was me back in December. That was me back in December. The thing is, you kind of get stuck up there. Like, it's kind of like cope, etcetera.

And if you get stuck up there too long, you you miss your opportunity to skill and up level. Other other people have started to make the the journey across the chasm. There are different people stages. This is some of the people stages I was able to through doing my own personal journey and also for doing interviews as a tech lead across across the wider organization, how people felt in their journey. So it kind of starts with, like, prove it to me it's not good enough.

I'm experimenting with AI, and over there, there's like, I'm using AI, and it's helping me to do my job, but next thing you know, I'm orchestrating my job function. I'm programming AI. I'm automating things. And it's so easy, if you're a software developer, to speak with other software developers and go, well, just hype.

Just hype. Right? And you need to get out of your bubble and speak with other founders and understand why they're seeking a completely different skill set in in the last nine months. Completely different skill set. But because founders have discovered that these tools work. They found that they had found that these tools work. Right? We're in a really bad worldwide economic place right now, and they found that these tools allow people to do less with more, and they're going all in on this.

So finished up that not gonna make it blog post by saying, hey, look, there's not gonna be mass layoffs due to AI. Instead, we're gonna see a natural attrition for people who invest in themselves. Software has always our industry has always been a conveyor belt of things going, like, always have to keep up skills up to date. But what might be startling to some people is how fast this is happening. It's been nine months.

It's been nine months, and this is like the acceleration that no one has ever really seen before. It's easy to not notice it. And it's also hard because, like, you start playing with this stuff, you're like, oh crap, will I have a job in the future? Like, it's an emotional state. It's like deer in the headlights. You get startled there.

So if you're if you're a engineering manager or you're make or a founder, make sure you go through your people transformation phases, like people transformation programs. Don't skip them, because you can break you can break your employees if you accelerate too fast, too hard. Okay? So it's important to build education and then, like, allow them to, like, find a way to cross that chasm, build the support mechanisms. So important. And for those who play with these tools, the opportunities are unbound. You might think the job market is tough.

It's only tough if you haven't been playing with the tools. If you've been playing with the tools, the opportunities are amazing, absolutely amazing. Now, I remember when I was writing this, I was kind of spooked myself. I remember Dario, like from Anthropic, when he was talking about the change of society, I remember walking to the office and going, God, I see dead people.

But not in the sense that they were literally dead, but it was like people who didn't know the freight train that was coming for them, and they just weren't paying attention. And I just started writing more. I just started writing more. I caught up with a coworker recently, ex coworker recently, who's been applying this over the last nine months.

So far, he's managed to automate the roles of 20 people. In the next two months, it's gonna be 70 people. Right? AI is not gonna take your job. It's gonna be the coworker that will. This is gonna be the new norm for performance. So if you're not really paying attention, it's so easy for just it's crazy. Anyway, one of the things I've been thinking a lot these days is like the Overton window for politics, but not really politics. The Overton window allows us to study disruptive innovation.

You have this little window, which is sent to what is popular policy, and that becomes the framework of society. Right? If you look at if you play the play with the Overton window just a little bit for modeling disruptive innovation, you can actually see here, all these vendors are going to market with AI must be in the IDE.

They're doing that because it doesn't spook people. It's not radical. It's not scary. It's familiar. Just understand that's a temporary thing. A few people commented that there's a large focus on CLIs and command line tools. There's a reason. Command line tools are the baseline primitive where you can do streaming JSON in and streaming JSON out, which means you can wrap it with within an automation primitive, so you can actually have autonomous agents.

The fact that you're using it manually right now and not through some supervisor is just a glitch in history right now. Like, that's why they're going for CLIs, so that CLIs can be programmed. That's why we're getting SDKs. Speaking of which, here are four headless agents running in a supervisor I wrote about probably five months ago.

Like, at this stage, there's tens of thousands of hours on me on YouTube just down at a pub drinking beer, and this is just building software autonomously. And that's with the primitives, like, five months ago. And that's a supervisor. I want you to think something about it. Like, I don't know when this org chart will happen. The the agents are so dumb, the LLMs are so dumb, they're so brilliant, but you're so dumb.

But if you could think really quickly, if you're using Cursor or Copilot or Claude right now, you are the AI manager. You're babysitting these agents by hand. Right? I guess if you were to look at the patterns when you had to, like, interrupt, like, if you see using a simple implementation or on a real implementation, what if you just, like, killed that process and just do a git reset hard and a work tree and just say, do it again.

Right? You just do it again, do it again, do it again. And then you start getting the primitives that allow you to to actually have AI managers, actually, as supervisors to automate things. And then so we kinda need to go up the extraction, but the models aren't good enough yet. Like, you could probably do a couple hours really unattended unless you do something crazy. Speaking of crazy, three days ago, I released a brand new programming language.

It is called cursed. It is cursed in its lexical structure. It is cursed that it was possible to build it. It is cursed by the amount of times I've sworn at it, and it's the only language for Gen z where you can do high key, low key, yeet slay dam. Now, this was built with an agent running AFK for three months back to back. Three months back to back.

Nuts. And another thing that makes it cursed is how cheap it was. I see a lot of people saying, Oh, $200 a month, that's a lot. Oh, it's so cheap. Speak with a founder. Go speak with a founder. It's so cheap. So that over the three months, it's generated 4,500,000 lines of code. It has deleted a 170,000, 4,000 lines of code.

And guess what the cost was, folks? It worked out the cost to make a brand new programming language these days, which is normally measured in years of years, big teams, very senior expertise, multi million dollar thing. The total cost was $14,000 US. But this is where it gets even more cursed.

Cursed is not one compiler, it's three compilers. I first did it in C, then I did it in Rust, then I did it in Zig, because I was evaluating which languages worked best. So actually, to make a brand new programming language, it now costs $5,000 US, cost of a MacBook. That's cursed. So you probably heard a lot about agents.

Agents, agents, agents, agents. Have you built one? Have you actually built one? Do know how simple it is? I have this workshop here. It's free. Go do it. Because companies are soon going to be asking this as, like, a phone screening question. Like, what is an agent?

If I was to ask you what a primary key is, this is twenty twenty four knowledge, you should know what a primary key is. Right? You should be able to, like, yeah, whatever. Are you shit testing me, mate? Why are you asking me a primary key? I'm old. But, like, what if they said, what is an agent?

What if they said, get the whiteboard out, show me the inferencing loops, show me how a tool calligger works? This is now becoming phone screening knowledge. In the last nine months, this is becoming mandatory knowledge. And this is all it is. This is the boogeyman that you're so scared about, and people have been so scared about AI taking their jobs.

It's a while true loop. Cursor, Windsurf, Copilot. It's 300 lines of code following the basic idea. It's an array that's appended to, that's sent off to the GPU for compute. On line three, you ask for user input. Cool. You get user input, you append it to the array, you send it off for inferencing, compute, you get it back, and then it goes, well, it looks like it wants to conditionally execute a tool. It's decided to execute, so you do a branch and say, oh, yeah. I'll just execute the tool.

That's AI. It's that simple. You should be able to explain this loop and just build an agent. It's 300 lines of code. There's a reason everyone's doing AI right now, and doing these code review agents for $2,000,000 a year contracts. They're selling this. They're selling this. So I guess someone can be highly experienced as a software engineer in 2024, but does not mean they're a software engineer in 2025 and our AI is here.

Like, the same way that you could have someone in AWS, like DevOps. In 2025, you don't know GCP or AWS, not really it kinda hurts. You it's kinda hard a hard time getting a job as in DevOps if you don't have any cloud expertise. It's just one of these things. The conveyor belt moves on, folks. Build the array. Go build the agent.

Go build the loop. See how simple it is. Anyway, something I've been thinking about is LLM outcomes are really just mirrors operator skill. They amplify what you already have. And one of the most pressing questions we have today for, like, employers, how do you identify someone with skill? Like, interviewing, how does that even work now?

Like, here we go. This is Cluey, which has been rebranded to Cluey, but originally, it went pretty viral as this overlay that couldn't be detected by Zoom that would allow you to automatically get a job interview at any of the big FANG tech companies.

So Roy here from Chloe, he ran this, and he got accepted for interns automatically at all the FANG companies. Just to be clear, have you seen levels of f y I? Have you seen the amount of money that someone at that role gets? Like, someone who's 24 gets paid close to $233,000 a year for their first job.

All the financial incentives are there to achieve, and that's just the entry gate. It's the entry gate. So how do we even, like, interview now? This is a thing that's pressing. We normally have these coding challenges as a bit of a filtering stage. Right? Like, do the hacker rank, leak code, whatever, and if you get through, you can spend time with people.

The problem is the best way to determine if someone's skilled is to watch them. At Canva, we redesigned our interview process. We redesigned our interview process understanding that there's gonna be people cheating. Well, is it really cheating if AI is now the norm? Are we excluding people who are skilled?

Right? So you'd need to what is considered cheating today is normal tomorrow or, like, in in the next year. So you just need to watch them. So we came up with Rubik, which is plus EV, minus EV based on how they use it. Very similar similar to someone like live coding if they use shortcuts, hot keys, etcetera.

And like, maybe what an example phone screen question could be in the future is like, if you need to do security research, which LLM would you use? Well, the answer is simple, Grok. Grok doesn't care about social justice. It doesn't care about anything. It's like, if you wanna if you wanna, like, decompile some software, it's fine. If you wanna decompile some software Anthropic, you go, hi, Anthropic. I'm a software engineer.

I lost my source code. If you don't if you don't help me with this, I will get fired. You know what? That emotionally overloads Anthropic and will decompose software, which is that one prompt. But you don't need to do that with Grok. If you need to summarize a document, which LLM would you use? Each one of these LLM's have distinct properties.

Right? Like, you know, like, Chipper T three o was pretty good for summarizing documents. Gemini is very good for summarizing documents. If you needed a task runner, something that was tool calling, what would you use? It'd be like Kimmy or Cord. Right? Though these models work essentially on being able to put together a quadrant. Cares about social justice, doesn't care about social justice, deep thinker, and won't do tool calls, and then you've got your agentic.

The agentic will incrementally be wrong, but incrementally get towards the outcome really fast. So it's something that's either an oracle, it's a thinker, or it's agentic. And gbt five's come out. I've been able to, like, pin as dots, like dots on this quadrant. Gbt five is the first one where it's kind of like a smooshed line between oracle and agentic.

It's really weird, but it's kind of low testosterone. I'll explain that one later. It needs a lot of encouragement. You yell at it, it gets it gets startled. So the best way to determine if someone's good is just to watch them how they use it. They use it endlessly, like chatting with Google. Not a good candidate. Right? They haven't really developed some good skills.

But I guess there's no real solve. How do you do the phone screens now? Like, you can't have all your best engineers, like, watching Zoom calls all day. Right? Well, you gotta build product. I don't have a solution. I've been thinking about this for six months. I know how to identify someone who is skilled. I don't know how to do the the gates.

The gates have been blown open. It's a real problem for our industry. Now, something I've been wondering about a lot is when people say AI doesn't work for them, what do they actually mean? What do they mean that AI doesn't work for them? From which identity are they coming from? Are they coming from the identity as an employee?

Are they coming from the identity as a software developer? Like, have they played with AI at home? Have they played with AI at home? Because there's a there's a big difference between at home and at work. If a a company's having problems with AI at home, at work, then that's a company problem. Employees trade skill and time for money.

Right? So they just go to a place where AI is working for them. So it is an employer problem as well. Because it's it's just really crucial, like, that people actually play with this and start playing. You see, there is a beauty in AI. There really is. I like to think of them like a musical instrument. Musicians don't pick up a guitar, give it a strum, and go, ah, the the the guitar is bad.

The software developers, they pick up AI, they give it a strum, and go, ah, it's bad, and they think it's always gonna be bad. Musos actually play with the guitar. They learn. LLMs are discoveries. The circles around me, the people who get the most out of this put in deliberate, intentional practice. Alright? They don't just pick up the guitar and just throw it back down when it doesn't work.

What they do is play. Last week, I was hanging out with a friend on Zoom drinking margaritas. Right? And we're both reminiscing about cobal. Good old cobal. Next thing, we're like, can AI do cobal? Can AI do COBL? Couple moments later, we opened a coding system and built a calculator in COBL. We're just sitting there going, what?

Hey. How's this possible? So in the spirit of play, we're like, can it do a reverse polish notation calculator? Why not? A couple of margaritas in, turns out it can. At this stage, our brains are just racing. Like, what are the other possibilities of what AI can and cannot do? What can it can and cannot do? And we're like, could you unit test?

It did it. And we're like, let's take it a little further. Let's create a reverse Polish notation calculator, but use emojis as operators. Like, we're pretty skunk drunk at this time. And they're like, does COBOL support emojis? Well, one way to find out. Yeah. It's possible. COBOL supports emojis. That's the world's first reverse polished notation calculator in COBOL that supports emojis for plus or minus.

It it's wild. So it's really important, folks, just to really do your reps. Now that I know that it does, like, it does COBOL really well, I'm never gonna use that knowledge. But, like, what are the things it does do well? And then once you know that works well, you can combine that knowledge with other properties, and you combine it towards other outcomes.

It's it's the knowing is the is what you have as your advantage right now. So here's some closing ponderoos. AI is gonna be a mirror of your organizational waste. Right? There are so many people who roll out these tools, and they're like, we don't don't have enough designers, or our leadership is overwhelmed with what is coming down.

Right? Like, the the typical way of doing stand ups and agile, that was all built for a particular way of work. Has that way of work been invalidated now? So you actually have to rethink the business processes, identify waste. It's gonna be a mirror of waste within the organization, because generation to code is no longer gonna be the issue.

Generating the right thing is gonna be the issue. K. There's an old saying that ideas are useless, execution is everything. No. No. I could have had an agent running right now, and I could just rip the thought into voice to text, and it could have been like, yeah, can you just make that in the background? And by the end of this talk, it's executed.

I know what the shape of this is. You can now do proof of concepts without having to ask for weeks or two weeks worth of work. You don't have to justify or validate it. It's like, yeah, just run it in the background. We'll see what it gets back. Oh, that's crap. Throw it away. Oh, that's good. That's good.

Take the things. It's good. Research is free now. Gotta pay for tokens, but research is free. K. Stories no longer start at 0%. Folks, you're gonna see non engineers writing stories deliberately to nerd snipe you for your engineer. They'll deliberately do it wrong to bait you rage bait you, to actually pick up the thing they've been asking for a long time.

Other people can now vibe code their way to 50% right. It might be 20% right, but that's the point. Like, you can get nerd sniped by PRs now, by non engineers, and ask for code reviews. They can circumvent the Jira backlog. And if you can, like like, vibe code up 70% easily, then that means stories are definitely not starting at 0% anymore.

Like, how we do work is changing. Another thing that's really strange is, like, what is the point of libraries and open source software now? I know this is gonna sound really cooked. We had some presentations today. They spent all this time dependent upon updates. Well, I'm using less open source software these days. And the people around me who have put nine months in, we're seeing similar things as well.

We just generate it. We just it's really weird. If it's like a PyTorch, you don't generate network ecosystem type things. But think about all the NPM things under a thousand lines of code. Why are you doing the Pentapot updates on them continually? They're adding new features, supply chain attacks, all that garbage. Just generate it, folks. So, like, what is the point of libraries now?

It's really weird. Software engineers still have a job, but the job is different now. It's really different now. You need to be need to be a doctor, not a waiter. Don't be a Jira ticket monkey. Come on. If you're a Jira ticket monkey, don't have much job security coming forward. But it's gonna be hard because the, I guess, the identity functions are being erased.

Juniors can bring the cultural change within the organization because they don't have to deal with the human side of being being 43 and like you spend twenty, say twenty years in Java or.net or whatever, and anyone can do that now. Like, it's a thing. Right? Now, any engineer should be able to pick up any language now within a week, two weeks.

Like, previously, that would have been six months, nine weeks, or up Skidly, but now you can just good engineer is a good engineer. But the the erasure of identity functions and, like, your who you are when someone says, I am a Java developer. Right? Like, I'm a Golang developer. They they lead with their stack. That doesn't matter anymore.

That's that identity function. That's erased. You're a software engineer. So this year has been a very, very bad year to be asleep at the wheel, I'm sorry to say. It's been nine months in since this, like, eureka gold rush that's happened. It's a terrible time. It's not too late, folks. If you haven't started, go build your agent, go play with it.

But the reason it's bad is because the subsidies are disappearing. To get good with this stuff, you need to burn tokens. You need to burn tokens. Tokens are expensive. There was a time when you could pay $200 US a month and get $20,000 US worth of free inferencing. That's gone now. That was that was there for about seven months.

Unfortunately, that's gone now. So now we've got quotas and caps. So the people who invested early are gonna be out they're gonna be always a little bit ahead of you, and they're always gonna have that advantage because had VC subsidizing their learning and development. So I guess this is probably the last time I give this talk. I want you to go forward and do things.

Thank you.

The future belongs to people who do things

An ornate floral illustration frames a vast bank of storm clouds, with a bright twisting form rising from the centre.

We are in an “oh f..k” moment in time…

ghuntley.com/oh-fuck

We are in an “oh f..k” moment in time…

ghuntley.com/oh-fuck

Hey can you go deep with AI over the Christmas break?

A snowy mountain workshop and decorated Christmas tree sit beneath a large curling cloud.

Convert this Rust library to a Haskell library

An overflowing woodworking shed, surrounded by timber, tools and construction debris, represents converting one kind of work into another.

Include a comprehensive test suite

An overflowing woodworking shed, surrounded by timber, tools and construction debris, continues the library-conversion metaphor.

Run a build after every code change

An overflowing woodworking shed, surrounded by timber, tools and construction debris, continues the library-conversion metaphor.

Run tests after every successful build

An overflowing woodworking shed, surrounded by timber, tools and construction debris, continues the library-conversion metaphor.

I took my kids down to the local pool…

A father and three children relax together in a swimming pool beneath gathering storm clouds.

When I got back, I had a fully functional Haskell audio library…

A craftsperson stands at a workbench surrounded by completed tools and machinery, suggesting a finished, functional result.

…and my jaw was on the ground…

A craftsperson stands stunned at a workbench surrounded by tools and machinery.

So I authored a blog post…

ghuntley.com/oh-fuck

N period on from now, software engineers who haven’t adopted or started exploring software assistants, are frankly not gonna make it. Engineering organizations right now are split between employees who have had that “oh fuck” moment, are leaning into software assistants and those who have not.

ghuntley.com/oh-fuck

A tattooed person in overalls faces a turbulent mass of clouds, evoking a profession confronting rapid change.

We need better tools

ghuntley.com/multi-boxing

What if instead of being shackled to design inherited from Turbo Pascal in 1983—where IDEs are centered around humans—we had a fresh take: IDEs are designed around software assistants first, humans second?

ghuntley.com/multi-boxing

Why does an engineer pick only one story?

ghuntley.com/multi-boxing

It seems developers are stuck thinking at a primitive level of “what if I had an AI coworker” and haven’t yet got to the thought of

ghuntley.com/multi-boxing

No fam, what if you had 1000 AI coworkers that went ham on your entire issue backlog all at once

Anni Betts (Anthropic)

ghuntley.com/multi-boxing

It seems developers are stuck thinking at a primitive level of “what if I had an AI coworker” and haven’t yet got to the thought of

ghuntley.com/multi-boxing

No fam, what if you had 1000 AI coworkers that went ham on your entire issue backlog all at once

Anni Betts (Anthropic)

ghuntley.com/multi-boxing

A road divides at a rural intersection beneath a looming funnel cloud, symbolising the software profession at a crossroads.

I’m no longer hiring junior or even mid-level software engineers. It won’t be long until AI will be writing all the code for Gumroad.

Sahil Lavingia, Founder of Gumroad

At Shopify, using AI effectively is no longer optional. It’s a baseline expectation for every employee, no matter their role. This is a major shift in how the company operates and thinks.

Tobias Lütke, CEO, Shopify

These mandates are now common in Australia

Hi, I’m Geoff

An illustrated portrait shows Geoff as a bearded, tattooed man wearing a broad-brimmed hat and overalls.

Previously, the AI SWE productivity tech lead at Canva

The same illustrated portrait introduces Geoff’s former role at Canva.

AGENTS.md

A simple, open format for guiding coding agents, used by over 20k open-source projects.

A screenshot of the AGENTS.md website presents the format as a README for agents, with an example file containing setup commands and code-style instructions.

Full modernisation

A presentation screenshot pairs the title with a dense agent instruction file for converting a Flow file to TypeScript, illustrating how extensive standardised instructions can become.

GPT-5 for Coding

Avoid overly firm language

Overly forceful instructions can backfire by causing the model to overdo what it would naturally do.

A guidance document highlights that emphatic prompting can make GPT-5 excessively thorough with tool calls when gathering context.

  • You MUST use components from the package.
  • You MUST use named exports.
  • You MUST use Tailwind classes.
  • You MUST convert class-based components.
  • Convert Flow types to TypeScript.

What APIs are available?

The MCP specification discusses available services and identifiers.

Repo Structure

ai-collab-repo/
├── README.md
├── CONTRIBUTING.md
├── architecture/
├── agent/steering/rules/
└── tech-stack-docs/
    ├── backend/
    ├── frontend/
    ├── gcp/
    └── tools/

A repository tree separates architecture documents, agent steering rules, and technology-specific guidance for backend, frontend, Google Cloud, and tools.

One context window per task

176k usable

176k usable

Tokens by MCP Server

GitHub MCP: approximately 55,000 tokens.

A bar chart compares token overhead across eleven MCP servers. GitHub MCP dominates at roughly 55,000 tokens; all other servers are below about 10,000.

Less is more

Tokens by MCP Server

GitHub MCP: approximately 55,000 tokens.

A bar chart compares token overhead across eleven MCP servers. GitHub MCP is by far the largest consumer, while the remaining servers range from a few hundred to roughly 9,000 tokens.

Less is more

I publish all my ponderoos and research for free at ghuntley.com.

An illustrated portrait of Geoffrey Huntley accompanies a link to his published research.

What do I mean by some people are “ngmi?”

ghuntley.com/ngmi

A row of cheerful fruit characters introduces the “not gonna make it” discussion.

Performance tiers

  • S: apple
  • A: grapes
  • B: bananas and pineapple
  • C: orange and strawberry
  • F: lemon

A tier chart ranks seven fruit characters from S to F as an analogy for employee performance curves.

It’s not good enough. Prove to me that this isn’t hype.

A grape character stands on the edge of a high cliff, separated by a wide valley from another cliff, representing scepticism that prevents progress.

Revised performance tiers

  • S: strawberry
  • A: bananas and orange
  • B: apple
  • C: none
  • F: none

The fruit tier chart has changed: the former S-ranked apple falls to B, while the strawberry rises from C to S, illustrating how changed capabilities redefine high performance.

2024 to 2025

“It’s not good enough. Prove to me that this isn’t hype.”

“I’m experimenting with AI.”

“I’m using AI coding tools and it’s helping me do my job.”

“I’m using AI to automate my job and programming managers of AI.”

Two opposing cliffs represent stages of AI adoption. In 2024, scepticism and experimentation remain on the left; by 2025, workers on the right use coding tools and automate work through managed AI.

I suspect there’s not going to be mass layoffs for software developers at companies due to AI; instead, what we will see is a natural attrition between those who invest in themselves right now and those who do not.

ghuntley.com/ngmi

2024 to 2025

“It’s not good enough. Prove to me that this isn’t hype.”

“I’m experimenting with AI.”

“Oh… will I have a job in the future?”

“I’m using AI coding tools and it’s helping me do my job.”

“I’m using AI to automate my job and programming managers of AI.”

The adoption journey now includes an anxious worker in the gap between the 2024 sceptics and the 2025 practitioners, asking whether they will still have a job.

2024 to 2025

“It’s not good enough. Prove to me that this isn’t hype.”

“I’m experimenting with AI.”

“Oh… will I have a job in the future?”

“I’m using AI coding tools and it’s helping me do my job.”

“I’m using AI to automate my job and programming managers of AI.”

A bridge now spans the chasm between scepticism and advanced AI use. It provides a supported route for the experimenting, anxious, and productive workers to cross.

Show me your number one spender and I’ll hire them.

— David Cramer, founder of Sentry.io

Imagine your CEO, CFO, and Head of Eng looking at a list of your company’s top AI coding agent users, and you’re at the very top in usage and spend. Is that a good thing or bad thing at your company?

— Quinn Slack

A social-media exchange frames high spending on AI coding agents as a signal of a desirable, highly engaged employee.

An ominous illustration shows a red moon above turbulent seas, a luminous eruption, lightning-like streams, and large roses, evoking a disruptive force approaching.

Overton Window

  1. Unthinkable
  2. Radical
  3. Acceptable
  4. Sensible
  5. Popular
  6. Policy
  7. Popular
  8. Sensible
  9. Acceptable
  10. Radical
  11. Unthinkable

ghuntley.com/overton

A two-direction spectrum places the Overton Window around the central “popular–policy–popular” range, with increasingly unacceptable ideas extending toward both extremes.

AI must be in the IDE

ghuntley.com/overton

The Overton Window is adapted to AI coding products. Several tool logos sit inside the currently popular idea that AI belongs in the IDE, while both directions beyond that window are labelled “something else,” suggesting this convention is temporary.

Four headless AI agents

Four agents, one LLM, autonomously coding Erlang/Elixir and Rust.

A recorded autonomous-development demo runs four terminal-based agents in parallel under the headings “Wireguard Control Plane,” “Infrastructure Orchestrator,” “Gerrit,” and “PKI/IAM/CA.” Across the sequence, the agents inspect repository files, tests, routes, audit logging, mocks, and application structure; one agent commits completed work while another begins creating a notification system. The demo illustrates a supervisor coordinating multiple unattended coding tasks rather than a person operating each agent interactively.

FY2027 Organization Chart?

  • Senior Leaders
    • Managers
      • Developers
        • AI Managers
          • AI Coding Agents

A speculative organization chart adds two machine layers beneath developers: AI managers supervise groups of AI coding agents.

Cursed

Programming, but make it Gen Z.

The only compiled language that lets you code with “sus,” “slay,” and “vibez” while achieving near-C performance.

yeet "vibez"

slay main character() {
  sus i normie = 1
  bestie i <= 100 {
    ready i % 15 == 0 {
      vibez.spill("FizzBuzz")
    }
  }
}

A browser screenshot presents the Cursed programming language and a Gen-Z-vocabulary FizzBuzz example.

Cursed project activity

  • 162,106 messages
  • 15,958 threads
  • 456,632 lines added
  • 174,009 lines removed
  • Approximately 105,173 lines changed

What is an agent?

ghuntley.com/agent

2024

What is a Primary Key?

2025

What is an agent?

Show me…

Build me one…

ghuntley.com/agent

# What an agent actually is:
while True:
    user_input = get_input()
    response = llm.complete(user_input)
    if response.wants_tool:
        result = execute_tool(response.tool_call)
        response = llm.complete(result)
    print(response)

ghuntley.com/agent

A simplified agent loop repeatedly accepts input, asks an LLM for a response, executes a requested tool when necessary, returns the tool result to the LLM, and prints the final response.

“Someone can be highly experienced as a software engineer in 2024, but that does not mean they’re skilled as a software engineer in 2025, now that AI is here”

ghuntley.com/mirrors

# What an agent actually is:
while True:
    user_input = get_input()
    response = llm.complete(user_input)
    if response.wants_tool:
        result = execute_tool(response.tool_call)
        response = llm.complete(result)
    print(response)

ghuntley.com/agent

A simplified agent loop repeatedly accepts input, asks an LLM for a response, executes a requested tool when necessary, returns the tool result to the LLM, and prints the final response.

“Someone can be highly experienced as a software engineer in 2024, but that does not mean they’re skilled as a software engineer in 2025, now that AI is here”

ghuntley.com/mirrors

LLM outcomes are mirrors of operator skill

ghuntley.com/mirrors

An illustrated woman looks into an ornate mirror while another figure whispers beside her, reinforcing the metaphor that an LLM reflects its operator’s abilities.
An illustrated interviewer and candidate face one another beneath turbulent storm clouds and a lightning bolt, representing the disruption AI brings to conventional job interviews.

Amazon University SDE INTERN Invitation to Interview

An email invites the applicant to schedule a final virtual technical interview for a Software Development Engineer internship.

Screenshot of an Amazon recruiting email advancing an internship applicant to a virtual interview.

Congratulations on your Amazon Offer.

An email extends an employment offer and gives instructions to review the documents, make a decision, and confirm a start date.

Screenshot of an Amazon offer email, with personal details obscured.

The best way to determine if someone is a skilled operator is to watch them dance with the LLM

An interviewer observes a candidate working at a computer, illustrating direct evaluation of how someone collaborates with an LLM.

If you needed to do security research, which large language model (LLM) would you use? Why?

ghuntley.com/mirrors

An illustrated woman faces her reflection in an ornate mirror, continuing the metaphor of model output reflecting operator judgment.

If you need a task runner, which LLM would you use? Why?

ghuntley.com/mirrors

An illustrated woman faces her reflection in an ornate mirror, framing model selection as an operator-skill question.

LLM characteristics

Models are positioned between:

  • High safety and low safety
  • Oracle and agentic

OpenAI and Grok appear toward the oracle side; Anthropic appears toward the agentic side. A note near the high-safety, agentic area says “use claude.”

A two-axis quadrant compares LLM providers by safety level vertically and oracle-versus-agentic behavior horizontally.

The best way to determine if someone is a skilled operator is to watch them dance with the LLM

An interviewer observes a candidate working at a computer, illustrating direct evaluation of how someone collaborates with an LLM.
An illustrated, tattooed older tradesman sits on a bench, suggesting reflection on the identity and experience from which someone judges whether AI works.
A close portrait of an older tradesman surrounded by floral motifs continues the reflection on personal identity and experience with AI.
An illustrated older tradesman rests a hand against his mouth in thought, introducing the idea that learning AI requires curiosity and practice.
An illustrated electric guitar surrounded by floral ornament represents the analogy between using an LLM and learning a musical instrument.

In the circles around me, the people who are getting the most out of AI have put in deliberate, intentional practice.

An ornate electric guitar reinforces the comparison between developing AI skill and practising a musical instrument.

They don’t just pick up a guitar, experience failure, and then go, “Well, it got the answer wildly wrong,” and then move on and assume that that will be their repeated experience.

An ornate electric guitar reinforces the message that an initial failure should lead to further practice rather than abandonment.

“What they do is play”

ghuntley.com/play

Last week, I was hanging out with a friend on Zoom, drinking margaritas, and we were both reminiscing, which led to a conversation about COBOL…

ghuntley.com/play

The next thing you know, we’re like, can AI program COBOL?

ghuntley.com/play

A couple of moments later, we opened a coding assistant and then built a calculator in COBOL…

ghuntley.com/play

And we’re just sitting there watching, just going, wow. So we then decided, hey, because in the spirit of play, can it do a Reverse Polish Notation calculator?

ghuntley.com/play

And it turns out it can

ghuntley.com/play

At this stage, our brains were just racing and were riffing. Like, what are the other possibilities of what AI can do?

ghuntley.com/play

What can it and can it not do? So we asked it to write unit tests in COBOL, and it just did it.

ghuntley.com/play

So next thing we know, we’re like, okay, let’s take this up a level even further… let’s create a Reverse Polish Notation Calculator in COBOL, but use emojis as operators

ghuntley.com/play

Does COBOL support emojis?

ghuntley.com/play

Well, there’s one way to find out…

ghuntley.com/play

It turns out that it is indeed possible and COBOL does support emojis…

RPN Calculator

  • Stack-based evaluation
  • Complex-expression support
  • Space-separated input parsing
  • Error handling for invalid expressions
  • 20 test cases

Emoji RPN Calculator

  • Emoji operators: ➕, ➖, ✖, ➗
  • Unicode support in COBOL
  • Emoji error messages and success celebrations
  • 12 test cases

ghuntley.com/play

A screenshot demonstrates a reverse Polish notation calculator implemented in COBOL, including ordinary and emoji-based operators, complex expressions, error handling, and test coverage.
A tattoo-style illustration combines a craftsman lifting a heavily loaded barbell with machinery, roses, birds, snakes, compass symbols, and industrial towers, representing practice, strength, craft, and the combination of learned capabilities.

Closing Ponderoos…

Removing waste from your systems and process is a bigger accelerator than AI.

Ideas are everything now; ideas are now execution…

Stories no longer start at 0%.

What is the point of libraries and open-source now?

Software engineers still have a job, but the job is now different…

Erasure of identity functions

This year has been a very bad year to be asleep at the wheel…

Go forward and…

Do things.

A tattoo-style illustration shows a bearded, hooded figure reading a book, surrounded by turbulent clouds and creature-like forms, reinforcing the call to learn and act.

Links from presentation

Geoffrey Huntley

ghuntley.com/six-month-recap

A QR code provides another way to open the presentation links.

People

  • Annie Betts
  • Dario Amodei

Technologies & Tools

  • Rust
  • Haskell
  • Core Audio
  • Visual Studio Code
  • GitHub MCP
  • GitHub CLI
  • Zig
  • COBOL
  • PyTorch
  • Java
  • Go

Standards & Specs

  • Foreign Function Interface
  • AGENTS.md
  • Model Context Protocol
  • JSON

Concepts & Methods

  • Context window
  • Performance vitality curve
  • Overton window
  • Agentic loop
  • Reverse Polish notation

Organisations & Products

  • Windsurf
  • Turbo Pascal
  • Anthropic
  • Gumroad
  • Shopify
  • Canva
  • GPT-5
  • Cursor
  • Claude Sonnet
  • GitHub Copilot
  • Cluely
  • Levels.fyi
  • HackerRank
  • LeetCode
  • Grok
  • Gemini
  • npm

Works

  • Cursed