Presentationer
Här finns presentationer från våra olika event. Håll dig uppdaterad, följ oss på LinkedIn
Här finns presentationer från våra olika event. Håll dig uppdaterad, följ oss på LinkedIn
Sedan ChatGPT lanserades har språkmodeller blivit en del av vår vardag, och som utvecklare möter vi ständigt nya begrepp – från prompt engineering och embeddings till tool calling, MCP och agentiska ramverk. Men hur navigerar vi i detta brus och omsätter tekniken i praktiken?
Hur genomför man ett totalt teknikskifte i en miljö med omfattande trafik, utan att störa den verksamhetskritiska driften? I en föränderlig värld är det svårt att veta exakt när det är dags att byta, men när “end-of-life” eller ekonomiska faktorer tvingar fram beslutet gäller det att ha en plan.
Observerbarhet är avgörande för att bygga pålitliga distribuerade system, men ofta låses datan in i dyra och sköra proprietära lösningar. OpenTelemetry har seglat upp som den nya standarden som ger dig nycklarna tillbaka genom öppna protokoll och verktyg.
Vi lever i en era där AI genererar kod på sekunder och dataläckor mäts i miljarder. Trots att digitaliseringen accelererar behandlas säkerhet ofta som en flaskhals i slutet av projektet eller en bock i marginalen efter ett sent penetrationstest. Resultatet blir ofta stress, omskrivningar och att säkerheten förblir “det tysta S:et”.
Det klassiska citatet lyder: “Det finns bara två svåra problem inom datavetenskap: cacheinvalidering och namngivning.”. I detta föredrag lämnar vi cachen därhän och fokuserar helhjärtat på utmaningen att sätta rätt namn på saker.
Drömmen om att låta AI generera kod direkt från design krossas ofta av verkligheten: resultatet blir generiskt, svårt att underhålla och följer sällan era kodstandarder. Varför? För att språkmodellen (LLM) saknar det viktigaste du har – din organisations unika kontext.
Sedan ChatGPT släpptes till allmänheten för två år sedan så har bruket av stora språkmodeller, LLM:er, blivit vardagsmat för de flesta av oss. Genom olika förpackningar använder vi dem för personligt bruk, som arbetsredskap, och ibland som aktiva delar av produkter och tjänster.
Structured Concurrency är ett stöd för utvecklare att skriva multitrådad kod som är korrekt och enkel att resonera kring. Exekveringstrådar är resurser som måste hanteras på ett strukturerat sätt, på samma sätt som filer, nätverkskopplingar eller andra potentiellt dyra resurser. Med structured concurrency får utvecklaren hjälp att hantera den komplexitet som en multitrådad lösning innebär, och inte tappa bort skapade resurser.
WebAssembly System Interface WASI-Preview 2 släpptes i början av 2024 och möjliggör utveckling av säkra, snabba och modulära applikationer på serversidan. Med stöd för Garbage Collection, Exceptions och trådar är det enklare att använda exempelvis JVMbaserade språk. Komponentmodellen möjliggör strukturerade monoliter med isolerade moduler som till stora delar möter arkitektmålen för mikrotjänster, och med ett utbrett stöd för att exekvera i lövtunna (OCI) containers.
Den till synes oundvikliga komplexiteten som plågar de flesta mjukvaruprojekt kommer ofta från beroenden mellan delar av lösningen, beroenden som över tid blir ohanterliga och leder till “legacy” (även känt som “big ball of mud”). Arkitekturarbetets kanske viktigaste uppgift är som bekant att bromsa denna ökande “mjukvaru-entropi” genom att begränsa och kontrollera beroenden med hjälp av abstraktioner, lagerindelning och arkitekturella principer som t.ex SOLID. De allra mest stabila och värdefulla delarna i en mjukvarulösning är de som också är viktigast att skydda mot osunda beroenden: domänen eller kärnverksamhetens regler och beteende.
Föreställ dig för ett ögonblick en värld utan spinners – där appar startar omedelbart, samarbetet med kollegor sker utan avbrott, innehållet delas och synkroniseras sömlöst mellan enheter och där nätverkshastigheten aldrig sätter gränser.
Med en ökad användning av mikrotjänster och molnbaserade arkitekturer har snabba uppstartstider för applikationer blivit allt viktigare för effektiv skalning och minskad nertid. För Java-applikationer kan dock krav på korta uppstartstider vara svåra att uppfylla.
Stora språkmodeller (LLM:er) är grunden för den kända ChatGPT, men det finns andra tillämpningar. Ibland vill man kunna arbeta med specifik data, t.ex. ny eller privat data, som LLM:en ännu inte har tränats på eller aldrig kommer kunna tränas på. Det är här Retrieval Augmented Generation (RAG) kommer in i bilden. RAG ger oss möjlighet att berika den generella språkkunskapen hos en LLM med specifik kunskap från andra källor.
I detta föredrag kommer Niklas bland annat att gå igenom begrepp som tokenisering, inbäddning, vektordatabaser och hämtning. Han kommer även att beskriva och demonstrera olika användningsfall med hjälp av en LLM och ett RAG-ramverk som båda finns tillgängliga som öppen källkod.
Automatisering av acceptanstester har varit ett återkommande tema på Cadec genom åren. Det är ofta svårt och kostsamt, men har kommit att bli en viktig framgångsfaktor för storskaliga mikrotjänst-arkitekturer och en förutsättning för kontinuerlig driftsättning.
Att designa ett system med krav på hög tillgänglighet kräver genomtänkta avväganden gällande hur vi hanterar beroenden mellan komponenter, både inom vårt system och mot befintliga komponenter utanför systemet. Dessa befintliga komponenter kommer vi förmodligen ha ytterst begränsade möjligheter att påverka, och systemdesignen måste därmed göras utifrån de givna förutsättningarna.
Multiplattformsappar, både för webb och mobil, har blivit något av den heliga graalen inom frontend-utveckling. Även om multiplattform kan kännas skrämmande för nativespecialister så lockar möjligheten att ha en enda kodbas som ett generellt botemedel mot ökade kostnader och större komplexitet.
Om AI tidigare varit ett abstrakt koncept så har det nu på allvar blivit en del av vår vardag, och ett fenomen som kan antas växa kraftigt i betydelse under förutsägbar tid framöver. Något man kan uppleva som spännande eller skrämmande, beroende på tillämpning.
Kubernetes Ingress har tjänat oss väl genom åren genom att standardisera hanteringen av inkommande extern trafik till ett Kubernetes-kluster. Dock har Ingress-specifikationen ett antal brister och begränsningar vilket ofta leder till användning av leverantörsspecifika tillägg med hjälp av annoteringar eller CRD:er. En och samma Ingress-definition blandar delar som berör både klusteroperatörer och applikationsutvecklare, något som resulterar i ett oönskat delat ansvar för att hålla Ingress-definitionen uppdaterad.
Idag finns det maskininlärning överallt, t.ex. när vi scrollar social media, kollar vädret, tar en bild, letar musik på Spotify etc. Ofta körs detta på stora servrar någonstans i molnet. Men i många fall vill vi ha snabb respons och har kanske inte ens tillgång till ett nätverk. Hur gör man då?
Varför är det sådan hype kring Stable Diffusion? Vi förklarar och demonstrerar state-of-the-art-tekniken för generativa modeller. I april 2022 presenterades DALL-E-2 och därefter Imagen som visade sig vara banbrytande modeller inom text-till-bild-generering. Dessa modeller, av typen Latent Diffusion, var stängd källkod och ägdes av Microsoft respektive Google. I augusti 2022 släpptes dock ytterligare en variant – kallad Stable Diffusion – som öppen källkod av ett tyskt forskningsinstitut. Detta medförde en formidabel explosion av användning av Machine Learning baserad på generativa modeller.