{"id":50542739,"url":"https://github.com/soakes/soakes","last_synced_at":"2026-06-03T21:02:23.164Z","repository":{"id":359884550,"uuid":"1247852349","full_name":"soakes/soakes","owner":"soakes","description":"GitHub profile README","archived":false,"fork":false,"pushed_at":"2026-05-24T00:19:44.000Z","size":24,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-24T00:22:42.867Z","etag":null,"topics":["ansible","automation","bgp","cloud-engineering","devops","devsecops","docker","gitops","go","infrastructure","kubernetes","linux","network-security","operator-tooling","platform-engineering","python","site-reliability","sre","terraform"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/soakes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-23T21:43:10.000Z","updated_at":"2026-05-24T00:19:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/soakes/soakes","commit_stats":null,"previous_names":["soakes/soakes"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/soakes/soakes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soakes%2Fsoakes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soakes%2Fsoakes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soakes%2Fsoakes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soakes%2Fsoakes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soakes","download_url":"https://codeload.github.com/soakes/soakes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soakes%2Fsoakes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33878993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","automation","bgp","cloud-engineering","devops","devsecops","docker","gitops","go","infrastructure","kubernetes","linux","network-security","operator-tooling","platform-engineering","python","site-reliability","sre","terraform"],"created_at":"2026-06-03T21:02:22.461Z","updated_at":"2026-06-03T21:02:23.150Z","avatar_url":"https://github.com/soakes.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"./assets/profile-banner.svg\" alt=\"Simon Oakes profile banner\" /\u003e\n\n\u003cimg src=\"https://readme-typing-svg.demolab.com?font=Fira+Code\u0026weight=600\u0026size=22\u0026duration=2600\u0026pause=800\u0026color=38BDF8\u0026center=true\u0026vCenter=true\u0026width=900\u0026lines=Automation-first+infrastructure;Linux+%7C+DevOps+%7C+Platform+Engineering;automation+%7C+network+%7C+security+%7C+build+platforms+%7C+AI;Production+systems+that+stay+calm\" alt=\"Animated headline: automation-first infrastructure, Linux DevOps platform engineering, automation, network, security, build platforms, and AI\" /\u003e\n\n[![Linux](https://img.shields.io/badge/Linux-111827?style=for-the-badge\u0026logo=linux\u0026logoColor=white)](#)\n[![DevOps](https://img.shields.io/badge/DevOps-0f766e?style=for-the-badge\u0026logo=gitlab\u0026logoColor=white)](#)\n[![Ansible](https://img.shields.io/badge/Ansible-ee0000?style=for-the-badge\u0026logo=ansible\u0026logoColor=white)](#)\n[![Terraform](https://img.shields.io/badge/Terraform-7c3aed?style=for-the-badge\u0026logo=terraform\u0026logoColor=white)](#)\n[![Docker](https://img.shields.io/badge/Docker-0ea5e9?style=for-the-badge\u0026logo=docker\u0026logoColor=white)](#)\n[![Kubernetes](https://img.shields.io/badge/Kubernetes-326ce5?style=for-the-badge\u0026logo=kubernetes\u0026logoColor=white)](#)\n[![Git](https://img.shields.io/badge/Git-f05032?style=for-the-badge\u0026logo=git\u0026logoColor=white)](#)\n[![AI](https://img.shields.io/badge/AI-111827?style=for-the-badge\u0026logo=openai\u0026logoColor=white)](#)\n\n\u003c/div\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003e25+ years\u003c/strong\u003e\u003cbr /\u003eproduction infrastructure\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003eDevOps\u003c/strong\u003e\u003cbr /\u003eautomation-first delivery\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003eNetwork security\u003c/strong\u003e\u003cbr /\u003eBGP, RTBH, threat feeds\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003eAI\u003c/strong\u003e\u003cbr /\u003eops, reporting, tooling\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003e I help turn complex infrastructure into platforms that are easier to operate, easier to recover, and easier for teams to trust.\n\n## I Build Infrastructure That Keeps Its Promises\n\nI'm Simon, a UK-based Senior Linux, DevOps, and Platform Engineer with 25+ years of experience building, fixing, automating, and improving production systems.\n\nMy work sits where infrastructure, automation, networking, storage, security, and pragmatic software engineering meet. I have spent my career keeping real platforms alive: ISP environments, build systems, Docker and Kubernetes estates, virtualisation platforms, storage, DNS, mail, routing, monitoring, backup, and the operational tooling around them.\n\nThese days I am especially interested in the layer between operations and software: the Go and Python tools, CI/CD workflows, Ansible roles, Terraform plans, AI-assisted workflows, and small internal services that turn repeated human effort into reliable platform behaviour.\n\nI am also actively exploring AI-assisted operations: not hype for its own sake, but useful automation, summarisation, reporting, developer support, and internal tools that help engineers understand systems faster and make better decisions.\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"./assets/operator-terminal.svg\" alt=\"Animated operator terminal showing whoami, mission, and current interests\" /\u003e\n\n\u003c/div\u003e\n\n## What I Bring\n\n| Area | Signal |\n| --- | --- |\n| **25+ years in production infrastructure** | Linux, networking, ISP operations, virtualisation, storage, mail, DNS, monitoring, support escalation, and mentoring |\n| **DevOps and platform engineering** | Ansible, Terraform, Packer, GitHub Actions, GitLab, Jenkins, CI/CD, Docker, Compose, Kubernetes, and automation-first operations |\n| **Systems programming for operators** | Go and Python CLIs that are small, inspectable, automation-friendly, and built around real operational workflows |\n| **Network and service reliability** | BGP-aware routing, VPNs, HAProxy, Postfix, Dovecot, DNS, observability, backups, and high-availability service design |\n| **Modern internal tooling** | Python Flask apps, PowerShell automation, API integrations, web scraping where needed, and AI-assisted reporting workflows |\n| **AI adoption** | Applying AI where it improves operational clarity: summarisation, internal reporting, workflow assistance, and human-in-the-loop automation |\n\n## How I Tend To Help\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003cstrong\u003eStabilise\u003c/strong\u003e\u003cbr /\u003e\n      Understand the platform, find the real failure modes, and reduce operational noise.\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003cstrong\u003eAutomate\u003c/strong\u003e\u003cbr /\u003e\n      Replace fragile manual steps with code, pipelines, checks, and repeatable workflows.\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003cstrong\u003eModernise\u003c/strong\u003e\u003cbr /\u003e\n      Move systems forward without losing sight of reliability, recovery, and the people operating them.\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Selected Public Work\n\nA few public examples of the kind of tooling I like to build: practical, operator-facing, and designed to solve specific production problems cleanly.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\" valign=\"top\"\u003e\n      \u003ch3\u003e\u003ca href=\"https://github.com/soakes/blackhole-threats\"\u003eblackhole-threats\u003c/a\u003e \u003cimg src=\"https://img.shields.io/github/stars/soakes/blackhole-threats?style=flat\u0026label=%E2%98%85\u0026color=ffb800\" /\u003e\u003c/h3\u003e\n      \u003cp\u003eAutomates network threat response by turning threat feeds into BGP blackhole announcements in real time.\u003c/p\u003e\n      \u003cp\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Go-00ADD8?flat\u0026logo=go\u0026logoColor=white\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/BGP-38BDF8?flat\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/GoBGP-8B5CF6?flat\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/RTBH-EF4444?flat\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Threat_Intel-F97316?flat\" /\u003e\n      \u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"50%\" valign=\"top\"\u003e\n      \u003ch3\u003e\u003ca href=\"https://github.com/soakes/s3ctl\"\u003es3ctl\u003c/a\u003e \u003cimg src=\"https://img.shields.io/github/stars/soakes/s3ctl?style=flat\u0026label=%E2%98%85\u0026color=ffb800\" /\u003e\u003c/h3\u003e\n      \u003cp\u003eCLI for provisioning S3 buckets, scoped IAM credentials, and batch operations across object-storage estates at scale.\u003c/p\u003e\n      \u003cp\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Go-00ADD8?flat\u0026logo=go\u0026logoColor=white\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/S3-F59E0B?flat\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/IAM-10B981?flat\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Object_Storage-3B82F6?flat\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/DevOps-0D9488?flat\" /\u003e\n      \u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\" valign=\"top\"\u003e\n      \u003ch3\u003e\u003ca href=\"https://github.com/soakes/s3mirror\"\u003es3mirror\u003c/a\u003e \u003cimg src=\"https://img.shields.io/github/stars/soakes/s3mirror?style=flat\u0026label=%E2%98%85\u0026color=ffb800\" /\u003e\u003c/h3\u003e\n      \u003cp\u003eProduction-ready S3 mirroring with parallel transfers, safe deletion, and automation-friendly config for disaster recovery and data migration.\u003c/p\u003e\n      \u003cp\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Python-3776AB?flat\u0026logo=python\u0026logoColor=white\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/boto3-F7B52B?flat\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/S3-F59E0B?flat\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/CI%2FCD-8B5CF6?flat\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Disaster_Recovery-EF4444?flat\" /\u003e\n      \u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"50%\" valign=\"top\"\u003e\n      \u003ch3\u003e\u003ca href=\"https://github.com/soakes/telegram-message-exporter\"\u003etelegram-message-exporter\u003c/a\u003e \u003cimg src=\"https://img.shields.io/github/stars/soakes/telegram-message-exporter?style=flat\u0026label=%E2%98%85\u0026color=ffb800\" /\u003e\u003c/h3\u003e\n      \u003cp\u003eRecovers and exports Telegram messages offline on macOS, decrypting local databases to HTML, Markdown, and CSV.\u003c/p\u003e\n      \u003cp\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Python-3776AB?flat\u0026logo=python\u0026logoColor=white\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/SQLite-003B57?flat\u0026logo=sqlite\u0026logoColor=white\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/SQLCipher-34D399?flat\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/macOS-333333?flat\u0026logo=apple\u0026logoColor=white\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Forensics-F97316?flat\" /\u003e\n      \u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\" valign=\"top\"\u003e\n      \u003ch3\u003e\u003ca href=\"https://github.com/soakes/quotai\"\u003equotai\u003c/a\u003e \u003cimg src=\"https://img.shields.io/github/stars/soakes/quotai?style=flat\u0026label=%E2%98%85\u0026color=ffb800\" /\u003e\u003c/h3\u003e\n      \u003cp\u003eLightweight CLI for tracking quota usage and reset windows, designed as a daily developer/operator utility.\u003c/p\u003e\n      \u003cp\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Python-3776AB?flat\u0026logo=python\u0026logoColor=white\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/CLI-34D399?flat\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Monitoring-38BDF8?flat\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Developer_Tools-8B5CF6?flat\" /\u003e\n      \u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"50%\" valign=\"top\"\u003e\n      \u003ch3\u003eBuilt For Operators\u003c/h3\u003e\n      \u003cp\u003eSmall, inspectable tools that work in shells, CI jobs, cron, systemd timers, Ansible workflows, and real incident-response situations.\u003c/p\u003e\n      \u003cp\u003e\n        \u003cimg src=\"https://img.shields.io/badge/automation--friendly-38BDF8?flat\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/documented-34D399?flat\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/recoverable-F97316?flat\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/production--minded-8B5CF6?flat\" /\u003e\n      \u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Operating Principles\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003cstrong\u003eCalm Production\u003c/strong\u003e\u003cbr /\u003e\n      Designing infrastructure that is boring for users and clear for operators.\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003cstrong\u003eUseful Automation\u003c/strong\u003e\u003cbr /\u003e\n      Replacing manual runbooks with tested automation and readable code.\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003cstrong\u003eOperator Tooling\u003c/strong\u003e\u003cbr /\u003e\n      Building CLIs and services that fit cron, systemd, CI/CD, and Ansible.\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003cstrong\u003ePlatform Clarity\u003c/strong\u003e\u003cbr /\u003e\n      Making storage, networking, routing, and services easier to reason about.\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003cstrong\u003eDeveloper Velocity\u003c/strong\u003e\u003cbr /\u003e\n      Improving build platforms so engineers can ship without fighting machinery.\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003cstrong\u003eTeam Lift\u003c/strong\u003e\u003cbr /\u003e\n      Mentoring engineers, documenting well, and raising the operational quality bar.\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Engineering Style\n\n```text\nAutomate the repeatable.\nDocument the surprising.\nDesign for recovery.\nKeep production calm.\nMake the next fix easier than the last one.\n```\n\n## Core Toolbox\n\n```text\nLinux        Debian, Ubuntu, Red Hat-family systems, macOS, Windows Server\nAutomation   Ansible, Terraform, Packer, GitHub Actions, GitLab, Jenkins\nRuntime      Docker, Docker Compose, Kubernetes, systemd, HAProxy\nCode         Go, Python, Bash, PowerShell, Flask, API integrations\nNetwork      DNS, BGP, OSPF, VPNs, VLANs, NAT, routing, firewalls\nServices     Postfix, Dovecot, Nginx, Apache, Bind, monitoring, backup\nPlatforms    Proxmox, VMware, XenServer, Nutanix, KVM, NetApp, Pure, Nimble\n```\n\n## GitHub\n\nThis profile is a public slice of the work I care about: infrastructure tools, operational notes, experiments, and production-minded utilities from years spent close to the metal.\n\n\u003cdiv align=\"center\"\u003e\n\n[GitHub profile](https://github.com/soakes) |\n[Public repositories](https://github.com/soakes?tab=repositories)\n\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cstrong\u003eUseful infrastructure. Clear automation. Calm production.\u003c/strong\u003e\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoakes%2Fsoakes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoakes%2Fsoakes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoakes%2Fsoakes/lists"}