I build Python services and data tools, with a focus on reliable behaviour and clear tests. My work includes webhook delivery, dataset checks and language-model evaluation. I've also contributed accepted fixes to Black and urllib3.
Portfolio / LinkedIn / Merged contributions
| Project | What I changed | Review and code |
|---|---|---|
| Black | Fixed formatting of long, quoted return types in functions with parameters; added regression tests. | Merged PR #5427 |
| urllib3 | Stopped an ignored gzip decoding error from being raised again during cleanup. | Merged PR #5271 |
| Sotto | Made search-result changes available to screen readers, with tests that check keyboard focus stays put. | Merged PR #509 |
| OpenMDAO Aviary | Added tests that check dynamic-variable metadata stays in alphabetical order. | Merged PR #1320 |
For backend work, start with RelayForge. For algorithms and data handling, try SplitCheck. Pressroom shows a complete web application.
Pressroom · Django publishing app
Authors draft, editors review, and only approved revisions go live. Includes revision history, scheduled publishing, a REST API and PostgreSQL concurrency tests.
Run it locally · Architecture · Concurrency tests
My MSc research project examines language-model responses across multi-turn conversations. It includes an evaluation workflow, annotation tools and offline verification, with demonstration data kept separate from private research evidence.
Python · SQL · PostgreSQL · FastAPI · Django · pytest · Docker · GitHub Actions
I also work with JavaScript and TypeScript for web interfaces and their tests.
Want to discuss a project or contribution? Message me on LinkedIn.

