Uses
Updated quarterly. Last updated: June 2026
Development machine
- Dell XPS 8950 running Windows 11 with WSL2 (Ubuntu). Most real work happens in WSL2.
- Logitech MX Keys (K860): split ergonomic. Worth the adjustment period.
- Logitech MX Master 3 mouse.
- External power button soldered in after the original failed.
Secondary dev environment
- A dedicated Ubuntu LAN server for Claude Code sessions that benefit from more horsepower or a persistent shell. Node.js 22, tmux for session persistence.
Claude Code setup
- Model: Claude Opus for everything. Happy to pay for the capability gap.
- Custom skills: content-capture (voice memos → X posts), dadops-infrastructure (infra queries), free-dates (calendar scheduling), saas-marketing, product-video, x-metrics, laravel-test-optimiser, and others.
- MCP servers: Notion, Gmail, Google Calendar, Context7, Cloudflare.
- Hooks: pre-commit Pint formatter, post-task completion notifications via Pushover.
- Terminal: Windows Terminal + WSL2 on desktop; tmux on the LAN dev server.
Stack
- Backend: Laravel 13 + PHP 8.3+. Occasional Go for small tools.
- Frontend: Blade + Tailwind CSS 4 + Alpine.js (the "TALL stack minus Livewire"). Livewire added only when interactivity demands it.
- Database: SQLite for smaller sites, MySQL for larger (hosted at OVHcloud), Redis for session/cache when needed.
- Testing: Pest for PHP. Playwright for critical user journeys.
- Formatting: Pint. Pre-commit hook enforces it.
Infrastructure
- Production hosting: Ubuntu servers at OVHcloud. SSH hardened, fail2ban + UFW, Zabbix agent monitoring.
- Reverse proxy: Caddy. Automatic HTTPS, simple config. One
Caddyfileper server. - CDN + DNS: Cloudflare. Proxied records, SSL Full, WAF.
- Deployment: Ansible. Zero-downtime releases with symlink switching, 5 releases kept for rollback.
- Monitoring: Sentry for errors, UptimeRobot for availability (keyword monitor on
/health), Pushover for deploy notifications. - CI: GitHub Actions. Pest + Pint + PHPStan before deploy.
Self-hosted
Running on a Synology DS1520+ (20GB RAM, DSM 7.3) at home:
- Portainer: Docker orchestration UI across all my stacks.
- Caddy: reverse proxy for internal services.
- Gitea: self-hosted Git with GitHub mirror for redundancy.
- n8n: workflow automation (FreeAgent → Notion → Gmail chains).
- Home Assistant: Google Home, Nest, ESPHome devices, Withings scale.
- Audiobookshelf + Libation: Audible library mirrored locally.
- Paperless-ngx: document management, NAPS2 + Stream Deck for scanning.
- Firefly III: personal finance tracking.
- Docker Registry: private images.
Network
- Router: Ubiquiti Cloud Gateway Max. Solid firewall, IPS, VPN gateway.
- ISP: Virgin Media.
- Wired Cat6 to the NAS and desk.
Daily-driver software
- Notion: second brain. The Ultimate Brain template, heavily customised.
- 1Password: passwords and SSH keys.
- Slack, Gmail, Google Calendar, Google Drive: work glue.
- MailerLite: newsletter publishing (Practically AI).
- Stream Deck: document scanning, macros, meeting mute.
Not shown
The fifteen years of consulting and delivery scars that actually drive most of the decisions above. Every tool here earned its place by making something I was going to do anyway a bit less painful.