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
Peter Mbanugo
@pmbanugo.me
Software engineer/consultant, trainer, and author @pluralsight. Interested in Web performance, CI/CD, scalable/fault-tolerant systems https://www.youtube.com/@pmbanugo
Tina, Odin's concurrency framework with + a HTTP Server (Tina HTTP) just hit 140 stars on GitHub. Do with that what you may 😉
@pmbanugo.me 's Tina, thread-per-core concurrency framework for Odin looks rowdy github.com/pmbanugo/tina
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
github.com
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.
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...
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.
pmbanugo.me
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...
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.
pmbanugo.me
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.
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. 🧵👇
Why Queues Don’t Fix Overload My Saturday musing, published as a blog post pmbanugo.me/blog/why-que... Do you agree?
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.
pmbanugo.me
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
In programming reliable software systems, first you make them correct and fault tolerant, then you make them fast.
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
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...
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.
pmbanugo.me
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
Series | Peter Mbanugo - Consultant, Trainers, and Programmer
Curated multi-part article series on DevOps, JavaScript, and software development
pmbanugo.me
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
Series | Peter Mbanugo - Consultant, Trainers, and Programmer
Curated multi-part article series on DevOps, JavaScript, and software development
pmbanugo.me
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...
Speculations about Web Performance - Barry Pollard - performance.now() 2025
YouTube video by Web Conferences Amsterdam
youtube.com
Adapting old programs to fit new machines usually means adapting new machines to behave like old ones. —Alan Perils
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.🧵
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...
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...
pmbanugo.me
Christmas sale discount 50% Limited seats available
𝗜𝗳 𝘆𝗼𝘂 𝘄𝗮𝗻𝘁 𝘁𝗼 𝗯𝗲 𝗮 𝟭𝟬𝘅 𝗽𝗿𝗼𝗴𝗿𝗮𝗺𝗺𝗲𝗿, 𝗿𝗲𝗶𝗻𝘃𝗲𝗻𝘁 𝘁𝗵𝗲 𝘄𝗵𝗲𝗲𝗹. 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲. 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗹𝗼𝗮𝗱 𝗯𝗮𝗹𝗮𝗻𝗰𝗲𝗿. 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗣𝘂𝗯/𝗦𝘂𝗯 𝗲𝗻𝗴𝗶𝗻𝗲. Join this workshop where you will build a nats.io pub/sub server from scratch. 𝗙𝗼𝘂𝗻𝗱𝗶𝗻𝗴 𝗠𝗲𝗺𝗯𝗲𝗿 𝗽𝗿𝗶𝗰𝗲 (𝟲𝟬% 𝗼𝗳𝗳) 𝗲𝗻𝗱𝘀 𝗼𝗻 𝗗𝗲𝗰𝗲𝗺𝗯𝗲𝗿 𝟭 𝟭𝟭:𝟱𝟵 𝗣𝗠 𝗛𝗦𝗧. Go to protocol-zero.pmbanugo.me
𝗜𝗳 𝘆𝗼𝘂 𝘄𝗮𝗻𝘁 𝘁𝗼 𝗯𝗲 𝗮 𝟭𝟬𝘅 𝗽𝗿𝗼𝗴𝗿𝗮𝗺𝗺𝗲𝗿, 𝗿𝗲𝗶𝗻𝘃𝗲𝗻𝘁 𝘁𝗵𝗲 𝘄𝗵𝗲𝗲𝗹. 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲. 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗹𝗼𝗮𝗱 𝗯𝗮𝗹𝗮𝗻𝗰𝗲𝗿. 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗣𝘂𝗯/𝗦𝘂𝗯 𝗲𝗻𝗴𝗶𝗻𝗲. Join this workshop where you will build a nats.io pub/sub server from scratch. 𝗙𝗼𝘂𝗻𝗱𝗶𝗻𝗴 𝗠𝗲𝗺𝗯𝗲𝗿 𝗽𝗿𝗶𝗰𝗲 (𝟲𝟬% 𝗼𝗳𝗳) 𝗲𝗻𝗱𝘀 𝗼𝗻 𝗗𝗲𝗰𝗲𝗺𝗯𝗲𝗿 𝟭 𝟭𝟭:𝟱𝟵 𝗣𝗠 𝗛𝗦𝗧. Go to 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.
protocol-zero.pmbanugo.me
𝗜𝗳 𝘆𝗼𝘂 𝘄𝗮𝗻𝘁 𝘁𝗼 𝗯𝗲 𝗮 𝟭𝟬𝘅 𝗽𝗿𝗼𝗴𝗿𝗮𝗺𝗺𝗲𝗿, 𝗿𝗲𝗶𝗻𝘃𝗲𝗻𝘁 𝘁𝗵𝗲 𝘄𝗵𝗲𝗲𝗹. 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲. 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗹𝗼𝗮𝗱 𝗯𝗮𝗹𝗮𝗻𝗰𝗲𝗿. 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗣𝘂𝗯/𝗦𝘂𝗯 𝗲𝗻𝗴𝗶𝗻𝗲. Join this workshop where you will build a nats.io pub/sub server from scratch. 𝗙𝗼𝘂𝗻𝗱𝗶𝗻𝗴 𝗠𝗲𝗺𝗯𝗲𝗿 𝗽𝗿𝗶𝗰𝗲 (𝟲𝟬% 𝗼𝗳𝗳) 𝗲𝗻𝗱𝘀 𝗼𝗻 𝗗𝗲𝗰𝗲𝗺𝗯𝗲𝗿 𝟭 𝟭𝟭:𝟱𝟵 𝗣𝗠 𝗛𝗦𝗧. Go to 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.
protocol-zero.pmbanugo.me
Stop building To-Do apps. 🛑 If you want to be a 10x programmer, reinvent the wheel. Build a Database, a load balancer, Pub/Sub engine. I’m launching a workshop where we build a NATS-compatible server from scratch. More info at protocol-zero.pmbanugo.me Founding Member pricing is live from 27 Nov.
Stop building To-Do apps. 🛑 If you want to be a 10x programmer, reinvent the wheel. Build a Database, a load balancer, Pub/Sub engine. I’m launching a workshop where we build a NATS-compatible server from scratch. More info at protocol-zero.pmbanugo.me Founding Member pricing is live from 27 Nov.
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.
protocol-zero.pmbanugo.me
I've been experimenting with ZeroMQ for a couple of months and recently stumbled on NATS. Played around with it and implemented some parts of the core NATS protocol in @deno.land I'm making available only a few slots with 60% off only during Cyberweek. More info: protocol-zero.pmbanugo.me
black friday offer incoming. still putting ginishing touches protocol-zero.pmbanugo.me I need to record the video to show off demo and talk about the package
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.
protocol-zero.pmbanugo.me
Programmers' Biggest Lies: Programming with Assertions youtu.be/U2Jr66nYRDA
Programmers' Biggest Lies: Programming with Assertions
YouTube video by Tech with Peter Mbanugo
youtu.be