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
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”.
Web-app utveckling idag har tre stora spelare React, Angular och Vue. På det stora hela är det inte jättemycket som skiljer dem åt – de är tillståndsdrivna, deklarativa och använder sig av DOM-jämförelser för att uppdatera det visuella användargränssnittet. Idag jagar man prestanda, utvecklarupplevelse (DX) och tillgänglighet. Svelte lovar bättre prestanda, enkelhet för utvecklaren (DX) och bättre tillgänglighet. Det har ett komponentbaserat, deklarativt sätt att göra det på, men gör det annorlunda än de stora spelarna idag. Svelte har ökat mycket i popularitet på sista tiden.
Ubiquitous Language - att låta verksamhetens språk genomsyra IT-miljön ända ner i programkoden - är ett centralt begrepp inom domän-driven design (DDD). Hur vi talar om, klassificerar och benämner de centrala begreppen i vår domän är ofta viktigare för slutresultatet än enskilda teknikval. Vi börjar från början med en genomgång av terminologihantverkets grunder. Därefter följer en beskrivning av hur man kan hantera en kontrollerad vokabulär rent datatekniskt, och vi går igenom några grundläggande principer för begreppshantering i de icke-triviala lösningarna. Slutligen sätter vi in denna kunskap i en praktisk utvecklarkontext - hur terminologiarbetet kan vägleda oss i både smått (såsom datamodellering, identifiering av aggregat och domän-events) som stort (såsom mikrotjänster, utformning av API:er, bounded contexts och context maps)
För mer än 25 år sedan introducerades JavaScript för att ge liv åt då ganska platta och livlösa webbsidor. Sedan dess har JavaScript utvecklats enormt och blivit ett av de vanligaste programmeringsspråken och JavaScript-plattformen används på fler ställen än bara i webbläsaren. WebAssembly är den första nya universellt stödda runtimen och språket för webbläsaren som har introducerats sedan JavaScript. Bara det faktum att webbläsare är en av de vanligaste plattformarna gör WebAssembly intressant, men WebAssembly har precis som JavaScript rymt från browsern och används i en massa andra sammanhang, t.ex. som runtime för blockchain, inom serverless och edge computing samt även som en fristående runtime. Det här föredraget kommer att ge en introduktion till WebAssembly och visa på några av användningsområdena, samt ge en inblick i hur framtiden kan se ut för denna fortfarande unga teknologi.
Djungeln med JavaScript-baserade frontendramverk kan tyckas snårig och svåröverskådlig för den oinvigde. Vart ska man vända sig för att uppleva den lägsta tröskeln utan att göra avkall på kompetent funktionalitet? Teamet bakom Vue.js utlovar ett högpresterande, progressivt och syntaktiskt enkelt ramverk, där god dokumentation ligger till grund för ett lågt insteg. Under denna presentation tar vi oss an Vue.js “Single File Component”-modell och demonstrerar uppbyggnaden av en Vue-applikation.
De senaste 10 åren har området maskininlärning formligen exploderat och nya appar och tjänster som använder sig av denna teknik dyker upp som svampar ur jorden. Men vad är grunden till denna exponentiella tillväxt? Vad behöver jag som utvecklare kunna för att dra nytta av och implementera mina egna lösningar med denna teknik? I denna presentation borrar jag djupare i dessa frågor för att hitta svar som förhoppningsvis väcker upptäckarlusten till liv. Vi kommer titta på hur maskininlärning kan användas inom Natural Language Processing (NLP) som ett exempel. En av styrkorna med maskininlärning är dess breda tillämpbarhet och just därför kommer vi att undersöka hur lärdomar från maskininlärning inom NLP även skulle kunna användas inom andra områden. För att demonstrera att detta faktiskt kan leda till någonting praktiskt användbart så kommer vi titta närmare på hur vi med dessa tekniker t.ex. kan bygga en chatbot.
React har sedan ett antal år banat vägen för ett nytt sätt att skapa användargränssnitt. Tidigare var det vanligt att imperativt skapa och hantera tillståndet för olika GUIkomponenter, något som kan leda till problem med komplex kod och att användargränssnittet kommer “ur synk” med modelldata. Med React beskriver man istället användargränssnittet och kopplingen till datamodellen på ett deklarativt sätt. Detta gör att oavsett hur eller i vilken ordning data i modellen ändras så kan man vara säker på att användargränssnittet alltid beter sig korrekt.