Summary
DRAFT Full-stack engineer with a bias toward things that stay maintainable. Comfortable owning an application end to end: PHP and Laravel with Vue on the application side, Go-templated static sites on the content side, and a reproducible toolchain, test suite and CI pipeline sitting under both.
Skills
- Backend
- PHP 8, Laravel 12, Eloquent, MySQL, REST APIs, PHPUnit
- Frontend
- Vue 3, Inertia.js, Vuetify, TypeScript, Vite, Vitest
- Sites & content
- Hugo, Go templates, Sveltia CMS, responsive image pipelines
- Tooling & delivery
- mise, GitLab CI, GitHub Actions, lefthook, Docker Compose, Git LFS
- Quality
- Playwright, pa11y (WCAG 2 AA), Unlighthouse, lychee, cspell, markdownlint
Experience
TODO: job title · TODO: employer
- TODO: replace these placeholders with real work history.
- TODO: lead with an outcome, not a responsibility (what changed, and by how much).
- TODO: name the stack only where it is load-bearing to the story.
TODO: previous job title · TODO: previous employer
- TODO: replace with real work history.
Selected projects
- SWG Junkyard
- A Star Wars Galaxies companion site I have run since October 2015. Three different applications in that time, and it has never once gone dark.
- Northern Wörthersee
- A Hugo site for an annual European car show, replacing a 2015 Adobe Muse build. The whole design brief was that the guy who runs the show, who is not a developer, has to be able to update it without me.
- This Site
- The portfolio you are reading. Same pinned toolchain and the same automated checks I put on everything else, because claiming to care about tooling is cheap.
Open source
- Backstage
- 3 merged contributions: Add support for optional PyMdown blocks extension syntax; Added plugin config definition; Fixed changelog for fromConfig and moved config example into the README's config section.
- OpenShift Jenkins Sync Plugin
- 3 merged contributions: Bug 2064139: Fix configmap update bug that constantly purges templates with no changes; Fixed improperly formatted logger statements; Config log warning.
- cookiecutterassert
- 1 merged contribution: Update for proper cookiecutter function call.
Education
- TODO: degree or certification, TODO: institution (TODO: YYYY)