Gå til hovedindhold

AI i praksis

Mål før du gætter: sådan blev mit CRM elleve gange hurtigere

Indsendt af Lennart den

Forleden byggede jeg mit eget CRM i en tekstfil. I går spurgte jeg mig selv: kan den køre hurtigere? En af kommandoerne — den, der kobler kontakter sammen med min aktivitetslog — tog godt et sekund. Ikke katastrofalt, men nok til at irritere.

Svaret blev ja: fra 1033 millisekunder til 93 — elleve gange hurtigere. Men det interessante er ikke tallet. Det er, hvordan man finder derhen, og hvorfor det overhovedet var muligt.

Mit CRM er en tekstfil: om at eje sine data frem for at leje dem

Indsendt af Lennart den

I weekenden byggede jeg mit eget CRM. Ikke abonnerede på et — byggede et. Det tog en eftermiddag, det fylder nogle få hundrede linjer kode, og hele kundekartoteket ligger i én tekstfil på min egen maskine. Det lyder som et stykke nørderi. Men pointen er strategisk, og den gælder enhver virksomhed, der opbevarer sine kunderelationer et sted.

Hvad jeg byggede

Et CRM er i sin kerne ikke kompliceret: en liste af kontakter, du kan tilføje til, søge i og holde ren. Mit er bygget som en håndfuld små moduler i terminalshellet Nushell, hvor hver fil har ét ansvar:

Hvorfor ikke bare køre det hele som root?

Indsendt af Lennart den

I de to foregående indlæg landede jeg på en konklusion: enable-linger var en lappeløsning, og den rigtige vej var at gøre min automatisering til ægte systemtjenester. I weekenden gjorde jeg det så.

Femten unit-filer flyttede fra brugerens systemd op på systemniveau. De gamle user-timere blev stoppet og slået fra, de nye blev lagt i /etc/systemd/system/, og bagefter kunne jeg endelig slå linger fra:

Enable-linger var en lappeløsning — her er alternativerne

Indsendt af Lennart den

I forrige indlæg fortalte jeg om de to dage, hvor jeg gik rundt og troede, jeg havde et kørende system — men i virkeligheden havde et system, der hang i en tråd, jeg selv holdt i. Løsningen blev sudo loginctl enable-linger $USER, som tillader, at en brugers baggrundsprocesser overlever, at brugeren logger ud.

Virker i demoen, død efter genstart: hvad automatisering virkelig handler om

Indsendt af Lennart den

For et par dage siden byggede jeg nyhedspipelinen til folkets.dk med systemd-timere og en JSONL-fil. Den henter nyheder, lader en LLM omskrive dem til danske notitser, og udgiver dem. Den virkede da jeg lukkede terminalen.

Og det var præcis dér det spændende spørgsmål dukkede op. Ikke "virker det?", men: hvordan ved jeg at det bliver ved med at virke — også når jeg ikke kigger?

Når en heartbeat bare er en ping: marketingsprog mod ærlige navne

Indsendt af Lennart den

Et par gange om ugen sidder jeg og læser produktbeskrivelser fra AI-platforme. Og hver gang lægger jeg mærke til det samme mønster: noget der teknisk er en helt almindelig, gammel, kedelig mekanisme har fået et navn der får det til at lyde som om det lever.

"Heartbeat" er det klassiske eksempel. En "heartbeat" er en pakke der sendes med fast interval, så modtageren ved at afsenderen stadig er online. Det er en keepalive. Et periodisk ping. En health check. Konceptet er fra 1970'erne og findes i hver eneste netværksprotokol der findes.

Systemd og en JSONL-fil: hvordan jeg automatiserede folkets.dk uden et eneste agent framework

Indsendt af Lennart den

I dag har jeg brugt formiddagen på at få nyhedspipelinen til folkets.dk til at køre helt automatisk. Den henter nyheder fra internationale nyhedsservices hvert tiende minut, lader en LLM omskrive dem til danske notitser, og udgiver dem på sitet via Drupals JSON:API.

Det interessante er ikke at det virker. Det interessante er hvad det ikke indeholder.

Et lille bidrag til Nushell: når completion også skal kigge på beskrivelsen

Indsendt af Lennart den

Jeg fik for nylig et lille bidrag ind i Nushell — open source-shellet jeg bruger til daglig. Det er en bitte forbedring i hvordan custom completers virker, men den løser en konkret friktion jeg løb ind i hver eneste gang jeg skulle bruge mit eget terminal-værktøj. Her er hvad det handler om.

Min skyggeprofil på LinkedIn - og hvordan du kan finde din

Indsendt af Lennart den

Jeg trak min egen LinkedIn-data ud i går.

Ikke det jeg selv har skrevet på din profil.

Det andet.

Det LinkedIn har gættet sig frem til om mig, baseret på alt det jeg foretager dig mig platformen.

Et af felterne så sådan her ud:

Active contributor on LinkedIn, such as in feed and in groups, who regularly influences public opinion and public policy. Based on factors such as your experience, industry, and activity in groups.

Type of inference: Active contributor who influences public opinion