Hi there! I'm Bruno, a Senior Software Engineer and founder from Munich, Germany. Currently, I'm building distributed systems at Inngest.
I help scale engineering teams in high-growth environments, onboard new engineers, make architectural decisions, and build a culture of trust and ownership to enable engineers to do their best work.
Previously, I scaled engineering teams and infrastructure at Hygraph and built CodeTrail, Anzu, and sonata.
I deeply care about understanding the modern engineering stack end-to-end, building great products, and learning about leadership, sales, finance, geopolitics, and other topics.
Continue readingThe First 120 Days at Inngest
Inngest, PersonalJul 23, 2024 · Inngest BlogSharding high-throughput Redis without downtime
Inngest, Systems Architecture, Redis, ShardingJul 4, 2024Enhancing Scalability and Reducing Latency Without Missing a Beat
Systems Architecture, GolangJun 30, 2024Restoring Go Errors in gRPC Services
Systems Architecture, GolangJun 29, 2024Harnessing the Power of Go Interfaces for Decoupling and Scaling at Inngest
Systems Architecture, GolangMay 19, 2024Zero-Downtime Migrations in Producer/Consumer Systems
Systems ArchitectureMay 19, 2024Derisking Product Rollouts with Feature Flags
Systems Architecture, Engineering Management, Product DevelopmentMay 12, 2024Building a DNS message parser in Go
Golang, Systems ArchitectureApr 23, 2024Joining Inngest
PersonalApr 3, 2024Building a Hybrid Search Experience
Systems Architecture, React, Next.js, PostgreSQL, Search, OpenAIMar 8, 2024 · CodeTrailWhy Documentation Matters
Documentation, CodeTrailFeb 11, 2024Building outstanding rich-text experiences with ProseMirror and React
React, Frontend, ProseMirrorFeb 4, 2024Reducing Python Memory Usage by 97%
PythonJan 28, 2024Scaling Generative AI Adoption with Software Engineering Principles
Systems ArchitectureJan 7, 2024Working with Parsers and ASTs
Systems ArchitectureDec 31, 2023Looking back on 2023
Personal, Annual ReviewDec 17, 2023Learning to enjoy trying new things and looking stupid
LearningDec 10, 2023On Competition
StartupsDec 3, 2023Recording Better Demos
Video ProductionNov 26, 2023On Distraction and Procrastination
ProductivityNov 20, 2023Product Versioning for Fast-Moving Teams
Systems Architecture, CI/CDNov 12, 2023Setting up Hosted macOS GitHub Actions Workflows for Electron Builds
Electron, Systems Architecture, Automation, CI/CD, GitHub ActionsNov 5, 2023Releasing Electron apps for macOS
Electron, Systems ArchitectureOct 29, 2023Syncing State between Electron Contexts
Electron, Systems ArchitectureOct 22, 2023Go Embeds and JSON
GolangSep 14, 2023 · Gradients & GritEnhancing LLM Applications with Real-time Data Sync
LLMs, Gradients & Grit, Systems Architecture, Next.jsSep 3, 2023Looking back on a decade in software engineering
Startups, PersonalAug 30, 2023Building Canvas-Based Web Applications
Gradients & Grit, Systems ArchitectureAug 16, 2023 · Gradients & GritExploring Production-Ready AI at the Frontier of Research
LLMs, Gradients & GritAug 15, 2023 · Gradients & GritIntroducing PromptCanvas, a spatial prompt interface
LLMs, Gradients & Grit, Systems Architecture, Next.jsJul 26, 2023From regression to neural networks
Neural Networks, Deep LearningJul 9, 2023Writing damn good decks with LLMs
StartupsJul 2, 2023An engineer’s guide to UI design
DesignJun 18, 2023On the future of coding blogs in a world of LLMs
ProductivityMay 13, 2023Instant Linux VMs without the Installation
Systems Architecture, ContainersApr 30, 2023Reproducible VMs for Local Development
Systems Architecture, ContainersApr 23, 2023Extending the Kubernetes Scheduler
Systems Architecture, KubernetesMar 26, 2023Adding Context: The First Weeks
AnzuMar 12, 2023Generating Subtitles in Real-Time with OpenAI Whisper and PyAudio
Machine LearningMar 1, 2023The OS for building products
AnzuFeb 5, 2023Improving Local Development with Atlas
Systems Architecture, Infrastructure-as-Code (IaC)Jan 29, 2023The most memorable computer science education is applied
StudiesJan 15, 2023Using Static Code Analysis to Share Types Between Services
TypeScript, Tooling, AnzuJan 8, 2023Nested Flags with Bitwise Operators
CDec 31, 2022What's Next
PersonalDec 26, 2022Looking Back on 2022
Annual Review, PersonalDec 18, 2022Calculating Rolling Billing Periods
Node.jsDec 11, 2022Storing User-Defined Attributes in ClickHouse with Nested Types
ClickHouse, Systems ArchitectureDec 4, 2022Building delightful React applications has never been easier
Frontend, React, Next.jsNov 27, 2022Indirection is the antithesis of velocity
Systems Architecture, Engineering ManagementNov 20, 2022Serializing Data between Systems with Anzu Values
Systems Architecture, AnzuNov 6, 2022Betting on Delightful Products
Product Development, Startups, AnzuOct 30, 2022Experiencing How Big Corporations Work for 240€
ObservationsOct 23, 2022Observations on Successful Companies
Startups, Product DevelopmentOct 10, 2022Offloading Execution Flow to the Database
Systems ArchitectureOct 2, 2022Running untrusted code in short-lived environments for Anzu v1
Anzu, Systems ArchitectureSep 26, 2022Building Sortable Relations with PostgreSQL
Systems Architecture, PostgreSQLSep 18, 2022Making Architects work in Software Teams
Engineering Management, Product DevelopmentSep 11, 2022Anzu Behind the Scenes: Why Resource Management Wasn’t It
Engineering Management, Anzu, Anzu: Behind the Scenes, Product DevelopmentSep 4, 2022Steady State means Continuous Rewriting
Engineering ManagementAug 28, 2022Sharing Code in TypeScript is (Still) a Mess
Systems ArchitectureAug 21, 2022Balancing Normalization and Revision History
Systems ArchitectureAug 14, 2022Handling Long-Running Jobs with AWS SQS
Systems Architecture, Amazon Web Services (AWS)Aug 7, 2022Deploying Containers on AWS ECS Using the SDK
Containers, Amazon Web Services (AWS)Jul 24, 2022Reducing Database Round-Trips with Boring Queries
Systems ArchitectureJul 17, 2022Measuring Popularity or How Likes Don’t Tell the Full Story
StatisticsJul 10, 2022Running Container Workloads on Anzu with Managed Containers
Anzu, Systems Architecture, AutomationJun 26, 2022Improving Cache Hit Ratios with Connected DataLoaders
GraphQLJun 19, 2022Introducing Anzu Dev Environments
Anzu, AutomationJun 13, 2022Bridging the Gap between the Cloud and Your Codebase with Anzu Services
Anzu, Systems Architecture, AutomationJun 5, 2022Deploying Docker Containers over SSH
ContainersMay 22, 2022Modeling Polymorphic Relations in Postgres
Systems Architecture, PostgreSQLMay 8, 2022Making teams move faster, happier.
AnzuApr 24, 2022Required GitHub Actions Jobs in a Monorepo
Automation, CI/CD, GitHub ActionsApr 17, 2022Routing Traffic for Dynamic Deployments using Traefik
Systems ArchitectureApr 9, 2022The Required GitHub Status Check That Wasn't
Automation, CI/CD, GitHub ActionsMar 27, 2022Building and pushing Docker images within GitHub Actions
Automation, CI/CD, GitHub ActionsMar 20, 2022Understanding Deferred Foreign Key Constraints in PostgreSQL
PostgreSQLMar 13, 2022Looking back on Introduction to CS
StudiesFeb 26, 2022The Complexity of Building Software in 2022
Systems ArchitectureFeb 20, 2022Getting the hang of Polymorphism in object-oriented languages
Studies, JavaFeb 12, 2022Reviewing User-Generated Content with Interactive Slack Messages
Product DevelopmentFeb 6, 2022Offloading Program Flow into PostgreSQL with Temporary Tables
Systems Architecture, PostgreSQLJan 30, 2022Layouting across platforms
DesignJan 23, 2022Important Rules of Embedding Types in Go
GolangJan 16, 2022Indexing Pages Programmatically Using the Indexing API
AutomationJan 10, 2022Communicating between services with gRPC
Systems Architecture, gRPC, GolangJan 1, 2022Paginating Large, Ordered Data Sets with Cursor-Based Pagination
Systems Architecture, GraphQL, PostgreSQLDec 26, 2021Looking Back on 2021
Personal, Annual ReviewDec 18, 2021Choosing an Implementation for Unique Identifiers
Systems ArchitectureDec 11, 2021Exploring the Geometric Mean
Studies, R, StatisticsDec 5, 2021Decreasing Graph Complexity with Transitive Reductions
Graph Theory, Operations ResearchNov 27, 2021Scheduling Tasks with Topological Sorting
Graph Theory, Operations ResearchNov 20, 2021Running Untrusted Workloads with Firecracker and containerd
ContainersNov 14, 2021Solving the unexecutable executable
Golang, ContainersNov 7, 2021Accessing Workouts with HealthKit and Swift
Swift, SwiftUIOct 31, 2021Reducing SaaS Complexity
SaaS, Infrastructure-as-Code (IaC), AutomationOct 23, 2021Infrastructure-as-Code as Single Source of Truth
Infrastructure-as-Code (IaC), Automation, Pulumi, TerraformOct 17, 2021Updating Notion Pages on a Schedule with GitHub Actions
Automation, GitHub Actions, CI/CDOct 9, 2021Generating Dynamic GitHub Actions Workflows with the Job Matrix Strategy
GitHub Actions, CI/CDOct 3, 2021Preview Environments for every Pull Request with Pulumi and Vercel
Systems Architecture, Infrastructure-as-Code (IaC), Automation, Pulumi, Terraform, GitHub Actions, ContainersSep 26, 2021Containers as Code with Pulumi and Docker
Systems Architecture, Infrastructure-as-Code (IaC), Automation, Pulumi, Terraform, ContainersSep 19, 2021Cutting Production Release Duration By 80%
Systems Architecture, Release, CI/CD, Infrastructure-as-Code (IaC), Automation, Pulumi, Terraform, GitHub ActionsSep 12, 2021Implementing Transactions with Side Effects
Systems ArchitectureSep 3, 2021An introduction to R
R, Data Science, StatisticsAug 27, 2021Communicating between Java and Go using gRPC
Golang, Java, Systems ArchitectureAug 22, 2021Built it, but nobody came
Evergreen, Product DevelopmentAug 15, 2021Analyzing Blog Performance Using R
R, Data Science, StatisticsAug 8, 2021Setting up Algolia DocSearch with Next.js
Next.jsAug 1, 2021Multi-Stage Markdown Processing with remark
Markdown, remark, Next.jsJul 25, 2021Improving DataLoader Stack Traces
GraphQLJul 18, 2021Transforming Exponents, Radicals & Fractions
Algebra, StudiesJul 11, 2021Motivating Employees with Stock Options
Evergreen, StartupsJul 4, 2021Faster TypeScript Feedback Loops with esbuild
Node.js, Engineering ManagementJun 27, 2021Designing APIs to Last
Evergreen, Systems Architecture, GraphQLJun 19, 2021Observing WebSocket infrastructure with Socket Inspector
Swift, SwiftUI, Mobile App Development, ReleaseJun 7, 2021Rendering Remote Images with AsyncImage
SwiftUI, WWDC21Jun 5, 2021Versioning Features for Sustainable Product Evolution
Evergreen, Systems Architecture, Product DevelopmentJun 1, 2021Improving Content Discoverability with Topics
PortfolioMay 31, 2021Locking and Synchronization for Node.js
Node.js, Synchronization, Concurrency, Systems ArchitectureMay 26, 2021A primer on SSO with SAML
Single Sign-On (SSO), SAML, Node.jsMay 22, 2021Picking Monitoring Methods to Increase Observability
Observability, NewRelic, Monitoring, Distributed Tracing, Error Reporting, Systems ArchitectureMay 16, 2021Improving observability with annotated build information
Observability, CI/CD, Docker, Containers, Git, Systems ArchitectureMay 13, 2021Sending Contact Form Submissions to Notion
Notion API, GolangMay 9, 2021Improving releases with service-splitting
Continuous Deployment (CD), Infrastructure-as-Code (IaC), Terraform, Pulumi, Github Actions, Systems ArchitectureMay 2, 2021Running a commit-based release infrastructure
CI/CD, Git, Infrastructure-as-Code (IaC), Systems ArchitectureApr 24, 2021My 2021 Swift Student Challenge Submission
WWDC21, Swift, Swift Student ChallengeApr 18, 2021Processing Markdown with remark and unified plugins
Markdown, unified.js, remark, Abstract Syntax Tree (AST)Apr 11, 2021The Future of Multiplayer: Cloudflare Durable Objects
Cloudflare Workers, Cloudflare Workers Durable ObjectsApr 1, 2021SwiftUI Meets Swift Playgrounds
SwiftUI, Swift, Swift Playgrounds, WWDC21, Swift Student ChallengeMar 23, 2021Visualize Regressions with Playwright Video Recording
Playwright, End-to-End Testing, Browser TestingMar 18, 2021When Velocity Implies Simplicity
Product Development, EvergreenMar 10, 2021Efficient Caching with Reduced Roundtrips
Caching, DataLoader, Systems ArchitectureMar 4, 2021One Semester In, Five To Go
StudiesFeb 26, 2021Preventing Increasing Fragmentation
Software-as-a-Service (SaaS), Company BudgetingFeb 21, 2021Instant Full-Stack Insights with NewRelic
NewRelic, Monitoring, Observability, Application Performance Monitoring (APM), Distributed TracingFeb 12, 2021Secure Asset Management and Upload with S3
Amazon Web Services (AWS), Simple Storage Service (S3), Systems ArchitectureFeb 4, 2021GraphQL-powered API Integration Tests
GraphQL, Testing, Integration Tests, ApolloJan 28, 2021Exploring State: State Machines
State Machines, XStateJan 22, 2021Finding The First Iteration
Product Development, Evergreen, Engineering ManagementJan 17, 2021Centralized Validation with GraphQL Scalar Types
GraphQLJan 10, 2021Deliver context-aware navigation with Push Evaluation
SwiftUI, Swift, Stapel, Mobile App DevelopmentJan 5, 2021Building Functional Stack Navigation
SwiftUI, Swift, Stapel, Mobile App DevelopmentDec 30, 2020Introducing Stapel
SwiftUI, Swift, Stapel, Mobile App Development, ReleaseDec 29, 2020Looking Back on 2020
Personal, Annual ReviewDec 22, 2020Multiple App Environments Using Xcode Schemes
Xcode, Swift, Mobile App DevelopmentDec 13, 2020Supporting Universal Links with SwiftUI
SwiftUI, Swift, Mobile App DevelopmentDec 7, 2020APNs Environments and Push Notification Delivery
Mobile App Development, Swift, Push Notifications (APN)Nov 29, 2020It's About Time
Time management, EvergreenNov 23, 2020Preview-Driven Development with SwiftUI
SwiftUI, Mobile App Development, Swift, XcodeNov 18, 2020State and View Composition in SwiftUI
SwiftUI, Swift, Mobile App DevelopmentNov 15, 2020Scraping Country Codes
HacksNov 12, 2020Boring Technologies, Reliable Foundations
Systems ArchitectureNov 9, 2020Getting Into iOS Development with SwiftUI
SwiftUI, Swift, Mobile App Development, XcodeNov 5, 2020Starting Lasting Side Projects
EvergreenNov 2, 2020The Pace of Studying in 2020
StudiesOct 30, 2020When (not) to use pg_dump
PostgreSQLOct 28, 2020Building Productive Habits
ProductivityOct 23, 2020Digitizing My Maths Studies with TeX
Studies, LaTeXOct 20, 2020Rebuilding my portfolio using Next.js & TailwindCSS
Next.js, Portfolio, TailwindCSSOct 16, 2020My Favorite Tools in 2020
ProductivityOct 13, 2020Reaching Remote Acceptance
Evergreen, Remote Work, Engineering ManagementOct 4, 2020Rapid TypeScript Development with esbuild and Estrella
TypeScript, Build ToolsSep 19, 2020The End of an Era for Public Container Image Registries
ContainersSep 12, 2020Common Pitfalls in Go Application Development
GolangSep 1, 2020Fundamental Design Decisions for Scalable Systems
Evergreen, Systems Architecture, Engineering ManagementAug 28, 2020Forwarding Incoming Mails with AWS Lambda and SES
Amazon Web Services (AWS), Simple Email Service (SES), Simple Storage Service (S3), GolangAug 16, 2020Building Powerful Integrations with GitHub Apps
GitHub, GitAug 3, 2020Seamless End-To-End Browser Tests with QA Wolf
Testing, Browser Testing, End-to-End Testing, PlaywrightJul 31, 2020Accessing ECS Task Metadata at Runtime
Amazon Web Services (AWS), Amazon Elastic Container Service (ECS), ReleaseJul 26, 2020Tunneling Local Applications with SSH and Caddy
Secure Shell Protocol (SSH)Jul 22, 2020Handling GraphQL Errors using Sentry
GraphQL, SentryJul 17, 2020The Weirdest Error I Ever Debugged
GolangJul 4, 2020Documenting Design Decisions using RFCs and ADRs
Evergreen, Engineering ManagementJun 26, 2020Scaling Release Systems
Containers, CI/CDJun 20, 2020Ship Early and Ship Often
Evergreen, Engineering Management, Product DevelopmentJun 14, 2020Getting Started with Electron Application Development for macOS
ElectronJun 7, 2020Picking the perfect Serif typeface
DesignMay 31, 2020Bootstrapping a Portable Cypress Setup for Blazing-Fast Browser Tests
CI/CD, Browser Testing, End-to-End TestingMay 24, 2020Measuring Velocity: The Case for Electron
Node.js, ElectronMay 16, 2020Deno and the future of Node.js
Node.jsMay 9, 2020Building a Testing Culture
Engineering Management, TestingApr 26, 2020Managing Your Infrastructure as Code with Pulumi
Pulumi, Infrastructure-as-Code (IaC), TerraformApr 25, 2020Rapidly Setting up GraphQL Data Fetching in React
GraphQL, Apollo, ReactApr 12, 2020Building Go Test Suites using Testify
Golang, Testing, Integration TestingApr 11, 2020Verifying Asymmetrically-Signed JWTs in Go
Golang, Json Web Tokens (JWT)Apr 5, 2020Building Composable Go Applications With Interfaces
Golang, Systems ArchitectureMar 29, 2020Conquering Randomness with Composable Go Application Design
Golang, Systems ArchitectureMar 28, 2020Testing Web Applications in Go
Golang, TestingMar 22, 2020Recovering HTTP Handlers In Go
Golang, Systems ArchitectureMar 21, 2020Browser-Only React Components With Suspense
Gatsby, ReactMar 15, 2020Redesigning My Portfolio for 2020
Portfolio, DesignMar 8, 2020Configuring Jest Snapshot Resolvers
Jest, Node.js, TestingMar 1, 2020Real-Time Postgres Change-Streaming With lode
PostgreSQL, Golang, ReleaseFeb 23, 2020Utilizing the data layer: Deadlock Relations with Deferred Constraints
PostgreSQLFeb 16, 2020Utilizing the data layer: Complex UPSERTs in Postgres
PostgreSQLFeb 14, 2020Supercharging Jest with Custom Reporters
Jest, Testing, Node.jsFeb 8, 2020Utilizing the data layer: Conditional INSERTs in Postgres
PostgreSQLJan 19, 2020Building an Authoritative DNS Nameserver
Evergreen, DNS, NetworkingJan 5, 2020Global Service Deployments with Anycast and BGP
Evergreen, DNS, NetworkingDec 28, 2019Goodbye 2019, Welcome 2020
PersonalDec 22, 2019Back to Bare-Metal: Building and Hosting my Metrics
Metrics, InfluxDBDec 4, 2019Improving Static Assertions with Snapshot Tests in Go
Golang, TestingNov 17, 2019Scaling Network Concurrency in Go
Golang, Networking, Systems ArchitectureNov 3, 2019Understanding Go's context package
GolangOct 27, 2019Tinkering with Global WireGuard Deployments
Networking, WireGuardSep 21, 2019Parallelized Batch Processing in Go
Golang, Concurrency, Synchronization, Systems ArchitectureSep 12, 2019A Brief GraphQL Day Bodensee Recap
GraphQL, ConferencesSep 1, 2019Handling Concurrent Go Workflows
Golang, ConcurrencyAug 17, 2019JavaScript Generators And What They're Used For
JavaScriptAug 11, 2019Inspecting Kubernetes Deployment Logs with kail
KubernetesJul 28, 2019Boost Your Team's DX By Formatting All Git Commits
Engineering Management, GitJul 11, 2019JAMstack Conf London: That's My Jam!
ConferencesJun 26, 2019Retrospective on GraphQL Conf & Prisma Day
ConferencesJun 9, 2019Automating my open-source projects with CI/CD workflows
Automation, GitHub, Open-SourceJun 2, 2019Accessing Kubernetes services locally using kubefwd
KubernetesMay 19, 2019Reaching Consensus: GraphQL Input Unions
GraphQLMay 12, 2019What's Next?
PersonalApr 26, 2019Choosing the Right Go Web Framework
GolangApr 10, 2019Debugging Google Cloud Pub/Sub services in production
Google Cloud, Google Cloud Pub/SubMar 24, 2019The Lifecycle of Side Projects: Planning & Early Stages
Evergreen, Product DevelopmentMar 17, 2019Updating your GitHub status with ghstatus
Hacks, ReleaseMar 3, 2019The State of GraphQL × Go
GraphQL, GolangFeb 28, 2019Setting up Kubernetes Dashboard
KubernetesFeb 22, 2019Provisioning Kubernetes clusters
KubernetesFeb 13, 2019Empowering CI/CD workflows with compose-deploy
Open-Source, Automation, CI/CD, Docker, ContainersFeb 9, 2019Simplifying Docker deployments with compose-deploy
Open-Source, Automation, CI/CD, Docker, Containers, ReleaseFeb 1, 2019Bootstrapping local Kubernetes clusters using kind
KubernetesJan 27, 2019Introducing aqueduct
GraphQL, Containers, ReleaseJan 20, 2019Introducing GraphQL Jaeger tracing middleware
GraphQL, Distributed Tracing, Observability, Monitoring, Jaeger, ReleaseJan 19, 2019Adding tracing to your GraphQL services with Jaeger
GraphQL, Distributed Tracing, Observability, Monitoring, JaegerDec 22, 2018Designing my new portfolio
Design, Portfolio