Kolofon
Al teknologien bag engineer.company — hvad der når din browser, hvad der bygger siderne, og hvad der beviser dem.

Foto: RodrigoAlabart / Pixabay 
Foto: PublicDomainPictures / Pixabay
Næsten alt her er lavet af andre og foræret væk. Denne side nævner det hele, for et konsulenthus, der ikke vil fortælle, hvad det kører, beder om en tillid, det ikke selv har vist.
Det er samtidig det korteste ærlige svar på “hvad arbejder I egentlig med”. Listen nedenfor er ikke en brochure — det er sitets egen stykliste, og du kan efterprøve hver eneste linje fra din egen browser.
Denne udgave af sitet er fra — det tidspunkt, hvor den nyeste side i denne udgave sidst blev ændret. Hvert fokuseret underdomæne bærer den samme linje om sin egen udgave, der er lavet senere end denne og siger det.
Hvad der når din browser
Fem ting, og ikke andet: HTML, ét stylesheet, tre webfonte, billeder og ét lille script, vi selv har skrevet.
- HTML, skrevet færdigt, før du bad om det. Hver side er en fil på disken, ikke en skabelon, der samles pr. forespørgsel.
- Ét CSS-bundt, samlet og fingeraftrykt ved bygning og leveret med en Subresource Integrity-hash, så din browser kan bekræfte, at det kom uændret frem. Med i bundtet er neat-annotations af Max Syabro (MIT) — de håndtegnede pile og marginnoter, tegnet i ren CSS.
- Skrifttypen Ubuntu, af Dalton Maag for Canonical, under Ubuntu Font Licence. Serveret fra vores egen maskine — en webfont fra en andens CDN er en tredjepart, der ser dig læse.
- Ubuntu Mono, samme families fastbredde-snit, under samme licens og serveret på samme måde. Den sætter koden på disse sider og indlæses kun på de sider, der viser kode.
- Skrifttypen Shantell Sans, der bygger på kunstneren Shantell Martins tuschhåndskrift, af Arrow Type / Stephen Nixon, under SIL Open Font License. Den skriver marginnoterne, serveres på samme måde og indlæses kun på de sider, der bærer en.
- WebP- og PNG-billeder, skaleret ved bygning. Væggene, siderne her er bygget på, er fotografier. To er fra Unsplash: Tim Mossholder har taget den mørke puds, Joe Woods den hvide murstensvæg. Tre mere er John Snows, taget med en Galaxy S22 Ultra og givet til dette site: den lyse puds, den malede mursten og flisevæggen. Det lyse tema bærer én af sine fire vægge, trukket, mens siden bygges, så sitet får ny beklædning, hver gang det udgives. Licensen kræver ingen kreditering — men en side, der navngiver en skrifttypes designer, bør ikke vente på at blive bedt. Mærket, tandhjulet, maskotten i hver eneste positur, du møder den i, portrættet og de to overlappende fotografier af vores eget kontor i København på om-siden er vores, taget eller tegnet her og renset for metadata, før de blev committet. Fotografierne i båndene hen over disse sider kommer fra Pixabay under Pixabay Content License, og hvert af dem nævner sin fotograf for en skærmlæser.
-
Ét lånt ikonsæt og én tegning fra et andet. Billederne af, hvad et stykke arbejde er lavet af — ét
ud for hvert resultat i hver liste, en række under hver gennemgang, ét bag hvert tal og
hver ydelse på forsiden — og alle andre ikoner, sitet tegner: mærkerne i begge menuer og
bag hver side, kontaktlinjen, netværkene, sprogskiftet, pilene og vinklerne. De kommer alle
undtagen ét fra
Font Awesome Free 7.3.1 af Fonticons, under
CC BY 4.0: 281 tegninger i alt, gemt i dette repository og leveret fra denne
vært som alt andet. 51 af dem er ikke tegninger af en idé, men
teknologiernes egne mærker — PostgreSQL, Linux, Docker, Go, Swift, Rust og
resten — som navngiver det, et stykke arbejde faktisk er bygget på. Et mærke
bruges, hvor dokumentationen bakker det op, og et almindeligt billede, hvor den ikke gør:
databasearbejdet kører også på MS SQL og BigQuery, så det beholder en tegning
af en database i stedet for én leverandørs logo, og arbejde, der er bygget for at
komme væk fra noget, bærer aldrig dets mærke. Et varemærke står
for sin ejer, så et nøjagtigt lånt mærke er bedre end et, der er tegnet om
for at passe til vores sæt, og hvor der ikke er et mærke at låne, bruger vi
et almindeligt billede i stedet for at opfinde et.
Rækkerne af logoer, der viser, hvilke produkter vi arbejder med, bruger de
samme mærker, og hvert af dem forbliver sin ejers varemærke: at nævne et
produkt påstår ikke, at dets ejer står bag dette site.
Undtagelsen er processorchippen mærket AI, der står ved siden af billedet
for hver af vores AI-ydelser, overalt hvor det vises, og ved menupunktet
AI-agenter. Det er
cpu-ai, den eneste tegning, vi har hentet fra Lucide 1.61.0 af Lucide Icons and Contributors, under ISC-licensen, og den gemmes og leveres på samme måde. Selve identiteten er vores hele vejen: mærket, tandhjulet, maskotten, portrættet og fotografierne af kontoret. Krediten står på denne side og ikke i filerne, fordi buildet minificerer HTML’en og fjerner den kommentar, hvert ikon bærer sin kreditering i.
Der kører ét script på dette site: vores eget, omkring en kilobyte, på de sider, der har en liste — arbejdet, emnerne, ydelserne, sagerne og sitemappet — hvor det filtrerer den liste, mens du skriver. Det taler ikke med nogen og husker intet. Der sættes ingen cookies. Der hentes intet fra en anden virksomheds server — ingen analytics, ingen skrifttyper, ingen indlejret video, intet samtykkebanner, for der er intet at samtykke til. Åbn browserens netværksfane, og tæl værterne: der er én.
Hvordan siderne bliver til
- Hugo — den statiske sitegenerator, skrevet i Go. Skabeloner, taksonomier, alle sprog og feeds er dens arbejde.
- Markdown og Go-skabeloner til de håndskrevne sider og layoutene.
- SQLite — porteføljen skrives ikke her. Den ligger i en flersproget CV-database og eksporteres ind i sitet af et Python-script, så en oplysning skrives ét sted og dukker op, hvor den hører hjemme.
- Python til den eksport, og til at generere ikonsættet med ImageMagick ud fra én tegning af mærket.
Hvordan det bliver bevist
Der er ingen hostet byggetjeneste; kvalitetsporten kører på den maskine, sitet skrives på, og enhver meddelelse fra et værktøj tæller som en fejl og ikke som en advarsel.
- vnu validerer HTML, Stylelint CSS.
- axe-core gennemgår 39 repræsentative sider — én pr. skabelon, på hvert sprog — mod WCAG 2.2 A og AA, i begge farvetemaer, og den ligger i porten, ikke ved siden af den. Sitet består af 2.302 sider; en maskine finder omkring en tredjedel af det, WCAG forlanger, og derfor er optegnelsen nedenfor ført pr. kriterium og ikke som ét samlet bestået.
- Puppeteer styrer headless Chromium til det, en validator ikke kan afgøre: målt kontrast, fokusrækkefølge, klikmålets størrelse, læsebredde, overløb, sideskift på tryk, og en pixelnøjagtig visuel regression via pixelmatch. Porten kører alle undtagen to af dem før hvert push; de to andre, overløbet og den visuelle regression, kører et menneske efter behov. Puppeteer tager også det billede, andre sider viser, når et link herfra bliver delt, så kortet er sidens eget stilark og egen skrift og ikke en tegning af dem.
- Lighthouse holder performancebudgetterne; lychee tjekker, at hvert link stadig virker.
- Prettier, markdownlint, ESLint, Ruff, basedpyright, yamllint, ShellCheck og codespell holder kilden ærlig; gitleaks sikrer, at ingen hemmelighed nogensinde bliver committet.
- Task kører det hele under ét navn pr. opgave, og pre-commit kører den fil-nære halvdel igen ved hvert commit, så porten ikke er noget, nogen skal huske.
Hvor det kører
Én lille maskine klarer det hele: en DigitalOcean-server med én kerne, 512 MB hukommelse og en disk på 10 GB, placeret i Toronto i Canada og med adressen 165.227.39.206. Den adresse udleverer DNS alligevel til enhver, der spørger, så det at skrive den her sparer dig et opslag og fortæller dig ikke noget nyt. Hvad maskinen registrerer undervejs, står på privatlivssiden.
- Debian er styresystemet.
- Caddy besvarer hver webforespørgsel og fornyer HTTPS-certifikatet selv, fra Let’s Encrypt.
-
Agate,
Gophernicus og
Tor besvarer de tre andre: dette site er
også en Gemini-kapsel på
gemini://engineer.company, et Gopher-hul pågopher://engineer.companyog en onion-tjeneste påhttp://engineer2ezpeji52ipphljcflzyhetvy5r6tnqubtq45nzlxxv6rsqd.onion/. Alle fire læser den samme mappe med filer, så én udrulning opdaterer dem alle, og ingen af dem kan komme ud af trit med de andre. Onion-tjenesten er den eneste indgang, vi kunne tilføje uden at åbne en port: tor ringer ud til introduktionspunkter, så maskinens åbne porte forbliver præcis, som de var. Webudgaven sender også enOnion-Location-header, så Tor Browser tilbyder den af sig selv. Adressen begynder medengineer, fordi vi brugte CPU-timerne på at gøre den læsbar — en bekvemmelighed, ikke et bevis. Det samme præfiks kan enhver få for de samme timer, så sammenlign hele adressen og ikke kun begyndelsen af den. - Ansible beskriver serveren som kode, så den kan bygges igen i stedet for at skulle huskes.
- Soft Serve er git-serveren bag Git Hub på git.engineer.company. Sitets egen kildekode ligger der.
- restic tager backupperne væk fra maskinen.
- Cloudflare besvarer DNS — og kun DNS. Sitet er bevidst ikke proxyet: åbenhed er mere værd for os end beskyttelsen, og en proxy ville sætte endnu en virksomhed mellem dig og os.
- Mail kører på Apple iCloud, og derfor lander adressen på kontaktsiden i en postkasse og ikke på en marketingplatform.
Hvor det ellers svarer
Alt ovenstående beskriver ét site, og det ligger på engineer.company. Det samme arbejde serveres desuden på en fokuseret adresse for hvert fagområde: den, der lander på en af dem, får det fagområde vist først og virksomhedens egne sider uændret, og hver eneste af dem peger på kopien på engineer.company som originalen.
- data.engineer.company — databaser og de pipelines, der fylder dem.
- platform.engineer.company — cloudinfrastruktur og maskineriet, der ruller den ud.
- software.engineer.company — software bygget til at blive vedligeholdt og ikke kun leveret.
- advisory.engineer.company — rådgivning, arkitektur og teknisk ledelse.
- brand.engineer.company — brand- og marketingarbejde.
- support.engineer.company — de maskiner, netværk og den helpdesk, et kontor kører på.
- ditte.engineer.company — stifterens egne sider, som også svarer på daryna.engineer.company.
Og git.engineer.company er hoveddøren til git-serveren nævnt ovenfor: repositorierne er private og nås over SSH, så den side er alt, hvad nettet får at se.
Sitet findes også komplet på ukrainsk, norsk og svensk — hver eneste side, indekseret og nævnt i sitemaps ved siden af sine danske og engelske tvillinger. Stripen i topbjælken tilbyder dem ikke, så disse links er vejen ind.
Standarder, det følger
- WCAG 2.2 niveau AA, håndhævet og ikke bare påstået — med ét succeskriterium nævnt som undtagelse i stedet for at blive glattet ud. De etiketter, der dukker op, når du holder musen over et mærke eller giver det fokus, kan ikke lukkes med en tast, for det kræver et script, og dette site kører kun ét. 1.4.13 er opfyldt bortset fra den halvdel, og det står her i stedet for at blive overladt til andre at opdage. Tilgængelighedserklæringen fortæller, hvad der tjekkes, og hvor tjekkene holder op.
- schema.org-strukturerede data, der kun markerer det, som er sandt og synligt på siden.
- Web App Manifest, så sitet kan installeres som app.
- RSS, Atom og JSON Feed — alle tre med den fulde tekst. To XML-feeds og ikke ét, fordi nogle læsere kun tager det ene af de to, og det er ikke til at forudsige hvilket.
-
RFC 9309
robots.txt, som tillader alt — søgemaskiner og AI-systemer på lige fod, for det, der står her, er skrevet for at blive læst. Den peger samtidig på det sitemap, begge slags følger. Der findes også et læsbart indeks over de samme sider, hvis man hellere vil bladre end at parse. -
RFC 9116
security.txt, plushumans.txt,llms.txt,agents.txtogai.txttil de maskiner, der kommer forbi — ogads.txt, der ikke godkender nogen, for her sælges der ingen annoncer. -
Gemini,
RFC 1436 Gopher og
Tors onion-tjenester:
de samme sider, serveret over alle tre på
gemini://engineer.company,gopher://engineer.companyoghttp://engineer2ezpeji52ipphljcflzyhetvy5r6tnqubtq45nzlxxv6rsqd.onion/, fra den samme mappe med filer som denne side — én udrulning opdaterer alle fire. Gemini og Gopher vil hver have sin egen klient i stedet for en browser; onion-tjenesten vil have en Tor-klient, og Tor Browser er den almindelige. Gopher har slet intet krypteringslag, så den bærer i klartekst, hvilken side du læste; Gemini krypterer det, men det netværk, du læser fra, ser stadig, hvilken adresse du bad om. Over onion-tjenesten ser netværket ingen af delene — af de fire gælder det kun der. Adressen er i sig selv tjenestens offentlige nøgle, så forbindelsen er autentificeret og krypteret, før der overhovedet tales HTTP:http://er rigtigt og ikke sjusk, og et certifikat ville kun bevise et navn, som adressen allerede beviser matematisk.
Tjek det selv
Alt ovenfor er en påstand, og afsnittet længere oppe om, hvordan det bliver bevist, nævner de værktøjer, vi selv kører på vores egen maskine — altså os, der retter vores egne opgaver. Herunder stilles de samme spørgsmål af nogen, der aldrig har hørt om os. Hvert link kører en live-test mod denne side eller mod adressen på den, du står på; ingen af dem tager vores ord for noget, og ingen af dem er vores.
-
W3C’s markup-validator
læser sidens HTML op mod den levende standard. Det er samme motor som
vnuovenfor, kørt af W3C i stedet for af os. -
W3C’s CSS-validator
læser det stilark, siden her har på. Regn med, at den melder fejl, og læs dem,
før du tror på dem: i august 2026 validerer den mod en profil, der stopper
før
system-ui,@property,clamp()i enfont-sizeog scroll-drevne animationer — alle fire findes i browserne, og alle fire bruges her. På /terms/ meldte den 176 fejl, og 175 af dem var netop af den slags. Den ene, der ikke var det, havde fanget en rigtig fejl: en hvilenderotate: 0degmister sin enhed til minificeringen,rotate: 0er ikke en vinkel, og browseren smider hele linjen væk — så en animation blev sendt ud uden den rotation, den var skrevet med. Det kan Stylelint ikke se, for den læser det stilark, vi skriver, og minificeringen skriver det om på vej ud til dig. Stylelint er stadig målestokken for kildekoden, og nu læser et af vores egne tjek også det, der rent faktisk blev leveret. - W3C’s feed-validator tjekker Atom-feedet, og samme tjeneste tjekker RSS-feedet. Den advarer om, at de fleste indlæg deler ændringsdato, og den advarsel er rigtig: datoerne kommer fra git-historikken, og de fleste af siderne her blev faktisk skrevet i de samme få commits. Vi viser hellere en advarsel end at finde på en dato.
- JSON Feed-validatoren tjekker det tredje feed, som W3C’s tjeneste ikke dækker — den er ældre end formatet.
- PWABuilder læser manifestet og resten af det, der gør sitet installerbart, fra Microsofts maskiner og ikke vores.
- W3C’s internationaliseringstjek læser de sprog- og tegnsætsangivelser, der gør hver sprogudgave af sitet læselig for den rette læser.
- Schema Markup Validator læser de strukturerede data, og Googles Rich Results Test fortæller, hvad en søgemaskine stiller op med dem.
- PageSpeed Insights kører Lighthouse fra Googles maskiner og ikke vores — ydelse, tilgængelighed, god skik og SEO, med data fra rigtige brugere, hvor der har været nok af dem.
- Mozillas HTTP Observatory giver karakter for sikkerhedsheaderne, og Qualys SSL Labs for den HTTPS-opsætning, der ligger bag dem.
- Security Headers er en second opinion på den første af de to, fra nogen helt tredje.
Det, ingen af dem kan tjekke, er påstanden om tilgængelighed, og det siger vi hellere selv end at lade et grønt mærke antyde noget andet. Intet automatisk værktøj finder mere end omkring en tredjedel af WCAG-fejlene — resten er vurderinger af, om en overskrift beskriver sit afsnit, eller om en alt-tekst siger det nødvendige, og dem kan en maskine ikke træffe. Testene ovenfor er gulvet, ikke beviset. Bruger du en skærmlæser her, og læses noget forkert op, så sig til — det er den rapport, vi ikke selv kan frembringe.
Tak
Hvert projekt ovenfor vedligeholdes af folk, der ikke var forpligtet til at dele noget som helst. Bygger du også på den stak, er det der, dine penge og dine fejlrapporter gør mest gavn.
Og hvis denne stak ligner din slags engineering, så sæt vores i arbejde.


