I'm a computer scientist by education and a software engineer by trade. I work mostly around databases, storage engines, distributed systems, and the kind of infrastructure that rewards looking under the floorboards.
I build systems to make hard ideas concrete, first for myself. My main project right now is BeachDB, a distributed NoSQL database and storage engine in Go. I use it to explore database internals by implementing them directly, writing about the tradeoffs, and keeping the work inspectable.
My blog, aalhour.com, is the main place where I publish notes on software, systems, books, and whatever else I'm currently trying to understand about.
I contribute to database and storage projects when I can:
- 🤖 Turso: an in-process SQL database compatible with SQLite, written in Rust.
- Apache HBase: a distributed, Bigtable-inspired NoSQL database on Hadoop, written in Java.
Production tools I've built to scratch an itch in my professional life:
- 📈 databricks-prometheus-exporter: a standalone, custom Prometheus exporter for monitoring Databricks workloads.
- 🍪 cookiecutter-aiohttp-sqlalchemy: an opinionated template for developing and deploying production async web APIs in Python 3.
- ❄️ fractaltree: a generic, concurrency-safe Bε-tree implementation with serialization codecs, written in pure Go.
A few representative rabbit holes:
- 🏝️ BeachDB: my main ongoing database internals experiment in Go.
- 🆒 PyCOOLC: a compiler for the COOL programming language in Python 3.
- 📟 Assembler.hack: a 16-bit machine-code assembler for the Hack assembly language from nand2tetris.
- #️⃣ C-Sharp-Algorithms: standard library data structures and algorithms implemented in C#.
- 🌀 micro_kanren.py: an object-oriented microKanren DSL implementation in Python.
- 😎 awesome-compilers: a curated collection of resources on compilers, interpreters, and runtimes.
Some are active. Some are archived. All of them started as an excuse to understand something more deeply.
I use writing as a forcing function for understanding. When static prose is not enough, I build small interactive animations to make the idea easier to inspect.
- Blog: aalhour.com
- Animations: aalhour.com/animations
- Talks: aalhour.com/talks