Hoppa till innehållet

Kolofon

All teknik bakom engineer.company — det som når din webbläsare, det som bygger sidorna och det som bevisar dem.

Nästan allt här har gjorts av andra och getts bort. Den här sidan namnger det, eftersom ett konsultbolag som inte vill säga vad det kör ber om ett förtroende som det inte självt har erbjudit.

Det är också det kortaste ärliga svaret på ”vad arbetar ni egentligen med”. Listan nedan är ingen broschyr över vad vi kan — det är den här webbplatsens egen stycklista, och du kan kontrollera varje rad i den från din egen webbläsare.

Den här kopian av webbplatsen är från — det ögonblick då den nyaste sidan i den här kopian senast ändrades. Varje fokuserad underdomän bär samma rad om sin egen kopia, som görs senare än den här och säger det.

Vad som når din webbläsare

Fem saker, och inget annat: HTML, en stilmall, tre webbtypsnitt, bilder och ett litet eget skript.

  • HTML, färdigskriven innan du bad om den. Varje sida är en fil på disk, inte en mall som sätts ihop vid varje förfrågan.
  • Ett CSS-paket, sammanfogat och försett med ett fingeravtryck när webbplatsen byggs, och levererat med en Subresource Integrity-hash, så att din webbläsare kan kontrollera att det kom fram oförändrat. I paketet följer neat-annotations av Max Syabro (MIT) med — de handritade pilarna och marginalanteckningarna, ritade enbart i CSS.
  • Typsnittet Ubuntu, av Dalton Maag för Canonical, under Ubuntu Font Licence. Det levereras från vår egen maskin — ett webbtypsnitt från någon annans CDN är en tredje part som ser dig läsa.
  • Ubuntu Mono, samma familjs variant med fast teckenbredd, under samma licens och levererat på samma sätt. Det sätter koden på de här sidorna och laddas bara på de sidor som har någon.
  • Typsnittet Shantell Sans, byggt på konstnären Shantell Martins handstil med tuschpenna, av Arrow Type / Stephen Nixon, under SIL Open Font License. Det skriver marginalanteckningarna, levereras på samma sätt och laddas bara på de sidor som har en.
  • WebP- och PNG-bilder, skalade när webbplatsen byggs. Väggarna som de här sidorna är byggda på är fotografier. Två kommer från Unsplash: Tim Mossholder fotograferade den mörka putsen, Joe Woods det vita teglet. Tre till är John Snows, tagna med en Galaxy S22 Ultra och givna till den här webbplatsen: den ljusa putsen, det målade teglet och den kaklade väggen. Det ljusa temat bär en av sina fyra väggar, lottad medan sidan byggs, så att webbplatsen kläs på nytt varje gång den publiceras. Licensen kräver inget erkännande; en sida som namnger ett typsnitts formgivare borde inte behöva bli ombedd. Märket, kugghjulet, maskoten i varje pose du kommer att möta den i, porträttet och de två överlappande fotografierna av vårt eget kontor i Köpenhamn på sidan Om oss är våra, tagna eller ritade här och rensade på sin metadata innan de checkades in.
  • En lånad ikonuppsättning. Bilderna av vad ett arbete gjordes av — en bredvid varje resultat i varje lista, en rad av dem under varje recension, en bakom varje siffra och varje tjänst på startsidan — och varje annan ikon som den här webbplatsen ritar: märkena i båda menyerna och bakom varje sida, kontaktraden, nätverken, språkväxlaren, pilarna och vinkelpilarna. Alla kommer från Font Awesome Free 7.3.1 av Fonticons, under CC BY 4.0: 267 teckningar totalt, som finns i det här repot och levereras från den här värden som allt annat. 36 av dem är inte teckningar av en idé utan teknikernas egna märken — PostgreSQL, Linux, Docker, Go, Swift, Rust och resten — som namnger det som ett jobb faktiskt byggdes på. Ett märke används där underlaget stöder det och en enkel bild där det inte gör det: databasarbetet körs också på MS SQL och BigQuery, så det behåller en teckning av en databas i stället för en enskild leverantörs logotyp, och arbete som byggdes för att komma bort från något bär aldrig den sakens märke. Ett varumärke står för sin ägare, så ett exakt lånat märke är bättre än ett som ritats om för att passa vår uppsättning, och där det inte finns något märke att låna använder vi en enkel bild i stället för att hitta på ett. Själva identiteten är vår rakt igenom: märket, kugghjulet, maskoten, porträttet och fotografierna. Erkännandet står på den här sidan och inte i filerna, eftersom bygget minifierar sin HTML och tar bort kommentaren som varje ikon levereras med sitt erkännande i.

Ett skript körs på den här webbplatsen: vårt eget, ungefär en kilobyte, på de sidor som har en lista — arbetet, ämnena, erbjudandena, fallen och webbplatskartan — där det filtrerar listan medan du skriver. Det pratar inte med någon och minns ingenting. Inga kakor sätts. Ingenting hämtas från ett annat företags server — ingen analys, inga typsnitt, ingen inbäddad video, ingen samtyckesruta, eftersom det inte finns något att samtycka till. Öppna webbläsarens nätverkspanel och räkna värdarna: det finns en.

Hur sidorna görs

  • Hugo — den statiska webbplatsgeneratorn, skriven i Go. Mallar, taxonomier, varje språk och flödena är dess verk.
  • Markdown och Go-mallar för de handskrivna sidorna och layouterna.
  • SQLite — portföljen skrivs inte här. Den finns i en flerspråkig cv-databas och exporteras in i den här webbplatsen av ett Python-skript, så att ett faktum skrivs en gång och dyker upp överallt där det hör hemma.
  • Python för den exporten, och för att generera ikonuppsättningen med ImageMagick ur en enda teckning av märket.

Hur det bevisas

Det finns ingen extern byggtjänst; kvalitetsspärren körs på den maskin som webbplatsen skrivs på, och varje diagnos är ett fel snarare än en varning.

  • vnu validerar HTML-koden, Stylelint CSS-koden.
  • axe-core granskar 39 representativa sidor — en per mall, på varje språk — mot WCAG 2.2 A och AA, i båda färgschemana, och den ingår i spärren, inte bredvid den. Webbplatsen bygger 2 253 sidor; en maskin hittar ungefär en tredjedel av det som WCAG kräver, och det är därför redovisningen nedan görs kriterium för kriterium i stället för som ett samlat godkänt.
  • Puppeteer styr headless Chromium för de kontroller som en validator inte kan göra: uppmätt kontrast, fokusordning, målstorlek, radlängd, överflöd utanför visningsytan, sidbrytningar vid utskrift och en visuell regressionsjämförelse pixel för pixel via pixelmatch. De körs vid behov snarare än vid varje incheckning — de tar ungefär tjugo minuter — så spärren håller den snabba halvan och en människa kör den långsamma. Den tar också bilden som andra webbplatser visar när en länk hit delas, så att det kortet är den här sidans egen stilmall och eget typsnitt snarare än en teckning av dem.
  • Lighthouse håller prestandabudgetarna; lychee kontrollerar att varje länk fortfarande leder någonstans.
  • Prettier, markdownlint, ESLint, Ruff, basedpyright, yamllint, ShellCheck och codespell håller källkoden ärlig; gitleaks ser till att ingen hemlighet någonsin checkas in.
  • Task kör alltihop under ett namn per jobb, och pre-commit kör den halva som gäller enskilda filer igen vid varje incheckning, så att spärren inte är något som någon behöver komma ihåg.

Var det körs

En liten maskin gör allt: en DigitalOcean-server med en kärna, 512 MB minne och en disk på 10 GB, som står i Toronto i Kanada och svarar på 165.227.39.206. Den adressen lämnar DNS redan ut till vem som helst som frågar, så att skriva den här sparar dig uppslaget snarare än berättar något nytt. Vad maskinen registrerar medan den svarar står på integritetssidan.

  • Debian är operativsystemet.
  • Caddy besvarar varje webbförfrågan och förnyar HTTPS-certifikatet själv, från Let’s Encrypt.
  • Agate, Gophernicus och Tor besvarar de tre andra: den här webbplatsen är också en Gemini-kapsel på gemini://engineer.company, ett Gopher-hål på gopher://engineer.company och en onion-tjänst på http://engineer2ezpeji52ipphljcflzyhetvy5r6tnqubtq45nzlxxv6rsqd.onion/. Alla fyra läser samma mapp med filer, så en driftsättning uppdaterar alla fyra och ingen av dem kan glida isär från de andra. Onion-tjänsten är den enda ytterdörr vi kunde lägga till utan att öppna en port: tor kopplar upp sig utåt mot introduktionspunkter, så maskinens öppna portar förblir exakt som de var. Webbplatsen skickar också ett Onion-Location-huvudfält, så att Tor Browser erbjuder den utan att bli ombedd. Den börjar med engineer eftersom vi lade CPU-timmarna på att göra den läsbar — en bekvämlighet, inte ett bevis. Samma prefix kan vem som helst få som är villig att lägga samma timmar, så jämför hela adressen och inte bara början av den.
  • Ansible beskriver den servern som kod, så att den kan byggas upp på nytt i stället för att kommas ihåg.
  • Soft Serve är git-servern bakom Git Hub på git.engineer.company. Den här webbplatsens egen källkod finns där.
  • restic flyttar säkerhetskopiorna bort från maskinen.
  • Cloudflare besvarar DNS — och bara DNS. Webbplatsen går medvetet inte via deras proxy: öppenhet är värd mer för oss än skyddet, och en proxy skulle ställa ytterligare ett företag mellan dig och oss.
  • E-posten ligger hos Apple iCloud, och därför når adressen på kontaktsidan en brevlåda och inte en marknadsföringsplattform.

Var det annars svarar

Allt ovan beskriver en webbplats, och den finns på engineer.company. Samma arbete levereras också på en fokuserad adress för varje fackområde: den som kommer till en av dem får se det fackområdet först och företagets egna sidor oförändrade, och var och en av de sidorna anger kopian på engineer.company som originalet.

Och git.engineer.company är ytterdörren till git-servern som nämns ovan: repona är privata och nås över SSH, så den sidan är allt som webben får se.

Webbplatsen finns också i sin helhet på svenska — det är de här sidorna du läser nu — och på norska och ukrainska: varje sida indexerad och namngiven i webbplatskartorna bredvid sina danska och engelska tvillingar. Språkraden i toppfältet erbjuder ingen av de tre, så läsare av den engelska och den danska versionen kommer hit via en länk från sin egen version av den här sidan.

Standarder det följer

  • WCAG 2.2 nivå AA, bevakad snarare än påstådd — med ett kriterium namngivet som undantag i stället för att slätas över. Etiketterna som visas när du hovrar över eller fokuserar ett märke kan inte stängas med en tangent, eftersom det kräver ett skript och den här webbplatsen kör bara ett skript. 1.4.13 är uppfyllt utom för den halvan, och det står här i stället för att lämnas åt någon att upptäcka.
  • schema.org-strukturerad data, som bara märker upp det som är sant och synligt på sidan.
  • Web App Manifest, så att webbplatsen kan installeras som app.
  • RSS, Atom och JSON Feed, alla tre med hela texten. Två XML-flöden i stället för ett, eftersom vissa läsare bara tar emot det ena av de två och man inte kan lita på att det är ett visst av dem.
  • RFC 9309 robots.txt, som tillåter allt, för sökrobotar och AI-system lika — texterna här finns till för att läsas, och den anger den webbplatskarta som båda följer. Det finns en läsbar förteckning över samma sidor, för den som hellre bläddrar i den än tolkar den maskinellt.
  • RFC 9116 security.txt, samt humans.txt, llms.txt, agents.txt och ai.txt för maskinerna som kommer och frågar — och ads.txt, som inte auktoriserar någon, eftersom det inte finns några annonser här att sälja.
  • Gemini, RFC 1436 Gopher och Tors onion-tjänster: samma sidor, levererade över alla tre på gemini://engineer.company, gopher://engineer.company och http://engineer2ezpeji52ipphljcflzyhetvy5r6tnqubtq45nzlxxv6rsqd.onion/, ur samma mapp med filer som den här sidan kommer från — en driftsättning uppdaterar alla fyra. Gemini och Gopher vill ha var sin egen klient snarare än en webbläsare; onion-adressen vill ha en Tor-klient, och Tor Browser är den vanliga. Gopher har inget krypteringslager alls, så det bär vilken sida du läser i klartext; Gemini krypterar det, men nätverket du läser från ser ändå vilken adress du bad om. Över onion-tjänsten ser det ingetdera: av de fyra gäller det bara där. Själva adressen är tjänstens publika nyckel, så kretsen är autentiserad och krypterad innan ett ord HTTP har sagts — http:// är korrekt snarare än slarvigt, och ett certifikat skulle bara bevisa ett namn som adressen redan bevisar med aritmetik.

Kontrollera det själv

Allt ovan är ett påstående, och avsnittet längre upp om hur det bevisas namnger verktygen vi kör mot vår egen maskin — vilket är att rätta våra egna prov. Det här är samma frågor, ställda av folk som aldrig har hört talas om oss. Varje länk kör ett test i realtid mot den här sidan, eller mot adressfältet på den sida du står på; ingen av dem tar vårt ord för något, och ingen av dem är vår.

  • W3C Markup Validator tolkar den här sidans HTML mot den levande standarden. Det är samma motor som vnu ovan, körd av W3C i stället för av oss.
  • W3C CSS Validator läser stilmallen som den här sidan bär. Räkna med att den rapporterar fel, och läs dem innan du tror på dem: i augusti 2026 validerar den mot en profil som stannar före system-ui, @property, clamp() i en font-size och scrolldrivna animationer — alla fyra finns i webbläsarna, och alla fyra används här. Mot /terms/ rapporterade den 176 anmärkningar, och 175 var av exakt det slaget. Den som inte var det hade hittat en verklig defekt: ett rotate: 0deg i viloläge förlorar sin enhet i minifieraren, rotate: 0 är ingen vinkel, och webbläsaren kastar hela raden — så en animation levererades utan den rotation den skrevs med. Stylelint kan inte se det, eftersom den läser stilmallen vi skriver och minifieraren skriver om den på vägen till dig. Stylelint är fortfarande den auktoritet vi håller källkoden till, och en egen kontroll läser nu det som faktiskt levererades.
  • W3C Feed Validator kontrollerar Atom-flödet, och samma tjänst kontrollerar RSS-flödet. Den varnar för att de flesta poster har samma ändringsdatum, och den varningen stämmer: datumen kommer från git-historiken, och de flesta av de här sidorna skrevs verkligen i samma fåtal incheckningar. Vi visar hellre en varning än hittar på ett datum.
  • JSON Feed Validator kontrollerar det tredje flödet, som W3C:s tjänst inte täcker — den är äldre än formatet.
  • PWABuilder läser manifestet och resten av det som gör webbplatsen installerbar, från Microsofts maskiner i stället för våra.
  • W3C Internationalization Checker läser de deklarationer av språk och teckenkodning som gör varje språkversion av den här webbplatsen läsbar för rätt läsare.
  • Schema Markup Validator läser den strukturerade datan, och Googles Rich Results Test säger vad en sökmotor gör med den.
  • PageSpeed Insights kör Lighthouse från Googles maskiner i stället för våra — prestanda, tillgänglighet, bästa praxis och SEO, med verkliga data där tillräckligt många har besökt sidan.
  • Mozilla HTTP Observatory betygsätter säkerhetshuvudfälten, och Qualys SSL Labs betygsätter HTTPS-konfigurationen bakom dem.
  • Security Headers är ett andra utlåtande om det första av dem, från någon helt annan.

Det ingen av dem kan kontrollera är tillgänglighetspåståendet, och det säger vi hellre än låter en grön bock antyda något annat. Inget automatiskt verktyg hittar mer än ungefär en tredjedel av WCAG-felen — resten är bedömningar av om en rubrik beskriver sitt avsnitt eller om en alt-text säger det som är till nytta, och en maskin kan inte göra dem. Granskningarna ovan är golvet, inte beviset. Om du använder en skärmläsare här och något läses upp fel, säg det till oss — det är den rapport vi inte kan generera.

Tack

Varje projekt ovan underhålls av människor som inte behövde dela med sig av något av det. Om du också bygger på den här stacken är det där dina pengar och dina buggrapporter gör mest nytta.

Och om den här stacken låter som din sorts ingenjörsarbete, sätt vår i arbete.

Engineer-maskoten: en vänlig blå och vit robot i en kretsmönstrad mantel, som flyger med huvudet först, ena näven framför sig och manteln efter sig