Sign in

Peter Mbanugo

@pmbanugo.me
260 followers 191 following 255 posts

Software engineer/consultant, trainer, and author @pluralsight. Interested in Web performance, CI/CD, scalable/fault-tolerant systems www.youtube.com/@pmbanugo

PostsRepliesMedia
Peter Mbanugo @pmbanugo.me · 21/09/2026
Just published: "Writing Clean, Data-oriented APIs". Check it out and subscribe to get everything I'm making. software.pmbanugo.me/posts/writin...
title for the blog post — writing clean, data-oriented APIs in Odin
000
Peter Mbanugo @pmbanugo.me · 12/08/2026
pmbanugo.me/blog/crash-c...
pmbanugo.me
A Crash Course on Concurrency: Build a Tiny Scheduler from Scratch
Build 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 · 19/06/2026
I guess I’m up next 🙋🏽‍♂️ Check me out Santosh
010
Peter Mbanugo @pmbanugo.me · 14/06/2026
250 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
github star trend for Tina framework
000
Peter Mbanugo @pmbanugo.me · 14/06/2026
The 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/2026
pmbanugo.me/blog/buildin...
pmbanugo.me
Building an HTTP Server on a Thread-per-Core Framework, without Async/Await
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
010
Peter Mbanugo @pmbanugo.me · 14/05/2026
Tina, Odin's concurrency framework with + a HTTP Server (Tina HTTP) just hit 140 stars on GitHub. Do with that what you may 😉
tina github stars trajectory
010
Reposted by Peter Mbanugo
Andy Gayton @ndyg.ca · 11/05/2026
@pmbanugo.me 's Tina, thread-per-core concurrency framework for Odin looks rowdy github.com/pmbanugo/tina
github.com
GitHub - 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/2026
I 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.
shows the output of running 144 odin test, all under 2 milliseconds.
030
Peter Mbanugo @pmbanugo.me · 02/05/2026
pmbanugo.me/blog/why-asy...
pmbanugo.me
The Tokio/Rayon Trap and Why Async/Await Fails 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.
000
Reposted by Peter Mbanugo
Peter Mbanugo @pmbanugo.me · 23/04/2026
After 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.me
The Tokio/Rayon Trap and Why Async/Await Fails 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.
032
Peter Mbanugo @pmbanugo.me · 23/04/2026
After 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.me
The Tokio/Rayon Trap and Why Async/Await Fails 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.
032
Peter Mbanugo @pmbanugo.me · 15/04/2026
For those curious, the link is at github.com/pmbanugo/tina
github.com
GitHub - 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/2026
2 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.
GitHub star history for https://github.com/pmbanugo/tina
100
Peter Mbanugo @pmbanugo.me · 14/04/2026
If 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/tina
github.com
GitHub - 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/2026
Instead 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.
demostrate the core unit of execution in Tina
100
Peter Mbanugo @pmbanugo.me · 14/04/2026
The 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.
shows the three foundations of Tina
100
Peter Mbanugo @pmbanugo.me · 14/04/2026
I 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.
shows the major things the framework rejected, and how it works around them.
100
Peter Mbanugo @pmbanugo.me · 14/04/2026
Software 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.
comparing Tina to Erlang/BEAM, Seastar, Tokio
100
Peter Mbanugo @pmbanugo.me · 14/04/2026
What 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. 🧵👇
shows the pillars of the Tina framework, and the compromise it rejects
120
Peter Mbanugo @pmbanugo.me · 12/04/2026
I like this reflection. Quite an interesting post.
000
Peter Mbanugo @pmbanugo.me · 12/04/2026
Why? Does it hold if you’re pro vs anti coding agent?
000
Peter Mbanugo @pmbanugo.me · 12/04/2026
Looks beautiful
000
Peter Mbanugo @pmbanugo.me · 11/04/2026
Why Queues Don’t Fix Overload My Saturday musing, published as a blog post pmbanugo.me/blog/why-que... Do you agree?
pmbanugo.me
Why 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/2026
AI 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 · 12/03/2026
💜🫂
010
Peter Mbanugo @pmbanugo.me · 10/03/2026
My 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/2026
In programming reliable software systems, first you make them correct and fault tolerant, then you make them fast.
110
Peter Mbanugo @pmbanugo.me · 01/02/2026
Elimination 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/2026
Most 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.me
Building a Formal Verification Tool from Scratch
A 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/2026
I'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/series
pmbanugo.me
Series | Peter Mbanugo - Consultant, Trainers, and Programmer
Curated multi-part article series on DevOps, JavaScript, and software development
010
Peter Mbanugo @pmbanugo.me · 27/01/2026
I've got some blog post series if you're looking to learn about single-producer, single-consumer queue MOre info at pmbanugo.me/series
pmbanugo.me
Series | Peter Mbanugo - Consultant, Trainers, and Programmer
Curated multi-part article series on DevOps, JavaScript, and software development
010
Peter Mbanugo @pmbanugo.me · 23/01/2026
Thank you
010
Peter Mbanugo @pmbanugo.me · 23/01/2026
Thanks
010
Peter Mbanugo @pmbanugo.me · 23/01/2026
Congrats. I hope to be a GDE like you some day
000
Peter Mbanugo @pmbanugo.me · 23/01/2026
Besides 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 Mbanugo
Barry Pollard @tunetheweb.com · 23/01/2026
I 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.com
Speculations about Web Performance - Barry Pollard - performance.now() 2025
YouTube video by Web Conferences Amsterdam
031
Peter Mbanugo @pmbanugo.me · 19/01/2026
Adapting 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/2026
It 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#ComputerScience
github.com
fabulous_dsa.odin/binary_fuse_filters at main · pmbanugo/fabulous_dsa.odin
AN 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/2026
Turning 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/2026
I 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.me
Building 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/2026
pmbanugo.me/blog/2025-wr...
pmbanugo.me
2025 Wrapup: Articles, Talks, Papers, and 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.
000
Peter Mbanugo @pmbanugo.me · 05/01/2026
How much tokens did it cost across all those models?
100
Peter Mbanugo @pmbanugo.me · 27/12/2025
media.tenor.com
a 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
Peter Mbanugo @pmbanugo.me · 21/12/2025
Christmas sale discount 50% Limited seats available
011
Reposted by Peter Mbanugo
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.me
protocol-zero.pmbanugo.me
Stop 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.me
protocol-zero.pmbanugo.me
Stop 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 · 29/11/2025
Looking great 😎
040
Peter Mbanugo @pmbanugo.me · 24/11/2025
depicting a guy with a smirk and says "don't reinvent the wheel"
040