Writing

Language, not pixels

Building software is a lot of fun right now. More and more of it is becoming headless, and the value keeps moving from pixels to language.

Peeling the PaaS layer

We moved Tuist from PaaS solutions to Kubernetes, and coding agents turned out to be the layer that makes that complexity worth facing.

Publishing from the harness

My blog has always been a playground for technology. Here is how its publishing pipeline evolved from a static site and a CD pipeline into a small Elixir engine I can publish to straight from a coding harness over MCP, the project I now call Gesttalt.

Producing value is not capturing it

Developers are good at producing value and assume that capturing it should follow. Some observations on why it does not, and on what selling to developers actually rewards.

Building towards the non-obvious

On balancing the obvious with the non-obvious, and why we're building towards a reality where waiting on compilation and tests becomes intolerable.

Doing things once

There's something that has been bugging me since I started working more with coding agents: helping them close the loop effectively. This is the exploration behind Once, an automation substrate that lets agents understand the best way to validate their changes.

The user is not always a person

For as long as we have built SaaS, we assumed a human was the one registering, setting up, and wiring things together. That assumption is quietly breaking, and it changes how software should be designed.

We don't have time for that

On the people who feel great by making you feel small, the gravitational force of doubt around anyone building something, and why we moved on from one of those conversations today.

I could hear them beating

A running accident in 2024 injured my sciatic nerve and left me with foot drop. Two years, a nerve graft, and a year and a half of daily mental work later, an electromyography finally showed the brain's signals reaching the muscle again.

Distributed incrementality

Why productivity infrastructure suddenly matters for everyone, not just the giants. Local incrementality no longer holds once coding harnesses spin up parallel worktrees, and build systems need a redesign around distributed incrementality.

The remote development mirage

A post on X predicted that development would all move to remote sandboxes. Here is why I think that is a mirage, what makes the model attractive to executives and unappealing to developers, and where selling compute actually makes sense.

Closing for security

Daytona went closed source yesterday, and the reasoning was security. Look at these moves through the lens of business instead, and a different and more honest story shows up.

The quiet corner

Why we are betting on remote caching instead of compute, and building Kura and Once in the open as the quiet corner everyone else overlooked.

The cost of a fork

Every build system is a trade-off. The one that interests me is whether you stay native or fork the ecosystem, because a fork has a cost that doesn't go unnoticed.

The automation graph agents need

Coding agents can write the code. The harder part is closing the loop afterwards, and I think the missing piece is an automation graph that connects changes to the work, context, and people they imply.

Inside the container

Selectiveness is the real theme underneath monorepos and the agentic world: a graph of domains and tasks that tells your compute what to actually do.

The missing protocol

Caching and remote execution are welded to whoever runs your CI. We need a narrow waist—a common contract for build caching and remote execution that any provider can implement.

The distributed company

A company stitched together from SaaS tools ends up with a fragmented understanding of itself. Agents make that tax impossible to ignore, and make it worth building the graph of the company yourself.

The borrowed moat

Why renting your cost advantage from the same clouds you compete with leaves you exposed, the difference between a platform and a catalog, and why at Tuist compute is a complement to the cache, not a product.