Fra ludditt til vibe-coder

Fra ludditt til vibe-coder

Mine erfaringer med Claude og AI-assistert utvikling

2026-02-11 — Tobias Brox — Redpill Linpro

Rendret presentasjon: https://tobixen.no/ai.html

QR-kode til presentasjonen

Agenda

Veien videre
  • AI — intro og mine erfaringer

  • Personvern og datadeling

  • Konkrete prosjekter

    • RLNC-klienten

    • Inventar-systemet mitt

  • Spørsmål

  • Demo av Claude Code

  • Spørsmål og diskusjon

AI — Introduksjon

Ludditt-fasen

Ostrich
  • Jeg var lenge skeptisk til AI

  • Utviklingen er skummel

  • Utviklingen går skummelt fort

  • Jeg ønsket å ha minst mulig med AI å gjøre

  • Mental strategi: undervurder AI’en

    • "AI kan bare resirkulere kode den har sett før"

    • "Bare dårlige kodere har bruk for AI"

    • "Mine prosjekter er for kompliserte for AI"

  • Linje i sanda: kaste penger på AI

Ekspress-toget

Shinkansen
  • Kan ikke stikke hodet i sanden

  • Utviklingen går ekstremt raskt

  • AI-verktøy er genuint nyttige — i dag

  • Ignorerer man det, blir man hengende etter

GitHub Copilot

GitHub Copilot
  • Testet det ut i noen timer, fra GitHub web-UI

  • Det fungerte rett og slett ikke for meg den dagen

  • Den brukte opp test-kvota mi på tull

  • (Dét er et problem med Claude også)

Claude

Claude
  • "Claude er dødsbra" - tips fra en venn, i fjor

  • Brøt omsider regelen min om å ikke kaste penger på AI

  • Bare prøvd "Claude Code". (Anthropic har mer).

  • VELDIG imponerende førsteinntrykk

  • Forstår kontekst og kan resonnere

  • Kan føre en samtale om kode og designløsninger

  • Gjør ofte ting bedre og raskere enn meg

  • Kan søke etter løsninger og tips på nett

  • …​ men kan den bestille pizza?

Claude - blandede erfaringer

This is fine
  • Tidvis dårlige designløsninger

  • "Glemmer av" viktige beskjeder og viktig informasjon

  • Maler seg inn i et hjørne

  • Ønsker å gjøre ting uten å vurdere konsekvenser

  • Bruker ofte veldig mye CPU, minne og også båndbredde. For hvert API-kall sendes all kontekst over.

    • Selv når den "ikke gjør noe"

Forutsetninger for "god bruk" pr i dag

Dirigent
  • Sjekke opp designløsningene Claude kommer med og vurdere om de er fornuftige eller ikke

  • Se igjennom koden Claude produserer, og vurdere kvaliteten

  • Stille kritiske spørsmål

  • Mange filer man kan lagre persistente instruksjoner i - men ikke alltid det fungerer

  • Testing, testkode og manuelle tester er viktig!

  • God bruk av git

  • Be Claude om å lage testkode først og logikk etterpå.

  • Starte en ny Claude-sesjon og be om code review

Utviklingen går fort

Ares I-X
  • Vær forsiktig med å si "AI kan ikke …​"

  • Det som er sant i dag, er kanskje ikke sant i morgen

  • Trolig bortkastet å investere tid på å bli "AI-ekspert"

  • Trolig vil mye på forrige slide være utdatert snart

Rask utvikling av programvare

XKCD Automation
  • Oppgaver som tok timer/dager tar nå minutter/timer

  • Men: tidsestimater er vanskeligere med AI

  • Python CalDAV client library - async support - lang reise!

    • Brukt mer tid med Claude enn hva jeg estimerte å bruke uten Claude!

Kodekvalitet — og kaninhull

Down the rabbit hole
  • Fikse TODOer i stedet for å opparbeide seg teknisk gjeld

  • Bug i et tredjepartsbibliotek? Claude kan dykke ned, fikse og levere PR

  • Å skrive testkode kan være kjedelig - Claude gjør jobben

  • Jeg har gravd opp mange gamle prosjekter og bedt Claude om code review og modernisering

  • Jeg graver meg enda dypere ned i enda flere kaninhull enn noensinne før!

Oppsett og nye prosjekter

GitHub contributions
  • Problemløsning, f.eks. rare problemer på laptopen

  • Komme i gang med prosjekter

  • Sette opp verktøy og konfigurasjon

  • Få oversikt over ukjente prosjekter

  • Få vanskelige og tidkrevende oppgaver gjort

  • Ting utenfor komfortsonen

  • Konflikthåndering og rebase-operasjoner i git

Utenfor komfortsonen

  • Publisert puppet-moduler på Puppet Forge

  • Forsket på og fikset problemer i "fremmede" språk

  • Oppgaver jeg aldri ville tatt tak i på egen hånd

Et av mange eksempler: https://github.com/Alexays/Waybar/issues/4851 og https://github.com/Alexays/Waybar/pull/4852 (men viktig å være oppmerksom på at det kan kreve mer arbeid å gjøre review på slikt enn å "vibe-programmere" koden - så jeg presiserer at jeg ikke vil ta meg nær av at dette lukkes uten årsak).

Vibe coding

Vibe coding er magi
  • Kort enkelt språk blir til lang kode

  • Fungerer overraskende bra for mange oppgaver

  • Perfekt for prototyping

  • Perfekt når alt av testing kan automatiseres

  • En fordel at man kan forstå kode og design, og stille kritiske spørsmål underveis

  • "Responsible Vibe Engineering" vs "Irresponsible Vibe Coding"

AI, datasikkerhet og personvern

Data til USA (eller Kina)

  • "AI-bruk" - sende data til sky-tjenester i USA

  • Vi har null kontroll med hva dataene blir brukt til

  • Null kontroll - hverken de-jure eller de-facto

  • Viktig å tenke over hva man deler

Data flyger avgårde

Privatbruk

  • Inventarliste og handleliste

    • Ikke så veldig hemmelig informasjon

    • Jeg unngår å putte kompromiterende og verdifulle ting på inventarlista

    • Greit nok å dele med skytjenester

  • Mye annet rask

  • Open-source-prosjekter

Jobbruk

  • Ikke så mye

    • Vi kan ikke eksponere puppetkode i kundeprosjektene (tror jeg?)

    • Interne prosjekter som ikke er offentlig tilgjengelig er en gråsone.

      • Jeg prøvde å gjøre utvikling på Incident Mate helt uten Claude - men har brukt Claude litt

  • Open-source-komponenter

    • aws-cli - lagde en ny offentlig puppet-modul med Claude i stedet for å spikre inn noen linjer manuelt i kundeprosjektet

    • veldig greit å bruke claude når man sliter med ekstern FOSS-programvare

  • Ting som er uproblematisk å offentliggjøre

    • RLNC-klienten

Sikkerhet

  • Claude Code kjører lokalt

  • Har et permission-system — spør før den gjør noe

  • Default tilgang til å lese og eksekvere ting i $CWD

  • Jeg synes det er mistenkelig mye CPU-bruk og datatrafikk også når "Claude Code" gjør ingenting.

  • Jeg har kjørt dette fra jobb-laptop’en, men er i ferd med å gå bort fra det og flytte det til hjemmeserver.

Open source

  • Arbeid på FOSS er velegnet - koden skal uansett være offentlig tilgjengelig

  • Men pass på secrets — passord, tokens, config

Vi er et open source-selskap

  • Vi bør basere oss mest mulig på open source-moduler og verktøy - enten de er laget av oss eller av andre

  • Vi bør prøve å "sy sammen" løsninger slik at …​

    • …​ mest mulig av vår egen kode er tilgjengelig som publisert FOSS-programvare/moduler

    • …​ proprietær/konfidensiell informasjon foreligger i form av konfigurasjon, og ikke kode

    • …​ ved utvikling av interne verktøy, vurder alltid "bør dette publiseres?"

  • Med AI kan selv sysadmins uten utviklererfaring lage ting, gjøre research på bugs og levere pull requests

  • "Vibe coding" senker terskelen enormt

RLNC-klienten

Ideelt for vibe-programmering

  • Ingenting sensitivt — dokumentasjon og klient bør være offentlig

  • Mye "manuelt arbeid" — "oversette" API-dokumentasjon til kode

  • Ingen kompleks logikk eller vanskelige avgjørelser

  • Lett å teste automatisk

Som fot i hose

CLI-design

  • Basert på OpenStack CLI-mønsteret

  • Intuitivt for alle som har brukt OpenStack CLI

  • Jeg spesifiserte aldri hvordan CLI-et skulle se ut

  • Claude valgte et fornuftig design på egen hånd

Piece of cake

Tidsbruk

  • Jeg hadde en tilsynelatende feature-komplett klient med dokumentasjon (og --help) klar "veldig raskt" - tror det tok under en halvtime!

  • Så raste det på noen timer på testing, feilsøking og polering

  • "Metadata-problem" på IAAS2

  • Rulle det ut på login-servere, etc - totalt et par dager med alt inkludert

    • Integrasjonstesting, automatiserte tester, research på problemer

    • Makefile som fungerer både på login-osl1 og login

  • Fortsatt gjenstående: få opp pipelines for automatiske integrasjonstester på bitbit.net, semi-automatisert installasjon av siste versjon på begge login-serverene

  • Manuelt ville dette kanskje tatt uker

Kodeeksempel

$ rlnc --os-cloud=ms2_test database list
id                                    name              status     service_address
------------------------------------  ----------------  ---------  -------------------------------------------
eee6b590-bc46-4699-a7dd-dcb515acf2a4  dbaas-single-bia  Available  {
                                                                     "floating": [
                                                                       "87.238.54.235"
                                                                     ],
                                                                     "ipv4": [
                                                                       "10.132.10.210"
                                                                     ],
                                                                     "ipv6": [
                                                                       "2a02:c0:1002:3f01:f816:3eff:fef4:e6d7"
                                                                     ]
                                                                   }

Demo: RLNC-klienten

Live demo

Erfaringer fra RLNC

  • Akkurat denne oppgaven var svært enkel med Claude

  • Claude er veldig god til repetitivt arbeid

  • CLI-design ble bra nesten uten spesifikasjon

  • Minimalt med "kursjusteringer" var nødvendig

  • Testing er viktig — helautomatisk testing er idéelt

  • Friksjonen lå i iaas2, ikke med claude

Inventar-systemet mitt

Starten

KISS

  • Begynte som inventarlister i Markdown-format med git-backing.

  • Enkle søk i editoren

  • Fotografier lagret i git

  • Skalerte dårlig

  • Mine eldste sønner hadde teoretisk mulighet til å finne ut av dette

  • Lite tilgjengelig for resten av familien

  • Trengte noe bedre

Statisk HTML

Fortsatt uten Claude

  • Konverterte markdown til HTML, med hundrevis av fotografier på samme webside

  • Primitivt og skalerte fortsatt ikke

  • Alt for mange bilder og mye tekst på én statisk HTML-side fungerer rett og slett ikke så bra

Claude-forbedringer

  • Spurte Claude om å forbedre systemet

  • Fikk en løsning med javascript, og konvertering fra markdown til json

  • Ikke godt nok enda, men mye bedre enn det jeg ville laget selv

  • Noen ting gjorde Claude så bra at jeg fikk hakeslepp

  • Første versjon, etter noen timers arbeid, var meget bra.

  • Så har det gått med mange timers arbeid uten at ting er blitt særlig bedre.

    • Claude suger?

  • Jeg lagde interaktiv funksjonalitet på websiden, men foretrekker fortsatt å editere markdown

Flere bruksområder

  • Fotoanalyse — ta bilde av ting, Claude identifiserer dem

    • Kryddersamlingen - jeg hadde planer om å kaste en 4l-boks med diverse krydderposer - de ville aldri blitt brukt uten Claude!

  • Holdbarhetsdatoer — sjekke hva som utgår snart

  • Oppskriftsforslag — "hva kan jeg lage med det jeg har, som holder på å gå ut på dato?"

  • Identifisering av EAN-koder og databaseoppslag

  • Handlelister basert på inventory

  • Finne ut av "hvor mye kostet maten vi åt i dag?" (særlig relevant hvis man skal dele på kostnader, og halvparten av maten kommer fra matvarelageret)

Erfaringer

  • Brukergrensesnitt og javascripts i browseren er mindre idéelt for "Claude Code" pr i dag.

    • (Det finnes sikkert verktøy for å gjøre dette enklere)

  • Claude egner seg bedre for prototyping enn til å vidreutvikle komplekse systemer

  • Claude er flink også på arbeidsoppgaver som ikke involverer koding

  • AI er bra til AI-oppgaver, men alt som kan gjøres algoritmisk bør gjøres algoritmisk

    • Ikke be Claude om å gjøre jobben, be Claude om å lage verktøy for å gjøre jobben

Demo: Inventory-systemet

Live demo

Demo av Claude Code

Hva er Claude Code?

  • CLI-verktøy fra Anthropic

  • Kjører i terminalen din

  • Leser og skriver filer, kjører kommandoer

  • Forstår hele prosjektet ditt

  • Ber om tillatelse før den gjør endringer

    • Så du har alltid kontroll.

Live demo: Claude Code

Live demo

Claude Code har bidratt mye med å utvikle denne presentasjonen.

Live demo: Results

(denne og de to neste slidsa var ikke en del av presentasjonen på fagdagen - de er lagt til i ettertid)

Jeg skrev til Claude (i ny sesjon, uten gammel kontekst): "I want a new slide describing the CLAUDE.md config file. Please have a look at my own file. The slide should be blue". (Se også presentasjonsnotatene den har laget med å trykke "S")

CLAUDE.md — instruksjoner til Claude

  • Persistent konfigurasjon for Claude Code

  • ~/.claude/CLAUDE.md — globale instruksjoner for alle prosjekter

  • CLAUDE.md i prosjektkatalogen — prosjektspesifikt

  • Claude leser filene automatisk — husker på tvers av sesjoner

  • Markdown-format — lett å lese og redigere

Min CLAUDE.md

  • "Pek ut skrivefeil og grammatikkfeil i mine meldinger"

  • "Tenk selvstendig — presenter alternativer og spør"

  • "Skriv tester FØRST — bekreft at de feiler — så implementer"

  • "Aldri push eller åpne PR uten eksplisitt beskjed"

  • "Alltid merk AI-involvering: Co-Authored-By: Claude i commits"

  • "Sjekk alltid aktiv git-branch før commit"

  • "Oppdater docs og CHANGELOG etter endringer"

Oppsummering

  • AI-verktøy er genuint nyttige — i dag

    • Både for utvikling og drift

  • Trenger man teknisk kompetanse for å bruke dem?

    • I dag er det en stor fordel. I morgen er vi arbeidsledige?

  • Tenk på personvern og sikkerhet, men ikke la det stoppe deg

  • Start med noe enkelt — et lite prosjekt

  • Vibe coding er magi, en slags superkraft

Bildekreditering (1/2)

Bildekreditering (2/2)

  • Ares I-X: NASA — public domain

  • Trollmann med tryllestav: Pexels — Pexels-lisens (fri bruk)

  • GitHub-bidrag: skjermbilde fra github.com/tobixen

  • Flygende papirer: Pexels — Pexels-lisens (fri bruk)

  • Kakestykke: Pexels — Pexels-lisens (fri bruk)

  • Sokker ved peisen: Pexels — Pexels-lisens (fri bruk)

  • GitHub Copilot-logo: GitHub, Inc.

  • Claude-logo: Anthropic, Inc.

Redpill Linpro