Sophia Willows' Blog

https://sophiabits.com/blog

My thoughts on technology, business, and adjacent topics

Sophia Willows' Blog

Entries

  • Jitter the first request, too

    Exponential backoff with jitter is an effective retry strategy that helps avoid thundering herds, but most implementa...

  • Every tool call is a chance to prompt

    There’s a subtlety in building AI agents that took me an embarrassingly long time to appreciate: your tool responses ...

  • Great GraphQL APIs are behavior-oriented

    When comparing REST and GraphQL, it’s not just about payload size, flexibility, or tooling. The real distinction is i...

  • Agentic checkout in ~100 lines of Python

    A few months ago Stripe announced their upcoming Order Intents API at Stripe Sessions. There’s a lot to like about th...

  • You can’t always retry a 5xx

    Networks are unreliable. Even when services are otherwise healthy transient failures like timeouts, dropped connectio...

  • Implicit is better than explicit

    I have some thoughts on the Google Cloud’s latest global outage! The incident report contains some interesting nugget...

  • How to write robust webhook handlers

    Webhooks are surprisingly hard to process correctly. Almost every software project I’ve worked on has needed to proce...

  • Lean in to the graph when writing resolvers

    Designing great resolver functions in GraphQL is quite unintuitive. Giving consumers the ability to describe their de...

  • Don’t use TypeScript’s string enums

    I’ve written about TypeScript enums in the past, and back then I encouraged the use of enums with string values inste...

  • It takes a village

    I typically describe my career as being the result of a lot of luck. There are so many key moments in my professional...

  • You just can’t be Googling ‘Select’

    I’ve been extremely fortunate over the course of my career, and I’ve been able to learn from some truly incredible pe...

  • Low and steady write rates can be misleading

    A common mistake in system design interviews is to underestimate a low but steady write rate. Many candidates quickly...

  • Leveraging logprobs to build better generative AI systems

    Autofilling form fields has become an increasingly common and practical application of generative AI. With just a bit...

  • GraphQL collection lookups

    One of the powerful design patterns that can be employed within a GraphQL schema is the concept of collection lookups...

  • Using the Sunset header with GraphQL

    Try as we might to design APIs that last, it is very difficult to completely avoid the need for breaking changes. The...