~/atelier — zsh
arch // event-driven pipeline
ProducerRustEvent Buslock-freeSchedulertokioConsumer AasyncConsumer Basync

Zero-allocation hot path. 2.4× throughput over previous design.

"

Priya Nair, Staff Engineer

Priya Nair

Staff Engineer · Stripe

git log
scroll to advance
01 / 03 — Recent commit
Software Engineer

Marcus
Okafor

I build systems that run fast and fail gracefully. Rust, Go, distributed infrastructure — sometimes I write about it.

RustGoTypeScriptk8s
Open to senior / staff roles · San Francisco
Selected Work

Things I've shipped

ring_buffer.rs
// Single-producer, single-consumer ring buffer
// Capacity must be a power of two
pub struct RingBuf<T> {
    head: AtomicUsize,
    tail: AtomicUsize,
    buf:  Box<[MaybeUninit<T>]>,
}

impl<T> RingBuf<T> {
    pub fn push(&mut self, val: T) -> bool {
        let tail = self.tail.load(Relaxed);
        let next = (tail + 1) & (self.buf.len() - 1);
        if next == self.head.load(Acquire) { return false; }
        // safety: slot is ours until head advances
        unsafe { self.buf[tail].write(val); }
        self.tail.store(next, Release);
        true
    }
}
012025

Zero-Copy Ring Buffer

A lock-free, single-producer single-consumer queue in Rust — 12ns median latency.

Rustlock-freesystemsopen-source

Started as a 2am frustration: every ring buffer I found either allocated on the hot path or had a mutex hiding somewhere. So I built one that doesn't.

It uses a power-of-two capacity trick and acquire/release ordering — no CAS loops, just two atomic loads and two stores. Ships as a no_std crate.

scheduler demo
022025

Async Work Scheduler

Tokio-backed task scheduler with deadline propagation and work-stealing.

Rustasynctokioscheduler

The problem: a data pipeline where upstream latency was unpredictable. Downstream workers were starving or flooding depending on the day.

The scheduler tracks per-task deadlines through the queue and sheds load gracefully when backpressure builds. P99 latency dropped from 400ms to 38ms.

obsidian-sync // statusin progress

"A sketch, not a render. The diff viewer is still a whiteboard photo."

Vaults synced
beta soon
100%
Merge conflicts resolved
automatic
Offline-first
IndexedDB backed
Devices per vault
no limit
github.com/mokafor/obsidian-syncWIP
032026 ↗

Obsidian Sync Engine

CRDTs for personal knowledge management — merge conflicts are now a solved problem.

TypeScriptCRDTsyncwip

What's next. Still rough at the edges — the merge resolution UI is a sketch, not a render.

CRDT-based sync for Obsidian vaults across devices. Yjs under the hood, custom awareness protocol, works offline-first. The part I'm most proud of: the diff viewer that shows you *why* a merge happened, not just what changed.

Technical Writing

Essays from the notebook

Long-form writing on systems design, Rust internals, and the craft of building software that lasts.

Rustsystems

Why I Stopped Fighting the Borrow Checker

Three years of Rust taught me that the compiler isn't an obstacle — it's a collaborator. A dispatch from the other side of the learning curve.

Jan 20268 min read
distributedops

The Lie of "Simple" Distributed Systems

Everyone says "just use Kafka." Nobody talks about what happens at 3am when the consumer group rebalances mid-transaction.

Nov 202512 min read
concurrencyperf

Lock-Free Data Structures Are Not Free

The hidden cost of going lock-free: cache coherence traffic, memory ordering complexity, and the bugs that don't show up until production.

Sep 202515 min read
craftreadability

Writing Code That Reads Like Prose

Variable names are the cheapest documentation you'll ever write. A case for naming things as carefully as you name your children.

Jul 20256 min read
craftarchitecture

On Building Things That Outlast You

A meditation on software that runs in production for a decade. What decisions made it possible, and what would I do differently.

May 202510 min read
asyncpatterns

The Async Trap

When async/await became mainstream, we all reached for it reflexively. Here's when synchronous code is still the right answer.

Mar 20259 min read
Peer Signal

What colleagues say

"

The code review was surgical. Every comment was a lesson — not a correction. I've been doing this for twelve years and I still learned something new about ownership semantics.

Priya Nair, Staff Engineer at Stripe

Priya Nair

Staff Engineer · Stripe

On a Rust PR review

"Marcus's talk on lock-free queues was the best technical session at the conference. He made the memory model feel intuitive — which I didn't think was possible."

Daniel Osei, Principal Engineer at Cloudflare

Daniel Osei

Principal Engineer · Cloudflare

After a conference talk

"I forked the ring buffer crate and it's running in production handling 80k messages/sec. Solid design, zero issues in six months. That's the bar."

Yuki Tanaka, Senior SWE at Figma

Yuki Tanaka

Senior SWE · Figma

GitHub discussion thread

GitHub Activity

1,247 contributions in the last year

Less
More
34
Public repos
2.1k
Stars earned
187
PRs merged
412
Issues closed
Coming Soon
0

engineers already saved a seat

The build log.
One per month.

One build log per month — no spam, no fluff, just the notebook. Deep dives into whatever I'm building, annotated with decisions, mistakes, and the parts that took three rewrites to get right.

The architecture decision that didn't make the README

Benchmark results, including the ones that were embarrassing

One recommended read that changed how I think

Reserve your spot

Unsubscribe any time. No dark patterns, no upsells.

or
Star the repo instead★ 2.1k