# DevOps

> Selected Engineer ApS work demonstrating DevOps — the achievements that prove it.

- [Developed and launched the company's first observability dashboard, providing real‑time system performance insights and data visualization on the large office TV.](https://engineer.company/portfolio/developed-and-launched-the-company-s-first-observability-9/)
- [Designed, deployed, and maintained 10 PostgreSQL and MS SQL servers on Ubuntu Linux VPS, ensuring optimal server performance and reliability.](https://engineer.company/portfolio/designed-deployed-and-maintained-10-postgresql-and-ms-13/)
- [Enhanced data security by implementing 1,000 RBAC rules for developers, application instances, PostgreSQL, MS SQL, and other Linux servers, preventing unauthorized access; documented with Ansible automation.](https://engineer.company/portfolio/enhanced-data-security-by-implementing-1-000-rbac-14/)
- [Automated GIS SaaS application deployment, data processing, and reporting system using GitHub Actions CI/CD, Python, Bash, and SQL.](https://engineer.company/portfolio/automated-gis-saas-application-deployment-data-processing-and-16/)
- [Automated delivery of 20 GIS data pipelines and app data ETL processes, streamlining infrastructure automation and reporting.](https://engineer.company/portfolio/automated-delivery-of-20-gis-data-pipelines-and-17/)
- [Automated 100 critical data backups using Barman, Google Cloud, Bash, and Python, ensuring data integrity across databases.](https://engineer.company/portfolio/automated-100-critical-data-backups-using-barman-google-18/)
- [Deployed and maintained 20 Docker containerized applications, troubleshooting with Podman and Kubernetes, and managing R‑based apps on Google Cloud and AWS.](https://engineer.company/portfolio/deployed-and-maintained-20-docker-containerized-applications-troubleshooting-19/)
- [Managed 30 Ubuntu Linux VPS instances, implementing disaster recovery strategies and ensuring optimal network configurations.](https://engineer.company/portfolio/managed-30-ubuntu-linux-vps-instances-implementing-disaster-20/)
- [Mitigated operational risks by implementing a monitoring dashboard using Grafana and Prometheus, improving system reliability.](https://engineer.company/portfolio/mitigated-operational-risks-by-implementing-a-monitoring-dashboard-22/)
- [Led the software development of a GIS map application, driving revenue growth by 10x and positioning the product as a primary data asset.](https://engineer.company/portfolio/led-the-software-development-of-a-gis-map-24/)
- [Automated SSL/TLS certificate creation for 100 Docker applications, ensuring secure connections across Ubuntu Linux hosts.](https://engineer.company/portfolio/automated-ssl-tls-certificate-creation-for-100-docker-41/)
- [Streamlined CI/CD processes, saving 4,000 hours by introducing automation in software development pipelines.](https://engineer.company/portfolio/streamlined-ci-cd-processes-saving-4-000-hours-42/)
- [Streamlined data analysis and software development processes, saving 4,000 hours by introducing GitHub, GitLab, Bash, and Python CI/CD practices.](https://engineer.company/portfolio/streamlined-data-analysis-and-software-development-processes-saving-43/)
- [Optimized budget costs 10 times with zero loss in productivity for the Saudi Arabia company by reimagining the overall infrastructure, eliminating unnecessary services, and relocating from the AWS cloud.](https://engineer.company/portfolio/optimized-budget-costs-10-times-with-zero-loss-56/)
- [Generated the API contract outward from the database — OpenAPI, a 44,076‑line typed TypeScript client, 61 mock handlers and the limits the UI enforces — with a guard at every hop that fails on drift.](https://engineer.company/portfolio/built-a-request-schema-validation-contract-with-automated-61/)
- [Provisioned Azure infrastructure as code with Bicep — Container Apps, PostgreSQL Flexible Server, Front Door/WAF and networking — across the development, staging and production environments.](https://engineer.company/portfolio/provisioned-azure-infrastructure-as-code-with-bicep-container-68/)
- [Built GitHub Actions CI/CD pipelines with a distroless production frontend image and multi‑environment promotion.](https://engineer.company/portfolio/built-github-actions-ci-cd-pipelines-with-a-69/)
- [Authored 578 go‑task automation targets spanning native, Docker and HTTPS dev modes, linting, testing, database and deployment.](https://engineer.company/portfolio/authored-578-go-task-automation-targets-70/)
- [Owned end‑to‑end deployments of the platform to Azure, managing releases across development, staging and production environments.](https://engineer.company/portfolio/owned-end-to-end-deployments-of-the-platform-71/)
- [Configured database backup retention as infrastructure‑as‑code, then audited the recovery position and documented the restore procedure — naming the remaining gaps rather than leaving them to be found during an incident.](https://engineer.company/portfolio/configured-database-backup-retention-as-infrastructure-as-code-72/)
- [Set a zero‑warnings quality bar across six languages — Go, TypeScript, SQL, Python, Shell and Markdown — enforced by pre‑commit hooks.](https://engineer.company/portfolio/set-a-zero-warnings-quality-bar-across-six-79/)
- [Set the platform's founding decisions in the weeks after the repository opened in November 2025 — the layering, database‑first data access and the zero‑warnings bar — and they still hold nine months on.](https://engineer.company/portfolio/set-the-platform-s-founding-decisions-in-november-2025-80/)
- [As one of the first hires, designed and built the entire core infrastructure and supporting processes from scratch for a green‑energy SaaS startup, laying the foundation for rapid growth.](https://engineer.company/portfolio/as-one-of-the-first-hires-designed-and-86/)
- [Automated team collaboration, password management, task and time management, and built a semi‑automatic project‑showcase system, raising team productivity.](https://engineer.company/portfolio/automated-team-collaboration-password-management-task-and-time-89/)
- [Built a layered automated test suite — 981 Go tests, 543 frontend and browser specs, 494 SQL behavioural tests — with mutation testing, property‑based tests and an accessibility gate.](https://engineer.company/portfolio/built-a-layered-automated-test-suite-across-four-layers-94/)
- [Built the repository's guard engine — 268 registered commit checks, 277 lint rules and 15 custom ESLint rules — plus 146 tests of the guards themselves, so the build holds the standard, not review.](https://engineer.company/portfolio/built-the-repository-s-guard-engine-of-268-checks-95/)
- [Built first‑party error monitoring and OpenTelemetry tracing rather than buying them — payload sanitising, spike and regression detection, symbolication and a synthetic heartbeat — behind 11 operator views.](https://engineer.company/portfolio/built-first-party-error-monitoring-and-tracing-98/)
- [Kept the schema honest across 1,022 migrations with a CI gate that builds the database both ways — a fresh install, and an install plus every migration — and fails when the two disagree.](https://engineer.company/portfolio/kept-the-schema-honest-across-1022-migrations-99/)
- [Established a continuous security programme — code scanning, DAST, dependency and vulnerability checks, SBOM generation, secret scanning and SHA‑pinned actions — alongside 21 written security audits.](https://engineer.company/portfolio/established-a-continuous-security-programme-104/)
- [Built the company's own infrastructure as 19 Ansible playbooks and 34 roles across 12,065 lines of YAML, converging a live host to a declared state with every play idempotent.](https://engineer.company/portfolio/built-the-companys-infrastructure-as-code-108/)
- [Made check mode tell the truth across the whole platform after finding six probes deciding on a value the host never gave, because Ansible's command module reports success under --check while skipping the command entirely.](https://engineer.company/portfolio/made-ansible-check-mode-tell-the-truth-116/)
- [Added a preflight play that runs the same code as the converge against operator‑local secrets in about a second, after a half‑applied production run died on its ninth task with the swap settings already written to the live host.](https://engineer.company/portfolio/added-a-preflight-play-for-secrets-117/)
- [Deployed the company's own git forge on Soft Serve, private by default with no web panel and its SSH port bound to loopback behind a jump host, and made the landing page in front of it a build artefact of the main site rather than a hand‑kept copy.](https://engineer.company/portfolio/deployed-the-companys-own-git-forge-121/)
- [Deployed a container plane on Podman and Quadlet under systemd rather than Docker, because Docker publishes container ports above the host firewall's own rules — and gave deploys an unprivileged user with one fixed command instead of root.](https://engineer.company/portfolio/deployed-a-container-plane-on-podman-and-quadlet-122/)
- [Built a commit gate of 22 one‑line linters plus four that earn a paragraph, with no warning tier and no inline suppressions permitted, covering HTML, CSS, JavaScript, Python, YAML, Markdown, shell, links, spelling, secrets and typography.](https://engineer.company/portfolio/built-a-22-linter-commit-gate-127/)
- [Cut the site's browser‑driven quality gate from 1,636 seconds to 615 by scheduling its checks longest‑first through a worker pool bounded to four lanes, after measuring that alphabetical order cost 320 seconds against 224.](https://engineer.company/portfolio/cut-the-visual-quality-gate-to-ten-minutes-128/)
- [Brought 10,242 lines of quality‑gate JavaScript under a formatter and a linter after establishing it was the largest body of code in the repository and the only one nothing read, fixing 13 findings and suppressing none.](https://engineer.company/portfolio/brought-the-quality-gate-code-under-a-linter-143/)
- [Held the generator to 981 test cases at a 92% branch‑coverage floor with warnings treated as failures, and asserted idempotence by running the whole build pipeline twice from an empty file and requiring the second pass to change nothing.](https://engineer.company/portfolio/held-the-generator-to-964-tests-and-a-coverage-floor-145/)
- [Selected every rule the Python linter has as an error, working through 1,815 findings to reach zero, with each of the few exemptions carrying a written reason and two of them backed by a checker instead of a comment.](https://engineer.company/portfolio/enabled-every-python-linter-rule-as-an-error-147/)
- [Found the commit hooks and the quality gate running different checks while a document promised they were the same, by comparing the two lists in a test — the five that only ever ran by hand were the ones reading the CV prose.](https://engineer.company/portfolio/found-the-commit-hooks-and-the-gate-disagreeing-150/)
- [Rehearsed the forge‑side CI hook and found two defects unreachable by reading the file: a fallback that put an unresolvable argument on the hook's input, and git's own environment variable following the gate into the checkout and turning 19 tests red.](https://engineer.company/portfolio/rehearsed-the-forge-side-ci-hook-151/)
- [Took the test suite from six tests over a sixty‑second limit to 135 passing in 8.9 seconds by profiling the main thread and removing the two calls it sat inside for 3,989 samples out of 4,017.](https://engineer.company/portfolio/took-the-test-suite-under-nine-seconds-158/)
- [Audited 644 Rust crates for licence compatibility on every build, and proved the check fires by rewriting one crate's licence and by moving the pinned core revision without regenerating.](https://engineer.company/portfolio/audited-644-rust-crates-for-licence-compatibility-163/)
- [Held four repositories to one history standard — conventional, emoji‑free, no attribution trailers, enforced by a commit‑message hook — alongside 46 instruction documents that govern how the work is done.](https://engineer.company/portfolio/held-five-repositories-to-one-history-standard-165/)

<https://engineer.company/categories/devops/>
