ML Systems & Applied ML Engineer | MLOps • Distributed Systems • Retrieval & Embeddings | Elixir Evangelist
FIND ME ON CODEBERG
I build production ML systems end to end: training and fine-tuning models, standing up retrieval and embedding pipelines, and shipping them behind self-hosted, cost-conscious serving infrastructure. As a professional, I have journeyed from WordPress development via financial and enterprise products to the worlds of functional Elixir and ML, giving me a wide skillset and a deep love of infrfastructural work.
I am a full lifecycle engineer: data pipelines, experiment tracking, model registries, ONNX export and quantisation, containerised serving, and monitoring, with a focus on security and scalability. I work comfortably across PyTorch, the Hugging Face stack, and Elixir/OTP for massive-concurrency serving and orchestration.
- pons - Hybrid semantic search engine over 124M academic papers. Combines dense vector retrieval (FAISS) with sparse BM25 (Tantivy) and a citation-diversity ranking metric. Full MLOps lifecycle: DVC-versioned data, MLflow experiment tracking and model registry, ONNX export and quantisation for CPU inference, ClickHouse feature storage, and Docker-based serving — self-hosted for ~€17.49/month
- midi-gpt - Decoder-only from first principles transformer for conditioned symbolic music generation. Trained on 230M tokens of piano MIDI (GiantMIDI + MAESTRO) with a REMI tokenisation pipeline and a bespoke multi-dimensional conditioning vocabulary (composer, period, form, key) derived from music21 musicological analysis. Validated a pretrain → fine-tune strategy against published benchmarks and preparing a 300M-parameter cloud training run (H200, RoPE + sliding-window attention) on a ~5B-token corpus. Stack: PyTorch · miditok · DVC · music21
- william-tell - Local RAG CLI assistant that indexes Unix man pages into ChromaDB, retrieves relevant sections via semantic search, and queries a local LLM (Ollama/phi4) to emit a single composable shell primitive — designed for onward piping in standard Unix workflows
- New Model Army - Elixir semantic model router. Uses local embeddings (Bumblebee + MiniLM) to classify prompts and route them to the appropriate model tier, giving automatic cost optimisation with no API call needed to make the routing decision
Distributed Systems & Monitoring:
- Pangea - Fault-tolerant distributed Elixir monitoring platform with distributed GenServers via Erlang cookies and Phoenix LiveView real-time dashboards
- Ambrosia - Production-ready Elixir Gemini server with TLS, concurrent handling (benched at around 1k simultenous connexions), and comprehensive security TDD in ExUnit
- pwyll - File and dependency security monitor for Void Linux. Glues ClamAV, YARA, and osv-scanner into a runit-managed daemon with inotify watching and a Textual TUI for reviewing scan results
Web Applications:
- traceinertia - a JavaScript code-as-art project that explores broken interfaces, memory, and digital decay
4+ years
- Beginning with WordPress and web developement
- Building enterprise ERP add-ons with C#/.NET and React, delivering business-critical features in regulated environments and modernising legacy systems.
- ML & MLOps: PyTorch, Hugging Face, sentence-transformers, ONNX, FAISS, MLflow, DVC, ChromaDB, Optuna
- Systems: Elixir, OTP, F#, OCaml, Rust, Docker, distributed clustering
- Data & Enterprise: Python, ClickHouse, Postgres, C#, .NET, React, TypeScript, Cloud
- Tools: Linux, Git, Neovim, ExUnit
- End-to-end ownership - From data pipeline and training through to versioned, monitored, self-hosted serving
- Performance-conscious - Understanding bottlenecks from network to application to inference layer
- Production-ready - Experiment tracking, reproducible pipelines, security testing, and proper deployment concerns
- Continuous learning - Exploring model architectures, retrieval systems, and functional programming paradigms
Always happy to discuss ML systems, scalability and infrastructure, or interesting engineering challenges!

