Diplomingeniør i softwareteknologi · Nyborg

Softwareudvikler med erfaring ibackend, web og drift.

Med omkring 2½ års relevant brancheerfaring bygger jeg backend, websystemer og integrationer med blik for hele kæden: fra data og forretningslogik til brugerflade, fejlsøgning og stabil drift.

FokusBackend · Fullstack · Drift

Udvalgt case · Lollands.net

Overvågning og alarmer hos Lollands.net

Et samlet system til overvågning, fejlfinding og kundebeskeder hos en internetudbyder. Jeg udviklede, opsatte og idriftsatte løsningen som eneste udvikler.

Lollands.net i tal

~300netværksenheder overvåget
Siden 2019i daglig drift
Eneste udviklerfra idé til idriftsættelse
Fotograferet i drift

Fra ustabil GSM-løsning til samlet driftsplatform

Opgaven begyndte med et GSM-modul, der var svært at holde stabilt. Jeg byggede en alternativ SMS-løsning med Linux, et USB 3G-modem og gammu, plus en separat C#-klient til kundebeskeder.

Sammen med en medarbejder hos Lollands.net voksede løsningen til automatiseret ICMP- og SNMP-polling, et ASP.NET-dashboard og SMS-alarmer ved fejl.

  • Kontinuerlig dataindsamling og lagring i MySQL
  • Flere kontroller før alarm reducerer falske fejlmeldinger
  • Realtidsstatus på vægskærme opdelt efter område
SystemarkitekturC# · ASP.NET · Linux · MySQL

Mit ansvar

Kravafklaring, udvikling, opsætning, integration og løbende tilpasning i tæt dialog med de mennesker, der brugte systemet.

Tekniske rammer

Blandede Windows- og Linux-systemer, ældre netværksudstyr og SNMP-implementeringer med begrænset dokumentation. Løsningen blev bygget med det udstyr, der allerede var til rådighed, uden indkøb af ny hardware.

Status i dag

Systemet har været i produktion siden 2019 og bruges fortsat til overblik, fejlfinding og visualisering af driftsstatus.

Teknisk opbygning

Fra netværksudstyr til vægskærm og SMS

Systemet består af fire dele: polling, datalagring og alarmer, dashboard samt kundebeskeder.

01 / Polling

C#-service på Windows

  • ICMP- og SNMP-polling af netværksudstyret
  • Online/offline-status, oppetid og overførselshastigheder
  • En fuld cyklus tager typisk cirka ét minut; ping-timeouts på enheder, der er nede, er den største variabel
02 / Data & alarm

MySQL, Linux og SMS

  • Pollingresultater gemmes i en MySQL-database
  • Baggrundsservicen sender automatiske SMS-alarmer ved fejl
  • 3G USB-modem og gammu håndterer SMS på serversiden
03 / Dashboard

ASP.NET til vægskærme

  • Én side pr. område og skærm med automatisk opdatering
  • Kiosk-mode på 1080p-tv via Windows MiniPC-klienter
  • Farver viser OK, opmærksomhed, fejl og planlagt arbejde
04 / Kundedialog

Separat C# Windows-klient

  • Samlet overblik over kunder i netværket
  • Massebeskeder til udvalgte områder ved planlagt arbejde
  • Lange beskeder opdeles automatisk i flere SMS’er
DriftsoverblikProblemer kan ses med det samme.

“Sidst opdateret”, farvekoder og et layout, der kan aflæses på afstand, giver kortere reaktionstid. Teknikerne får oplysningerne samlet på én skærm i stedet for at skulle slå enhederne op enkeltvis.

UdviklingsforløbLøbende udviklet sammen med Lollands.net.

Jeg udviklede løsningen i tæt dialog med en medarbejder hos Lollands.net. Nye idéer og ændrede behov blev løbende omsat til funktioner, justeringer og nye visninger. Jeg stod samtidig for design, implementering, opsætning og drift.

Open source · SNMPSwarm v1.0 udgivet

SNMPSwarmFørste skridt mod Lollands.net v2.

Lollands.net voksede frem af konkrete behov, ét skridt ad gangen. I flere år har jeg haft lyst til at bygge overvågningssystemet igen. Denne gang kender jeg slutmålet fra starten. SNMPSwarm er første skridt mod Lollands.net v2, ikke selve overvågningssystemet.

01 / Hvorfor igen?

Fra organisk vækst til bevidst design

Det oprindelige system blev til, mens vi fandt ud af, hvad der var brug for. Nu kan jeg trække på erfaringerne fra en løsning, der har været i drift siden 2019, og begynde med krav og testmuligheder i stedet for at opdage dem undervejs.

02 / Testmiljøet først

Først skal der være noget at overvåge

Jeg har ikke længere adgang til Lollands.net-netværket, og det er svært at udvikle et overvågningssystem uden enheder, der svarer igen. Derfor byggede jeg SNMPSwarm: mit eget simulerede netværk med individuelle Docker-enheder, SNMP-svar, udfald og fjernstyring. Det giver mig noget at udvikle og teste Lollands.net v2 imod, før jeg bygger selve overvågningssystemet.

03 / Arbejdsmetoden

Agentisk udvikling, lokalt

Jeg bruger OpenCode og en lokalt kørt sprogmodel via llama.cpp. Det er et bevidst valg: Jeg vil eksperimentere på min egen hardware og selv bestemme, hvornår arbejdet offentliggøres. Modellen implementerer og tester; jeg sætter retningen, vurderer løsningerne og stiller kravene.

Første milepæl · Oktober 2026

SNMPSwarm v1.0 er færdig, testet og udgivet.

Alle 400 enheder blev verificeret med SNMP og HTTP-status. Udvalgte enheder blev desuden testet med ping, power on/off og parallelle tilstandsskift. Det er en funktionel belastningstest af simulatoren, ikke en påstand om langtidsholdbar drift.

PythonDockerSNMPLinuxOpenCodellama.cpp
Se SNMPSwarm på GitHub
400/400enheder startet
400/400SNMP og HTTP-status
8/8fulde power-tests
40 × 3parallelle power-testrunder

SNMPSwarm v1.0 er færdig og udgivet. Den er testmiljøet til det næste projekt: selve Lollands.net v2. Koden er tilgængelig som open source på GitHub. Hvis du synes, projektet lyder interessant, er du meget velkommen til at bidrage med forbedringer og nye funktioner, eller forke det og tage det i din helt egen retning.

Open source · GPU Power Sweep · Oktober 2026

To GPU’er. Et spørgsmål: Hvor mange watt er nok?

Jeg ville finde en fornuftig power limit til lokal AI-billedgenerering i stedet for bare at gætte. Derfor byggede jeg et lille sæt scripts til at teste en ComfyUI-workload ved forskellige NVIDIA-effektgrænser, først på en RTX 3080 og derefter på en RTX 3090.

RTX 3080 · hurtigste måling290 W · 35,362 s
RTX 3090 · hurtigste måling310 W · 23,888 s
Mit valg til RTX 3080270 W
Mit valg til RTX 3090300 W
RTX 3080-systemIntel Core i7-8700K · 64 GB DDR4-3000
RTX 3090-systemX99 · Intel Core i7-5820K · 128 GB DDR4-2133 ECC

Små værktøjer, ét ansvar hver

Unix-princippet i praksis

Et Bash-script styrer GPU'ens effektgrænse og gendanner den bagefter. Et andet sender workflowet til ComfyUI og gemmer resultatet. Et tredje gennemløber wattintervallet. Et selvstændigt Python-script laver en HTML-rapport af målingerne.

Ingen YAML, installationswizard eller store frameworks. Bare noget, jeg selv kan bruge igen, og som andre kan tilpasse til deres eget setup.

LinuxBashPythonNVIDIAComfyUI APICSVSVG
Se GPU Power Sweep på GitHub

Faktiske målinger · Qwen Image 2.1 · 1024 × 1024 · 25 steps

To GPU'er, samme benchmark

Hold markøren over grafen, eller brug Tab, for at sammenligne de to systemer. Lavere sekunder er bedre.

Sekunder pr. billede
RTX 3080 RTX 3090
Hvad viste testene?

RTX 3080 fladede ud omkring 270–290 W, mens RTX 3090 havde sin hurtigste enkeltmåling ved 310 W. Der er en tydelig forskel i generationstid, men også i maskinerne bag kortene.

Det er to forskellige systemer, ikke en isoleret GPU-mod-GPU-test. Der er kun én generering pr. niveau, og wattværdierne er power limits, ikke målt strømforbrug. Små forskelle skal derfor tolkes forsigtigt.

Se alle målinger fra begge GPU'er Watt · tid · forbedring fra 210 W

RTX 3080 · i7-8700K

Power limitGenerationstidForbedring
210 W40.944 s0.0 %
220 W40.405 s1.3 %
230 W38.898 s5.0 %
240 W38.945 s4.9 %
250 W38.967 s4.8 %
260 W36.844 s10.0 %
270 W35.861 s12.4 %
280 W35.835 s12.5 %
290 W35.362 s13.6 %
300 W35.826 s12.5 %
310 W36.409 s11.1 %
320 W36.325 s11.3 %
330 W36.415 s11.1 %
336 W36.403 s11.1 %

RTX 3090 · X99 / i7-5820K

Power limitGenerationstidForbedring
210 W33.404 s0.0 %
220 W31.133 s6.8 %
230 W29.107 s12.9 %
240 W27.620 s17.3 %
250 W26.470 s20.8 %
260 W25.527 s23.6 %
270 W25.034 s25.1 %
280 W24.583 s26.4 %
290 W24.411 s26.9 %
300 W23.953 s28.3 %
310 W23.888 s28.5 %
320 W24.015 s28.1 %
330 W24.918 s25.4 %
340 W25.439 s23.8 %
350 W25.946 s22.3 %

Fra eksperiment til værktøj

Et lille værktøj, jeg kan bruge igen

De 14 tekander fra RTX 3080 var første test, ikke slutmålet. Jeg har siden brugt præcis samme værktøj på RTX 3090-systemet, uden at ændre benchmarkens grundidé. Når ComfyUI bliver en del af AMACC, kan jeg bruge det igen med en mere realistisk workload.

Projektet er bevidst enkelt og kan tilpasses uden et stort setup. Koden, vejledningen og rapportgeneratoren ligger frit tilgængeligt på GitHub.

Se projektet på GitHub

Erfaring

Erfaring fra udvikling og drift

Jeg har arbejdet med eksisterende webprodukter hos Ordbogen, udviklet overvågningssystemet hos Lollands.net og tidligere bygget C#- og ASP.NET-værktøjer hos Morningstar.

2023

Ordbogen A/S · Odense

Softwareudvikler i praktik

Indgik i udviklingsteamets almindelige arbejde med PHP/Lumen, Vue 3 og TypeScript. I et team med en seniorudvikler var jeg med til at bygge diesgital.com ud fra en gren af Ordbogens eksisterende side. Arbejdet omfattede tilpasning til et nyt design og især omlægning til en ny datakilde med en væsentligt anderledes datastruktur. Arbejdede også med franske bøjningsregler, migrering fra Angular til Vue 3 og deltog i standups, sprintplanlægning og code review.

Vue 3TypeScriptPHPLumenScrum
2018–2019

Lollands.net · I drift siden 2019

Praktik og virksomhedsprojekt

Udviklede et overvågnings- og alarmhåndteringssystem til netværksinfrastruktur som eneste udvikler. Byggede C# backend-daemon, ASP.NET dashboard, MySQL- og SMS-integration samt stod for den praktiske idriftsættelse.

C#ASP.NETMySQLLinuxSNMP
2012–2017

Netto · Farum

Salgsassistent

Kundeservice, kassebetjening og vareopfyldning.

2009–2010

Morningstar.dk · Nyhavn

Studiejob som juniorudvikler

Arbejdede med webbaserede værktøjer til investeringsforeninger i C# og ASP.NET, i et domæne hvor korrekte data og stabilitet var afgørende.

C#ASP.NETMSSQL

Kompetencer

Teknologier og områder

Jeg har arbejdet med C# og ASP.NET, Vue 3 og TypeScript samt databaser, Linux og integrationer.

Backend

  • C#
  • ASP.NET
  • PHP / Lumen
  • REST / WebAPI
  • Java

Frontend

  • Vue 3
  • TypeScript
  • JavaScript
  • HTML
  • CSS

Data & drift

  • MySQL
  • PostgreSQL
  • MariaDB
  • MSSQL
  • Linux
  • Docker

Integration

  • SNMP
  • ICMP
  • REST / JSON / XML
  • Git
  • CI/CD
  • SMS / gammu
  • Fejlsøgning

Uddannelse

Diplomingeniør i softwareteknologi

Syddansk Universitet · 2019–2024

Uddannelsen omfattede objektorienteret programmering, databaser, webteknologier, operativsystemer, DevOps og cyber-physical systems samt arbejde på tværs af software og hardware.

2002–2004Datamatiker

Merkur Center, Nykøbing F.

1999–2002HTX

I&H-skolen, Nykøbing Falster

Løbende

Egne tekniske projekter

Linux, web, databaser, lokale AI-modeller og selvhosting

Om mig

Jeg vil vide, hvordan det hele hænger sammen

Jeg interesserer mig for systemet som helhed og ender ofte med at arbejde på tværs af kode, databaser, Linux og den hardware, det kører på. Når noget ikke virker, vil jeg gerne forstå hvorfor frem for bare at arbejde uden om problemet. Det gælder både i mit udviklingsarbejde og i egne projekter med selvhosting, lokale AI-modeller og retro-pc’er.

Selvhosting & lokal AI

Memory Based Recall

Arbejder på en Go- og Vue-applikation med en deterministisk memory engine, MySQL og lokalt hostede sprogmodeller på egen Linux-server.

Praktisk projekt

Fast dashboard på en genbrugt tablet

Har genbrugt en ældre tablet i en dock som fast informationsskærm.

Hobbyer

Retro-pc’er og ældre systemer.

Retro-pc
Ydelsesorienterede retro-pc’er

Jeg går ikke efter periodekorrekte museumsmaskiner, men efter ekstrem ydelse på ældre operativsystemer med hardware, de stadig kan bringes til at køre stabilt på.

Windows 98 SE: Pentium 4 2,8 GHz @ 3,0 GHz, 1 GB DDR, Radeon X800 XT og Sound Blaster Audigy 2 ZS med frontpanel.

Windows XP / Windows 7: Core i7-3770K, GTX 980 Ti, SSD og Sound Blaster X-Fi med frontpanel.

Arbejdet omfatter BIOS-opsætning, drivere, hardwarekompatibilitet og fejlsøgning på tværs af flere generationer af hardware og software.

Kontakt · Næste kapitel

Skal vi bygge noget sammen?

Jeg søger en rolle inden for backend, fullstack eller Linux og drift, hvor jeg kan bidrage med både udvikling, integrationer og teknisk nysgerrighed.