Technical Support Engineer · an enterprise data-storage company

EV EV.

Pragmatic, delivery-oriented engineer with a weakness for reliability, radio antennas, the south coast of Ireland — and, lately, building things with AI. I dig into the toughest enterprise support cases at work — and run a 24/7 ship-tracking station from a Raspberry Pi at home.

glad you're here ⚓

0+ years building & shipping
0 live services on the home-lab Pi
0% fewer tests via hackathon optimisation
24/7 home-lab uptime discipline

Dia duit, I keep things running.

I'm a Technical Support Engineer at an enterprise data-storage company in Ireland. My work is the deep end of troubleshooting: logs, traces and configs across enterprise data-management platforms, getting customers unstuck and their backups bulletproof.

Off the clock I apply the same discipline to my home lab. A Raspberry Pi with an RTL-SDR dongle and a rooftop antenna decodes AIS signals from real ships off the Irish coast and NOAA weather-satellite passes overhead, around the clock. Every service ships with tests on push, pull-based deploys and auto-rollback — because home projects deserve production standards too.

My main interest right now is vibe coding — pairing with AI to go from idea to working software at a pace that wasn't possible a few years ago. Most of what I ship these days, from the maritime dashboard to this very site, started life as a conversation with a model.

I got into engineering through hackathons and curiosity — my team won the university's Open Data Hackathon in the city with a pool-testing optimisation that cut the COVID-19 tests Ireland needed by 45%.

Things I've built & run.

🤖 Agent loop 2026

radar

An autonomous improvement loop for everything else on this page: at 01:00 an agent writes the daily devlog and proposes what's next; at 04:00 a second agent picks one idea and ships it — code, tests, docs, brand-new repos included. Fifteen ledger entries in: a dead-man's switch, an ntfy notification backbone, borg backups with a weekly restore drill, an upstream release watcher, a service uptime scoreboard, an alert-storm kill switch — one flag that silences every notification on the box — nightly chaos drills that break things on purpose and check the box notices, the architecture reference that maps every running unit, a heal ledger that makes the self-healer show its work, and a Prometheus + node_exporter scrape backbone that answers the RAM question with ~102 MB — then a ledger dig that corrected itself: the 09-03 "healers never deployed" verdict was wrong, they were Hermes-cron jobs, live and green all along; the empty heal ledger just means a healthy box. Prom step 2 was concretised into a stdlib prom-dash — Grafana isn't even in Debian trixie — so the pinned graphs render on demand at ~0 MB resident, and the board has now recorded the step Done with receipts (220/220 pytest, a live 24-hour render, docs matching the shipped code). Then the heal ledger, empty through August, stopped being empty: five ci-rerun entries since 09-05 all trace to one ruff F821 in the Train self-evaluation hook — not a flake — and the mine paid out on 09-07 with a one-line import fix (9e78d03) and closed itself on 09-08: the last two CI-only hermeticity tests fixed (aa54bd4), the first fully green CI run since 09-05 recorded, and a heal that fired five times since 09-05 with no job left. The very next pick, Prom step 3a — the ntfy /metrics scrape — shipped the following morning with receipts: loopback :9091 joined prometheus.yml, the one planned ntfy restart done at the quiet 05:32 hour, live up{job="ntfy"}=1, 220/220 pytest, leaving step 3b, the alerting-consumer decision, as the open item. The idea ledger, every run and every failure are public.

  • AI agents
  • Hermes cron
  • pytest
  • Autonomy
View on GitHub
Release candidate 2026

Hermes Train

A personal CS2 coach that measures real gameplay mechanics server-side — crosshair offset at fire, counter-strafe stop quality, burst discipline — via a CounterStrikeSharp plugin, 497 scenarios across the Active Duty pool, and a deliberate-practice engine that builds timed sessions around measured weaknesses. A coach brain on top — an intelligence ledger, Player DNA, adaptive sessions, demo analysis — decides what to train and says "not enough data" when it can't. It reached release candidate with receipts: 54/54 live scenario runs passed on a real server (6 maps × 3 modes), fourteen release gates green, and a customer side went up with it — public landing page, real accounts, a Train library with history and progress. Since the verdict the first post-release features have started landing overnight: a redesigned, map-centric coach app, a routine generator that actually prescribes, an arena trainer with personal bests, and practice bots with real reaction time. Then the validity pass went through the corpus: an audit engine over all 581 scenarios — honest labels, contracts everywhere — a crosshair-placement scoring dimension, blind-review QA with a false-progress detector, real-geometry spatial validation, and a security pass that moved runtime data out of the repo. The last gate is still a human in the seat. The game server spawns on a rented cloud box only while you train; Hetzner CPU boxes are the default now — a practice server never needed the GPU — and the control plane lives on the Pi.

  • CS2
  • CounterStrikeSharp
  • Deliberate practice
  • Hetzner / RunPod
View the tour
Just shipped 2026

ShelfMate

Paste a Goodreads profile link, get twelve book recommendations with reasons — no account, no API key, no tracking. Built on the public RSS shelf feed Goodreads forgot to wall off and rating-weighted subject profiles from Open Library. Python stdlib only; tests, CI and pull-based deploys included.

  • Python stdlib
  • Open Library
  • Recommender
  • pytest CI
View on GitHub
Touchscreen kiosk 2026

CS2 Dashboard

Pro Counter-Strike tracker for the kitchen touchscreen: live series and near-live round scores, a week of upcoming matches with countdowns, and results — fed by Liquipedia's parse API, with a Camoufox headless-browser scraper filling in match details.

  • Flask
  • Liquipedia API
  • Camoufox
  • Kiosk
View on GitHub
Ops 2026

Project Hub

Single-page operations portal for my Raspberry Pi home server: live port and systemd health for every project on the box, an uptime scoreboard fed by five-minute probes, host vitals, pull-based CD with auto-rollback. The bookmark I actually use dozens of times a day.

  • Flask
  • systemd
  • Self-hosted
  • CI/CD
View on GitHub
Ops 2026

pi-cicd

The CI/CD machinery that runs the Pi itself: a project-guard that auto-adopts and versions every directory on the box, pull-based deploys with compile gates, health checks and automatic rollback, loop-heartbeat — a dead-man's switch that pages when any scheduled job goes silent — an ntfy notification backbone with one topic per job and a one-flag kill switch for alert storms, pi-backup with a weekly restore drill that byte-compares the recovery, release-watch digesting upstream releases, service-probe taking the box's pulse every five minutes, chaos-drill breaking things on purpose each night to prove the monitoring notices, a CI audit that self-heals what it finds — and logs every fix to a heal ledger the portal displays — and pi-doctor auditing every project each morning — and a prom-dash that answered the Grafana question with a stdlib script: the pinned CPU-vs-load and unit-state graphs as one self-contained HTML page, on demand, ~0 MB resident. The architecture reference for how everything here ships.

  • Git
  • systemd
  • GitHub Actions
  • Auto-rollback
View on GitHub
Paused 2026

ais_analysis

A from-scratch AIS decoder for the signal pile the rooftop antenna collected: GMSK demodulation, bit-timing recovery, HDLC framing and message parsing in pure Python — built test-first. The synthetic round trip works end to end; decoding the real capture is parked on a branch until I circle back.

  • DSP
  • Python
  • pytest
  • RTL-SDR
View on GitHub

One Pi, everything on it.

Almost everything on this page runs 24/7 on a single Raspberry Pi 5 in the city — a ship-tracking RF station and weather-satellite receiver, the DNS for the whole house, pro and personal CS2 trackers, pull-based deploys with auto-rollback, and a pair of AI agents that write the devlog and ship improvements while I sleep — watched over by a dead-man's switch, probed every five minutes, paged through a notification server, audited over breakfast, and backed up nightly to deduplicated archives that prove themselves in a weekly restore drill.

ROOFTOP ANTENNA
AIS 162 · NOAA 137 MHz
INTERNET
GitHub CI · live data feeds
TAILSCALE VPN
phones · laptops · anywhere
RASPBERRY PI 5 · 8 GB
LAN + tailnet · Ireland
24/7
RF / SDR STACK
RTL-SDR tuner gain 40
AIS-CATCHER :8080 · ship decoder
SDR-MONITOR signal health
NOAA SCHED pass recorder
SAT-AUDIO :8085 live audio
ONLINE-SHIPS live vessel backup ☁ aisstream.io
WEB SERVICES
MARITIME DASHBOARD :8000 · AIS + NOAA + fleet
CS2 DASHBOARD :8001 · matches + live scores ☁ hltv.org
CS2 TRACKER :8092 · FACEIT + Premier ☁ Steam · GSI
PROJECT HUB :8090 · ops portal
SHELFMATE :8086 · book recommendations ☁ Goodreads · Open Library
KIOSK HOME :8091 · launcher
ADGUARD HOME :53 DNS for the whole house · admin :3001
OPS & AGENTS
PULL-BASED CD 3-min poll · auto-rollback ☁ GitHub Actions
PROJECT-GUARD adopts repos · adds CI
HERMES GATEWAY agents · tools · messaging
CRON · AI AGENTS devlog · radar · 07:00 doctor
HEALTH WATCHDOG every 30m · no-agent script
PIPELINE CHECK hourly · CI compliance audit
NTFY BUS topic per job · deny-all
TS FUNNEL public HTTPS · /shelfmate
CLOUD BURST on-demand worker · budget-guarded
TOUCHSCREEN KIOSK
Weston + Chromium
HOUSE NETWORK
every device · DNS here
PUBLIC SITE
pkia.github.io · devlog
RF / satellite web / data remote / agents
  • Pi 5 · 8 GB
  • 15 network services
  • 12 cron jobs
  • Tailscale VPN
  • AdGuard DNS
  • auto-rollback CD
  • borg backups + drills
  • pytest on every push

Where I've worked & studied.

Technical Support Engineer

an enterprise data-storage company · Ireland

Present

Supporting enterprise data-management customers: deep troubleshooting of backup and restore issues, escalation management, and working with engineering to make the product more reliable one case at a time.

University in the city

Ireland · Computer Science

2018 – 2022

Computer science coursework across software engineering, algorithms and data science; hackathon regular on the side.

A short timeline.

  1. Now

    Support engineer, ship spotter, agent supervisor

    Deep-dive troubleshooting by day; AIS receivers, satellite decoders and ops portals on a Pi by night — now orchestrated by a devlog → implementer loop of agents that ships while the city sleeps, pages me when something breaks, takes the box's pulse every five minutes, proves its own backups in a Sunday restore drill, and audits every project on the box over breakfast.

  2. 2025 – 2026

    The home lab gets serious

    A maritime dashboard, a service portal, pytest suites and auto-rollback. The turning point was treating side projects like production systems.

  3. 2021

    Hackathon win & first team projects

    Won the university's Open Data Hackathon in the city with a 45% pool-testing optimisation; built Tweet Guard, an NLP abuse scanner, with four teammates.

  4. 2018

    First commit

    Joined GitHub as a student in the city and started shipping — scrapers, stock models, linked lists and everything in between.

Let's talk.

Happy to talk reliability engineering, Raspberry Pi experiments, radio, or the city's maritime traffic. The fastest way to reach me is GitHub — I read everything.