Hopp til innhold

Kolofon

All teknologien bak engineer.company — det som når nettleseren din, det som bygger sidene, og det som beviser dem.

Nesten alt her er laget av andre og gitt bort. Denne siden navngir det, fordi et konsulentselskap som ikke vil si hva det kjører på, ber om en tillit det selv ikke har tilbudt.

Det er også det korteste ærlige svaret på «hva jobber dere egentlig med?». Listen nedenfor er ikke en kompetansebrosjyre — den er dette nettstedets egen stykkliste, og du kan sjekke hver linje i den fra din egen nettleser.

Denne kopien av nettstedet er fra — øyeblikket da den nyeste siden i denne kopien sist ble endret. Hvert fokusert underdomene har den samme linjen om sin egen kopi, som blir laget senere enn denne og sier det.

Hva som når nettleseren din

Fem ting, og ingenting annet: HTML, ett stilark, tre webfonter, bilder og ett lite skript av vårt eget.

  • HTML, skrevet ferdig før du ba om den. Hver side er en fil på disken, ikke en mal som settes sammen ved hver forespørsel.
  • Én CSS-pakke, satt sammen og merket med et fingeravtrykk ved bygging og levert med en Subresource Integrity-hash, slik at nettleseren din kan bekrefte at den kom fram uendret. Med i pakken følger neat-annotations av Max Syabro (MIT) — de håndtegnede pilene og margnotatene, tegnet med CSS alene.
  • Skrifttypen Ubuntu, av Dalton Maag for Canonical, under Ubuntu Font Licence. Levert fra vår egen maskin — en webfont fra noen andres CDN er en tredjepart som ser deg lese.
  • Ubuntu Mono, den samme familiens snitt med fast bredde, under samme lisens og levert på samme måte. Det setter koden på disse sidene og lastes bare på sidene som har kode.
  • Skrifttypen Shantell Sans, basert på kunstneren Shantell Martins håndskrift med tusj, av Arrow Type / Stephen Nixon, under SIL Open Font License. Den skriver margnotatene, leveres på samme måte og lastes bare på sidene som har et.
  • Bilder i WebP og PNG, skalert ved bygging. Veggene disse sidene er bygd på, er fotografier. To er fra Unsplash: Tim Mossholder fotograferte den mørke pussen, Joe Woods den hvite mursteinen. Tre til er John Snows, tatt med en Galaxy S22 Ultra og gitt til dette nettstedet: den lyse pussen, den malte mursteinen og den flislagte veggen. Det lyse temaet bærer én av sine fire vegger, trukket mens siden bygges, så nettstedet kles på nytt hver gang det publiseres. Lisensen krever ingen kreditering; en side som navngir designeren av en skrifttype, burde ikke trenge å bli bedt om det. Merket, tannhjulet, maskoten i hver positur du vil møte den i, portrettet og de to overlappende fotografiene av vårt eget kontor i København på siden Om oss er våre, fotografert eller tegnet her og fjernet for metadata før de ble lagt inn i repoet.
  • Ett lånt ikonsett. Bildene av hva et stykke arbeid var laget av — ett ved siden av hvert resultat i hver liste, en rad av dem under hver gjennomgang, ett bak hvert tall og hver tjeneste på forsiden — og alle andre ikoner dette nettstedet tegner: merkene på begge menyene og bak hver side, kontaktlinjen, nettverkene, språkvelgeren, pilene og vinkeltegnene. Alle sammen kommer fra Font Awesome Free 7.3.1 fra Fonticons, under CC BY 4.0: 267 tegninger i alt, oppbevart i dette repoet og levert fra denne verten som alt annet. 36 er ikke tegninger av en idé, men teknologienes egne merker — PostgreSQL, Linux, Docker, Go, Swift, Rust og resten — som navngir hva en jobb faktisk ble bygd på. Et merke brukes der oppføringen støtter det, og et enkelt bilde der den ikke gjør det: databasearbeidet kjører også på MS SQL og BigQuery, så det beholder en tegning av en database i stedet for én leverandørs logo, og arbeid som ble bygd for å komme bort fra noe, bærer aldri merket til det. Et varemerke står for eieren sin, så et nøyaktig lånt merke er bedre enn et som er tegnet om for å passe til settet vårt, og der det ikke finnes noe merke å låne, bruker vi et enkelt bilde i stedet for å finne opp et. Identiteten er vår egen hele veien: merket vårt, tannhjulet, maskoten, portrettet og fotografiene. Krediteringen står på denne siden og ikke i filene, fordi byggingen minifiserer HTML-en og fjerner kommentaren hvert ikon har krediteringen sin i.

Ett skript kjører på dette nettstedet: vårt eget, omtrent en kilobyte, på sidene som har en liste — arbeidet, emnene, tjenestene, sakene og nettstedskartet — der det filtrerer listen mens du skriver. Det snakker ikke med noen og husker ingenting. Ingen informasjonskapsler settes. Ingenting hentes fra et annet selskaps server — ingen analyse, ingen skrifter, ingen innebygd video, ingen samtykkebanner, fordi det ikke er noe å samtykke til. Åpne nettverkspanelet i nettleseren din og tell vertene: det er én.

Hvordan sidene lages

  • Hugo — den statiske nettstedsgeneratoren, skrevet i Go. Maler, taksonomier, hvert språk og feedene er dens verk.
  • Markdown og Go-maler for de håndskrevne sidene og layoutene.
  • SQLite — porteføljen skrives ikke her. Den ligger i en flerspråklig CV-database og eksporteres til dette nettstedet av et Python-skript, så et faktum skrives én gang og vises overalt der det hører hjemme.
  • Python for det eksportskriptet, og for å generere ikonsettet med ImageMagick fra én enkelt tegning av merket.

Hvordan det bevises

Det finnes ingen ekstern byggetjeneste; kvalitetskontrollen kjører på maskinen nettstedet skrives på, og hver diagnose er en feil, ikke en advarsel.

  • vnu validerer HTML-en, Stylelint CSS-en.
  • axe-core tester 39 representative sider — én per mal, på hvert språk — mot WCAG 2.2 A og AA, i begge fargeskjemaene, og den er en del av kontrollen, ikke noe ved siden av den. Nettstedet bygger 2 253 sider; en maskin finner omtrent en tredjedel av det WCAG krever, og det er derfor redegjørelsen nedenfor går kriterium for kriterium i stedet for å gi en samlet karakter.
  • Puppeteer styrer en hodeløs Chromium for kontrollene en validator ikke kan gjøre: målt kontrast, fokusrekkefølge, størrelse på klikkflater, linjelengde, overløp i visningsområdet, sideinndeling ved utskrift og en visuell regresjonstest piksel for piksel via pixelmatch. Disse kjøres ved behov og ikke ved hver commit — de tar omtrent tjue minutter — så kontrollen holder den raske halvdelen, og et menneske kjører den langsomme. Den tar også bildet andre nettsteder viser når en lenke hit blir delt, så kortet er denne sidens eget stilark og skrifttype og ikke en tegning av dem.
  • Lighthouse holder ytelsesbudsjettene; lychee sjekker at hver lenke fortsatt fører fram.
  • Prettier, markdownlint, ESLint, Ruff, basedpyright, yamllint, ShellCheck og codespell holder kildekoden ærlig; gitleaks sørger for at ingen hemmelighet noen gang havner i en commit.
  • Task kjører alt sammen under ett navn per jobb, og pre-commit kjører halvdelen som virker på filnivå, på nytt ved hver commit, så kontrollen ikke er noe noen må huske på.

Hvor det kjører

Én liten maskin gjør alt sammen: en server med én kjerne hos DigitalOcean, med 512 MB minne og en disk på 10 GB, som står i Toronto i Canada og svarer på 165.227.39.206. Den adressen er det DNS allerede gir til alle som spør, så å skrive den her sparer deg for oppslaget i stedet for å fortelle deg noe nytt. Hva maskinen registrerer mens den svarer, står på personvernsiden.

  • Debian er operativsystemet.
  • Caddy svarer på hver webforespørsel og fornyer HTTPS-sertifikatet selv, fra Let’s Encrypt.
  • Agate, Gophernicus og Tor svarer på de tre andre: dette nettstedet er også en Gemini-kapsel på gemini://engineer.company, et Gopher-hull på gopher://engineer.company og en onion-tjeneste på http://engineer2ezpeji52ipphljcflzyhetvy5r6tnqubtq45nzlxxv6rsqd.onion/. Alle fire leser den samme mappen med filer, så én produksjonssetting oppdaterer alle fire, og ingen av dem kan komme i utakt med de andre. Onion-adressen er den eneste inngangsdøren vi kunne legge til uten å åpne en port: tor kobler seg ut til introduksjonspunkter, så maskinens åpne porter forblir nøyaktig som de var. Nettstedet sender også et Onion-Location-hodefelt, så Tor Browser tilbyr den uten å bli spurt. Den begynner med engineer fordi vi brukte CPU-timene på å gjøre den lesbar — en bekvemmelighet, ikke et bevis. Det samme prefikset er tilgjengelig for alle som vil bruke de samme timene, så sammenlign hele adressen og ikke bare begynnelsen av den.
  • Ansible beskriver den serveren som kode, slik at den kan bygges opp på nytt i stedet for å huskes.
  • Soft Serve er git-serveren bak Git Hub på git.engineer.company. Dette nettstedets egen kildekode ligger der.
  • restic tar sikkerhetskopiene bort fra maskinen.
  • Cloudflare svarer på DNS — og bare DNS. Nettstedet går med vilje ikke gjennom deres proxy: åpenhet er verdt mer for oss enn beskyttelsen, og en proxy ville satt enda et selskap mellom deg og oss.
  • E-post går via Apple iCloud, og det er derfor adressen på kontaktsiden når fram til en postkasse og ikke en markedsføringsplattform.

Hvor ellers det svarer

Alt ovenfor beskriver ett nettsted, og det holder til på engineer.company. Det samme arbeidet leveres også på en fokusert adresse for hvert fagfelt: den som kommer til en av dem, får se det fagfeltet først og selskapets egne sider uendret, og hver av de sidene navngir kopien på engineer.company som originalen.

Og git.engineer.company er inngangsdøren til git-serveren nevnt ovenfor: repoene er private og nås over SSH, så den siden er alt nettet får se.

Nettstedet finnes også i sin helhet på norsk — det er disse sidene du leser nå — og på svensk og ukrainsk: hver side indeksert og navngitt i nettstedskartene ved siden av sine danske og engelske tvillinger. Stripen i topplinjen tilbyr ingen av de tre, så lesere av den engelske og den danske utgaven kommer hit via en lenke fra sin egen utgave av denne siden.

Standarder det følger

  • WCAG 2.2 nivå AA, voktet i stedet for bare påstått — med ett kriterium navngitt som unntak i stedet for å bli glattet over. Etikettene som vises når du holder pekeren over eller fokuserer et merke, kan ikke lukkes med en tast, fordi lukking krever et skript, og dette nettstedet kjører bare ett skript. 1.4.13 er oppfylt bortsett fra den halvdelen, og det står skrevet her i stedet for å bli liggende til noen oppdager det.
  • schema.org for strukturerte data, som bare merker opp det som er sant og synlig på siden.
  • Web App Manifest, slik at nettstedet kan installeres som en app.
  • RSS, Atom og JSON Feed, alle tre med hele teksten. To XML-feeder i stedet for én, fordi noen feedlesere bare tar imot ett av de to formatene, og hvilket det er, varierer.
  • RFC 9309 robots.txt, som tillater alt, for søkeroboter og KI-systemer likt — teksten her finnes for å bli lest, og den navngir nettstedskartet begge to følger. Det finnes også en lesbar oversikt over de samme sidene, for den som heller vil bla i den enn å parse den.
  • RFC 9116 security.txt, pluss humans.txt, llms.txt, agents.txt og ai.txt for maskinene som kommer og spør — og ads.txt, som ikke autoriserer noen, fordi det ikke er noen annonser her å selge.
  • Gemini, RFC 1436 Gopher og Tors onion-tjenester: de samme sidene, levert over alle tre på gemini://engineer.company, gopher://engineer.company og http://engineer2ezpeji52ipphljcflzyhetvy5r6tnqubtq45nzlxxv6rsqd.onion/, fra den samme mappen med filer som denne siden kommer fra — én produksjonssetting oppdaterer alle fire. Gemini og Gopher vil hver ha sin egen klient i stedet for en nettleser; onion-adressen vil ha en Tor-klient, og Tor Browser er den vanlige. Gopher har ikke noe krypteringslag i det hele tatt, så hvilken side du leser, går i klartekst; Gemini krypterer det, men nettverket du leser fra, ser fortsatt hvilken adresse du ba om. Over onion ser det ingen av delene: av de fire er det bare der det stemmer. Selve adressen er tjenestens offentlige nøkkel, så kretsen er autentisert og kryptert før et eneste ord HTTP er sagt — http:// er riktig og ikke slurvete, og et sertifikat ville bare bevise et navn adressen allerede beviser med aritmetikk.

Sjekk det selv

Alt ovenfor er en påstand, og delen lenger opp om hvordan det bevises, navngir verktøyene vi kjører mot vår egen maskin — og da retter vi våre egne prøver. Dette er de samme spørsmålene, stilt av folk som aldri har hørt om oss. Hver lenke kjører en direkte test mot denne siden, eller mot adressen til den siden du er på; ingen av dem tar oss på ordet for noe, og ingen av dem er våre.

  • W3C Markup Validator tolker HTML-en på denne siden mot den levende standarden. Det er den samme motoren som vnu ovenfor, kjørt av W3C og ikke av oss.
  • W3C CSS Validator leser stilarket denne siden har på seg. Regn med at den rapporterer feil, og les dem før du tror på dem: per august 2026 validerer den mot en profil som stopper før system-ui, @property, clamp() i en font-size og scrollstyrte animasjoner — alle fire finnes i nettleserne, og alle fire brukes her. Mot /terms/ rapporterte den 176 innvendinger, og 175 var av akkurat den sorten. Den ene som ikke var det, hadde fanget en reell feil: en rotate: 0deg i hviletilstand mister enheten sin i minifiseringen, rotate: 0 er ikke en vinkel, og nettleseren forkaster hele linjen — så en animasjon ble levert uten rotasjonen den var skrevet med. Stylelint kan ikke se det, fordi den leser stilarket vi skriver, og minifisereren skriver det om på veien til deg. Stylelint er fortsatt autoriteten vi holder kildekoden opp mot, og en egen kontroll leser nå det som faktisk ble levert.
  • W3C Feed Validator sjekker Atom-feeden, og den samme tjenesten sjekker RSS-feeden. Den advarer om at de fleste oppføringene har samme endringsdato, og den advarselen er riktig: datoene kommer fra git-historikken, og de fleste av disse sidene ble faktisk skrevet i de samme få commitene. Vi viser heller en advarsel enn å finne på en dato.
  • JSON Feed Validator sjekker den tredje feeden, som W3C-tjenesten ikke dekker — den er eldre enn formatet.
  • PWABuilder leser manifestet og resten av det som gjør nettstedet installerbart, fra Microsofts maskiner i stedet for våre.
  • W3C Internationalization Checker leser språk- og tegnkodingsdeklarasjonene som gjør hver språkversjon av dette nettstedet lesbar for den rette leseren.
  • Schema Markup Validator leser de strukturerte dataene, og Googles Rich Results Test sier hva en søkemotor gjør med dem.
  • PageSpeed Insights kjører Lighthouse fra Googles maskiner i stedet for våre — ytelse, tilgjengelighet, beste praksis og SEO, med data fra virkelig bruk der nok folk har vært innom.
  • Mozilla HTTP Observatory gir sikkerhetshodene en karakter, og Qualys SSL Labs gir HTTPS-konfigurasjonen bak dem en karakter.
  • Security Headers er en annen vurdering av det første av de to, fra noen helt andre.

Det ingen av dem kan sjekke, er påstanden om universell utforming, og det sier vi heller selv enn å la et grønt merke antyde noe annet. Ikke noe automatisk verktøy finner mer enn omtrent en tredjedel av bruddene på WCAG — resten er vurderinger av om en overskrift beskriver avsnittet sitt, eller om en alt-tekst sier det nyttige, og dem kan ingen maskin gjøre. Kontrollene ovenfor er et minimum, ikke et bevis. Hvis du bruker skjermleser her og noe blir lest feil, si fra til oss — det er den rapporten vi ikke kan generere.

Takk

Hvert prosjekt ovenfor vedlikeholdes av folk som ikke måtte dele noe av det. Bygger du også på denne teknologistakken, er det der pengene og feilrapportene dine gjør mest nytte.

Og hvis denne stakken ser ut som ingeniørarbeid etter din smak, ta vår i bruk.

Engineer-maskoten: en vennlig blå og hvit robot i en kappe med kretsbaner, som flyr med hodet først, den ene knyttneven foran og kappen etter seg