Mathias Villadsen
Co-Founder · Senior Fullstack Engineer
Domæner: SaaS · Infrastruktur · E-handel · Fullstack
Odense
- mathias@codense.dk
- Telefon
- +45 29 87 43 60
Codense er København og Odense — de to byer vores konsulenter kalder hjem, og en påmindelse om, at tæt, velkondenseret kode slår mere af den.
Vi startede i 2019 efter én omskrivning for meget — den slags, der bliver foreslået i et bestyrelseslokale, prissat til atten måneder og stille opgivet efter fjorten.
Hvert af de projekter havde samme form. Ingen havde målt noget. Systemet blev antaget at være uden for redning, fordi det var gammelt, og gammelt var blevet forvekslet med i stykker. De mennesker, der vidste, hvor ligene var begravet, var aldrig i lokalet.
Så Codense er bevidst lille og bevidst senior. To konsulenter, ingen bænk, ingen juniorer faktureret til seniorpris. Én af os i København og én i Odense, som er der navnet kommer fra — og, da vi først opdagede ordspillet, en rimelig erklæring om, hvad vi mener god kode er: kondenseret, ikke smart.
Vi tager færre opgaver, end vi kunne sælge. At sige nej til arbejde er det eneste, der gør rådgivningen værd noget: et bureau, der har brug for kontrakten, finder altid en grund til, at I har brug for kontrakten.
Hvor halvdelen af Codense arbejder.
Danmark
Og hvor den anden halvdel gør.
Danmark
Det er let at anbefale en arkitektur, man aldrig selv skal drifte. Så vi begyndte at sende vores egne produkter, og vi driver dem selv.
Et bureau kan gå, før det andet år med vedligeholdelse kommer. Når det er vores produkt, er vi der stadig, når smutvejen skal betales.
At have vagten for rigtige kunder lærer dig, hvilke alarmer der betyder noget, hvilke dashboards der er teater, og hvordan et system faktisk fejler klokken 03:00.
Vi kan sige til en potentiel kunde, at deres problem ikke er værd at løse endnu, i stedet for at tage arbejdet for at holde lyset tændt.
Vi ansætter ikke for at se større ud. Vi henter folk, vi har sendt i produktion med før, ved navn, og vi fortæller jer, hvem der gør hvad.
Seniorkonsulenter vi har leveret sammen med — mobil, data, design, sikkerhed. Hentet ind til den del, de er bedst til, og sagt farvel til, når delen er færdig.
København og Odense, skriftlig kommunikation først, beslutninger noteret der, hvor arbejdet sker. Det er sådan, vi altid har arbejdet, ikke en politik indført i 2020.
Det meste af vores arbejde kommer fra folk, vi har arbejdet med før, eller den de fortalte det til. Det er den eneste salgspipeline, vi nogensinde har haft.
København og Odense, kondenseret. Det beskriver også, hvordan vi kan lide kode.
PLACEHOLDER — den første arkitekturskitse til Detectly blev tegnet mellem Odense og København.
PLACEHOLDER — vi overvåger seks ting i produktion, og ingen af dem er espressomaskinen. En forglemmelse.
Det gør vi. Det er hele pointen med, at tilbagerulningen er øvet.
Hvert produkt vi driver, hostes i EU. Det var en beslutning, ikke en standard.
PLACEHOLDER — cirka hver fjerde henvendelse får at vide, at arbejdet ikke er værd at lave endnu.
Det er ikke værdier på en væg. De afgør, hvilke opgaver vi tager, og hvordan de forløber.
Teams behandler kvalitet som det, man handler væk, når man har travlt. Det er omvendt: de systemer, der sender hurtigst i produktion i år tre, er dem, der blev testet ordentligt i år et. Vi er ikke interesserede i håndværk som en æstetik — vi er interesserede i at kunne ændre noget på en fredag.
Gennemløbstid, andel af ændringer der fejler, p95-svartid, dækning på de veje der betyder noget. Vi tager en baseline i den første uge og rapporterer mod den til slut — også når tallet flyttede sig den forkerte vej. Bureauer, der kun rapporterer gode nyheder, rapporterer ikke.
Dokumentation i en wiki rådner stille og roligt. Beslutningsnoter ved siden af koden, kontrolleret af CI og reviewet i samme pull request som ændringen, overlever. Prøven på god dokumentation er, om den svarer på det spørgsmål, en vedligeholder stiller om to år.
Næsten hvert performanceproblem, vi bliver kaldt ind til, viser sig at ligge et andet sted end der, hvor teamet ledte. Vi måler produktionen, før vi rører ved noget, og vi bygger belastningsmodellen ud fra jeres faktiske trafikmønster frem for et gennemsnit af forespørgsler i sekundet.
At designe til hundrede gange jeres nuværende belastning er en måde at betale i dag for en fremtid, der måske ikke kommer. Vi designer til ti gange, og vi sørger for, at skridtet derefter er et kendt, prissat stykke arbejde frem for en overraskelse.
Nyhedsværdi har en driftsomkostning, der lander hos den, der har vagten. Vi vælger som udgangspunkt værktøjer med lange supportperioder, grundig dokumentation og et rekrutteringsgrundlag i Danmark. Griber vi endelig efter noget usædvanligt, skal beslutningsnoten sige, hvad det køber, og hvad det koster.
Store omlægninger på én gang samler hele projektets risiko i en enkelt weekend — som regel den weekend, hvor de folk, der byggede det, er sværest at få fat på. Vi migrerer søm for søm, så hvert skridt kan sendes i produktion for sig, og hvert skridt kan rulles tilbage for sig.
Målet på vores arbejde er, hvad jeres team kan gøre, efter vi er gået. Det betyder jeres konventioner frem for vores, parprogrammering frem for heltearbejde, og bevidst spredning af viden, også når det gør en sprint langsommere. Vi skriver exitplanen i uge et og gennemgår den ved hver milepæl.
Løbende månedsaftaler, en måneds opsigelse begge veje, og ingen hjemmestrikket ramme fra os i jeres kodebase. Et bureau, der skal være svært at fyre, er holdt op med at konkurrere på arbejdet. Vi vil hellere blive hyret igen end bundet fast.
Os begge, hver gang. Ingen account managers og intet bytte undervejs — udviklerne i det første møde er udviklerne på opgaven.
Co-Founder · Senior Fullstack Engineer
Domæner: SaaS · Infrastruktur · E-handel · Fullstack
Odense
$ whoami
mathias · odense · fullstack & infra
$ ssh hetzner-1 docker compose ps
✓app queue scheduler horizon
✓postgres redis nginx certbot
$ psql -c "select count(*) from checks"
a lot · and rising
$ php artisan test --parallel
✓all suites green
$ git push production main
▸build → migrate → swap · 0 downtime
$ tail -f storage/logs/laravel.log
·nothing. as it should be.
$ codense status --all
✓Detectly live
✓Diver live
▸Slipway kommer snart
▸Catchly kommer snart
$ uptime --since 2019
to stiftere · ingen bænk · stadig her
$ cat ~/principles.md
1. Kvalitet er en beslutning om hasti…
2. Mål det, eller det er en holdning
3. Skriv det ned, hvor det bliver fun…
4. Skala måles, den antages aldrig
·den lange version står længere nede på siden
$ cat ~/.contact
mathias@codense.dk
+45 29 87 43 60
Odense · 80 min over broen
$ mail mathias@codense.dk
✓svar inden for én arbejdsdag
Laravel og PHP, Dockeren nedenunder, og på det seneste urimeligt meget tid brugt på, hvad AI kan og ikke kan stoles på med i en rigtig kodebase. Jeg går mest op i den del, der plejer at blive sprunget over: om det, I har bygget, kan deployes, overvåges og bringes tilbage af nogen, der ikke sad i lokalet, da det blev skrevet.
Co-Founder · Senior App Developer & Front-end Designer
Domæner: Frontend · Apps · Interfacedesign
København
Jeg bygger den software, folk faktisk holder i hånden, og jeg designer den, før jeg bygger den. Native Android og iOS, når et produkt har brug for platformen nedenunder, Flutter eller React Native, når én kodebase er den bedre handel -- og hvilken af dem et projekt bør bruge, er en beslutning, der er værd at træffe bevidst frem for af vane.
Ud over os to er der et netværk af seniorkonsulenter, vi har sendt i produktion med før — mobil, data, design, sikkerhed. Vi henter dem ind ved navn, når et projekt kræver en evne, vi ikke har, og vi siger det ligeud frem for at foregive, at evnen var i huset hele tiden.
Seks år, og de opgaver vi har lov at beskrive.
Seks overvågningsværktøjer, som de fleste teams køber hver for sig — oppetid, API-tjek, optagede browserflows, visuel regression, sitemap-scanning og heartbeats — bag ét dashboard, én alarmmotor og én vagtkæde. Bygget og driftet af os, hostet udelukkende i EU.
Spidsbelastning tog checkout ned tre gange på et kvartal. Vi målte, hvor det faktisk bøjede, rettede fire ting og efterlod belastningsmodellen.
Vi er oftere på stedet end de fleste remote-first bureauer. Er I i en af de to byer, kan den første samtale foregå ansigt til ansigt.