My Feed

A daily reading list aggregated from the RSS feeds I follow.

You have to beat the models at something

Sean Goedecke

In 2025, I wrote that software engineers ought to be assessed by “value over replacement”: not how much money they made for their company, but how much they would have made compared to the average engineer in their position. I’ve always found it vaguely silly when engineers put…

Selling out

Sean Goedecke

In 1973, Tom Lehrer famously sang that “selling out is easy to do”. That may have been true in the seventies, but it’s not true today: selling out requires both technical skill and a careful sense of how large organizations work in practice. One of the goals of this blog is to…

Making Your Data Ready for Agentic AI

Martin Fowler

Lots of organizations are excited about what AI can do to streamline their processes, save money, and juice margins. But AI's capabilities are founded on the data that AI accesses, and for many organizations that foundation is little more than sand. Pramod Sadalage and Prem…

Six Months of Writing Code Exclusively With Agents

Blog.exe.dev

In February of this year, I made a rule for myself: I wasn’t going to write code by hand anymore. I’ve been living by that rule for six months. The system lived in my head Back in 2024, before AI, my superpower was knowing how the entire system worked, especially the interfaces…

Controlling when CSS custom property values are computed

Jake Archibald

When and how CSS custom property values are calculated might not be what you expect, and it has a big impact on your styles. The default Take this HTML: <div></div><div class="second-item"> <p>…</p></div>And this CSS: .second-item { --index: sibling-index(); & > :first-child {…

HTTP cache partitioning: la misma imagen, descargada dos veces

Joan Leon

Una página con un iframe cross-site pide la misma imagen desde el iframe y desde el padre. En Chrome se descarga dos veces; en Firefox y Safari, una. Por qué la cache key no es la misma en los tres motores, por qué compartir partición no garantiza el hit, y qué propone…

Fragments: August 24

Martin Fowler

I was listening to Ezra Klein’s interview with Helen Toner about the recent OpenAI hack of Hugging Face and the subsequent discovery that there were swarms of agents inside OpenAI doing unsanctioned activities. One of the points Klein made was that at no point did any of these…

Anger, Anxiety and Agency

Armin Ronacher

Sean Goedecke wrote a post arguing that you should never be angry at work — a post with which I strongly agree. Anger can be a useful signal, but being angry at work rarely improves the situation. More often, it makes life worse for the people around you, many of whom have no…

Fast and Hard Code

Armin Ronacher

One of the memes on Twitter is that “programming is solved now.” I’m not sure to what degree it is, but one thing is pretty clear: the act of familiarizing yourself with a language no longer matters and some of the friction that mattered for humans does not matter for agents. As…

You should never be angry at work

Sean Goedecke

I try not to give a lot of prescriptive advice about working in tech companies1. There are many ways to be successful, and every company works differently. If you’re shipping projects and your management chain is happy, it doesn’t really matter how you’ve accomplished it.…

Readers can't identify watermarked AI text

Sean Goedecke

In the last few weeks, I’ve been complaining that everyone is wrong about AI watermarking: it isn’t really anti-consumer and it doesn’t make the outputs any worse. The watermarking papers demonstrate1 that this is true, but I thought it might be interesting to put it to a…

We Taught sqlc to Invalidate Our Caches

Blog.exe.dev

People connecting to sites hosted on exe.dev are contacting a proxy server that routes the connection to the correct VM. Routing depends on details about the connection, such as the HTTP Host header or an SSH public key. It also depends on details of exe.dev internal network,…

Citizens Build, Agents Execute, Experts Govern

Martin Fowler

TL;DRWhy building an app over the weekend isn't the same as building enterprise software I’ve noticed an interesting gap opening up over the last six months. It isn’t really a gap in technology. It’s a gap in what different people think software engineering actually is. The…

Practitioner Voice: The Writing Category Nobody has Named Yet

Martin Fowler

Jim Highsmith recognizes that effective writing from a practitioner is a style distinct from academic writing or thought-leadership content. It's a style that I advocate, and my contributors mostly follow. Jim decided it was important to give it a name, and identify what makes…

What Is Reasoning

Armin Ronacher

A few weeks ago a paper was shared that showed how to extract reasoning traces from closed-weight models. Together with online discussions about tricking models into leaking them, it made me investigate it more out of curiosity. Twitter seems full of half-truths and confusion…

API design for agents

Sandro Maglione

If you write code, you want your API to be clean, concise, and beautiful. Less explicit, less verbose. Agents may be the opposite. Give them a full explicit API, and don't leave anything hidden.

Good writing is obvious, not original

Sean Goedecke

When you write, you should try to say things that are obviously true, and spend very little time worrying about whether you’re being original. Ironically, this is the best way to do truly original writing. Every important idea has been discussed already. I learned this in grad…

Have an Agent Babysit Your Deployments

Blog.exe.dev

Deployments are scary. That’s the moment you break things. Not-deployments are even scarier. Waiting just makes the next deployment bigger. As the saying goes: “If it hurts, do it more.” The obvious, correct answer is CD. But then you’re off building canaries and waves and…

Fragments: August 18

Martin Fowler

Part of the reason why I’m at Thoughtworks is because I’d like to see a software development organization founded on technical excellence as an example for the rest of the industry. The trouble is that I have little aptitude or inclination for the hard work of building such an…

Help peer

Sean Goedecke

One of the most influential 20th century pieces of writing about AI is Isaac Asimov’s The Last Question. Although there are many humans in the story, the protagonist is the computer Multivac, who evolves over the course of ten trillion years from a single datacenter to a…

AI text watermarking is not a big deal

Sean Goedecke

People are pretty unhappy about Anthropic’s recent announcement that they’re planning to include a hidden watermark in Claude model outputs. Will this lead to a mass exodus from Anthropic models? Will the introduction of watermarking be a meaningful change for users? No. AI text…

No Plan Survives Contact With the Enemy (Reality)

Blog.exe.dev

If you’ve ever presented the design of a product after the fact, you know the most interesting bit is the surprises. What broke at scale? Where did you change course? What did the customers do that you didn’t expect? What were the interesting metrics? These are impossible to…

Library development with agents

Sandro Maglione

Library development is changing as well with agents. The principles are the same as app code: as much linting, tests, and static checks as possible. With that in place, internals can move, fast.

OAuth for Agents

Blog.exe.dev

Agents are unusually capable credential-handling tools. They read logs, execute commands, inspect files, call external services, and frequently operate on inputs that weren’t written by the person who deployed them. Giving an agent a long-lived secret means trusting not only the…

TDD inside the agent loop - theater or actual value?

Martin Fowler

My colleagues at Thoughtworks tend to be big fans of Test-Driven Development, and many people in the industry advocate telling LLM agents to use TDD when building software. Birgitta Böckeler was curious if this really makes a difference, so conducted a few experiments. more…

La ventana móvil de 28 días de CrUX

Joan Leon

Cómo funciona de verdad la ventana móvil de 28 días de CrUX, qué publica cada fuente y por qué el p75 tarda tanto en moverse aunque los datos solo tengan dos días de retraso.

No, local models will not win

Sean Goedecke

Every time a new open-weight AI model is released, people say that local models are the future. Why spend billions of dollars building out datacenters when everyone will just be able to run AI models on their laptops or phones? I think this idea is doomed. No matter how strong…

Advanced AI sycophancy

Sean Goedecke

Everyone knows that AI sycophancy is when the model tells you how smart you are. Wow, you’re absolutely right. That’s not just a new idea — it’s genuinely groundbreaking. You’re a very special user. Easy to spot, isn’t it? The discussion around AI sycophancy peaked last year,…

I got an email about resistance

Sean Goedecke

This will be kind of an unusual post. I got a recent email about my writing that I thought was such a good articulation of one common criticism that I’d like to share it (and my response) in full. Here’s the email, from William Murray1: Hey Sean, I have enjoyed your writing but…

Agentic Code Quality

Addy Osmani

Quality now depends on the constraints you set around your agents.

How to keep thinking

Sean Goedecke

Imagine you’re the guest on some kind of frenetic, software-engineering-themed game show. The host is constantly flipping over new cards with questions that you have to answer as fast as possible: Is this adjustment to the database schema right? Do these bits of data look…

The End of No Code

Blog.exe.dev

You may have heard the news: Bending Spoons acquired Airtable for $1.28 billion. Rome didn’t fall in a day, but this is as good a point as any to mark the moment No Code platforms jumped the shark. Full disclosure, I worked at Airtable for many years, love the product, and love…

A Non-Exhaustive Inventory of exe's Software Factory

Blog.exe.dev

An agent that looks for security issues systematically. Fable refuses to help out, so we systematically look for security issues, with a bias toward recent changes. An agent that investigates alerts. Sisyphus keeps track of our alerts. We have ones that page us and ones that…

Simpler GitHub Integration URLs, Plus Read-Only Access

Blog.exe.dev

exe.dev integrations let you keep secrets outside of your VM; a proxy injects the secrets. Sometimes this is as simple as adding an HTTP header, and sometimes the integration is bespoke. We recently gave our GitHub integration two new features: One URL for any repo: Any repo…

Introducing Auto-Purchasing for Shelley Tokens

Blog.exe.dev

We’re happy to announce that you can now enable auto-purchasing of Shelley Tokens. Previously, you had to manually purchase more credits every time you exhausted your token store. With auto-purchasing, you no longer have to take time out of your day to click through the UI. We…

Botiquette

Blog.exe.dev

There are lots of bots floating around exe, helping us organize and monitor and maintain our world. (Agents and bots and any LLM output are all synonyms for this post.) We’ve organically developed some etiquette around bots that work well for us. Bots do not post to human…

Bringing State Machines in effect

Sandro Maglione

The new @typeonce/effect-machine library is out, and it brings state machines and state charts into effect. Composable and fully type safe, just like effect. Let me give you an introduction.

Ghostty in the Machine: The Saga of exe-scroll

Blog.exe.dev

When you use the mobile or web-based terminals on exe, there are two ghostty instances involved. One is rendering the terminal in the app or the browser (via a ghostty build compiled to WebAssembly). The other is on the VM in the session manager, providing scrollback on…

Fragments: August 4

Martin Fowler

There’s been a fair bit of publicity of the Open AI “rogue agent” that hacked into Hugging Face. This prompted Anthropic to check what their models were up to and, to my complete lack of surprise, discovered three incidents where models had gained unauthorized access to data in…

Devtools must be open source

Blog.exe.dev

Five years ago, most software engineers I spoke to had no programs they had written for themselves. (I was asking this question a lot as part of trying to understand how Tailscale could fit into engineers’ lives.) All day, every day, engineers use programs written by others to…

Giving and taking credit in big tech companies

Sean Goedecke

Engineers often complain that visibility should be their manager’s job. In other words, they think engineers should be able to focus on the code, while their manager figures out who’s doing well and rewards them. This attitude is an extension of the “school fantasy”: the idea…

The Conductor Developer

Martin Fowler

TL;DRWhy I think software development is starting to feel a little more like conducting an orchestra. There’s a shift happening in software development that I don’t think we’re talking about clearly enough. For the last couple of years we’ve framed AI as a productivity tool. How…

AI models need moral support to make discoveries

Sean Goedecke

One recent development in AI is its ability to solve some long-standing problems in mathematics. In 2024 and 2025, this was a trickle: once or twice a year somebody would say that an LLM came up with a proof, and then everyone would argue over whether that counted as “real”…

The Economic Benefit of Refactoring

Martin Fowler

Giles Edwards-Alexander does an experiment to see if decomposing a large function helps reduce token costs, suggesting that is may now be possible to measure the economic benefit of refactoring more…

Stripe Just Wants a Number

Blog.exe.dev

If you went up to an engineer at any tech company and asked “What’s your favorite part of the stack to work on?” I can guarantee their answer wouldn’t align with my own: billing. In my experience, billing becomes difficult when billing logic gets tangled up with regular business…

The second AI coding revolution

Sandro Maglione

It wasn't even a year ago when most devs stopped writing the code. The first revolution. We are now entering the second phase of AI coding: stop reading your code as well. Let me show you how.

You don't have to be smart if you can think clearly

Sean Goedecke

When you’re on fire, problems are transparent: they’re solved simply by the act of looking at them. Even complicated layers of multiple problems can simply be glanced through like stacked panes of glass. But nobody can work that way all the time. This is a common pitfall for…

The Orchestrator's Tax

Martin Fowler

Subagents get justified by time saved and parallel execution, but Rahul Garg explains that's not what matters most. Every token in the orchestrator's context is competing for its attention, and the real value of a subagent is what it keeps out of that context. Subagents should…

Why I’m Writing Rachel’s Ramblings

Martin Fowler

TL;DRI have ideas. I haven’t been writing them. That’s about to change. I promise… myself. I’ve been thinking a lot about talent. Actually, I’ve been thinking a lot about thinking. And writing. Or more specifically, not writing. This really hit me earlier this year at the Future…

The real AI risk is inside the labs

Antirez

Amodei in his latest blog post wrote a mix of agreeable things and things that I believe misrepresent where the real risk of AI is located. I want to focus my attention on why, among all the risks, open weight models constitute the mildest one. I write these words as a person…

Fixing my tooltip accessibility mistake

Jake Archibald

I made an accessibility error, and I want you to learn from my mistakes. I've been making short videos recently about web platform features as they land in Firefox, and also about other web standards & development stuff. If you'd prefer to watch a 3-minute video version of this…

Being Linux Torvalds

Antirez

(This blog post was adapted from the transcription obtained from my YouTube video at https://www.youtube.com/watch?v=l6lxgYeVZqs) When Linus Torvalds developed the first Linux kernel, he had studied the Minix sources, he had studied computer architecture, he had the base…

Codeberg Divides

Armin Ronacher

Codeberg recently changed its terms to exclude projects that are largely written with generative AI. Since I want GitHub to face competition I have thoughts. Codeberg is entirely within its rights to do this. It is an association with members and a democratic process, and that…

tailmix: Connect to Multiple Tailnets at Once

Blog.exe.dev

Tailscale is one of those magical technologies that I can no longer imagine living without. Its use cases range from homelab setups to enterprise workloads spread across complex, disparate environments. At exe, we use it to connect much of our internal infrastructure. That said,…

LLMs reward expertise

Sean Goedecke

In the 2010s, if you had technical gaps (say, you couldn’t write CSS), you had to either rely on a skilled colleague or just hope that the answer to your exact problem was out there on the internet. Today, everyone can write sort-of-okay CSS by delegating the task to an LLM.…

Customizing Shelley, Customizing Software

Blog.exe.dev

Asking Shelley to make itself pink. Sure is pink. Pink upgrade screen automates rebase. ‹ › If you want to customize Shelley, open up a conversation, and ask the agent to change itself. It will do so. When a new version of Shelley ships, it rebases your customizations onto the…

Not just development, distribution of software may change as well

Antirez

Even if you are as averse to semver as I used to be in the course of my programming activity, you can still think of open source software distribution as something that used to follow a fixed number of steps. There is a branch where developments happen, and this branch…

How Antithesis Turned exe into a Sandbox for Agentic Software Tests

Blog.exe.dev

Carl Sverre spends a lot of time thinking about how to give AI agents the right amount of power. Give them too little, and they can’t do real work. Give them too much, and they might blow up your tech stack. As a software engineer at Antithesis, an autonomous software testing…

Run a Slack Bot from Your VM (Without Giving It the Keys)

Blog.exe.dev

You can now interact with your VM on Slack. We store your Slack credentials outside your VM so you don’t have to worry about agents running amok (incidentally, that’s true of all our integrations). There are two flavors of Slack integration: Slack The first is a send-only…

How I am keeping up with AI

Sandro Maglione

AI model releases and trends seems to be speeding up even more than before. But you don't need to follow all the details. Here is what I am focusing on to keep up with AI without being overwhelmed.

Fragments: July 21

Martin Fowler

With this post, I’ll wrap up my notes from the second Future of Software Development Retreat. But before I do, I should note that the full Thoughtworks report on the retreat is now available. They have five headline findings: Code generation is no longer the bottleneck —…

Claude Is Not a Compiler

Blog.exe.dev

In early 2025, I wrote Is Claude a Compiler? At the time, my answer was: I don’t know. I’m now pretty sure the answer is “no, that’s a category error, it’s better than a compiler.” But this requires a bit of unpacking. Computer programs are notoriously intricate and finicky. A…

Software Factories, Light and Dark

Addy Osmani

A software factory is harnessing loops at scale - the system that builds your software instead of you. You can run the loop with humans in it (light factory) or you can ignore the humans (dark factory) and let those agents scope, build and ship code, without anyone really…

Impro is a handbook for running a cult

Sean Goedecke

Here’s the big idea in Keith Johnstone’s book Impro: Children are naturally creative, but are violently formed into repressed adults by Western culture and education The process of becoming more creative and expressive is largely a process of unlearning these habits of…

Overtraining as the path to human-like AI

Sean Goedecke

The anonymous blogger Gwern recently completed a thirteen thousand word post called Human-like Neural Nets by Catapulting, in which he offers a theory about why LLMs don’t possess truly flexible human-like intelligence, and how we might train LLMs that do. Theories like this are…

The Archaeologist’s Copilot

Martin Fowler

When people think of legacy modernization, most folks aren't imagining the target environment will be Java 8. But this was the challenge facing Nik Malykhin when he needed to run a Java 1.5 codebase on today's hardware. His early use of LLMs gave plausible answers that did not…

Own the Outer Loop

Addy Osmani

Engineers need to own the outer loop, the accountability for these systems. A written version of my AI Engineer World's Fair 2026 closing keynote: quality, verdict, and answerability, the three hidden costs of delegation, and building software factories you can stand behind.

Expand your vision, not your time

Sandro Maglione

With AI, you can do more than ever before. Bigger tasks in parallel. And not only in code. But more does not necessarily means more hours, that's a trap.

DSLs Enable Reliable Use of LLMs

Martin Fowler

LLMs generate code incredibly fast, but to ensure they generate exactly what is intended, they need clear boundaries. Abstractions and Domain-Specific Languages (DSLs) provide a strong harness that guides LLMs right from the start. Unmesh Joshi describes how the example of…

Earning taste and judgment

Addy Osmani

Taste used to be a byproduct of the reps. Agents took the reps. So if you're junior you now have to go get the taste and judgment on purpose. A builder's look at the weakening entry level, the two debts we now owe, and concrete ways to build judgment when the machine writes the…

What does "playing politics" mean for software engineers?

Sean Goedecke

Software engineers are often told to “start playing politics”, but most engineers have no idea what that means. Their reference point for “playing politics” comes from fiction like Game of Thrones. Are they supposed to raise an army and depose the CEO, or poison each other at…

Fragments: July 13

Martin Fowler

Some more of my notes from Thoughtworks Future of Software Development Retreat. When we had our first retreat in Utah early this year, nobody had heard of Harness Engineering. This time we had a whole session on it. When comes to the guide side of harnesses, most of the…

Control the ideas, not the code

Antirez

Look at the past history of this blog. There are many blog posts about programming with AI, a few of them date back to January 2024 (like this: https://antirez.com/news/140). I’m a relatively well regarded programmer, after all. I don’t have the need to still be in the “loop” as…

The Tower Keeps Rising

Armin Ronacher

I feel that some vibecoded software changes somewhat randomly and unexpectedly. That made me think about Bruegel’s “The Tower of Babel” which shows an already quite chaotic depiction of the Tower of Babel. The story is usually told as one about pride and ambition and ultimately…

In defense of not understanding your codebase

Sean Goedecke

As a software engineer, how well do you have to understand your own codebase? My guess is that people who work on small codebases with low-turnover teams (say, Redis or games like The Witness) would say “obviously you have to understand it completely, otherwise you can’t do good…

Experiences with local models for coding

Martin Fowler

Birgitta Böckeler now reports on her recent experiences trying local LLMs for coding. She compares them using two standard tasks, and tries out the most promising model for day-to-day use. more…

How much is left to implement?

Sandro Maglione

AI, so fast and easy, just prompt and watch. Well, turns out it may be too easy. So easy in fact, that you can always start another project, without stopping to think if you really need it.

Viability of local models for coding

Martin Fowler

Birgitta Böckeler recently spent some time trying out running local LLMs for some programming tasks. In this memo she outlines the factors that influence how viable they are for the job. more…

Blog about things you don't understand yet

Sean Goedecke

Every post I publish represents at least two things I’ve learned: the thing that prompted me to write the post, and the thing I learned in the course of writing it. If I don’t learn anything new while I’m writing, it’s not interesting enough to publish. Typically I learn way…

Getting Started with Anchor Positioning

Josh Comeau

For decades, one of the most notoriously-challenging problems on the web has been sticking one element to another element, for things like tooltips and nested menus. The CSSWG has decided to provide a first-class solution to this problem, and it’s pretty friggin’ cool! In this…

Fragments: July 6

Martin Fowler

Last week, Thoughtworks ran a second Future of Software Development Retreat, this time in Europe. As with the previous event, I’ll be sharing some fragmentary thoughts on this. There were five parallel streams, so I could, at best, only attend ⅕ of sessions. This isn’t an event…

Build a Self-Updating LLM Knowledge Base

Ben Holmes

You may have seen Andrej Karpathy talk about "LLM Wikis." They turn your unorganized thoughts into easy-to-navigate notes, wikis, or visualizations. It's an incredibly powerful tool for researchers, software developers, scattered notetakers... basically everyone. Here's the…

The Agent-Era Career

Addy Osmani

AI gets good at anything with an answer key. Your career is everything that doesn't have one.

Building Software From My Phone

Blog.exe.dev

My little town of San Anselmo has a delightful live music concert series in the summer. What they don’t have is a website that is easy to read on my phone. I was on vacation when this summer’s schedule posted–and I had intentionally left my laptop at home. My first instinct was…

C2PA only works if everything is signed

Sean Goedecke

The European Union AI Act is Europe’s attempt to comprehensively regulate AI usage. A big part of that is the requirement that AI-generated content be identifiable: either tagged with a watermark or with what the Act calls “digitally signed metadata”1. Since all this becomes…

Better Models: Worse Tools

Armin Ronacher

A very strange Pi issue sent me down a rabbit hole over the last two days. The short version is that newer Claude models sometimes call Pi’s edit tool with extra, invented fields in the nested edits[] array. And not Haiku or some small model: Opus 4.8. The edit itself is usually…

Connect Your ChatGPT Subscription to exe.dev

Blog.exe.dev

We're pleased to announce that you can connect your ChatGPT subscription to exe.dev and use our coding agent Shelley with the OpenAI models you're already paying for! To enable this, go to exe.dev/integrations, click on the "LLM" integration tile, click "Edit", choose "ChatGPT…

Keep-Alive no es Cache-Control: anatomía de una cascada de red

Joan Leon

Un caso real de auditoría: dos imágenes pesadas (608 KB y 403 KB) bajo HTTP/1.1 con Connection: Keep-Alive pero sin Cache-Control. Por qué son cosas distintas, qué arregla HTTP/2 y cómo preconnect adelanta el handshake. Con demo interactiva del waterfall.

Agentic Autonomy Levels

Addy Osmani

The action in agentic engineering has moved from prompting to operating. Autonomy isn't one ladder, it's two axes (agency and orchestration) and six levels you move between per task. The real question is what level a task deserves, and what verification makes that level…

Text AI watermarks will always be trivial to remove

Sean Goedecke

The European Union AI Act will begin to be enforceable in August 2026, one month from now1. One of the biggest new requirements is Article 50, which requires all AI outputs to be “detectable as artificially generated”. In other words, if LLM providers want to do business in the…

Adding Features Without Interrupting Network Connections

Blog.exe.dev

A busy network People use exe.dev to build and run programs on virtual machines. For virtual machines that are serving web traffic, we handle encryption and authentication. For people using their VM as a traditional computer, we transparently support SSH access. We also provide…

XState v6 Alpha

Sandro Maglione

The new major version of XState (v6) is now out in alpha and ready to be tested. I already migrated a full codebase and sent 7 PRs with improvements. Let's see what's new.

The Goldilocks customizable select height

Jake Archibald

I recently gave a talk on customizable (as in fully-stylable) <select>, and as I was building demos I realised there's a sizing 'pattern' that's almost always the-one-you-want, but it took me a long time to figure out how to do it in CSS. Well, I say I figured it out. I actually…

Saying the obvious thing

Sean Goedecke

Stating the obvious is surprisingly useful. Most of your knowledge lives below the threshold of conscious awareness, so it’s possible for a piece of writing to remind you of what you already know. It’s common to know you don’t like something without being quite sure why, and…

AI inference is obviously profitable

Sean Goedecke

Many people claim that AI inference is unprofitable to serve, and thus must be subsidized by an ocean of dumb money from investors who believe that some future AI model will come to dominate the world economy. When that dumb money goes away, so will AI products. According to…

AI code with loops and subagents

Sandro Maglione

The new trend in AI coding is called loops. Well, in reality those are just subagents. Yes, subagents that you don't manage, but another AI does for you. And you just watch, and review.

The Coming Loop

Armin Ronacher

I don’t prompt Claude anymore. I have loops running that prompt Claude and figuring out what to do. My job is to write loops. — Boris Cherny Over the last months I have watched more and more people build something on top of coding agents that feels meaningfully different from…

Building the exe.dev iOS App

Blog.exe.dev

If you haven't checked out our app yet, it's in the App Store. We blogged about it the other day. Once we decided in one of our Tuesday in-person meetings to build our iOS app, my first stop was the Stonestown Mall Apple Store, to buy the best Mac Mini I could find. (The choices…

Do you write code manually, or wait?

Sandro Maglione

Writing code used to be a fully offline experience. It's writing text after all. But AI changed that as well. Without connection, do you wait, or do you write manually?

Fragments: June 16

Martin Fowler

“Prag Dave” Thomas (co-author of the outstanding “Pragmatic Programmer”) has loved programming since he was young. Programming was how I could express myself. I wasn’t an artist. When I sing, dogs howl. When I draw, friends say, “Very nice. What is it?” I didn’t connect…

Building Reliable Agentic AI Systems

Martin Fowler

One of the most interesting projects my colleagues have done with LLMs has been building a system with Bayer to allow pharmaceutical researchers to query decades of information about studies buried in PDF reports. Sarang Sanjay Kulkarni describes its evolution from keyword-based…

The New Software Lifecycle

Addy Osmani

I co-wrote a Google whitepaper about how AI is changing the software lifecycle. I'm not going to summarize the whole thing. Instead, here are the handful of ideas in it I think actually matter, plus six figures you're welcome to reuse.

Agentic Code Review

Addy Osmani

Coding agents are extraordinarily good now, and getting better fast. The interesting consequence is that the hard part of engineering moved from writing code to deciding whether to trust it, which makes review the most leveraged skill in software right now. How you approach it…

Announcing the exe.dev iOS App

Blog.exe.dev

We're delighted to announce that exe.dev has an iOS app now in the App Store. There's a lot to write about how we built it, but today let's talk about the why. After all, the exe.dev dashboard and Shelley already work on mobile browsers. They say the best camera is the one you…

AI GPUs probably live longer than three years

Sean Goedecke

People who think current AI use is unsustainable often rely on the claim that inference GPUs only last “three years at the most” under load1. The idea here is that once the AI bubble money drains away, current infrastructure will rapidly become obsolete, and there won’t be…

Antigravity Skills: configuración avanzada del frontmatter YAML

Joan Leon

Los campos kind, model, temperature, max_turns y tools del frontmatter de SKILL.md permiten configurar con precisión cómo se ejecuta cada agente en Antigravity. Guía práctica con los campos extendidos que Google aún no documenta oficialmente.

Dangerous Technology For Americans Only

Armin Ronacher

There is a bit of schadenfreude on Twitter right now about Anthropic being hit by the US government’s export control directive to suspend access to Fable and Mythos. Anthropic and their leadership have spent a lot of time and effort describing its own technology as dangerous and…

Gaslighting Openness

Armin Ronacher

I have been a staunch supporter of Open Source for a long time, including experiments in funding it. I’m a true believer in the idea that Open Source always wins in the long run, but not automatically and not quickly. Right now it is being stressed by AI slop, shifting…

Sharing Is Caring

Blog.exe.dev

Today's quiz is to deploy a server-rendered hello world app (python3 -mhttp.server fine for these purposes, though I used Go below), publically visible, on your cloud of choice. On your marks, get set, GO! $ ssh exe.dev new --name mr-rogers $ ssh exe.dev share set-public…

Strategies to review AI code

Sandro Maglione

AI writes code fast. AI in a loop is even faster. But you are still the reviewer, are you? Here are a few ways to slow down AI to your pace, will keeping up fast mode.

Doing nothing at work

Sean Goedecke

Many engineers should be doing less work. I don’t necessarily mean producing less code or fewer changes, but literally working fewer hours in the day. When they do work, they should be working at a slower pace. I like to aim to be running at 80% utilization by default: unless I…

Working with product managers

Sean Goedecke

The relationship engineers have with product management is more dysfunctional than with any other part of the company. There’s no shared culture or language like there is with other engineers, and the rules of “who gets to tell who what to do” aren’t as clear-cut as they are…

A new era for software testing

Antirez

Automatic programming dramatically speeds up writing software in certain use cases and in the right hands. In my experience the output does not reach the structural quality and economy of complexity of the best hand-written software. However, not all the software is stellar, and…

Replace Your CI With a Merge Queue

Blog.exe.dev

The standard in CI today is tests run in the cloud after a commit has been merged. They serve as a double-check for an engineer: did you forget to test some part of your code that you changed? CI works for humans. The reason is our long-term understanding of a codebase and its…

Communities of Not

Armin Ronacher

There is a strange thing that happens in communities that gather around abstinence from something: identity from opposition. At their best these communities are not just negative: childfree spaces can be about autonomy, choice and acceptance, anti-car spaces about safer streets…

Anti-AI nostalgia and the cult of the past

Sean Goedecke

Programmers were better back in the day, weren’t they? Back when we had real programmers. Not just people who got paid to write code, but people who lived it, who were obsessed with their craft, and whose code was a lively expression of themselves. Hackers were hackers in those…

Do you really understand your codebase?

Sandro Maglione

AI is writing more and more of your code. You don't even need to be precise, the AI will figure out the details for you. Well, too much of this, and you stop learning. This is how I am preventing this.

Fragments: June 2

Martin Fowler

Greg Wilson has noticed that lots of folks are using dodgy metrics to figure out if AI tools are worth their costs. Would you measure lines of code generated, or tickets closed? Or would you send out a survey asking whether developers feel more productive? Each of those…

Weird projects I shipped with AI

Sean Goedecke

Where are all the AI-generated projects? This is a common question from AI skeptics: if LLMs are so good at writing code, where is the tsunami of new AI-generated apps, services and games? I personally don’t find this to be much of a paradox. Writing code is only one of the…

Fragments: May 27

Martin Fowler

At the GOTO Conference in Copenhagen in 2025, Kent Beck and I spent some time on stage talking and answering questions from the audience - a format I refer to as “two old geezers on a park bench”. We talk about our experiences with LLM-augmented programming (at that point -…

The VibeSec Reckoning

Martin Fowler

Vibe coding has significantly accelerated software prototyping but AI agents frequently recommend insecure configurations, creating security problems. Gautam Koul, Lucian Moss, Neil Drew-Lopez, and Daberechi Ruth Edeokoh share their experience while building applications for…

How to run 20 agents at the time

Sandro Maglione

Do you want to maximize your AI output? Well, you can technically run as many agents as possible, but turns out it may not be that easy, nor a successful strategy.

CSS vs. JavaScript

Josh Comeau

There are a bunch of JavaScript animation libraries out there, and you might have wondered whether there’s a performance cost compared to traditional CSS transitions and keyframe animations. In this blog post, we’ll compare the same animation across several different strategies…

Distributing LLM inference in DwarfStar

Antirez

High end NVIDIA cards, and the server and power needed to run them, cost a lot of money, especially if you plan to reach enough VRAM to run massive models. The alternative, so far, has been Apple hardware, or the DGX Spark that, even if severely limited because of memory…

Bliki: Vibe Coding

Martin Fowler

Vibe coding is building a software application by prompting an LLM, telling it what to build, trying it out, prompting for changes - but without looking at any of the code that the LLM generates. This technique can be used by people without any knowledge of programming. However…

Do technical articles matter anymore?

Sandro Maglione

I released my first post-AI article this week. Are technical articles still needed with AI? Well, yes, but not all kinds. Here is how I am thinking about this, and what I will keep reading.

The test suite as a regression sensor

Martin Fowler

Birgitta Böckeler finishes her post on sensors for coding agents by examining the role of a test suite as a regression sensor, focusing on the role mutation testing can play. more…

Alternatives for the EDIT tool of LLM agents

Antirez

EDIT: of course this was already done in the past! I had little doubts but people just confirmed me about it on Twitter :) But, keep reading: the CRC32 compromise at the end is an interesting tradeoff, and this is a good discussion to have in general. Right now I'm working to an…

A few words on DS4

Antirez

I didn’t expect DwarfStar 4 (https://github.com/antirez/ds4) to become so popular so fast. It is clear that there was a need for single-model integration focused local AI experience, and that a few things happened together: the release of a quasi-frontier model that is large and…

Fragments: May 14

Martin Fowler

Last week I spent a day at The Orchard Retreat, hosted by Mechanical Orchard. that brought together several people working in software development to talk about the profession’s future with the rise of agentic programming. The event was help under the Chatham House Rule, so I…

Bliki: Interrogatory LLM

Martin Fowler

When we need an LLM to perform a complex task, we often need to feed it a lot of context. Coming up with a design for a new feature requires descriptions of how we want the feature to appear to the user, guidelines on how it should be implemented, information on external systems…

Components take care of themselves

Sandro Maglione

Most frontend bugs are hidden behind confused business logic and race conditions inside components. Easy solution: make all components dumb, no business logic inside them, and let AI take care of them.

What is Code

Martin Fowler

Increasingly humans delegate writing code to agents. Will there even be source code in the future? To wrestle with this question, we have to understand what code is. Unmesh Joshi sees code as having two distinct but intertwined purposes: instructions to a machine and a…

Effect-ification end to end

Sandro Maglione

Effect is taking over the TypeScript ecosystem, now faster than ever before. I have been running effect everywhere for a while: here is what you will get on the other side once all becomes effect.

Dev, Test, Prod: Choose One, Two, or Three

Blog.exe.dev

Industry-wide, we often develop our software in three distinct environments. Perhaps your laptop is a Mac; your CI system is hosted GitHub Actions, and your prod is k8s. Three-in-One For some use cases, you need not bother with the complexity; use one exe.dev vm for all three. A…

Redis array type: short story of a long development

Antirez

I started working on the new Array data type for Redis in the first days of January. The PR landed the repository only now, so this code was cooked for four months. I worked at the implementation kinda part time (kinda because many weeks were actually full time, sometimes to…

Custom linting rules to guide AI code

Sandro Maglione

AI codes fast. Too fast for you to review that much slop code and bad patterns. But there is a solution: prevent bad patterns altogether with custom linting rules. Here is how I do this.

Scroll-Driven Animations

Josh Comeau

The new Animation Timeline API allows us to create dynamic scroll animations without any JavaScript! It’s honestly a very lovely API, and in this blog post, we’ll explore some of the super cool things we can do with it. Keep reading.

Edición de vídeo en el browser con WebGPU

Joan Leon

WebGPU permite aplicar efectos y transformaciones a vídeo en tiempo real en el browser. Implementación práctica con benchmarks y limitaciones reales.

Series A for exe.dev

Blog.exe.dev

We have raised a Series A, for a total of $35m in funding. We are using it to build a new generation of cloud infrastructure. Major investors are Amplify, CRV, and HeavyBit. Call it a cloud for developers. Why do we need new infrastructure primitives and a new cloud now? Agents.…

Time off screen

Sandro Maglione

I have been without my Mac for 5 days: no coding, no AI, no nothing. Out in the wild. After these 5 days, here is everything that I missed out while off screen.

Some Secret Management Belongs in Your HTTP Proxy

Blog.exe.dev

Secrets management is a pain. Larger organizations commit to centralizing secrets management in a service. When done well, these services solve a lot of issues around secrets, at the cost of creating a lot of ops overhead (which is why they are limited to larger organizations)…

AI cybersecurity is not proof of work

Antirez

The proof of work is the wrong analogy: finding hash collisions, while exponentially harder with N, is guaranteed to find, with enough work, some S so that H(S) satisfies N, so an asymmetry of resources used will see the side with more "work ability" eventually winning. But bugs…

The Ultimate AI coding guide

Sandro Maglione

This is the last guide you need to write great code with AI. And it's nothing impressive, but mostly a series of high-level steps that, if done correctly, guarantees success with AI coding.

Squash and Stretch

Josh Comeau

Have you ever heard of Disney’s 12 Basic Principles of Animation? In this tutorial, we’ll explore how we can use the very first principle to create SVG micro-interactions that feel way more natural and believable. It’s one of those small things that has a big impact. Keep…

Closer Compute 🇺🇸 🇬🇧 🇯🇵 🇩🇪 🇦🇺

Blog.exe.dev

When you use a computer for development, latency matters. Even if you typically hang out in a remote-connected editor over sshfs (like Visual Studio), sometimes you need to debug a pesky systemd service or search for a config file. There is nothing worse than being knee-deep in…

Get started with IndexedDb in Effect

Sandro Maglione

IndexedDb in effect is finally here! A full type-safe and local-first enabled IndexedDb module is out in effect v4 beta, and it finally unlocks using IndexedDb for real. Get started here.

A Transparent UI Pattern

Blog.exe.dev

exe.dev has one API: it's the command you would write in the exe.dev lobby. For example, share add island-anchor "philip+demo2@bold.dev" shares the HTTP server for the VM island-anchor to that e-mail address. (We believe sharing a web app should be as simple as sharing a…

What makes AI write great code

Sandro Maglione

Another experiment with AI this week, and this time it went extremely well. I ported Bevy (game engine) to TypeScript, with the patterns and type safety of effect. All AI. This is why it went so well.

Prompt Engineering Is Dead, but Claude Still Tries

Blog.exe.dev

A year ago, Claude was better at prompting than I was. Not any more. Coding agents have gotten dramatically better. Good prompting used to require carefully calibrated instructions and harnesses. Now a good prompt includes goals, context, and maybe some preferences and…

Everyone Is Building a Software Factory

Blog.exe.dev

We are all grappling with what it means to be an organization with agentic tools. We are seeing a Cambrian explosion of workflows in how to produce software. It is unwise, right now, to declare The Solution and enforce it. Developer Productivity teams that are pushing a workflow…

You are the bottleneck of AI

Sandro Maglione

In an attempt of going from requirements to full implementation fast with AI, this week I tried an experiment: all-in AI specs and code. Well, it failed, bad, and rather fast.

Sneaky Header Blocker Trick

Josh Comeau

There is a lil’ UI detail on this blog. Most people don’t even notice it, but the ones who do often reach out, asking how on earth it works. It feels like it defies the rules of CSS! In this blog post, I’ll break down the surprisingly-straightforward implementation so you can…

AI-Driven Performance Debugging: Gemini + Chrome DevTools MCP

Joan Leon

Workshop práctico de diagnóstico de rendimiento con Gemini CLI conectada al navegador vía Chrome DevTools MCP: desde identificar un Long Task en código minificado hasta dejar que el agente cree la rama y prepare la PR con la solución.

Stop AI from taking control of your code

Sandro Maglione

I have been running full AI-mode on a few projects for a few weeks now. I just now paused to take a look at the overall code, and the situation is bad. Here are some ways to fix and prevent this situation.

Keep up the pace with AI

Sandro Maglione

You probably cannot write code as fast as AI. But you don't have to. Even if you are not typing every word, it's still your job to ensure a working final product. And there are a few strategies you can use.

February Update

Blog.exe.dev

February kept us busy! Thanks to all our users for the great feedback, so many bug fixes and quick improvements were possible because of high quality reports. Here are a few things we shipped in February: Idea templates The new VM page now has a gallery of idea templates:…

GNU and the AI reimplementations

Antirez

Those who cannot remember the past are condemned to repeat it. A sentence that I never really liked, and what is happening with AI, about software projects reimplementations, shows all the limits of such an idea. Many people are protesting the fairness of rewriting existing…

APIs for the RESTless

Blog.exe.dev

Exe.dev's API to create a new machine is: ssh exe.dev new --name=restless --json That assumes your SSH key is already registered to your account. If you want to do it over HTTPS, it's: curl -X POST https://exe.dev/exec \ -H "Authorization: Bearer $TOKEN" \ -d 'new…