Profile
Enterprise Architect with professional IT experience since 2017, focused on Linux,
Infrastructure as Code, automation, containerization, and DevOps. Hands-on with Terraform,
Ansible, Docker/Podman, GitHub Actions, and AWS — and builds and operates self-hosted
infrastructure projects outside of work to explore the same practices end to end,
including the site you're looking at right now.
Personal projects
Home-infrastructure projects outside of client work, built to explore DevOps, cloud, and
self-hosted systems in practice rather than just in theory.
Home infrastructure as code
- Manage a home server and its services entirely through Terraform and Ansible, version-controlled in Git.
- Provision AWS resources (Route 53, S3, CloudFront, IAM/OIDC) and GitHub repository configuration from the same codebase — no manual changes to live infrastructure.
- This site is deployed exactly this way: Terraform-managed S3 and CloudFront, GitHub Actions CI/CD.
Terraform · Ansible · AWS · GitHub Actions · Debian
Self-hosted GitHub Actions runner
- Designed a fully automated Debian VM, provisioned with Ansible, to host a dedicated self-hosted GitHub Actions runner.
- Configured dedicated disk storage placement for the VM and runner data.
Ansible · Debian · Virtualization · GitHub Actions
Self-hosted Nextcloud platform
- Operate a private Nextcloud instance as a personal cloud-storage replacement, containerized with Docker on a Debian home server.
- Designed the storage architecture across SSD and HDD storage, including Linux permission/UID-GID handling and bind mounts.
- Diagnosed an IPv6 DNS misconfiguration that was silently degrading WebDAV performance — after the fix, an operation that took roughly two minutes completed in about one second.
Docker · Debian · DNS · IPv4/IPv6 · TLS · WebDAV
Personal finance automation
- Built a Python workflow that reads a personal budget spreadsheet, drives a browser via Playwright to render a chart, and uploads the result to Nextcloud automatically.
- Runs on a schedule behind a cheap change-detection check, so it only does the expensive work when the underlying data actually changed.
Python · openpyxl · Playwright · requests · WebDAV