Until summer 2023 I wrote code by hand. Then came AI assistants: copying files and single functions back and forth between ChatGPT in the browser and VS Code. Since early 2025, coding agents work directly in my repositories. You can see each shift in how much I ship and in how big a single commit gets. Hover the charts for details.

The numbers

Output per month

Contributions

Less More

How big a single commit gets

Share of commits per quarter that change 150 lines or more. Hand-typed work moves in small steps; pasted and generated code arrives in large ones.

A new project's first week

Lines changed in the first seven days of each project. Each dot is a project; the tick marks the median.

When I code

Commits by weekday and hour of day.

What I write

Share of each year's changed lines per language.

Lines changed excludes lockfiles, vendored and generated files, and one-off bulk imports. It measures output, not value.

YearNew projectsActive projectsCommitsLines changed
20121141,749▏
202088593,430▏
2021482559,610▏
202212171,15220,718█
202318312,24962,171██
202419351,736121,333████
202530452,623380,701████████████
2026 (to Nov 3)18435,226743,182████████████████████████

Infrastructure

Torden — the homelab

Everything personal runs on Torden, a self-hosted Kubernetes platform at home, declared in one GitOps repository I have committed to since 2022 (1,500+ commits).

  • Cluster & delivery: MicroK8s on home servers and Raspberry Pis, Argo CD in an app-of-apps pattern, a Helm umbrella chart for the cluster, and MetalLB for load balancing. All ~40 applications are deployed from git; no manual kubectl apply.
  • Edge & networking: Traefik ingress, Cloudflare Tunnels (managed by my own cf-tunnel-operator) so no ports are open at home, Tailscale and WireGuard for remote access, Blocky for network-wide DNS filtering, and Cloudflare DDNS. IoT devices live on a segmented network.
  • Identity & secrets: Pocket ID (passkey OIDC) for single sign-on, HashiCorp Vault for runtime secrets, Vaultwarden and Passbolt for passwords, and git-backed encrypted secrets.
  • Code & CI: two forges — code.torden.tech (Forgejo, current) and git.torden.tech (Gitea, legacy) — with Actions runners, Drone CI and a built-in container registry. Pushing to main builds the image, pins its digest in the app’s Helm chart and publishes the chart to the OCI registry; Argo CD picks up the new version. This site is deployed exactly that way.
  • Storage & backup: Synology NAS over NFS, plus ark8s — my own tool that snapshots cluster manifests and encrypts them with age to my GitHub SSH keys.
  • Observability: Grafana stack, metrics-server, and my own homelab agent + dashboard (Go agents on every machine reporting metrics, SMART disk health and RAID status).
  • Self-hosted apps: Paperless, Outline, Memos, Matrix, SearXNG, Plausible, ntfy, Jellyfin/Jellyseerr, Minecraft and QuakeJS servers — plus my own apps: picoblog, paste, bookmarker, qrccc, lockbox, nrk-sync, SPAM/SCAM, PRISM, CHASE and more.
  • AI: Ollama behind my own authenticating proxy (goophy) and Open WebUI.

At work — Norsk helsenett (NHN)

  • code.nhn.no — I initiated and run NHN’s Forgejo forge, including an NHN-branded fork (forgejo-nhn) with its own themes and landing page. Teams across NHN host code there today.
  • helsegitlab.nhn.no — long-time contributor: shared CI build images, container image signing and admission control proof of concept, security.txt workflow, the Security Champion documentation (500+ commits), and the internal AI documentation site.
  • Security tooling run for the organization: PRISM (pentest reporting), CHASE (attack-surface and certificate monitoring), SPAM/SCAM (software supply chain inventory across Kubernetes clusters), and Paste (zero-knowledge file sharing).

Competence

Security engineer and builder. I lead CAT, NHN’s penetration testing team, and spend the rest of my time building the tools and platforms that make security cheap for developers to do right.

AreaWhat I doEvidence
Offensive security & pentestingLead a pentest / red team; run security assessments; built our reporting platformPRISM, CHASE, osint-website-scanner, phish, multijuicer (CTF)
DevSecOps & secure SDLCSecurity Champion program, threat modeling, OWASP ASVS/CSVS, security in CI/CDSecurity Champion docs, image-signing-poc, security.txt, gitcrawl
Software supply chainSBOMs, vulnerability inventory across clusters, signed images, certificate transparency monitoringSPAM/SCAM, hubber, certstream-monitor/-forwarder, image-signing-poc
Platform & KubernetesGitOps with Argo CD, Helm, operators, rootless and unprivileged containers, ingress, tunnels, backupgitOps (1,500+ commits), cf-tunnel-operator, ark8s, scam, code.nhn.no
IdentityOIDC, passkeys, SSO for self-hosted and internal appsmocc, tinygoidc, dev-starter-template, Pocket ID rollout
BackendGo is my default (40+ projects); earlier career in C#/.NET; Python for automationpaste, homelab, lockbox, mailctl, gps-rpi-tracker
FrontendSvelteKit/Svelte, PWAs, a little React; Hugo for static sitesbookmarker, qrccc, opensurvey, picoblog
AI & agentsSelf-hosted LLM infrastructure, AI documentation at NHN, and agent-driven development as my daily way of buildinggoophy, Open WebUI, chatbot-ui, AI documentation site, kitty — and roughly 34× my hand-written output per month since coding agents arrived
Teaching & speakingHands-on workshops on containers, GitOps, Kubernetes security and secure developmentContainerkonferansen, Sikkerhetsfestivalen, NNUG, NTNU, NRK, Security Champion Norge; linux-webterminal lab platform

Most-used technologies (by project count): Docker (60), Go (41), Helm (25), SQLite (23), Python (19), Kubernetes (19), JavaScript/TypeScript (23), SvelteKit/Svelte (20), GitHub/Forgejo Actions, Drone and GitLab CI (20), Nginx, C#/.NET, Hugo, Argo CD, OIDC, HashiCorp Vault, Ollama.

All projects, by year

Newest first. 🔒 marks a private repository.

2026 — 18 new projects

ProjectWhat it isRoleCommitsActiveStack
gps-rpi-trackerSelf-hosted boat tracker, logbook, and travel blog built around Raspberry Pi GPS data.author1,6442026-07 → 2026-11Go, SvelteKit, TimescaleDB, SQLite
spamSoftware supply chain dashboard for tracking dependencies, vulnerabilities, and cluster exposure.author1,2652026-01 → 2026-07Go, SvelteKit, PostgreSQL, Kubernetes
forgejo-nhnAn NHN-branded Forgejo fork for internal Git hosting.initiator & maintainer2322026-05Go, Forgejo, CSS, JavaScript
lockboxSelf-hosted video library with HLS transcoding, uploads, and sharing.author1662026-07 → 2026-10Go, Alpine.js, FFmpeg, HLS
nrk-syncNRK series tracker that notifies you about new episodes and manages downloaded media.author772026-02 → 2026-09Bun, TypeScript, React, SQLite
scamA Kubernetes agent that reports cluster workload and service state.author772026-04 → 2026-06Go, Kubernetes, client-go, Helm
photo-importerNative macOS app that safely imports and organizes removable camera media.author452026-09 → 2026-10Swift, SwiftUI, AVFoundation, EXIF
mailctlA read-focused email client with CLI, sync services, and a local-first web interface.author442026-05 → 2026-06Go, IMAP, SQLite, PWA
minecraftScripts and tools for provisioning and administering a PaperMC server.author232026-05 → 2026-06Go, PaperMC, RCON, SSH
cf-tunnel-operatorKubernetes operator for managing Cloudflare Tunnels and hostname routes.author232026-06 → 2026-09Go, Kubernetes, controller-runtime, Helm
ocean-crosser-blogImage-led Hugo travel blog for documenting ocean voyages.author212026-08 → 2026-09Hugo, Node.js, Sharp, Nginx
riffleSelf-hosted photo culling app for importing, reviewing, and organizing photo libraries.contributor162026-02Go, React, SQLite, ExifTool
quakejs-rootlessA hardened container setup for playing multiplayer Quake III in a browser.contributor122026-04Docker, Podman, Helm, OCI
tailscale-gnome-qsGNOME Quick Settings extension for viewing and interacting with Tailscale peers.contributor62026-02 → 2026-04JavaScript, GNOME Shell, Tailscale, gettext
memos-chart 🔒A Helm chart for deploying the self-hosted Memos note-taking service.author52026-05Helm, Kubernetes, OCI, YAML
podgrab 🔒A self-hosted podcast manager that downloads and organizes episodes.contributor52026-05Go, Gin, GORM, SQLite
phishStatic analysis service that finds and explains tainted value flows in code.contributor22026-07Go, JavaScript, SSA, Gin
synology_codecs 🔒A build system for Synology codec packages across x86_64 and ARM64.contributor12026-06FFmpeg, C, Shell, Forgejo Actions

2025 — 30 new projects

ProjectWhat it isRoleCommitsActiveStack
homelabSelf-hosted infrastructure monitoring stack with a live dashboard and cross-platform agents.author7392025-10 → 2026-06Go, SvelteKit, TypeScript, WebSockets
bookmarkerCollaborative bookmark manager for organizing, searching, and reading saved links.author5592025-12 → 2026-05Go, SvelteKit, SQLite, WebAuthn
pasteA zero-knowledge file-sharing service with client-side encryption and a Go server.author5152025-02 → 2026-10Go, Svelte 5, TypeScript, WebAssembly
photolibraryA self-hosted photo library for finding, reviewing, and managing duplicate media.author1642025-05 → 2026-02Python, FastAPI, SQLAlchemy, Pillow
qrcccA QR code designer and authenticated link shortener with analytics.author1422025-09 → 2026-06Go, SQLite, SvelteKit, Web Components
linux-webterminalA browser-based DevSecOps lab with isolated shell environments and guided courses.author1402025-02 → 2026-03Python, Flask, Socket.IO, Podman
moccA lightweight Go mock OpenID Connect provider for local development and testing.author932025-10 → 2026-06Go, Gin, JWT, OIDC
hubberA dashboard for exploring Kubernetes SBOMs, components, and vulnerability reports.author832025-09Go, Kubernetes, Trivy Operator, SQLite
dokumentasjonA Hugo knowledge site documenting AI tools, models, and related infrastructure.author772025-05 → 2026-06Hugo, Markdown, Docker, Helm
mediaindexerA Go CLI and terminal dashboard for indexing, deduplicating, and organizing media archives.author612025-04 → 2026-02Go, SQLite, Cobra, Viper
matrix-minecraft-botMonitors Minecraft player activity and sends avatar-rich updates to Matrix.author562025-10Python, Matrix, SQLite, JavaScript
goophyA Go proxy that adds authentication and adapts requests for local and compatible LLM servers.author512025-04 → 2026-10Go, Ollama, vLLM, Open WebUI
kittyTerminal-first AI assistant with an interactive chat UI, agents, and plugins.co-author282025-11TypeScript, React, Ink, Node.js
dev-starter-templateA Go and SvelteKit starter app with passkey authentication, session management, and push notifications.author272025-09Go, SvelteKit, TypeScript, WebAuthn
weekly-discover-syncA music discovery pipeline that builds playlists and syncs them to Jellyfin.author262025-01Python, ListenBrainz, SearXNG, yt-dlp
timesheetA lightweight timesheet progressive web app with a Go backend.author252025-05Go, JavaScript, HTML, PWA
minecraft-graves-pluginA Paper server plugin that creates protected gravestones to recover player items and experience.author212025-10Java, Paper, Gradle, SQLite
torden-techA static landing page served from a minimal, unprivileged Nginx container.author162025-09 → 2025-10HTML, CSS, JavaScript, Nginx
speedtestA small Go network throughput tester with client and server modes.author152025-05 → 2025-07Go, pflag, Viper, Docker
gitcrawlCLI for cloning repositories, running security scans, and reviewing findings.author132025-12 → 2026-02Go, Trivy, Gitleaks, Bubble Tea
pipeline-demoA minimal Go service packaged and published through a container image pipeline.author122025-04Go, Docker, GitHub Actions
ai-placeholderA rootless Nginx site packaged for deployment on Kubernetes.contributor112025-04 → 2026-03Nginx, Docker, Kubernetes, YAML
ollama-helmA community Helm chart for deploying Ollama on Kubernetes.contributor112025-07Helm, Kubernetes, YAML, Drone CI
secrets-gpassA Git-backed password store for managing encrypted secrets.author82025-10 → 2026-05Git, GPG
stock-dashboardCollects and serves Reddit posts from configured subreddits through a small Go API.author52025-09Go, Gin, GORM, SQLite
nyancatA flower-themed Nyan Cat GIF packaged for lightweight web serving.author52025-10GIF, Docker, NGINX, GitHub Actions
text2slackA lightweight web tool for converting text into Slack-style ASCII emoji.author42025-01HTML, JavaScript, Caddy, Docker
monorepoA Minecraft server log analyzer that extracts player connection histories.author32025-03Python, Minecraft server logs
linux-git-signing-repoA Git signing exercise built around a commit-signature and typosquatting incident.contributor12025-02Git, SSH signing, JavaScript, npm
open-webuiA self-hosted web interface for chatting with local and API-hosted language models.contributor12025-10Python, FastAPI, Svelte, TypeScript

2024 — 19 new projects

ProjectWhat it isRoleCommitsActiveStack
chaseA web app for monitoring domain security posture and exposure.author4402024-12 → 2026-07Go, Svelte, PostgreSQL, OIDC
fitA fitness activity tracker for importing, storing, and exploring workout data.author3412024-09 → 2024-10Go, Gin, SQLite, GORM
opensurveyA Go web app for running interactive surveys with a live presenter view.author862024-09 → 2025-10Go, Echo, WebSockets, HTML
yaapA deployed activity-tracking app with a Go backend and responsive Svelte frontend.author842024-09Go, Gin, Svelte, Tailwind CSS
thc-nordicA static website presenting a bilingual Nordic manifesto.author532024-08 → 2024-09HTML, CSS, Nginx, Docker
certstream-monitorA Go tool for monitoring certificate transparency streams for selected domains.author462024-11 → 2026-01Go, WebSockets, Docker, CertStream
reddit-stock-scraperA Python tool for analyzing stock sentiment and interest from Reddit discussions.author442024-06 → 2025-01Python, PRAW, OpenAI, VADER
certstream-forwarderA Go service that forwards matching certificate domains to a configurable API.author142024-12 → 2025-04Go, CertStream, WebSockets, Docker
investaA SvelteKit application scaffold with SQLite experimentation and Bun-based container builds.author132024-09SvelteKit, Svelte, Bun, SQLite
osint-website-scannerA Python tool for discovering subdomains and assessing websites.author102024-11 → 2024-12Python, Selenium, BeautifulSoup, Jinja2
FastlyA small web app with progressive web app and offline support.author82024-08 → 2024-10JavaScript, HTML, CSS, Service Workers
ai-workshop-2024A workshop app exploring local retrieval-augmented generation over sensitive documents.author52024-06Python, Streamlit, LlamaIndex, Ollama
wexA Go command-line tool for extracting and converting web content to Markdown.author32024-11Go, Cobra, goquery, HTML-to-Markdown
image-organizerA command-line tool that sorts files into date-based folders.author32024-11Python, Click, Rich, ExifTool
nhn-name-analyzerA small web tool for exploring name frequency and statistics in an organization.co-author22024-09Python, HTML
homebrew-tapA Homebrew tap packaging the Wex command-line tool.author22024-11Homebrew, Ruby
outfmtA Go library for formatting generic data as tables, JSON, or YAML.contributor12024-02Go, YAML
crowdpulseA repository placeholder for a project named Crowdpulse.author12024-09
portfolioA portfolio web app built with a Go API and SvelteKit frontend.author12024-12Go, SvelteKit, Gin, GORM

2023 — 18 new projects

ProjectWhat it isRoleCommitsActiveStack
prismA vulnerability management and reporting platform for penetration testing teams.author6112023-11 → 2026-07Go, SvelteKit, Svelte, SQLite
picoblogA self-hosted Markdown blog that turns a directory of posts and media into a browsable website.author3502023-01 → 2026-06.NET MVC, C#, Markdown, Docker
ActivityTrackerUIA dashboard for exploring fitness activity metrics and history.author2302023-08 → 2024-02Svelte, SvelteKit, Chart.js, Leaflet
.profileA personal profile page and portfolio with a small browser game.author1682023-08 → 2026-05HTML, Markdown, JavaScript
sikr.wtfA personal static website packaged as an unprivileged Nginx container.author1382023-10 → 2026-05HTML, CSS, JavaScript, Nginx
security.txtA workflow and documentation project for managing an organization’s security.txt file.author1182023-11 → 2026-02GnuPG, Docker, GitLab CI, Shell
picoblog-postsA Markdown archive of personal posts and media for PicoBlog.author1172023-02 → 2023-07Markdown, Python, Day One
chatbot-uiA customizable web interface for chatting with OpenAI models.contributor1132023-07 → 2026-02Next.js, React, TypeScript, OpenAI API
ark8sA Kubernetes workload snapshot tool that encrypts backups for disaster recovery.author1022023-09 → 2026-05Go, Kubernetes, Helm, age
ActivityTrackerA Go API for processing fitness activity and health data.author842023-08 → 2024-06Go, Gin, GPX, SQLite
dashboardA self-hosted dashboard served from a lightweight .NET container on Kubernetes.author372023-05 → 2023-08.NET, C#, Docker, Kubernetes
chat-with-gptAn unofficial ChatGPT app with conversation search, speech, and sharing features.contributor282023-09 → 2023-11TypeScript, React, OpenAI API, ElevenLabs
multijuicerA hardened Kubernetes deployment for hosting team Capture the Flag events.author272023-07 → 2023-09Kubernetes, Helm, Argo CD, YAML
cloudflare-ddnsA containerized updater that keeps configured Cloudflare DNS records aligned with the current public IP.contributor232023-02 → 2025-01Python, Cloudflare API, Docker, YAML
sync-ssh-keysA shell utility for synchronizing GitHub SSH keys to authorized_keys on remote systems.author222023-05 → 2023-07Bash, SSH, GitHub API, cron
picoblog-cliA command-line tool for creating and opening Markdown posts in a PicoBlog directory.author212023-03 → 2024-01Python, Typer, Poetry, Drone CI
picoblog-editorA Go service that records GPS and weather data and displays it on a map.author122023-08 → 2023-09Go, SQLite, Docker, HTTP
jonasbg.github.ioA minimal personal GitHub Pages site.author22023-02HTML, GitHub Pages

2022 — 12 new projects

ProjectWhat it isRoleCommitsActiveStack
gitOpsA personal Kubernetes homelab managed through Argo CD and GitOps.author1,5462022-08 → 2026-10Kubernetes, Argo CD, Helm, HashiCorp Vault
documentationA community security playbook with practical guidance and tutorials.author5032022-04 → 2026-07Hugo, Markdown, Docker, Nginx
grimsgaarddevsiteA Hugo site for the owner’s developer portfolio, workshops, and professional profile.author2412022-02 → 2025-10Hugo, HTML, Docker, Drone CI
image-signing-pocA Kubernetes proof of concept for signing container images and enforcing signature verification.author1692022-12 → 2024-01Cosign, HashiCorp Vault, Kyverno, Kubernetes
gitOps-introA hands-on introduction to Kubernetes deployment and GitOps workflows.author1272022-05 → 2023-03Kubernetes, Argo CD, Gitea, Helm
gistsA collection of small utilities, examples, and self-hosting scripts.author522022-09 → 2024-05Go, Python, Shell, Docker
homer-dashboardA Docker image that packages Homer with dashboard themes and icons.author462022-03 → 2023-09Docker, Alpine, Homer, Drone CI
imageA shared build-agent image collection for GitLab CI pipelines.author192022-08 → 2023-06Docker, GitLab CI, yq, Cosign
DockerfilesA collection of Dockerfiles for build and deployment tooling.author132022-02 → 2022-04Docker, Alpine Linux, Helm, YAML
raspi-infraKubernetes configuration for Raspberry Pi services, including Pi-hole.co-author62022-05Kubernetes, YAML, Pi-hole, Raspberry Pi
grimsgaard.dev 🔒A Hugo-based developer portfolio site.author22022-02Hugo, HTML, Markdown
PawayA responsive Ghost theme for photography, travel, and personal blogs.fork-tweak22022-11Ghost, Handlebars, JavaScript, CSS

2021 — 4 new projects

ProjectWhat it isRoleCommitsActiveStack
PhotosA web utility that displays the latest available photos from a mounted folder.author1732021-03 → 2023-09C#, .NET, Svelte, JavaScript
BudgetBuddyA web app for importing and reviewing personal bank transactions.author312021-11 → 2021-12C#, .NET, Svelte, Tailwind CSS
kidsaudioplayerA Raspberry Pi audio player that repeatedly plays random songs from a folder.author132021-11 → 2023-04Python, Raspberry Pi, systemd, Shell
kubernetes-demoA hands-on demo of Kubernetes storage, replicas, and load balancing.author92021-09 → 2021-12Kubernetes, Minikube, Docker, NGINX

2020 — 8 new projects

ProjectWhat it isRoleCommitsActiveStack
MyKidA Python tool that downloads and organizes photos and videos from Mykid.author2222020-07 → 2026-05Python, Docker, Beautiful Soup, Pillow
hospitaletA scheduled tool that syncs Mingat work shifts to a CalDAV calendar.author1222020-12 → 2023-09Docker, Kubernetes, CalDAV, Shell
calendar-cliA command-line client for managing calendars and tasks on CalDAV servers.contributor362020-12 → 2023-07Python, CalDAV, iCalendar, Docker
garmin-connect-exportA fork that automates scheduled exports of Garmin Connect activities and tracks.contributor142020-12 → 2021-03Python, Docker, Supercronic, GPX
IoT-Projects 🔒A collection of firmware projects for sensors and connected devices.author62020-01C++, PlatformIO, YAML
NICA Docker Compose starter stack for Node-RED, InfluxDB, and Chronograf.author62020-02Docker Compose, Node-RED, InfluxDB, Chronograf
Tesla-Sync 🔒A shell script for syncing Tesla account data.author42020-12Shell
MING-StackA Docker Compose stack for home automation flows, time-series data, and dashboards.author22020-06Docker Compose, Node-RED, InfluxDB, Grafana

2012 — 1 new project

ProjectWhat it isRoleCommitsActiveStack
TallknuserneA Unity game project with 3D assets and scripts.author42012-09Unity, C#, JavaScript

Compiled with an AI agent from my own git history.