186 karma · joined August 1, 2014
Current interests: web server & CDN, Concurrency & High-performance, ZeroMQ, Zig, Node.js,
Unrelated to Rust, but a common problem I see with async/await as a primitive for concurrency.
Then after a few pivots I landed on a good design for a framework which embodies what I'd like to see about programming concurrent systems without the gotchas of today's primisitives (e.g. callbacks/promise hell).
So I recently open sourced it (https://github.com/pmbanugo/tina). It's a high-throughput concurrency framework that bridges the Erlang-style concurrency with native performance (no VM, no GC).
One other area I'm interested in is formal method design using TLA (by Lamport). But I'm still scratching the surface on that one.
That's why AI-sloppy software would go viral and make loads of money while properly engineered ones die off.
When people need knowledge, they know where to find it. They don't need marketing for that.
It talks about what makes a software engineer and how to get better at it. You'd have thought Mathematics and Algos/Data-Structure aren't important.
Zig is only a means to an end. I recently shared Phil Eaton's post, and it helped me reach this decision after a long time having this nagging feeling.
So there's hope that with consistency and patience, one could build expertise in a totally different area
I built Demitter to solve a problem I kept thinking about recently: how to easily share events between Node.js processes without the complexity of setting up Redis, RabbitMQ, or other heavyweight message brokers? It uses ZeroMQ for messaging and MessagePack for serialization, ensuring high performance even at high event frequencies.
What it does:
- Takes the familiar `emitter.on()` and `emitter.emit()` API you may already know in Node.js - Makes it work seamlessly across multiple processes/machines - Zero configuration required: just `npm install demitter` and go
Don't take my word for it, see it in action:
I created a live auction demo where multiple bidders run in separate terminal windows, all bidding in real-time on the same auctions. Watch it in action: https://www.youtube.com/watch?v=LqQShQ9-dsk – it's pretty satisfying to see ~7 processes staying perfectly synchronized in real-time.
Where I you might use it:
- Worker processes needed coordination without complexity - You want to scale Socket.IO or WebSocket servers without heavy message brokers - any other need for pub/sub across Node.js processes.
I built this because I wanted a lightweight solution that didn't compromise on the familiar Node.js event API. Existing solutions felt too heavy for simple pub/sub, and I wanted to keep the Node.js event API developers already know.
I'd love to hear your thoughts on this approach. Is it something you would find useful? What other use cases do you think it could solve for you?
I'm in EU and it's very late here, so I'll catch up on comments tomorrow.
I mostly work with JS and last month picked up learning Zig and building things with it. Zig ecosystem is still early but fun to play around, plus the community folks are helpful with answering my noob questions
Could be a good idea for a non-profit like you said. I know someone who’s exploring something similar but for disabled folks who aren’t tech-savvy (for-profit)