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 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.
Moderna verktyg för Infrastructure as Code (IaC) ger möjligheten att definiera infrastruktur för olika molnleverantörer (sk “multi cloud”) med välkända programmeringsspråk som TypeScript, Python, Java, Go och .NET
SQL är coolt igen – eller i alla fall fortfarande relevant. Relationsdatabasen, vars död förutspåddes av NoSQL-förespråkarna för tio år sedan, fortsätter att hålla en central plats i våra lösningar. De alternativ som skulle ersätta den har hittat sina nischer, men relationsdatabasen finns fortfarande kvar.
De ansvarsområden och arbetsuppgifter som frontendarkitekten behöver hantera har ökat exponentiellt i mängd och svårighetsgrad under det senaste årtiondet. Det räcker inte med att hantera traditionella funktionella och icke-funktionella krav, man behöver även adressera och hantera en ständigt växande mängd områden.
Javas programmeringsmodell för trådhantering är konceptuellt enkel, men tyvärr inte särskilt lämpad för massiv skalbarhet. Trådar i JVM:en hanteras och scheduleras av det underliggande operativsystemet och är därför en dyr och begränsad resurs. Reaktiva programmeringsmodeller – som t.ex. RxJava och WebFlux – löser det problemet men på bekostnad av en betydligt mer komplex programmeringsmodell och bristande utvecklarupplevelse.
Tredje generationen av det mest populära applikationsramverket för Java, Spring Boot, är här. Eftersom det går cirka fem år mellan generationsskiftena så kan vi förvänta oss stora förbättringar. Enligt Pivotal ska Spring Boot 3 ihop med Spring Framework 6.0 lägga grunden för det kommande decenniet. Mycket fokus är lagt på att förenkla utveckling av distribuerade system, t.ex. en arkitektur baserad på mikrotjänster eller FaaS (Function as a Service). Det här föredraget kommer belysa och demonstrera bland annat
Som nybliven elbilsförare ställs man inför en helt ny värld av laddkontakter, reseplanering och räckviddsångest. Det här föredraget handlar om hur föredragshållaren på ett enkelt och kostnadseffektivt vis byggde en molnbaserad lösning för att samla in mätvärden kring antalet lediga snabbladdare och hur denna data kan analyseras för att förutspå tillgänglighet inför en längre semester- eller tjänsteresa. Föredraget kommer lyfta fram hur en kombination av egenutvecklad kod, AWS-tjänster, API:er och en tidsseriedatabas åstadkom en lösning som är förvånansvärt lättviktig och billig i drift. Viss fördjupning kommer ske kring tidsseriedatabaser och varför de är så ytterst väl lämpade för att effektivt lagra och söka i det vi i dagligt tal kallar “metrics”.