I build bioinformatics and AI tools for the jobs that eat your afternoon: slow analyses, unfamiliar codebases, and agents that need the same explanation again. Mostly Python and C, with occasional detours into cats and cosmic destruction.
Bioinformatics · AI development · Other apps · Contributions · Website
|
Get more GWAS done with the compute you have. JAMMA accelerates kinship and association testing with native C kernels, processes genotypes in chunks to control memory use, and reuses eigendecompositions across phenotypes. Keep familiar GEMMA commands or use the Python API. PyPI · Benchmarks · Lean 4 proofs My numpy-mkl fork builds Intel MKL NumPy and SciPy wheels with 64-bit NumPy indexing for much larger GWAS. |
|
Phase and impute larger cohorts with less waiting and less RAM. These C ports of Beagle 5.4 and 5.5 preserve each Java release's VCF output byte for byte at the same thread count, and add BGEN output. The 5.5 benchmarks show 1.5× to over 3× faster runs, with memory use reduced by up to 3.5×. |
|
|
Give your GWAS hits some context. Turn result tables into publication-ready figures or interactive plots, with LD, genes, and fine-mapping evidence alongside the association signal. Works with Pandas or PySpark, with built-in dog and cat references and support for other species. |
|
Manhattan and QQ plots produced with pyLocusZoom. |
|
|
Make your coding agent earn its "done". Pstack gives it workflows to reproduce bugs, challenge designs, review changes, and verify the result. My port of Lauren Tan's pstack brings that discipline to the agents below. Claude Code · Codex · OpenCode · Gemini CLI · Prime Agent |
Your assistant should remember why you made that decision. Memory MCP carries project knowledge between sessions, puts frequently used facts straight into Claude Code's context, and retrieves the rest by meaning. Hot cache · Semantic search · Knowledge graph |
|
Help Claude Code follow definitions and references across Python, Terraform, and linked Markdown docs. Pyrefly also provides fast Python type checking, giving the agent more to work with when fixing errors. |
Give Claude Code a local helper. Delegate tasks to a Bonsai 2 27B model running on your Apple Silicon Mac through MLX. The server starts on demand and shuts down when idle, so you don't have to babysit it. |
|
Claude has plenty to say. Signal helps it get to the point, with answers first, explanations sized to the question, and numbers backed by units and sources. A small output style for Claude Code. |
Pick up where the last session left off. My Claude-Mem fork captures tool activity and compresses it into summaries, so Claude can recover what happened without rereading the whole conversation. |
|
Investigate your codebase like a crime scene. Black Box Unlock combines change history, hidden coupling, ownership, and CI failures to help you choose what to review or refactor first. Use it from the CLI or give coding agents direct access through MCP. |
An interactive WebGL apocalypse. A spinning black hole consumes a procedural cosmos over twelve minutes, then a new universe takes its place. Stir the gas, feed the black hole, or just watch it all go. |
The Aether Works is my personal site, disguised as a steampunk workshop. There are cats, animated machinery, and gauges fed by GitHub activity. Step inside.
| Project | Contributions |
|---|---|
| colibri | Helping a tiny C inference engine run better on ARM, with kernel, profiling, portability, and memory-management fixes. Pull requests. |
| code-review-graph | Teaching a code knowledge graph to read R and notebooks, and fixing how it tracks calls at module scope. Pull requests. |
| qqman | Modernised the Python package for Python 3.10+. Pull request. |









