Projects
Projects
things i've built or contributed to. most of them exist because something annoyed me enough to fix it.
ClickHouse — open-source contributions
ClickHouse is a columnar OLAP database and one of the more demanding C++ codebases in open source. i contribute there to get real experience with production C++.
A fix for a fuzzer-found crash (PR #112662, issue #111193) — quantileState and quantilesState store their aggregate state identically but finalize to different types. Union them and the type a function promises to return diverges from the column it actually produces, which trips an internal assertion and aborts the process in debug builds. The fix adds a guard that catches the mismatch and raises a clean user-facing error instead of crashing. Green across ClickHouse's full ~171-job CI matrix.
Also in the pipeline: SHOW USERS LIKE.
→ The full write-up — the build wall, two false starts, and the three CI traps that taught me the most.
datasip — per-app bandwidth history for macOS
A small Go CLI that answers a question no other tool would: which app ate my data, and when?
Every existing tool — bandwhich, iftop, nettop, iStat Menus — shows you the live rate and forgets it the moment you close the terminal. On a capped connection, knowing your current speed saves you nothing. Knowing which process spiked at 2am saves you the cap. datasip keeps the history and flags processes using far more than their baseline.
Built and shipped in an afternoon.
Self-hosted infrastructure
The lab that most of my Linux and operations knowledge came from, usually the hard way.
- Proxmox host running LXC containers for individual services, with a k3s cluster for anything that wants to be orchestrated
- Tailscale with MagicDNS for networking, so every host resolves by name from anywhere without exposing ports to the internet
- Samba/AD domain services, plus PostgreSQL, ClickHouse and Redis instances backing my own tooling
- Infrastructure-as-code and runbooks for the whole thing, because the second time you rebuild something by hand is the time you should have automated it
Local LLM inference stack
A GPU box (Intel Core Ultra 9, 2× RTX 5060 Ti, 32 GB total VRAM) serving open-weight models over an OpenAI-compatible API.
- vLLM running a quantized Qwen coder model on one GPU, tuned for prefix caching and chunked prefill
- Ollama serving a 12B general-purpose model with a 128K context window on the other
- LiteLLM in front as a router, with Redis response caching and per-user virtual keys
- Infinity serving BAAI/bge-m3 embeddings for retrieval workloads
Interesting mostly for the constraints: making Blackwell-generation consumer cards behave, fitting long contexts into limited VRAM with quantized KV cache, and routing between backends without the caller needing to care.
Data pipelines
Ingestion and orchestration work with dlt and Dagster, landing into ClickHouse and PostgreSQL. Less photogenic than the rest of this page, more of what I actually do.
Most of this ends up written down on the blog eventually. Code lives on GitHub.