Ledgerline
Rewrote the payment reconciliation engine as a streaming service, so finance closes the books daily instead of monthly.
Nightly batch of 6 h replaced by a 40 s lag stream
- Rust
- Postgres
- Kafka
- gRPC
Noor Haddad, backend and infrastructure engineer
Nine years on databases, queues and the tooling around them. Mostly Go, Rust and a lot of SQL.
Production systems I led or built most of, with the number that mattered to the people paying for them.
Rewrote the payment reconciliation engine as a streaming service, so finance closes the books daily instead of monthly.
Nightly batch of 6 h replaced by a 40 s lag stream
A content-addressed remote cache shared by every CI runner and laptop in the company.
Median CI run from 19 min to 6 min
Search across 900k merchants with typo tolerance, permissions baked into the index and zero-downtime reindexing.
p99 from 840 ms to 95 ms
An offline-first notebook for ecologists that syncs when the field station finally gets signal.
Used by 14 research groups
Small tools that fell out of production problems. Maintained, documented and boring on purpose.
Replays real production traffic against a Postgres upgrade before you run it for real.
Structured logging for Go with sampling that never drops errors.
Retry budgets for Rust HTTP clients, so one slow service cannot take the rest down.
Diffs two Postgres query plans and points at the node that got slower.
Neovim, tmux and Nix config. Copy freely.
Long posts about the problems above, usually written a month after the incident.
Moving reconciliation to a stream took eight months, two rollbacks and one very patient finance team.
What I reach for, grouped by job, with the year I started using it in production.
The setup behind the work. Updated when something earns its place.
MacBook Pro 14, M3 Pro
Main machine, 36 GB so the local cluster fits.
LG 27UP850 at 4K
One screen, vertical split, nothing on the second one.
Keychron Q1, brown switches
Quiet enough for calls.
Framework 13
Linux box for anything that has to match production.
Neovim
With LazyVim, a short config and gopls plus rust-analyzer.
WezTerm and tmux
One session per repo, named after the branch.
pgcli and Postico
For reading query plans and data.
Obsidian
Design docs start here as plain Markdown.
Fly.io
Side projects and demos.
Grafana Cloud
Metrics and traces for everything I run.
Tailscale
Every machine I own on one network.
Fastmail
Mail, calendar and the domain.