RSSAmplifier

Blog

Bruno Scheufler

A blog on software engineering and early-stage startups.

brunoscheufler.comRSS feed ↗15 posts

Latest posts

My Next Chapter

Today, I'm moving to San Francisco. Moving to the United States to work on a startup has been one of my biggest dreams ever, and it became reality when my O-1 was approved shortly after my 25th birthday two months ago. I've been working on this

Looking back on 2025

As another eventful year is coming to an end, I'm continuing my annual tradition of reflecting on 2025. Last year was marked by significant change: I joined Inngest in April 2024, which has come to be one of the best decisions I've ever made. This year,

Bidirectional Markdown syncing for Ghost

A couple days ago, I pulled the trigger and moved this blog from Next.js to Ghost. You can read more about the process behind this decision in my other piece . In this post, I want to focus on how the new stack works, and why I think this should

On picking software for the long run

I've always enjoyed using good software. Convenient tools. The newest thing. Over time, I've come to realize that none of this matters if you don't own your data. Or if you have to worry that a company providing the platform you're on

Claude Code is the ChatGPT Moment for Software Engineering

Claude Code may be one of the most exciting product releases since ChatGPT. It's been out since early February this year and I started using it a couple weeks ago, but it's consistently blowing my mind. I had been planning a project to replace a critical

Looking Back on 2024

Another year is coming to a close, so it’s time for another annual review! This has become a personal tradition, check out last year’s review if you haven’t done so already! Early in 2024, I was working hard on building CodeTrail, a new take

Understanding When to Use Redis

Before joining Inngest earlier this year, I had never used Redis (or its successor, Valkey) or any comparable system. Whenever I planned data persistence for a new service architecture, I would choose a reliable data store like Postgres. I would argue that ACID guarantees and a track record of stability

The First 120 Days at Inngest

Hey! It’s been pretty quiet around here for a while — more than I’d like but it’s been a busy couple of months since I joined Inngest earlier this year in April. I’m completing some personal projects too at the moment and

Enhancing Scalability and Reducing Latency Without Missing a Beat

At Inngest , we serve hundreds of millions of events per day. Each event can trigger a function run comprising multiple steps. Users can return blobs and other data from these steps, necessitating incredibly fast reads and writes to our data store to keep latency as low as possible. Function runs

Restoring Go Errors in gRPC Services

In my last post , I talked about the benefits of using interfaces in Go. In short, interfaces are a powerful tool to specify the behavior of objects. However, Go interfaces lack a mechanism to specify a predefined set of errors that can be returned to narrow the definition, such as

Harnessing the Power of Go Interfaces for Decoupling and Scaling at Inngest

Interfaces hide implementation details by specifying the capabilities or behavior of an object. This concept has appeared in different programming languages over time, using different terms like traits or protocols . The same rules apply in Go, take the classic example of io.Reader : type Reader interface { Read(p []byte) (n

Zero-Downtime Migrations in Producer/Consumer Systems

Imagine you’re building an app and want to ensure that requests don’t feel slow for the end user. Let’s say you’re working on a signup flow that needs to send an activation email and update external systems like billing and a CRM.

Derisking Product Rollouts with Feature Flags

In most successful companies, products and their underlying infrastructure are constantly evolving to changing needs and growing demand. Shipping new features, improvements, or other changes can require careful planning ahead of a release. While you can try to imagine and rule out different failure scenarios ahead of time, you never

Building a DNS message parser in Go

The internet has grown from a couple of research lab sites to a vibrant ecosystem of content and services. Without the ability to resolve human-readable names to machine identifiers, however, it’d be impossible to find anything in the ever-growing web of interconnected systems. In November 1987, RFC 1034

Joining Inngest

In the coming decades, there’s only going to be more software to build, operate, and scale for platforms we’re only just inventing, with code running on nearly everything we interact with day to day. To help advance the current frontier into AI, which is built on