Will Larson's Blog, page 2

May 23, 2025

Stuff I learned at Carta.

Today’s my last day at Carta, where I got the chance to serve as their CTOfor the past two years. I’ve learned so much working there, and I wantedto end my chapter there by collecting my thoughts on what I learned.(I am heading somewhere, and will share news in a week or two afterfirming up the communication plan with my new team there.)

The most important things I learned at Carta were:

Working in the details –if you took a critical lens towards my historical leadership style,I think th...

 •  0 comments  •  flag
Share on Twitter
Published on May 23, 2025 04:00

May 11, 2025

systems-mcp: generate systems models via LLM

Back in 2018, I wrote lethain/systemsas a domain-specific language for writing runnable systems models,and introduced it with this blog post modeling a hiring funnel.While it’s far from a perfect system, I’ve gotten a lot of value out of it over the last seven years,because it allows me to maintain systems models in version control.

As I’ve been playing with writing Model Context Protocol (MCP) servers,one I’ve been thinking about frequently is one to help writing systems syntax, and I fina...

 •  0 comments  •  flag
Share on Twitter
Published on May 11, 2025 06:00

How to provide feedback on documents.

At Carta, we recently ran a reading group forFacilitating Software Architectureby Andrew Harmel-Law.We already loosely followed the ideas of anarchitectural advice process (from this 2021 articleby the same Andrew Harmel-Law), but in practice we found that internal tech spec and architecture decision record (ADR) authors tended toexclusively share their documents locally within their team rather than more widely.

As we asked authors why they preferred sharing locally, the most common answe...

 •  0 comments  •  flag
Share on Twitter
Published on May 11, 2025 04:00

May 3, 2025

Public company comparables.

A few years ago I wrote about reading a Profit & Loss statement,which is a foundational executive skill. I also subsequently wrote about ways to measure your engineering organization.Despite having written those, I still spend a lot of time wondering about effective ways to representan engineering organization to your board of directors.

Over the past few years, one of the most useful charts I’ve found for explaining an R&D organizationis a scatterplot of R&D spend as a % of margin versus Yo...

 •  0 comments  •  flag
Share on Twitter
Published on May 03, 2025 07:00

How to filter out old email from inbox

Every few years I take a pass at reducing the chaos in mypersonal inboxes. There are simply too many emails to deal with,and that generally leads to me increasingly failing to follow up on important email.

Up to this point, my strategy has largely been filtering out emails that Inever want to read. But there’s another category of email which is stuffI often want to read when it’s fresh, but never want to read after it’s fresh.For example, calendar reminders, some mailing lists, some news le...

 •  0 comments  •  flag
Share on Twitter
Published on May 03, 2025 06:00

April 24, 2025

How should Stripe deprecate APIs? (~2016)

While Stripe is a widely admired company for things like itscreation of the Sorbet typer project, I personallythink that Stripe’s most interesting strategy work is also among its most subtle:its willingness to significantly prioritize API stability.

This strategy is almost invisible externally.Internally, discussions around it were frequent and detailed, but mostly confined to dedicated API design conversations.API stability isn’t just a technical design quirk, it’s a foundational decision ...

 •  0 comments  •  flag
Share on Twitter
Published on April 24, 2025 06:00

April 22, 2025

library-mcp: working with Markdown knowledge bases

At work, we’ve been building agentic workflows to support our internal Deliveryteam on various accounting, cash reconciliation, and operational tasks.To better guide that project, I wrote my own simple workflow toolas a learning project in January.Since then, the Model Context Protocol (MCP)has become a prominent solution for writing tools for agents, and I decided to spend sometime writing an MCP server over the weekend to build a better intuition.

The output of that project is library-mc...

 •  0 comments  •  flag
Share on Twitter
Published on April 22, 2025 04:00

April 20, 2025

Refreshed StaffEng.com and a few other sites

Ahead of announcing the title and publisher ofmy thus-far-untitled book on engineering strategyin the next week or two, I put together a website for its content.That site is pretty much the same format as this blog,but with some improvements like better mobile rendering on / than this blog has historically had.

After finishing that work, I ported the improvements back to lethain.com, but alsodecided to bring them to staffeng.com.That was slightly trickier because, unlike this blog, StaffEn...

 •  0 comments  •  flag
Share on Twitter
Published on April 20, 2025 04:00

April 17, 2025

Why did Stripe build Sorbet? (~2017)

Many hypergrowth companies of the 2010s battled increasing complexity intheir codebase by decomposing their monoliths.Stripe was somewhat of an exception, largely delaying decomposition untilit had grown beyond three thousand engineers and had accumulated a decade of development in its core Ruby monolith.Even now, significant portions of their product aremaintained in the monolithic repository, and it’s safe to say this was only possiblebecause of Sorbet’s impact.

Sorbet is a custom static...

 •  0 comments  •  flag
Share on Twitter
Published on April 17, 2025 06:00

Why did Stripe build Sorbet? (~2017).

Many hypergrowth companies of the 2010s battled increasing complexity intheir codebase by decomposing their monoliths.Stripe was somewhat of an exception, largely delaying decomposition untilit had grown beyond three thousand engineers and had accumulated a decade of development in its core Ruby monolith.Even now, significant portions of their product aremaintained in the monolithic repository, and it’s safe to say this was only possiblebecause of Sorbet’s impact.

Sorbet is a custom static...

 •  0 comments  •  flag
Share on Twitter
Published on April 17, 2025 06:00