Skills & expertise
Capability map
Plain statements of what I do, grouped by area. There are no percentages or years of experience here on purpose: each group links to the projects that back it.
AI-assisted engineering
Using AI agents as working tools, with controls that keep a human in charge.
- Wrapping an AI coding agent CLI as a local runtime with read-only defaults
- Hash-bound human approval for any write, with a guard hook that fails closed
- Documenting residual risks such as prompt injection instead of ignoring them
- Building scripted pipelines around local speech models, with automated quality checks
Technologies
- Claude Code
- Whisper (faster-whisper)
- Chatterbox (local voice model)
- Python
Backed by
Application engineering
Typed, tested application code from user interface to storage.
- Offline-first applications with an in-app database and migrations
- Typed TypeScript code with unit, scenario and browser tests
- Small Node.js services with a clear, loopback-only HTTP surface
- Bilingual interfaces with an automated translation completeness check
Technologies
- TypeScript
- React
- Node.js
- Express
- SQLite
- Vite
Backed by
Mobile development
Web interfaces packaged as Android apps, with native code where it matters.
- Capacitor Android projects with a native plugin written in Java
- Release configuration checks: permissions, exported components, backups, no test code
- Separate debug and release identities so testing cannot touch real data
- Release signing handled outside the repository
Technologies
- Capacitor
- Android SDK
- Gradle
- Java
- Android Keystore
Backed by
Security-conscious development
Reduce what can go wrong by limiting what the software is able to do.
- Removing capabilities, such as network permission, instead of only guarding them
- Encryption at rest with the key held by the platform keystore
- Fail-safe storage that stops rather than overwrites on uncertain reads
- Fixing and regression-testing authentication, escaping and webhook defects
- Secrets kept out of repositories and CI, read-only CI tokens
Technologies
- AES-256-GCM encryption
- Android Keystore
- GitHub Actions
- pytest
Backed by
Automation and integration
Connecting data sources to people through small, observable automations.
- Polling public data feeds and turning them into structured, matched records
- Telegram bot design: commands, admin controls, allowlists and dry-run mode
- Notification dedupe and restart-safe delivery
- Scheduled tasks as fixed read-only templates with a kill switch
Technologies
- Telegram Bot API
- Windows Task Scheduler
- Python
- Node.js
Backed by
Infrastructure and operations
Boring, recoverable systems on Linux and Windows.
- Hardened systemd services on Linux with writes limited to one directory
- Release directories with an atomic symlink switch, and scripted rollback
- Backups and recorded file hashes before a change
- Windows scheduled tasks, Job Objects and manifest-driven PowerShell deployment
- Small alerting: failure threshold alert plus a recovery notice
Technologies
- Linux (Ubuntu)
- systemd
- Bash
- Windows
- PowerShell
- Git
Backed by
Testing and quality
Checks that run every time, so confidence does not depend on memory.
- Regression tests for each defect fixed
- Browser end-to-end tests and on-device checks with made-up data
- Automated visual QA: contrast, clipping, overlap and caption checks
- Continuous integration on every pull request
Technologies
- Playwright
- pytest
- Node.js test runner
- GitHub Actions
Backed by
Media pipelines
Programmatic audio and video with reviewable decisions.
- Transcript-driven edit decision lists with reasons for every cut
- GPU rendering with FFmpeg NVENC and loudness normalisation
- Programmatic overlays with React and Remotion (evaluation)
- Local-only workflows with no uploads
Technologies
- FFmpeg
- Remotion
- React
- Whisper (faster-whisper)
Backed by