Peter Mbanugo @pmbanugo.me · 21/09/2026Just published: "Writing Clean, Data-oriented APIs". Check it out and subscribe to get everything I'm making. software.pmbanugo.me/posts/writin... 000
Peter Mbanugo @pmbanugo.me · 12/08/2026pmbanugo.me/blog/crash-c...pmbanugo.meA Crash Course on Concurrency: Build a Tiny Scheduler from ScratchBuild a tiny concurrency runtime from scratch and discover how schedulers, task switching, yielding, coroutine state, and event loops work under the hood 000
Peter Mbanugo @pmbanugo.me · 14/06/2026250 stars (and counting) for TINA — A concurrency framework for Odin, with extensions for building web/infra software. Expect a few interesting changes in the next release. I'm also writing a few articles on Odin. I hope I can get them all done by the end of June. github.com/pmbanugo/tina 000
Peter Mbanugo @pmbanugo.me · 14/06/2026The link to the RFC editor in the PDF is broken. This takes me to a 404 www.rfc-editor.org/info/rfc10008 I wanted to check if it’s already approved.rfc-editor.org 010
Peter Mbanugo @pmbanugo.me · 16/05/2026pmbanugo.me/blog/buildin...pmbanugo.meBuilding an HTTP Server on a Thread-per-Core Framework, without Async/AwaitHow to build a production-grade HTTP server without async/await or coroutines. Discover how Tina HTTP uses thread-per-core state machines in Odin 010
Peter Mbanugo @pmbanugo.me · 14/05/2026Tina, Odin's concurrency framework with + a HTTP Server (Tina HTTP) just hit 140 stars on GitHub. Do with that what you may 😉 010
Reposted by Peter MbanugoAndy Gayton @ndyg.ca · 11/05/2026@pmbanugo.me 's Tina, thread-per-core concurrency framework for Odin looks rowdy github.com/pmbanugo/tinagithub.comGitHub - pmbanugo/tina: A shared-nothing, thread-per-core concurrency framework. Designed for massive concurrency because There Is No Alternative (TINA)A shared-nothing, thread-per-core concurrency framework. Designed for massive concurrency because There Is No Alternative (TINA) - pmbanugo/tina 021
Peter Mbanugo @pmbanugo.me · 04/05/2026I don't think I ever got this speed when running just even way less test in JavaScript land. Takes between 1.x to 3.5 ms. Thank you Odin. It just needs a good web dev story to get Go and JS folks to consider it. 030
Peter Mbanugo @pmbanugo.me · 02/05/2026pmbanugo.me/blog/why-asy...pmbanugo.meThe Tokio/Rayon Trap and Why Async/Await Fails ConcurrencyAsync/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. 000
Reposted by Peter MbanugoPeter Mbanugo @pmbanugo.me · 23/04/2026After reading Posthog's blog about their recent issue and fix regarding their use of Tokio + Rayon, I decided to write about it. Unrelated to Rust, but a common problem I see with async/await as a primitive for concurrency. What do you think? pmbanugo.me/blog/why-asy...pmbanugo.meThe Tokio/Rayon Trap and Why Async/Await Fails ConcurrencyAsync/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. 032
Peter Mbanugo @pmbanugo.me · 23/04/2026After reading Posthog's blog about their recent issue and fix regarding their use of Tokio + Rayon, I decided to write about it. Unrelated to Rust, but a common problem I see with async/await as a primitive for concurrency. What do you think? pmbanugo.me/blog/why-asy...pmbanugo.meThe Tokio/Rayon Trap and Why Async/Await Fails ConcurrencyAsync/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. 032
Peter Mbanugo @pmbanugo.me · 15/04/2026For those curious, the link is at github.com/pmbanugo/tinagithub.comGitHub - pmbanugo/tina: A shared-nothing, thread-per-core concurrency framework. Designed for massive concurrency because There Is No Alternative (TINA)A shared-nothing, thread-per-core concurrency framework. Designed for massive concurrency because There Is No Alternative (TINA) - pmbanugo/tina 000
Peter Mbanugo @pmbanugo.me · 15/04/20262 weeks after public release, Tina is gaining some eyeballs. if you haven't already, check it out — don't say I didn't tell you :) I'm currently working on adding a HTTP lib extension, and in the process decided I had to change some things at the core for better socket handling. 100
Peter Mbanugo @pmbanugo.me · 14/04/2026If you are building servers or infrastructure systems that simply cannot fail, I'd love your architectural critique. Check out the code, the docs (work-in-progress), and run the examples here: github.com/pmbanugo/tinagithub.comGitHub - pmbanugo/tina: A shared-nothing, thread-per-core concurrency framework. Designed for massive concurrency because There Is No Alternative (TINA)A shared-nothing, thread-per-core concurrency framework. Designed for massive concurrency because There Is No Alternative (TINA) - pmbanugo/tina 000
Peter Mbanugo @pmbanugo.me · 14/04/2026Instead of coloured functions or promise hell, you write Isolates (They don't block nor await). An Isolate receives a message, updates its state, and returns an Effect (Yield, Receive/Reply, IO, Crash) to the user-space scheduler. 100
Peter Mbanugo @pmbanugo.me · 14/04/2026The architecture maps directly to the hardware constraint: 1. The Shard (Cell): 1 OS thread pinned to 1 CPU core. 2. The Isolates: lightweight processes representing a unit of concurrent execution. 3. The Grand Arena: A single memory block, partitioned at boot. 100
Peter Mbanugo @pmbanugo.me · 14/04/2026I achieved this by strictly limiting what the programmer can do. Architecture constraint solves problems better than language features. So I chose these constraints: 🚫 No Garbage Collection. 🚫 No async/await. 🚫 No Mutexes. 🚫 No hidden allocations after boot. 100
Peter Mbanugo @pmbanugo.me · 14/04/2026Software engineers usually have to compromise between speed and safety. You get the BEAM’s "let it crash" reliability, but pay with VM/GC overhead. Or you get C/Rust speed, but fight mutexes and async/await fragmentation. Tina was built to reject this compromise. 100
Peter Mbanugo @pmbanugo.me · 14/04/2026What happens when you combine Erlang-style concurrency + ScyllaDB's Seastar speed + deterministic simulation? Meet Tina: A strictly bounded, fault-tolerant, thread-per-core concurrency framework. 🧵👇 120
Peter Mbanugo @pmbanugo.me · 11/04/2026Why Queues Don’t Fix Overload My Saturday musing, published as a blog post pmbanugo.me/blog/why-que... Do you agree?pmbanugo.meWhy Queues Don’t 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. 010
Peter Mbanugo @pmbanugo.me · 17/03/2026AI coding accelerates software pollution and further advances bad education on what it takes to make software Just as ppl expected the increase in software performance with 5 - 20x hardware performance decades ago. They’re doing a similar thing with AI - better hardware & models 000
Peter Mbanugo @pmbanugo.me · 10/03/2026My current experiment is around stealing some ideas from the BEAM and combining with some from Seastar (C++ framework) Hopefully it comes out good enough for me to share it publicly. Imagine-> BEAM (fault-tolerance) + Seastar (Shards) = 💭 000
Peter Mbanugo @pmbanugo.me · 10/03/2026In programming reliable software systems, first you make them correct and fault tolerant, then you make them fast. 110
Peter Mbanugo @pmbanugo.me · 01/02/2026Elimination is a core part of software optimisation. But it also carries over into other areas of life. If you can eliminate, thereby reducing the amount of task or functions you would like to do, you have enough memory space to juggle the vital few 010
Peter Mbanugo @pmbanugo.me · 29/01/2026Most bugs exist because we only test scenarios we thought of. What about the ones we didn’t imagine? I’m building a formal verification tool from scratch and documenting everything — parser, VM, state-space exploration. You can follow along in my journey: pmbanugo.me/series/forma...pmbanugo.meBuilding a Formal Verification Tool from ScratchA deep dive into building a TLA-based formal verification tool from scratch. Learn systems programming, virtual machines, parsers, compilers, and formal method by building a real tool. 020
Peter Mbanugo @pmbanugo.me · 27/01/2026I've got some blog post series if you want to follow my journey into building a compiler and virtual machine, along the line learning about formal method and TLA MOre info at pmbanugo.me/seriespmbanugo.meSeries | Peter Mbanugo - Consultant, Trainers, and ProgrammerCurated multi-part article series on DevOps, JavaScript, and software development 010
Peter Mbanugo @pmbanugo.me · 27/01/2026I've got some blog post series if you're looking to learn about single-producer, single-consumer queue MOre info at pmbanugo.me/seriespmbanugo.meSeries | Peter Mbanugo - Consultant, Trainers, and ProgrammerCurated multi-part article series on DevOps, JavaScript, and software development 010
Peter Mbanugo @pmbanugo.me · 23/01/2026Besides stacks/queues, Are there data structures or algorithms in it that are fundamental to making a compiler and VM? I’m curious about compilers and VM and currently figuring out how they work and how to make one. 100
Reposted by Peter MbanugoBarry Pollard @tunetheweb.com · 23/01/2026I also talked about prerender until script (and other improvements to the Speculation Rules API!) a few months ago at @perfnow.nl , so if you prefer your learning though video (and can put up with my um's and err's) then you can check that out here: www.youtube.com/watch?v=DqE9...youtube.comSpeculations about Web Performance - Barry Pollard - performance.now() 2025YouTube video by Web Conferences Amsterdam 031
Peter Mbanugo @pmbanugo.me · 19/01/2026Adapting old programs to fit new machines usually means adapting new machines to behave like old ones. —Alan Perils 000
Peter Mbanugo @pmbanugo.me · 19/01/2026It was a great exercise in translating theory into a Data-Oriented implementation. Check out the repo here: github.com/pmbanugo/fab... hashtag#DataStructures hashtag#Learning hashtag#Coding hashtag#Odin hashtag#ComputerSciencegithub.comfabulous_dsa.odin/binary_fuse_filters at main · pmbanugo/fabulous_dsa.odinAN adventure and experiment on Data Structure and Algorithms, implemented in Odin - pmbanugo/fabulous_dsa.odin 000
Peter Mbanugo @pmbanugo.me · 19/01/2026 implemented the algorithm in Odin as part of my deep dive into Data Structures and Algorithms. 𝗧𝗵𝗲 𝗧𝗟;𝗗𝗥: Binary Fuse Filters use a peeling algorithm to compress data down to theoretical limits. The implementation achieves: ✅ ~9 bits per entry ✅ 0.4% False Positive Rate ✅ Branchless query logic 100
Peter Mbanugo @pmbanugo.me · 19/01/2026Turning academic papers into working code I recently dove into the paper "𝘽𝙞𝙣𝙖𝙧𝙮 𝙁𝙪𝙨𝙚 𝙁𝙞𝙡𝙩𝙚𝙧𝙨: 𝙁𝙖𝙨𝙩 𝙖𝙣𝙙 𝙎𝙢𝙖𝙡𝙡𝙚𝙧 𝙏𝙝𝙖𝙣 𝙓𝙤𝙧 𝙁𝙞𝙡𝙩𝙚𝙧𝙨" by Graf and Daniel Lemire. I wanted to understand how we can store millions of keys efficiently in memory without the overhead of standard hash tables or Bloom filters.🧵 100
Peter Mbanugo @pmbanugo.me · 14/01/2026I used the Die Hard water-jug puzzle to understand model checking, by building a naive solver. I only defined the rules; the strategy emerged from exploring every timeline/state. That’s why formal verification catches bugs tests miss. Part 1: pmbanugo.me/blog/tla-for...pmbanugo.meBuilding a Formal Verification Tool from Scratch: Part 1 (Die Hard Edition)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 verificat... 000
Peter Mbanugo @pmbanugo.me · 12/01/2026pmbanugo.me/blog/2025-wr...pmbanugo.me2025 Wrapup: Articles, Talks, Papers, and Software I LovedA look back at some of the most impactful articles, talks, research papers, and software tools that shaped my year in 2025. 000
Peter Mbanugo @pmbanugo.me · 27/12/2025media.tenor.coma bald man with a beard is making a funny face while wearing ear buds .ALT: a bald man with a beard is making a funny face while wearing ear buds . 010
Reposted by Peter MbanugoPeter Mbanugo @pmbanugo.me · 01/12/2025𝗜𝗳 𝘆𝗼𝘂 𝘄𝗮𝗻𝘁 𝘁𝗼 𝗯𝗲 𝗮 𝟭𝟬𝘅 𝗽𝗿𝗼𝗴𝗿𝗮𝗺𝗺𝗲𝗿, 𝗿𝗲𝗶𝗻𝘃𝗲𝗻𝘁 𝘁𝗵𝗲 𝘄𝗵𝗲𝗲𝗹. 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲. 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗹𝗼𝗮𝗱 𝗯𝗮𝗹𝗮𝗻𝗰𝗲𝗿. 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗣𝘂𝗯/𝗦𝘂𝗯 𝗲𝗻𝗴𝗶𝗻𝗲. Join this workshop where you will build a nats.io pub/sub server from scratch. 𝗙𝗼𝘂𝗻𝗱𝗶𝗻𝗴 𝗠𝗲𝗺𝗯𝗲𝗿 𝗽𝗿𝗶𝗰𝗲 (𝟲𝟬% 𝗼𝗳𝗳) 𝗲𝗻𝗱𝘀 𝗼𝗻 𝗗𝗲𝗰𝗲𝗺𝗯𝗲𝗿 𝟭 𝟭𝟭:𝟱𝟵 𝗣𝗠 𝗛𝗦𝗧. Go to protocol-zero.pmbanugo.meprotocol-zero.pmbanugo.meStop Trusting Magic Boxes. Build Your Own Pub/Sub.Don't just use Redis/NATS. Build it. A 2-day workshop & course on System Programming. Pre-Order now for 60% OFF. 021
Peter Mbanugo @pmbanugo.me · 01/12/2025𝗜𝗳 𝘆𝗼𝘂 𝘄𝗮𝗻𝘁 𝘁𝗼 𝗯𝗲 𝗮 𝟭𝟬𝘅 𝗽𝗿𝗼𝗴𝗿𝗮𝗺𝗺𝗲𝗿, 𝗿𝗲𝗶𝗻𝘃𝗲𝗻𝘁 𝘁𝗵𝗲 𝘄𝗵𝗲𝗲𝗹. 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲. 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗹𝗼𝗮𝗱 𝗯𝗮𝗹𝗮𝗻𝗰𝗲𝗿. 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗣𝘂𝗯/𝗦𝘂𝗯 𝗲𝗻𝗴𝗶𝗻𝗲. Join this workshop where you will build a nats.io pub/sub server from scratch. 𝗙𝗼𝘂𝗻𝗱𝗶𝗻𝗴 𝗠𝗲𝗺𝗯𝗲𝗿 𝗽𝗿𝗶𝗰𝗲 (𝟲𝟬% 𝗼𝗳𝗳) 𝗲𝗻𝗱𝘀 𝗼𝗻 𝗗𝗲𝗰𝗲𝗺𝗯𝗲𝗿 𝟭 𝟭𝟭:𝟱𝟵 𝗣𝗠 𝗛𝗦𝗧. Go to protocol-zero.pmbanugo.meprotocol-zero.pmbanugo.meStop Trusting Magic Boxes. Build Your Own Pub/Sub.Don't just use Redis/NATS. Build it. A 2-day workshop & course on System Programming. Pre-Order now for 60% OFF. 021