IFEANYI
Systems engineer
I work on the parts of a system where being wrong costs money or uptime. Payments that have to reconcile. Services that stay up when the traffic actually arrives. Production code someone else left half-finished. Backend and infrastructure, mostly, for the last five years.
Work
I won't lose your money.
I've built payments, trading, voucher, and forex systems. Most of the work is after the money moves. Reconciliation. A retry that fires twice and double-charges. A settlement that doesn't match the ledger, and nobody notices for a week. A transfer that dies between two database writes.
Inherited it with no tests. Wrote characterization tests first, to capture what the code actually did, bugs and all, before touching anything.
Digital goods don't refund. Every order got a risk score off its payment metadata, and nothing shipped until the payment cleared the provider webhook.
My own project, still building it. Settlement runs on smart contracts over a permissioned EVM chain. Fixed fees, clears in seconds.
Everything is fine until the load shows up.
I've worked on streaming, live data feeds, and field tracking. The bugs that matter wait for real conditions: a few hundred people connecting at once, a traffic spike, a dropped feed that every client tries to recover from in the same second. None of it shows up on a laptop.
A viewer surge broke the first architecture. Rebuilt the ingestion and distribution pipeline halfway through the project, moved presence and chat onto Redis pub/sub, added adaptive bitrate for weak connections.
In live trading, reliability comes down to the price feed. Rebuilt the WebSocket layer around the failure cases: dropped frames, reconnects, out-of-order updates.
Constant GPS polling flattens the battery. Poll it rarely and the supervisor's map goes stale. Tied the rate to each guard's movement: fast while moving, slow while still.
Good ergonomics shouldn't cost you speed or safety.
Node and TypeScript are pleasant to work in. Rust is fast and hard to crash. The usual assumption is that you pick one set of those or the other. Most of my open-source work is me refusing to.
winston-rs
↗Structured logging for Rust, modeled on Node's Winston: multiple transports, structured JSON output, configurable levels. Rust didn't have a logger with that ergonomics when I needed one, so I wrote it.
Toni
↗A Rust web framework that ports NestJS's decorator and module structure onto Rust's type system, on top of Tokio and Hyper. Same way of organizing code, Rust underneath.
graphql-scalars
↗Four scalars contributed upstream to the graphql-scalars library: ULID for sortable unique IDs, GeoJSON for geospatial validation, Countries for ISO 3166-1 alpha-2 codes, and Cuid2 for collision-resistant IDs. Each ships with full serialization, parsing, and validation.
Hand me the system everyone's afraid to touch.
I've taken over more than one production system that was half-broken with live users still on it, and gotten it back to stable without a rewrite. Stop the active damage first. Understand what the code really does before changing it. Features come last.
Took over a half-finished build with mismatched API contracts, no tests, and live users on broken endpoints. Fixed the data-corrupting paths first, wrote tests to lock down real behavior, then migrated the state layer and added proper database migrations. Features came last.