edwin

all systems operational

Hi, I’m Edwin.I build infrastructure that stays up, and an MMORPG that won’t die.

Lead DevOps Engineer at Kongsberg Discovery, working on Azure, Terraform, Kubernetes and helping engineers get good with AI. At home: a rack of Proxmox servers and Ugaris, the game I’ve kept alive since 2014.

Sande i Vestfold, NorwayNL → NO since 2011

# about

Infrastructure, from the inside out.

I'm a Lead DevOps Engineer at Kongsberg Discovery, where I modernize CI/CD and Azure platform infrastructure, and coach engineers on working with AI tools.

Before that I worked on infrastructure at Nord Pool, one of Europe's power exchanges, and was the only technical lead on an event platform at Tappin.

Outside of work I've spent more than ten years building Ugaris, an MMORPG I played as a kid. In 2026 I added Ons Klaverjas, a Dutch card game for the whole family. Both run on my homelab.

It all started with a forum in high school. Then came voice servers for gaming clans, and a ladder system I had to learn to code for. I build things because I need them, and I like knowing how stuff works all the way down. Whether that’s a branch policy in Azure DevOps or a C struct from 2002 that someone memcpy’d into a database.

Cloud & Infrastructure

  • Azure
  • AKS
  • Kubernetes
  • Talos Linux
  • Proxmox VE
  • ZFS
  • Cloudflare
  • AWS

Infrastructure as Code

  • Terraform
  • Ansible
  • Sealed Secrets
  • Helm

CI/CD & GitOps

  • Azure Pipelines
  • GitHub Actions
  • ArgoCD
  • Docker

Observability

  • Prometheus
  • Grafana
  • Loki
  • Alertmanager
  • Azure Monitor

Networking & Security

  • VLAN design
  • Cilium
  • MetalLB
  • Traefik
  • VPN
  • PKI / TLS
  • CIS hardening

Languages

  • C / C++
  • Rust
  • Go
  • Kotlin
  • Python
  • TypeScript
  • GDScript
  • PHP
  • SQL
  • Bash

Data

  • MariaDB / MySQL
  • ProxySQL
  • Flyway
  • PostgreSQL
  • Valkey
  • Kafka

Ways of working

  • AI-assisted engineering
  • On-call & incident response
  • Mentoring
  • Vendor management

# experience

Where I've worked.

Platform and DevOps work in Norway, at companies where downtime gets expensive quickly.

  1. Lead DevOps Engineer

    Kongsberg Discovery

    Apr 2025 → Present1 yr 7 mo · Horten, Norway · Hybrid

    Leading CI/CD and Azure platform work for a maritime technology company, and coaching engineers on AI-assisted development.

    Highlights6
    • Modernizing CI/CD across Azure DevOps and writing the reference pipeline definitions other teams now build, test and deploy from.
    • Leading large Azure infrastructure migrations with minimal disruption to production.
    • Running Azure DevOps governance: branch policies, service connections, variable groups and repository conventions.
    • Writing Terraform and Ansible for Azure, so provisioning across landing zones and subscriptions is reproducible and auditable.
    • Designing the platform on AKS, Azure Container Registry and Azure Monitor.
    • Coaching engineers on using LLMs day to day, including GitHub Copilot, OpenCode and AGENTS.md-driven workflows.
    • Azure
    • Azure DevOps
    • AKS
    • Terraform
    • Ansible
    • Azure Monitor
    • ACR
    • Prometheus
    • Grafana
  2. DevOps Engineer

    Nord Pool

    Oct 2022 → Mar 20252 yrs 6 mo · Oslo, Norway · Hybrid

    Infrastructure for one of Europe's biggest power exchanges, where the trading platform can't go down.

    Highlights6
    • Led a migration of infrastructure between Azure Intune environments with minimal downtime.
    • Wrote and maintained the Terraform for Azure, replacing manual provisioning.
    • Built hardened CIS images with Ansible as part of the Azure security baseline.
    • Helped design Landing Zones to strengthen security and compliance.
    • Negotiated vendor contracts that cut costs significantly without lowering service quality.
    • Took part in the 24/7 on-call rotation for incident response.
    • Azure
    • Terraform
    • Ansible
    • Kubernetes
    • ArgoCD
    • Kafka
    • GitHub Actions
    • Cloudflare
    • Prometheus
    • Grafana
  3. Senior Software Engineer → Technical Lead

    Tappin

    May 2019 → Oct 20223 yrs 6 mo · Oslo, Norway

    Joined as a senior engineer and became the sole technical lead of a high-traffic online event platform.

    Highlights5
    • Took over all technical operations as the company's only technical lead.
    • Led the rewrite of an outdated PHP version, improving both performance and security.
    • Designed, built and ran the high-traffic event platform, including live chat, voting and speaker management.
    • Hired, trained and mentored a new technical team.
    • Kept a large legacy application running while modernizing its key components.
    • PHP
    • Laravel
    • AWS
    • Kubernetes
    • MySQL

Full CV

# side-quest/ugaris

Ugaris, the game I couldn't let go.

Ugaris: The Legend Recovered

Live · Steam release coming soon

Ugaris is the game I played as a kid and the place I met my wife. In 2014 Daniel Brockhaus open-sourced Mercenaries of Astonia, and I grabbed the code the day it went public.

At first I just wanted to see if I could get it to compile. Twelve years later it's a free-to-play isometric MMORPG with a small group of loyal players who log in every day, and it has a Steam page.

Lead Developer & Project Lead

1,300+
Registered accounts
since 2014
Years in production
dev · ppe · prod
Environments
~100
Discord members

$ ls ~/ugaris

  • Game serverCThe original core, still running. Each area runs as its own container.
  • ClientGodotRebuilt interface, zoom and lighting, minimap and world map, voiced NPCs. Replaced the SDL client and the Electron launcher.
  • GatewayRustKeeps one player connection open and routes logins and area transfers between server instances.
  • Chat serverC++Real-time chat, bridged to Discord.
  • APIRustAccounts, characters, clans, leaderboards and the shop. Replaced an earlier Go version.
  • WebsiteSvelteKitReplacing the old PHP site, after a first attempt in Astro.
  • Discord botPythonTwo-way chat sync between Discord and the game.
  • DataMariaDB · FlywayA three-node replicated cluster behind ProxySQL. Every schema change is a Flyway migration.
  • BusValkeyChat, clan notices, heartbeats and other messages between the game areas.
  • ResourcesPythonEvery sprite, sound and font catalogued in one repo and packed into release builds.
  • DistributionGitHub Actions · SteamNew builds go straight to an internal test branch on Steam, and get promoted to the public after approval.

$ git log

  1. v0.1

    Fork

    Mercenaries of Astonia goes open source. Forked it, got it compiling, and ran it on a Hetzner server way too big for it.

  2. v0.2

    Accounts

    The first sign-up page: PHP calling C executables. It worked. Nobody should look at it.

  3. v1

    Community site

    Player profiles, high scores, clans and spawn timers. The point where old friends started finding each other again.

  4. v2

    BLOB migration

    Every raw memory dump of quest, NPC and character data became proper tables. It took months and it was scary.

  5. v3

    Data layer

    Connection pooling, then ProxySQL. The database stopped being a single fragile connection.

  6. v4

    Containers

    Moved from bare metal to Docker, with each game area in its own container and full CI/CD.

  7. v5

    Real environments

    Moved to Ansible-managed VMs on an isolated network, with separate dev, pre-production and production environments and a replicated database cluster.

  8. v6

    Web rewrite

    A Go API and an Astro site first, then rewritten again as a Rust API with a SvelteKit frontend.

  9. v7

    Godot client

    One Godot client replaces the old SDL client and the Electron launcher. Steam sign-in, a rendered minimap and world map, and voiced NPCs.

  10. v8

    Pipeline

    A Rust gateway in front of the servers, Flyway migrations, a catalogued resource repo, and automated Steam builds.

  11. next

    Steam & content

    The public Steam release, crafting and resource gathering, and lots of new areas and quests. Levels 130 to 150 are already being tested.

The BLOB migration is still the thing I’m most proud of. The original server saved quest, NPC and character data as raw memory dumps. Turning all of that into proper tables, one reversible migration at a time without losing any player data, took months.

Read the full story

# homelab

A data center in my house.

It started with a forum I hosted in high school. Then came voice servers for gaming clans, a Hetzner server running up to twenty sites, a laptop that overheated during a gaming event, a Raspberry Pi, and a couple of second-hand desktops from Finn.no. Today it's a full rack in Vestfold.

120+
CPU threads
224+ GB
RAM
~100 TB
Storage
6
Talos nodes
120+
Pods
40+
ArgoCD apps
proxmox cluster · 4 nodesvestfold, no

tully

“Family, Duty, Honor”

Smart home

Home Assistant, NVR with object detection, Zigbee, MQTT, automations, a mail gateway, Nextcloud, and a third of the Kubernetes control plane.

hw
HP EliteDesk 800 G2
cpu
i7-6700 · 8 threads
ram
32 GB
disk
1 TB SSD (ZFS)

baratheon

“Ours Is the Fury”

NAS

Serves NFS to the cluster for media, photos, app data and the control-plane disks. Snapshotted and backed up off-site with restic.

hw
Dell PowerEdge
disk
42 TB usable · ZFS

greyjoy

“We Do Not Sow”

Backups & compute

Proxmox Backup Server for every VM in the cluster, plus a Kubernetes control-plane node and two workers.

hw
Dell PowerEdge R730xd
cpu
2× Xeon E5-2690 v4 · 56 threads
ram
64 GB
disk
24 × 900 GB · 2× RAIDZ2

arryn

“As High as Honor”

Kubernetes & Ugaris

Ugaris dev, pre-production and production, the replicated MariaDB cluster, PostgreSQL and Valkey, CI runners, monitoring, and Talos nodes on a ZFS pool.

hw
Dell PowerEdge R730xd
cpu
2× Xeon E5-2680 v4 · 56 threads
ram
128 GB
disk
12 × 3 TB · RAIDZ2

The stack

Six Talos nodes, with the three control-plane nodes on three different physical hosts. Any one box can die without taking Kubernetes down with it.

Hypervisor
  • Proxmox VE 9 cluster
  • ZFS
  • Proxmox Backup Server
Kubernetes
  • Talos Linux
  • Cilium
  • MetalLB
  • Traefik
  • cert-manager
GitOps
  • ArgoCD
  • Sealed Secrets
  • Terraform
  • Ansible
Observability
  • Prometheus
  • Grafana
  • Loki
  • Alertmanager
  • Uptime Kuma
Network
  • UniFi Dream Machine Pro
  • USW Pro 24 PoE
  • 3× U7 Pro
  • 10+ VLANs

What it runs

  • Ugaris (dev · ppe · prod)
  • Smart home & cameras
  • Media & audiobooks
  • Photo library
  • Password vault
  • DNS ad-blocking
  • Side-project sites
  • Self-hosted AI tooling
  • Off-site backups

Do I need a six-node Kubernetes cluster at home? No. But most of what I use at work I learned here first, usually while something was on fire.

The homelab odyssey

# projects

Other things I've built and run.

Small sites for small communities. Most of them run on the homelab too.

Card game · Android & web

Ons Klaverjas

Klaverjassen like at the kitchen table: big Dutch cards, no rush, free and without ads. Play against the computer or online with family and friends, with challenges, tournaments and lessons for people who are new to the game.

  • Kotlin
  • TypeScript
  • PostgreSQL
  • coturn

onsklaverjas.nl

Community site · Age of Mythology

AoM Guides

God guides, strategies, videos and recorded games for every version of Age of Mythology, from the original to Retold. Recently rebuilt from PHP 7.4 to a modern stack.

  • TypeScript
  • PostgreSQL
  • Docker

aomguides.com

Guide · Old-school MMO

Ashen Empires: Beginner's Route

A quest-by-quest route from the beach of Valinor to level 30. The whole guide is one Markdown file, and the walkthrough images get collected and credited automatically.

  • Python
  • Markdown
  • GitHub Pages

eddoww.github.io/ashen-empires-beginners-guide

Gaming community · since 2012

Uncut Gaming

A multi-game community founded in 2012: League, Minecraft and ARK, with TeamSpeak, forums and meet-ups in Greece, England, Belgium and the Netherlands. The servers are quiet now, but the Discord is still there.

  • Community
  • TeamSpeak
  • Forums

uncutgaming.com

# writing

Stuff I've written.

# life

Away from the keyboard.

I grew up in the Netherlands and moved to Norway in 2011. After years in Bærum and Oslo we settled in Vestfold in 2025, where I live with my wife and our son.

When I'm not behind a screen I'm usually at a table playing board games, or Dungeons & Dragons whenever the group manages to find a date that works for everyone.

Dungeons & Dragons

The best kind of multiplayer. Of course I ended up self-hosting a tool for our campaign notes.

Metal & Graspop

Graspop Metal Meeting in Belgium. I built a planner so my friends and I could rate the bands and plan our days.

Keeping old games alive

Astonia, Ashen Empires, Age of Mythology. Old games deserve guides, servers and people who still care about them.

Smart home tinkering

Zigbee, Home Assistant, and cameras that can tell a person from a passing car. Most of the time anyway.

Say hello.

Want to talk platform work, homelab stuff or Spirit Island? Or did you play Astonia twenty years ago? Send me an email.

[email protected]