Benjamin Knudsen
Frontend-udvikler · React & TypeScriptSilkeborg, Danmark · ·

Kode med sans
for det visuelle.

Memoji af Benjamin

Hej, jeg er Benjamin. Frontend-udvikler med baggrund som multimediedesigner. Jeg bygger visuelle produkter i React og TypeScript, med AI-agenter som udviklingspartnere.

Skriv til mig

Projekter

Stride

live
  • Next.js 16
  • TypeScript
  • Drizzle ORM
  • Neon Postgres
  • Strava

Løbetræneren forbinder til Strava og bygger sine anbefalinger på en deterministisk regelmotor — samme data giver samme råd, og ingen model ser dine ture. Anbefalingerne leveres som typede blokke, der renderer rigtige React-komponenter: grafer, kort og indsigter direkte i dashboardet.

Fut Squad Lab

alpha
  • JavaScript
  • Chrome Extension
  • MIT
  • Vitest

Et værktøj jeg byggede til mig selv for at spare tid, når jeg spiller FIFA. Det løser Squad Building Challenges ud fra det lager, jeg allerede har i klubben — én challenge ad gangen, og det sender intet selv. Alt kører lokalt i browseren, og koden er åben under MIT.

Flagvagten

på hold
  • React Native
  • Expo SDK 57
  • TypeScript
  • NativeWind
  • EAS

Dansk flag-app til iOS, der husker at hejse og fire Dannebrog efter solopgang og solnedgang på din lokation. Kender flagdagene, halv stang og de grønlandske og færøske flag — med live-status via widget og Live Activity på iPhone.

strava-digest

v1.0.3
  • TypeScript
  • Node 22
  • CLI
  • Ingen backend

Et lille CLI-værktøj jeg byggede til mig selv: det omdanner en Strava-eksport på 22 MB GPS-data til én kompakt træningsrapport — splits, pulsdrift, zoner og tendenser — som en agent kan læse på cirka 14.000 tokens. Det er 454× mindre på mit eget eksport med 196 løb.

02 — Arbejdsmetode

Jeg styrer.
Agenterne leverer.

Min udviklingspartner er Hermes Agent ↗︎, Nous Researchs open source-agent, som jeg har sat op og tunet til mit workflow på en Mac Mini M4. Den kører 24/7, og jeg styrer den fra Discord — ofte fra telefonen — med Telegram ved siden af. Jeg kører to profiler, en til udvikling og en til privat, så skills, hukommelse og cron ikke blander sig. En kodende model skriver koden, og Hermes orkestrerer hele flowet fra issue til deploy. Jeg har bygget denne portfolio med den.

#1 HuskPersistent memory

Hermes husker på tværs af sessioner via mem0 og vector-søgning, så den kender mine projekter, præferencer og tidligere løsninger. Hukommelsen ligger pr. profil — en til udvikling, en til privat — så konteksten ikke flyder sammen, og jeg aldrig starter forfra.

mem0vector-søgningprofil pr. kontekst
#2 DelegerAlt starter med en brief

Jeg lader aldrig orchestratoren skrive kode selv. Den læser issuet, skriver briefen og delegerer til en kodende model, der implementerer i sit eget git-worktree per opgave. Sådan har jeg sat flowet op: flere opgaver kører parallelt uden at røre hinanden.

kodende modelisolerede sessionerworktree per opgave
#3 VerificerIntet slipper igennem uden grønt

Efter hver opgave kører min QA-gate: build → lint → typecheck → tests, hvor projektet har dem. Derudover læser en uafhængig model — aldrig den samme som skrev koden — diffen read-only og giver APPROVE eller REJECT. Den, der har skrevet fejlen, er den dårligste til at se den. Kun ændringer, der består hele kæden, bliver committet. Den regel har jeg bygget ind i flowet. Ingen undtagelser.

buildlinttypechecktests
#4 LeverFra issue til produktion

Fra issue til produktion på minutter, ikke dage. Hele flowet (læs, brief, deleger, QA, commit, merge, deploy) er automatiseret, og jeg tjekker resultatet på det, serveren faktisk udleverer — ikke på et grønt build. Min rolle er at bestemme og godkende.

GitHub issuesconventional commitsauto-deploy
Hvad der stadig er mit

Jeg vælger trade-offs, læser hver diff og bestemmer om den er god nok. Agenten foreslår, jeg afviser. Den vigtigste regel har jeg selv sat: den model, der skriver koden, må aldrig bedømme den. En anden model læser diffen read-only og svarer APPROVE eller REJECT, og bliver den afvist, går indvendingerne ordret tilbage til den, der skrev koden. Reglen findes, fordi den, der har skrevet fejlen, er den dårligste til at se den — og fordi et grønt build ikke er det samme som rigtig kode. Det er en beslutning om tillid, ikke om teknik.

24/7
kører på Mac Mini M4
200+
issues lukket i flowet
grønt
ved hver commit
100%
TypeScript strict
03 — Erfaring

Hvor jeg har arbejdet.

2024 — nu
Frontend-udvikler Minetilbud (Dayli)Kom med i teamet, da Minetilbud opkøbte AVIOU. Bygger og vedligeholder Dayli Publisher: skabeloner, komponentbibliotek og løbende UX-arbejde i React, TypeScript og Storybook.
2022 — 2024
Frontend-udvikler AVIOUOnline katalogplatform i React og TypeScript. Byggede nye funktioner og forbedrede UI-komponenter, der gjorde kundernes arbejdsflow hurtigere. Derudover webdesign og frontend-løsninger for en række kunder.
aug. — okt. 2021
Frontend-udvikler, praktik Web2Media
2021
PBA i webudvikling Erhvervsakademi Aarhus
2020
Multimediedesigner Erhvervsakademi Aarhus
04 — Om mig

Når jeg ikke koder.

Når jeg ikke bygger digitale løsninger, spiller jeg helst spil, der gør livet lidt sværere, end det behøver at være — Dark Souls, Elden Ring, Sekiro og senest Silksong er alle klaret. Ellers følger jeg fodbold, logger film på Letterboxd og ser stadig Manchester United, efterhånden mest af ren stædighed.