# Peter Mbanugo - Consultant, Trainers, and Programmer I'm a consultant for high-performance Node.js/JavaScript apps. You'll find my blogs, courses, and services here. ## Projects - [Protocol Zero - Build Your Own Pub/Sub (Workshop)](https://protocol-zero.pmbanugo.me): Workshop, Course, Pub/Sub, Networking - [Demitter - Scalable Node.js Pub/Sub](https://github.com/pmbanugo/demitter): OSS, Node.js, Pub/Sub - [FlyCD - Heroku-like PaaS for fly.io](https://flycd.dev/): SaaS, IaaS, DevOps - [Buntastic - S3-backed static site server](https://github.com/pmbanugo/bun-tastic): OSS, Web, Bun - [cacheable-fetch - fetch client with RFC-compliant caching](https://github.com/pmbanugo/cacheable-fetch): OSS, Node.js, Data - [flargd - fast & minimalist feature flag app that runs on Cloudflare Workers](https://github.com/pmbanugo/flargd): OSS, Node.js, Data ## Blog - [Control Flow in Odin](https://pmbanugo.me/blog/learn-odin-series-03-control-flow): Learn how Odin keeps control flow explicit through exhaustive switch statements, value-based error handling, or_return, and block-scoped defer. Discover why visible control flow makes code easier to reason about. - [Memory Safety, AddressSanitizer, and Logical Lifetimes in Tina](https://pmbanugo.me/blog/tina-memory-safety-in-odin-asan): Learn how Tina combines AddressSanitizer, arena allocation, and logical lifetimes to detect memory safety violations - [Why Odin?](https://pmbanugo.me/blog/learn-odin-series-00-getting-started): A succinct introduction to the Odin programming language for experienced programmers, especially those familiar with Go, Java, and other GC-based languages. - [Zero to Hello World in Odin](https://pmbanugo.me/blog/learn-odin-series-01-hello-world): Write your first Odin program and learn about the structure of an Odin program/project. - [Data and Memory Management in Odin](https://pmbanugo.me/blog/learn-odin-series-02-data-and-memory-management): Learn how to work with data, and fearless memory management in Odin - [Building an HTTP Server on a Thread-per-Core Framework, without Async/Await](https://pmbanugo.me/blog/building-http-server-in-odinlang): How to build a production-grade HTTP server without async/await or coroutines. Discover how Tina HTTP uses thread-per-core state machines in Odin - [The Tokio/Rayon Trap and Why Async/Await Fails Concurrency](https://pmbanugo.me/blog/why-async-await-complect-concurrency): Async/await makes concurrency easy to write, but incredibly complex to operate. Read on for why the Tokio/Rayon boundary is failing in production, and how explicit state machines fix it. - [Why Queues Don’t Fix Overload (And What To Do Instead)](https://pmbanugo.me/blog/why-queues-dont-fix-overload-and-what-to-do-instead): Why adding Kafka or bigger queues won't save your server from traffic spikes. Learn the physics of backpressure, load shedding, and the latency death spiral. - [Practical Introduction to Async Generators in JavaScript](https://pmbanugo.me/blog/async-generators-and-iterators-in-javascript): A comprehensive and practical guide to synchronous and asynchronous generators and iterators in JavaScript & TypeScript - [Building a Formal Verification Tool from Scratch: Part 3 (Rethinking the Foundation)](https://pmbanugo.me/blog/tla-formal-method-tool-from-scratch-part-3): We take a step back to rethink the foundation. Replacing dynamic arrays with fixed-size registers, upgrading our hash function, and learning why simple data structures make things easy. - [Building a Formal Verification Tool from Scratch: Part 2 (The Virtual Machine)](https://pmbanugo.me/blog/tla-formal-method-tool-from-scratch-part-2): Hardcoded solvers don't scale. We need an engine that operates purely on logic to verify any system. We build a custom Virtual Machine in Odin, tackling instruction sets (bytecode), tagged unions, and the subtle traps of memory identity. - [Building a Formal Verification Tool from Scratch: Part 1 (Die Hard Edition)](https://pmbanugo.me/blog/tla-formal-method-tool-from-scratch-part-1): What if you could explore every possible timeline of your distributed system to find the bugs you haven't imagined yet? I'm building a TLA model checker from scratch to understand how formal verification works - [2025 Wrapup: Articles, Talks, Papers, and Software I Loved](https://pmbanugo.me/blog/2025-wrapup-articles-talks-papers-software-i-loved): A look back at some of the most impactful articles, talks, research papers, and software tools that shaped my year in 2025. - [Building a Lock-Free Single Producer, Single Consumer Queue (FIFO)](https://pmbanugo.me/blog/building-lock-free-spsc-queue): Build a complete lock-free Single Producer Single Consumer (SPSC) queue from scratch. Step-by-step implementation in Zig with detailed explanations of every atomic operation and memory ordering choice. - [Faster Websites with Client-side Prerendering & Speculation Rules API](https://pmbanugo.me/blog/speculation-rules-api): Learn how to use client-side prerendering and the Speculation Rules API to improve the performance of your site. - [When Threads Share Memory: Understanding Race Conditions and Atomics](https://pmbanugo.me/blog/when-threads-share-memory-race-conditions-atomics): Learn why multi-threaded programs break in subtle ways and how atomic operations fix them. A practical guide to race conditions, memory ordering, and Acquire/Release semantics. - [On Software Complexity: Why Can't We Make Simple Software?](https://pmbanugo.me/blog/why-cant-we-make-simple-software-01): Exploring the challenges of software complexity and advocating for simplicity in design. - [Write Your Own FIFO Queue: An Essential Data Structure for Modern Systems](https://pmbanugo.me/blog/fifo-queue-introduction): Learn how to implement a queue data structure from scratch using circular buffers. Understand FIFO principles, constant-time operations, and why this pattern powers everything from audio processing to network packet handling. Code examples in Zig. - [The Road Ahead: Why I'm Going All-In on Zig](https://pmbanugo.me/blog/zig-dsa-12-months-lock-in): This is a story about leaving the comfort of web development to tackle hard problems, find a new philosophy, and build software that lasts. - [Angular Signals: Building a Reactive Countdown Timer](https://pmbanugo.me/blog/introduction-to-angular-signals): A comprehensive tutorial for experienced Angular developers to learn Angular Signals and their practical applications. - [Node.js Performance: Processing 14GB Files 78% Faster with Buffer Optimization](https://pmbanugo.me/blog/nodejs-1brc): Learn how to optimize Node.js for processing large files: 14GB of data processed 78% faster using buffer streaming, byte-level parsing, and hash-based lookups. Complete guide with benchmarks, profiling insights, and code examples for handling 1 billion rows efficiently. - [Working with Strings in Zig: A Comprehensive Guide](https://pmbanugo.me/blog/zig-working-with-strings): Learn how to work with strings in Zig: slicing, formatting, Unicode handling, memory allocation, and C interoperability. A practical reference for Zig developers. - [Building React Apps with Bun: A Modern Development Experience](https://pmbanugo.me/blog/react-app-with-bun): Learn how to build React applications using Bun's fast runtime and built-in tooling. Create a blog app with TailwindCSS and discover the developer experience. - [MCP/Tools Are Not REST API: Here's a Better Design](https://pmbanugo.me/blog/mcp-or-tools-are-not-rest-api): MCP/tools are sometimes designed like REST APIs. I'll show you how to design better tools for AI agents and models. - [Looking for the Best React Data Grid (Table)? It's Probably on This List](https://pmbanugo.me/blog/top-best-react-data-grid-table-library): A review of the top 5 React data grid libraries with code examples and performance benchmarks. - [Build Your First AI Agent in 10 Minutes (or Less)](https://pmbanugo.me/blog/build-your-first-ai-agent-in-typescript): Learn how to build your first AI agent in TypeScript. - [Build a Blog with Angular In Under 30 Minutes, Using Analog](https://pmbanugo.me/blog/building-a-blog-using-angular-and-analogjs): Learn how to build a blog using Angular and Analog. This tutorial will guide you through the process of setting up a Markdown-powered blog using Analog. - [What Vibe Coding Actually Looks Like for a Senior Engineer](https://pmbanugo.me/blog/what-vibe-coding-actually-looks-like): Vibe coding reality: My 20-hour journey building with AI peer programming. What senior engineers actually experience beyond the 1-hour hype. - [Building Full-Stack Angular Applications with Analog](https://pmbanugo.me/blog/fullstack-angular-app-with-analogjs): See how to build an Angular application with Analog, enjoying a modern, smooth developer experience. - [In the Age of AI, is Code Literacy Your Superpower?](https://pmbanugo.me/blog/ai-code-literacy): Explore the importance of code literacy in the age of AI and how it can empower individuals to harness Gen AI effectively. - [Peer Programming with LLMs, For Senior+ Engineers](https://pmbanugo.me/blog/peer-programming-with-llms): This article contains a collection of resources for senior (or staff+) engineers exploring the use of LLM for collaborative programming. - [Efficient Cookie Management with the Cookie Store API](https://pmbanugo.me/blog/cookie-store-api): Learn how to use the Cookie Store API for efficient cookie management in web applications. - [How To Use Libuv In Zig](https://pmbanugo.me/blog/intro-using-libuv-in-zig): This guide will show you how to use libuv from your Zig project. - [Top React UI Libraries to Use in 2025](https://pmbanugo.me/blog/top-x-react-ui-library): Explore the best React UI libraries available. Enhance your development experience and ship quickly to production! - [Mastering Advanced JavaScript Set Operations](https://pmbanugo.me/blog/advanced-javascript-set-operations): Explore advanced Set operations in JavaScript. Learn how to leverage these powerful methods for unique collections and data manipulation. - [Building Runtime-agnostic Apps/Packages with JavaScript](https://pmbanugo.me/blog/runtime-agnostic-packages-apps-javascript): A guide on how to build applications and packages that work across different JavaScript runtimes. - [How to Install Node.js on Windows: A Complete Guide](https://pmbanugo.me/blog/install-nodejs-windows-version-managers): Learn how to install Node.js on Windows using modern nodejs version managers and the official installer. A step-by-step guide for JavaScript developers. - [Node.js Features You Didn't Know About: Part 2](https://pmbanugo.me/blog/nodejs-features-you-didnt-know-about-part-2): Explore Node.js's experimental features: native TypeScript, SQLite support, and glob file search. Discover the latest advancements! - [How To Build CLI Using TypeScript and Bun](https://pmbanugo.me/blog/build-cli-typescript-bun): This tutorial will teach you how to create a CLI using JavaScript and TypeScript. We'll use Bun, a JavaScript runtime, to build the CLI. - [3 Node.js Features You Didn't Know About](https://pmbanugo.me/blog/3-nodejs-features-you-didnt-know-about): Discover new Node.js features: native .env loading, built-in file watching, and faster script execution without third-party tools - [How to Install Node.js on Ubuntu and Linux Distros](https://pmbanugo.me/blog/install-nodejs-ubuntu-version-managers): Learn how to install Node.js on Ubuntu and Linux systems using modern nodejs version managers. A step-by-step guide for JavaScript developers. - [How to Automate Kafka Topic Creation/Deletion Using GitHub Actions And JavaScript](https://pmbanugo.me/blog/automate-kafka-topic-creation-deletion): Automate Kafka topic management with JavaScript and GitHub Actions for scalable, event-driven DevOps workflows (aka GitOps) - [Announcing Buntastic: A Fast, High-Performance Static Site Server (OSS)](https://pmbanugo.me/blog/announcing-buntastic-oss): Introducing Buntastic, a high-performance static site server built with Bun and Tigris. Learn how it offers blazing-fast performance, global caching, and more. - [Docker vs Podman: A Comprehensive Comparison for Modern Containerization](https://pmbanugo.me/blog/docker-vs-podman-comparison): Compare Docker and Podman on features, performance, security, and use cases to choose the best container engine for your needs - [How to Install Docker on Windows: A Beginner's Guide](https://pmbanugo.me/blog/how-to-install-docker-on-windows): This article will show you how to install Docker on Windows 10 and above. - [Hyper-V vs WSL: How To Pick The Right Tool?](https://pmbanugo.me/blog/hyperv-wsl-on-windows): This article will compare Hyper-V and WSL on Windows, helping you decide which one to use for your projects. - [How To Prerender Pages in Browser For Faster Page Loads](https://pmbanugo.me/blog/how-to-prerender-pages-in-browser-for-faster-page-loads): Learn how to improve your website speed using speculation rules api - [How to Build Blazing Fast Websites with Any Framework](https://pmbanugo.me/blog/how-to-build-blazing-fast-websites-with-any-framework): Learn how to build fast websites using real user data, expert insights, and framework-independent techniques for improved performance and SEO - [Mapping Over Promises in JavaScript](https://pmbanugo.me/blog/mapping-over-promises-in-javascript): Learn how to effectively map over promises in JavaScript. Also how to handle concurrency for them - [Concurrency & Fault-tolerant In Distributed Systems](https://pmbanugo.me/blog/concurrency-fault-tolerant-in-distributed-systems): Discover how modern languages like Go, Rust, Elixir, and JavaScript approach concurrency and resilience, inspired by Erlang's robust actor model. - [Building HTTP/JSON API In Gleam: Introduction](https://pmbanugo.me/blog/building-http-json-api-in-gleam-introduction): Exploring Gleam and its ecosystem by building a basic REST API - [Array Grouping in JavaScript](https://pmbanugo.me/blog/array-grouping-in-javascript): The ability to combine data into groups allows developers to compute higher order datasets, like grouping employees by department. Let me show you how. - [Top 5 VS Code Extensions for React Developers](https://pmbanugo.me/blog/top-5-vs-code-extensions-for-react-developers): Learn about the top 5 VS Code extensions for React developers. Improve your workflow with these extensions. - [Using GitHub and NextAuth.js for Single Sign-on in Next.js](https://pmbanugo.me/blog/using-github-and-nextauthjs-for-single-sign-on-in-nextjs): See how to implement single sign-on with GitHub and OAuth in Next.js for straightforward and secure authentication management. - [How to Implement SSO Authentication in Remix using GitHub and Remix Auth - In Under 10 minutes](https://pmbanugo.me/blog/how-to-implement-sso-authentication-in-remix-using-github-and-remix-auth-in-under-10-minutes): Are you struggling with implementing single SSO authentication in Remix? No worries, I’ll guide you through that using GitHub as the IdP - [How To Collect Temporal.io Logs Using Axiom And Pino](https://pmbanugo.me/blog/how-to-collect-temporalio-logs-using-axiom-and-pino): Learn how to use pino and axiom for logging in a TypeScript Worker for Temporal.io - [Implement Single Sign-On In React (Remix) In Under 10 Minutes](https://pmbanugo.me/blog/implement-sso-in-react-remix-in-10-mins): SSO enables users to securely authenticate with multiple app using just one set of credential. In this tutorial, you'll learn how to implement SSO in React - [How To Merge Two Array of String Into A Key/Value Map (Object) In JavaScript](https://pmbanugo.me/blog/how-to-merge-two-array-of-string-into-a-keyvalue-map-object-in-javascript): Learn how to merge two arrays into a key/value data structure in JavaScript. - [How to Add SSO to a Next.js App Using Clerk](https://pmbanugo.me/blog/how-to-add-sso-to-a-nextjs-app-using-clerk): Learn how to add SSO to a Next.js app using Clerk. - [How To Measure Your Server's Round-trip Time In Remix (React)](https://pmbanugo.me/blog/how-to-measure-your-servers-round-trip-time-in-remix-react): Learn how to measure your server's round-trip time in React and Node.js. - [How to use React Streaming In Remix](https://pmbanugo.me/blog/how-to-use-react-streaming-in-remix): Using React streaming in Remix gives you faster page loads and a better user experience. Learn how to harness that in this post. - [Getting Started with Cloud Native Buildpacks](https://pmbanugo.me/blog/getting-started-with-cloud-native-buildpacks): Learn how to use Cloud Native Buildpacks to build and publish Docker images with ease. - [Getting Started with TypeScript in React](https://pmbanugo.me/blog/using-typescript-in-react-part-1): Learn how to use TypeScript in your React applications. - [Working with MongoDB in .NET (Part 3): Skip, Sort, Limit, & Projections](https://pmbanugo.me/blog/working-with-mongodb-dotnet-pt3): Learn how to use the skip, sort, limit, and projection clauses with the Find method. - [Working with MongoDB in .NET (Part 2): Retrieving Documents with Filter Clause](https://pmbanugo.me/blog/working-with-mongodb-dotnet-pt2): Learn how to retrieve documents from a MongoDB collection using the Find, FindSync, and FindAsync functions. - [Working with MongoDB in .NET (Part 1): Driver Basics & Inserting Documents](https://pmbanugo.me/blog/working-with-mongodb-dotnet-pt1): Learn how to work with MongoDB in your .Net applications using the CRUD functions available from the .Net driver. - [The Main Challenges a React Form Library Should Solve](https://pmbanugo.me/blog/the-main-challenges-a-react-form-library-should-solve): Learn about the main challenges a React form library should solve. - [How To Build a CLI With Node.js and React](https://pmbanugo.me/blog/how-to-build-a-cli-with-nodejs-and-react): In this tutorial, you will learn how to build command-line applications using React and Node.js. - [Running Cloudflare Workers on Docker and Kubernetes](https://pmbanugo.me/blog/running-cloudflare-workers-on-docker-kubernetes): Learn how to run Cloudflare Workers on Docker and Kubernetes. - [How To Build A Serverless, Internal Developer Platform](https://pmbanugo.me/blog/how-to-build-a-serverless-internal-developer-platform): Learn how to build a serverless internal developer platform using Kubernetes, Knative, Tekton, GitHub, Cloud Native Buildpacks and Next.js. - [FaaS on Kubernetes: From AWS Lambda & API Gateway To Knative & Kong API Gateway](https://pmbanugo.me/blog/faas-on-kubernetes-from-aws-lambda-api-gateway-to-knative-kong-api-gateway): Learn how to run serverless functions on Kubernetes using Knative and Kong API Gateway - [Building a CLI with React](https://pmbanugo.me/blog/building-a-cli-with-react): Learn how to build a CLI in JavaScript, using React. We're going to build a CLI that talks to Kubernetes. - [Running Serverless Applications on Kubernetes with Knative](https://pmbanugo.me/blog/running-serverless-applications-on-kubernetes-with-knative): Learn how to run serverless functions using Knative and Kubernetes. - [Introduction to GitHub Actions](https://pmbanugo.me/blog/introduction-to-github-actions): GitHub Actions is a powerful tool that allows you to automate your development workflow. In this post, I'll show you how to get started with GitHub Actions. - [Using the Web Share API in React](https://pmbanugo.me/blog/using-the-web-share-api-in-react): Learn how to use the Web Share API in a React application to native share resources to various destination. - [Looking for the Best React Form Library? It’s Probably on This List](https://pmbanugo.me/blog/looking-for-the-best-react-form-library-its-probably-on-this-list): In this post, I show the best React form libraries and why they're the best. - [Introduction to WebAssembly for .NET Developers: Building with Uno Platform, XAML, and C#](https://pmbanugo.me/blog/introduction-to-webassembly-for-net-developers-building-with-uno-platform-xaml-and-c): Learn how to build a web application utilising WebAssembly with .NET, XAML, and C#. - [WebAssembly tools, frameworks, and libraries for .NET Developers](https://pmbanugo.me/blog/webassembly-tools-frameworks-and-libraries-for-net-developers): WebAssembly lets you run code from multiple languages on the web at near-native speed, load modules via JavaScript APIs, and share functionality between them. - [GraphQL: Schema, Resolvers, Type System, Schema Language, and Query Language](https://pmbanugo.me/blog/graphql-schema-resolvers-type-system-schema-language-and-query-language): Learn about GraphQL schema, resolvers, type system, schema language, and query language. - [From Vanilla JS to Vue.js: A guide to Vue essentials](https://pmbanugo.me/blog/from-vanilla-js-to-vuejs-a-guide-to-vue-essentials): Learn the basics of Vue.js, a popular JavaScript framework for building web applications. - [How and why I built a real-time state synchronisation service](https://pmbanugo.me/blog/how-and-why-i-built-a-real-time-state-synchronisation-service): I built Hamoni Sync. A realtime service that allows you to store and synchronise data/application state. - [The What And Why Of Redux](https://pmbanugo.me/blog/the-what-and-why-of-redux): Learn what Redux is and why you should use it to manage state in your React app.