Full stack developer.
I work mostly in PHP and Python. I contribute to the PHPOffice libraries — file format support, static analysis and CI — and I build my own tools when nothing out there does quite what I need.
Portfolio → slayerfx.github.io
Strength training site in PHP 8: exercise library, custom workout programs and a daily energy expenditure calculator (Mifflin-St Jeor). MVC architecture written without a framework, MySQL through PDO with prepared statements, PHPUnit tests.
SoundCloud downloader with a local web interface. FastAPI + yt-dlp, progress pushed over Server-Sent Events, no build step and nothing loaded from a CDN. 36 tests, ruff linting, CI on Windows and Linux.
One hand-written page — HTML, CSS and JavaScript, no framework, no build step, nothing loaded from a CDN. Bilingual, light and dark themes, three self-hosted variable typefaces, and a perfect 100 across every Lighthouse category.
Every push is checked four ways: markup validity, Lighthouse scores, dead links, and contrast ratios. That last one is a dependency-free script written for this site — Lighthouse audits one theme at a time, and emulating the dark one meant pulling in 219 packages for a site that has none. The script caught a real defect Lighthouse had missed: a grey at 4.48 against a 4.5 threshold.
Eleven-week internship spent on the PHPOffice PHP libraries, May to July 2026 — 41 merged pull requests across five repositories.
Most of it went into PhpProject (209 ★, 32 PRs):
- Four file formats implemented, reading and writing — Gnome Planner, MSPDI and ProjectLibre, plus an HTML writer rendering a Gantt chart.
- PHPStan raised from level 1 to 6, one level per pull request, alongside
declare(strict_types=1)and typed signatures across the source. - CI migrated from Travis to GitHub Actions — extended PHP matrix, PHPStan job, samples execution check, code coverage, Dependabot.
- Documentation migrated from Sphinx to MkDocs, then to ProperDocs.
The remaining nine went to the other four libraries:
| Project | PRs | Contributions |
|---|---|---|
| PHPPresentation · 1.4k ★ | 3 | Coverage under PHPUnit 10+, minimum PHP version raised, version guard on imagedestroy() |
| Common | 3 | PHPStan up to level 7, PHPStan 2.x support, PHP 8.5 in the CI matrix |
| PHPWord | 2 | PHP 8.5 support, PHPUnit constraint fixing the test suite |
| Math | 1 | PHP 8.5 in the CI matrix |



