I love making apps, and this page collects the software side of that: services and tools a person can open and use, the desktop and infrastructure work behind them, and notes written as I build. The projects here run live or on a desk rather than only in a repository, because the part of software I care about most is the moment someone actually uses it.
Chess is rare among programs in that the hardest part has an exact answer: the number of legal move sequences from a position to a given depth is a published constant, so a move generator is either exactly right or it is not. This game's engine matches those reference counts across more than ten million positions, with castling, en passant, promotion, and every draw rule implemented. On top of it sits a classical AI built from negamax search with alpha-beta pruning, a quiescence search so it stops misjudging captures at the edge of its sight, and a material plus piece-square evaluation, behind an SFML interface with drag-and-drop pieces, a promotion picker, and a board that flips when you play Black. The repository's second half learns the game the opposite way: an AlphaZero-style policy-value network trains purely from self-play with Monte Carlo tree search on a single GPU, gated like AlphaGo Zero, and is measured against a fixed ladder that includes the very alpha-beta engine it shares the repository with.
A self hosted service that probes live endpoints on a schedule, records latency and availability in Postgres, and serves this public status page. It computes availability and latency SLIs over rolling windows, tracks error budget burn against per service objectives, and fires multi window multi burn rate alerts so a fast burn pages immediately while a slow burn only warns.
Tracks build, test, and benchmark results across every commit, so performance and accuracy regressions show up the moment they land instead of in production.
A compact programming language with a hand-written lexer, Pratt parser, and a bytecode compiler and virtual machine, fast enough to run real scripts.
A concurrent load generator that drives a target at a set request rate and reports latency percentiles and throughput, so you can find where a service starts to break.
A background job queue with retries, exponential backoff, and a web UI to inspect, requeue, and cancel jobs, so slow or flaky work never blocks the request path.
A reference set of the algorithms and data structures that are core to know, broken down by type, each with working Python.
Full design walkthroughs of large-scale systems, from URL shorteners and chat apps to payment systems and stock exchanges, each with requirements, sizing, diagrams, and follow-up questions.
Write-ups on software, system design, architecture, and reliability.