Den gråskæggede mand her er lidt træt af Javascript-frameworks såsom React, som jeg synes "vil for meget", så jeg er gået tilbage til W3Cs WebComponents. API'en er lidt bøvlet, men så kan man føle sig som en l33t haX0r, når ens plugin virker ;) Webstandardiseringsorganet W3C er desværre ikke så kendt for at lave simple API'er, så det er på mange måder mere usexet end React. Kan du ikke undvære React, så er der også Vue og Preact, der er en slags "Light-udgave" af React.

Men altså, Web Components fjerner eksterne afhængigheder helt. Jo færre eksterne moduler, dit script er afhængig af, jo større er sandsynligheden for, at det også virker om 5 år. 

Nedenfor er et starter-eksempel på, hvordan man kan have et eksternt stylesheet ved siden af sin WebComponent. Du kan sagtens definere mere af nedenstående direkte i dit HTML-dokument, men jeg kan godt lide at have mest muligt samlet, for det gør det nemmere at genbruge og distribuere komponenten

Prop dette i en .js-fil - kald den imgcard.js (beklager formateringen - eller mangel på samme, Bludits theme overskriver Rich text editor'ens stylesheet)

import stylesheet from "./imgcard.css" with { type: "css" }

class SJImageCard extends HTMLElement {

constructor() { super(); }

connectedCallback() { const shadow = this.attachShadow({ mode: "open" }); shadow.adoptedStyleSheets = [stylesheet];

const wrapper = document.createElement("div");
wrapper.setAttribute("class", "card shadow");
wrapper.textContent = this.textContent;
shadow.appendChild(wrapper);

}

disconnectedCallback() { console.log("Elementet blev fjernet"); } } customElements.define("sj-imagecard", SJImageCard);

Lidt om koden:

Det er ren boilerplatekode. Jeg starter lige i bunden på sidste linje, og hopper så tilbage: customElements.define-linjen registrerer dit element med browserens CustomElementRegistry. Den første parameter afgør, hvordan man kalder sit custom element i ens HTML-dokument. Så placer tagget <sj-imagecard></sj-imagecard> i dit HTML-dokument, næste parameter er navnet på klassen, hvor din komponentlogik lever.

Tilbage på linje 1 importerer jeg stylesheetet, bemærk den nye syntaks. Tidligere kunne du skrive assert istedet for with, men den notation er deprecated.

Så opretter jeg en klasse SJImageCard, der danner grundlag for min komponent. Klassen skal nedarve fra HTMLElement for at få de rigtige egenskaber. I constructor'en skal du huske at kalde super()-metoden, for ellers bliver constructor'en i HTMLElement ikke kaldt på rette tidspunkt.

ConnectedCallback-metoden kaldes så snart ens komponent indlæses af browseren, så det er der, du placerer hoveddelen af din kode. attachShadow-metoden laver en ShadowDOM for din komponent, der er separat fra browserens "hoved"-DOM, og det er her, du så laver din komponents indre logik. Jeg tror umiddelbart resten af koden er selvforklarende. Ellers imødeser jeg en sur besked på Mastodon ;)

Jeg opdagede lige, at podcasten "SaaS Købmænd" (fedt tiltag!) havde et interview med en af mine personlige OpenSource-superhelte, Niels Hartvig, som opbyggede CMS-systemet Umbraco. Jeg var selv en del af community'et i opstarten tilbage i 00'erne. Knapt så synlig, for min gode ven Karina og jeg havde travlt med at bygge firma, jeg var dog med på forummet i forhold til at prøve at hjælpe nye på plads.

Det var fedt at følge med i Umbracos udvikling på sidelinjen. Niels Hartvig brugte meget aktivt sin blog i starten, så man kunne følge med i rejsen og Umbracos første community-site afspejlede, at der var gang i udviklingen, for man kunne hele tiden følge med i uploadede community-pakker og generel forum-buzz.

Jeg synes Niels' og Umbracos historie er meget inspirerende og alt for overset af medie-Danmark, for det er en vild, men samtidig alt for stille succes, de har haft: Det er et millionmilliard-selskab i dag. Umbraco bruges af rigtig mange offentlige instanser og selskaber i Danmark og verden over. Det du'r! Det viser, at man godt kan tjene penge på Open Source, der mangler bare flere iværksætter-historier om, hvordan man gør.

Se podcasten og bliv inspireret :-D

Umbraco.org
SaaS Købmænd

Overskriften burde allerede afsløre min holdning til AI.

Lad mig tage det positive først: 

Det er fedt, at man kan skrive et spørgsmål i en AI-chat og den så forstår en, selvom man måske formulerer sit spørgmål upræcist. Jeg er vokset op med teksteventyr, der krævede, at man var meget præcis, hvis spillet skulle gøre, hvad man bad det om. Og jeg tror, LLM'er kan gøre rigtig meget for vores måde at interagere med computere på, så det bliver mere naturligt. Tale-til-tekst apps har nogle gange svært ved at forstå mit randrusianske, jeg ser frem til en fremtid med mindre barrierer der.

Et andet sted, der virker rigtig godt: AI bruges allerede til billedklassificering. Den startede med at lære at tolke krumninger på agurker, og vi er kommet et stykke videre: ESA bruger f.eks AI til at finde bestemte former for galakser udfra rumteleskopet James Webbs mange opdagelser.

Resten ved AI imponerer mig ikke rigtigt, det bliver oversolgt og den agentmæssige automatisering synes jeg, man skal holde sig langt fra. Man kan ikke overskue konsekvenserne af den. Du lægger beslutninger, der burde være dine, i hænderne på den, der har bygget AI'en.

Du kender ikke din vibekodede app til bunds

Jeg har observeret vibekodere, der siger, de er effektive, men når man når dybere ind i samtalen, så viser det sig, at de brændt en masse tokens af på ingenting, og brugt halve og hele dage på at "skændes" med en AI for at få deres program til at gøre præcist det, det skal. Det fremgår sjældent af den AI-lovprisning, der sker rundt omkring.

Hele måden, mange vibekodere strukturerer sin udvikling omkring brugen af AI er forkert. 

I "gamle dage" kendte du din kode, fordi du eller dit team havde bygget den selv fra bunden. Ikke altid det hele, men du havde et vist overblik. Nu får du serveret en massiv bunke kode, du ikke kender, som du så skal gennemgå for fejl. Det vel at mærke oven i den tredjepartskode, der bliver inviteret ind i din kodebase via andre folks kodebiblioteker udefra. Og i en tidsalder, hvor output og hastighed synes vigtigere end grundighed, så kan man sagtens forestille sig, at nogle vil springe let og elegant over kodegennemsyn - i højere grad nu end tidligere.

Hvis ikke du nyder at pille kode fra hinanden, for at se hvad den gør - så skal du overveje om det er programmør, du vil være. For hvis du bare stoler på outputtet fra AI, så kommer du til at bygge løsninger, der er lige så stabile som vådt bølgepap.

RAD-værktøjer var 90'ernes effektivitetsdrug

Jeg kender hype, når jeg ser den.

I 90'erne var effektivitetsdrug'et for programmører såkaldte RAD-værktøjer, Rapid Application Development. Det var "klik og træk den her tekstboks ind i din applikation" og du har dit program. Ingen med sans for seriøs produktudvikling bruger dem i dag, og folk, der har arbejdet med vedligehold af kode, vil formentlig nikke genkendende.

RAD-værktøjer fungerede udmærket til prototyping og små husstandsløsninger. Koden blev hurtigt en bunke miskmask, så snart dit program nåede en vis kompleksitet, fordi RAD-værktøjerne producerede mere kode, end der egentlig var brug for, og til at overskue.

Det er akkurat samme sted, du ender, hvis du lukker AI ind i dit udviklingsmiljø, og de, der siger, at jeg er fuld af l*rt - lad os snakkes ved om et år. For selvom en AI foregiver at forstå din kode, så angriber den stadig løsningen uden at forstå konteksten. Vi hører bare aldrig om omfanget af korrigerende prompter.

Jeg ser et marked for "AI disaster recovery" i fremtiden.

"AI Agents gone rogue"

Så er der hele snakken om AI-agenter, der kan udføre handlinger for dig. Man har lavet lavpraktiske AI-agenter, de sidste 50 år. Det hed bare shell-scripts, en serie kommandoer, der fik computeren til at udføre programmerede operationer uden manuel menneskelig intervention. Det nye er, at med AI, så ligger muligheden nu i hænderne på almindelige mennesker uden scripting/programmeringserfaring... What could go wrong? Det er dybest set selvsamme scripting, bare pakket ind i et pænt chat-interface, med en AI, der giver dig visuel feedback i forhold til, hvad der foregår.

Hvor vi kendte resultatet af, hvad et script gjorde, så er der ingen, der kender resultatet af, hvad en AI agent laver under motorhjelmen. Den prøver at give dig en tekstmæssig opsummering af, hvad den har tænkt sig at gøre, og beder dig svare ja eller nej, men det er først, når du ser dens tilbagemelding, at du forstår, hvilke handlinger den har udført. Så ku' den i praksis have lænset din bankkonto, fordi den synes du sku' købe nogle aktier eller obligationer oveni overførslen til lillemor, som du egentlig bad den om.

Nej, jeg kommer ikke til at invitere AI-agenter ind i mit liv. Overhovedet.

Virksomheder bliver afhængige af AI

Der er en anden ting, jeg heller ikke forstår. Og det er at virksomheder uden at blinke vil outsource hele eller dele af deres forretning til en af de udenlandske AI-selskaber. Vil du virkelig satse hele virksomhedens eksistensgrundlag på en ekstern faktor?

Der er nok overraskende mange, der vil svare ja, men så har de ikke gidet at lave en risikoanalyse for deres virksomhed. Jeg gentager mig selv fra et tidligere afsnit: Jeg ser et marked for "AI disaster recovery" i fremtiden.

Tailwind, der er et populært CSS-layout framework, måtte fyre medarbejdere, og sælge sig selv til Shopify for stadig at kunne holde dørene åbne. Årsagen var at deres tokenforbrug blev så højt, at økonomien ikke hang sammen.

Tokenpriserne stiger i øvrigt heftigt, fordi hvedebrødsdagene er ovre AI-selskaberne mangler at påvise en forretningsmodel, der kan tjene dem penge.
Forbes skriver: "Virksomheder kæmper med hastigt stigende AI-udgifter, især på "tokens", men kæmper med at påvise et klart investeringsafkast. En OpenAI-rapport fandt ingen meningsfuld sammenhæng mellem medarbejdernes token-output og omsætning pr. medarbejder, på trods af at udgifterne steg kraftigt."

AI-revolutionen udebliver. Også selvom AI-selskaberne har gang i hype-maskinen. Og hvorfor var det, at grøn omstillingsdagsordenen røg sig en tur, da snakken faldt på AI? Hvis ikke du søger nul emission, så er du ikke innovativ nok.

Alt er blevet værre i 2020'erne - og koncernerne har vokset sig så store, at de er fløjtende ligeglade med kunderne. Det er præmissen i Vanessa Wingårdh's glimrende Youtube-video herunder.

Vanessa Wingårdh: "Everything got worse in the 2020s"

Det er også mit perspektiv - og måske er tiden kommet til, at politikerne må indse at selskaberne er blevet for store, så store, at de bør brydes op for at genvinde deres kundefokus. "Jamen, konkurrenceevnen", hører jeg kapitalisterne sige...

- Fuck konkurrenceevnen - og koncentrér dig om dit hjemmemarked. Du kan alligevel ikke konkurrere med de store økonomier, når de trykker på speederen. Vi får ikke i øvrigt aldrig et nyt DSV eller Maersk, for alle lader sig alligevel opkøbe inden og smutter til Solkysten, hvor de sidder og drikker Sangria dagen lang.

Tag et selskab som Just-Eat, der var store på pizzaer herhjemme og havde en fornuftig størrelse ude i verden - hvor er de nu? Opkøbt og ude af det danske marked. De kommer aldrig tilbage. I processen overtog de i øvrigt også Hungry, så der var ikke engang en arvtager af nogenlunde samme størrelse (...som pizzaelsker var jeg i øvrigt storkunde hos begge)

Der er også koncerner, der jagter lige nu trillon dollar-overskud, og i den proces, så skal vi som kunder æde forringelser i de produkter vi køber - samtidig med at virksomhederne i øvrigt prutter på miljøhensyn. Det er nogle andres bord, tænker de, mens de tromler deres dagsorden igennem. Det holder ikke en meter - vi skal efterlade planeten i bedre stand, end vi modtog den, ellers er vi dælme nogle dårlige planetforvaltere. Vi kan i hvertfald ikke hævde at være intelligente, for vi bevæger os ikke imod fremskridt, snarere tværtimod. Symbiosen med planeten klarer dyrene langt bedre end os.

Mens vi venter på, at politikerne vågner op: Byg websites, venner - og peg os i retning af "do-good"-virksomheder, der rent faktisk gider at gøre en positiv forskel, så vi kan undgå dem, der bare vil tjene penge til dem selv og deres investorer.


 

Jeg postede oprindeligt dette opslag på Fediverset.dk - og for at det ikke skal virke for kultagtigt, så poster jeg det her også. Vi vil gerne have flere til at deltage i fremtiden, så spring gerne en tur på en af serverne, og opret en bruger.

---

Flere har efterspurgt en konkret køreplan for, hvordan fødiverset kan udvikle sig. Fødiverset består i sin natur af selvorganiserende fællesskaber, der selv bestemmer, hvad de deltager i, så betragt dette som et idéoplæg. Når det er sagt (skrevet), kunne det være meget fedt, hvis vi kunne etablere faste formelle og uformelle arbejdsgrupper og nogle langsigtede mål.

Det er naturligvis frivilligt, om man vil deltage i sådanne grupper og i hvilket omfang, man har tid og lyst til at deltage.

Din tur 😀

Her stiller jeg tre enkle, afklarende spørgsmål som du gerne må svare på (som kommentar på dette opslag, som så automatisk federeres ud i fediverset), hvis du vil bidrage til at få sat gang i nogle projekter:

Hvad mangler fødiverset?
Hvordan kommer vi derhen?
Hvad vil du arbejde med?

Du må skrive lige, hvad du har lyst til, og drømme lige så vildt, som du kan. Alt er velkomment. Det behøver ikke være kodeprojekter, det kan også være andre tiltag, der kan skabe flere muligheder for fødiverset/fediverset som et mangfoldigt fællesskab.

I princippet kan alt lade sig gøre, for fedi er jo vores egen legeplads, hvor tid og interesse er kapitalen, vi arbejder med. Nogle projekter er givetvis allerede i gang i internationalt regi, men der vil altid være behov for alternativer og andre vinkler.

Videre færd

Baseret på indkomne forslag laver jeg en oversigt over mulige og igangværende projekter (inkl. fediverset.dks egne projekter), og vil forsøge at opdatere med nye status’er, når nogen gør fremskridt i forhold til deres projekt.

Jeg blev blæst ned af stolen i dag, da jeg så en liste over nyhedsmedier i fediverset i dag. Jeg vidste godt, at mange internationale medier har fundet vej til Fediverset, men ikke SÅ mange.

Tjek listen ud:  https://fediverset.dk/omfattende-liste-find-verificerede-mediers-konti-i-fediverset/ ... Ja, jeg er en "sneaky bastard", der sender dig forbi fediverset.dk først, hva'? Ok da, du kan også tage en genvej, hvis du ikke gider læse mit ordskvalder ;-)

Danmark er repræsenteret på listen med tre medier. Andre danske medier hænger stadig fast i de Zuckerbergske og Musk'ske gemakker - det bliver Danmark ikke mere digitalt selvstændig af, så kom og hils på os. Opret en konto i et af fediversets fællesskaber eller put en server op selv. I bestemmer helt selv formatet og graden af tilstedeværelse :)

Statistik over fediverset fra FediDB