Nyheter och blogg
Glad Påsk, 2024
Glad Påsk önskar Ribomation
Ny fortsättningskurs om Perl Modules & UDT
Ny fortsättningskurs i Perl, där du får lära dig allt om att moduler, referenser, att designa klasser, skriva API dokumentation, enhetstestning och mycket mer.
1BRC - Summering
Det är dags att summera 1BRC. I denna artikel tabellerar jag topplistan av lösningsförslagen, samt även mina egna lösningar i olika programspråk, jag diskuterat i tidigare artiklar.
1BRC - C med eller utan malloc
Hur implementerar man en hash-tabell i C? Ska man använda malloc eller kan man klara sig utan? Hur ska man resonera om minneshantering i C. Har det tillkommit något nytt i språket de senaste 30 åren? Hur snabbt blev det i C jämfört med vår tidigare version i C++?
1BRC - Erlang
Hur klarar språket Erlang utmaningen 1BRC. I denna artikel lär jag ut lite kort om själva språket och går sen i detalj igenom hur lösningsprogrammet fungerar. Givetvis, kör vi programmet och mäter förfluten tid, baserad på olika filstorlekar. Hur snabbt tror du Erlang är?
1BRC - JavaScript / Node.js
Hur matchar modern JavaScript mot klassisk JavaScript, vad gäller exekveringstid för 1BRC (1 Billion Row Challenge)? I denna artikel implementerar jag två lösningar, dels med moderna förtecken via användning av await
och dels enligt klassisk continuation-style med event-handlers. Vilken vinner, tror du?
1BRC - Python vs. Perl
Hur matchar Python jämfört med Perl, när det kommer till 1BRC? I denna artikel, implementerar jag en lösning till 1BRC (1 Billion Row Challenge) dels i Python och dels i Perl och mäter tiden för att behandla olika filstorlekar. Vem vinner, tror du?
Optimerad 1BRC i C++
Det här är en direkt fortsättning på förra artikeln. I denna artikel, implementerar jag en betydligt mer optimerad lösning, för att se hur vi kan minska ned totaltiden. Bl.a. memory-mapped I/O, multi-threaded aggregation och thread-private heaps.
Jag blev nerd sniped - 1BRC++
Här fortsätter jag vidare med 1BRC och visar en rättfram implementation i Modern C++.
The 1 Billion Row Challenge
Så har det blivit ett nytt år och vi skriver 2024. I detta inlägg tar jag upp nyårets stora snackis 1BRC - The 1 Billion Row Challenge.
Gott Nytt År
Vi önskar ett riktigt Gott Nytt År till alla våra befintliga, nya och kommande kursdeltagare.
God Jul
Vi önskar en riktigt God Jul till alla våra befintliga, nya och kommande kursdeltagare.
Ny kurs om programspråket Perl
Vår nya Perl-kurs är utformad för att ge en omfattande förståelse för språket. Vi börjar med att täcka grunderna i Perl-programmering, inklusive variabler, datatyper, kontrollstrukturer och funktioner. Därefter fokuserar vi på avancerade koncept som reguljära uttryck, filhantering, databehandling och modulär kodning.
Ny kurs om programspråket Erlang
Ny kurs om programspråket Erlang. Kursen vänder sig till programmerare som snabbt behöver lära sig språket Erlang. Detta gör vi genom att konsekvent jämföra syntax och semantik för Erlang med andra mer konventionella programspråk som Java, JavaScript, Python och C++.
Maven kursen uppdaterad
Kursen om byggnationsverktyget Maven har blivit uppdaterad och förlängd till två kursdagar.
CMake kursen uppdaterad
Kursen om byggnationsverktyget CMake har blivit uppdaterad till att omfatta version 3.28, med ett helt nyskrivet kapitel om presets.
Vintern nalkas
Vintern är på väg, eller med en popkulturell referens "Winter is coming". Här berättar jag lite hur hösten har varit.
Ny kurs om Docker och Docker Compose
Docker är helt klart en kolossalt användbar och populära teknik. Att kunna dra igång en databas-server på mindre än en minut, att kunna kompilera och köra C++ applikationer utan att först installera GCC/Make/CMake/..., att kunna dra igång en Express.js server direkt utan att a rätt version Node.js/NPM på plats är helt enkelt fantastiskt!
Välkommen tillbaka - Höstterminen börjar
Semestervädret efter midsommar har väl lämnat en hel del extra att önska. Här på Ribomation har vi inte legat på latsidan, utan genomfört en hel del kodmässiga renoveringar av våra system.
Glad Midsommar!
Vädret i juni så här långt har ju varit helt fantastiskt och vi håller tummarna för att det fortsätter på det viset, varvat med lite regn så att inte all växtlighet torkar ut. Nu tar vi sommarledighet och öppnar återigen i augusti.
Glöm AI, har du testat TI ännu?
I ett tidigare utskick diskuterade jag Chat GPT och för- och nackdelar med att använda AI stöd i sitt arbete. Ett annat relaterat AI stöd; är GitHub's Co-pilot, som par-programmerar direkt med dig och den kod du skriver i din moderna IDE. Ytterligare en variant att känna till, är TI.
Har du testat Chat GPT ännu?
Vinterns stora snackis inom teknikområdet har helt klart varit Chat GPT. Ett helt enastående AI system, som utgör vårt tids orakel. Jag hade en liten pratstund om ditten och datten med denna. Häng med.
Spring kursen uppdaterad för Spring Boot 3
Kursen om Spring Framework och Spring Boot har blivit uppdaterad för Boot version 3 och Framework version 6.
Uppdaterad kurs om Modern C++ threads
Kursen om trådprogrammering (threads programming) har genomgått en omfattande uppdatering. Nytt är att den tar avstamp i C++20 och std::jthread
. Sedan går vi hela vägen ned till PThreads C API för att förstå hur allt fungerar.
Ny kurs om Spring Batch
Spring Batch är ett ramverk, byggt ovanpå Spring Framework, som tillhandahåller alla man behöver för att designa robusta och skalbara batch applikationer. Denna kurs lär dig allt om item-readers, item-processor, item-writers, tasklets och mycket mer.
Vad är virtuella trådar i Java?
I förra artikeln gjorde jag en historisk exposé om coroutines, som en inledning till denna artikel om virtuella trådar i Java 19. Här går jag igenom vad detta är och hur det på ett markant sätt skiljer sig från vanliga trådar i Java, samt var är poängen med det.
Uppgången, fallet och återkomsten av coroutines
I förra artikeln skrev jag om några av nyheterna i Java 19 såsom moderna former av mönster-matchning (pattern matching). I denna artikel, lägger jag den historiska grunden för en serie artiklar om corutiner och hur Java programmering kommer att förändras med virtual threads och structured concurrency från project Loom, i takt med att detta rullas ut i de följande versionerna av Java.
Java version 19 är här
Java 19 innehåller ett antal förhandsvisningar av kommande funktionalitet. Här ska vi kika på några moderna former av mönster-matchning (pattern matching).
Användning av await - asynkron programkod
Genom att skriva await framför anropet till en promise-returnerade funktion blir asynkron programkod betydligt enklare att förstå och bygga vidare på. Detta är del 3 i vår serie om asynkron programkod i JavaScript.
3 former av asynkron bearbetning i JavaScript, del 2
Ett promise objekt erbjuder ett löfte om ett framtida värde och utgör ett mer angenämt verktyg för att skriva asynkron programkod i JavaScript. Detta är del 2 i vår artikelserie.
3 former av asynkron bearbetning i JavaScript
Asynkron bearbetning/hantering (eng. asynchronous computation)? I korthet, innebär det att anropa en funktion vid ett senare tillfälle när resultatet av en operation (t.ex. ett musklick eller ett HTTP anrop) är klart.
Node.js kursen uppdaterad
Kursen om Node.js har just blivit uppdaterad och moderniserad. Vi använder nu ESM (ECMAScript Modules) i alla våra större programexempel.
Sommaren snart slut
Sommaren går nu mot sitt slut och vi har laddat kurskalendern med många nya datum fram till jul.
Nu är det äntligen Midsommar
Sommaren och semestern är här och vi håller stängt fram till den 1 augusti.
Oj, är sommaren här!
Oj, vad tiden går fort när det är mycket att göra. Vi har under våren genomfört ett flertal företagsanpassade kursen, samt fjärrkurser via Zoom.
Glad Påsk, 2022
Glad Påsk önskar Ribomation
Första april, 2022
Om aprilskämt i en svunnen tid.
Java version 18 har publicerats
I mars 2022 släpptes version 18 av Java. Antalet nyheter är tämligen begränsat i denna version, men jag tar upp kompilerbara kodsnuttar i JavaDoc.
Ny kurs om C++ templates
Idag presenterar vi en helt ny kurs om C++ templates. Du får lära om allt du kan tänkas vilja veta om detta intressanta och för C++ helt vitala teknikområde.
Så här fungerar Log4j buggen Log4Shell
En grundlig genomgång av log4j/log4shell buggen med kompletta kodexempel för att illustrera hur allvarligt hot denna utgör.
Gott Nytt År 2021
Vi önskar alla våra kunder ett riktigt Gott Nytt År och ett hopp om att Corona pandemin går mot sitt slut under 2022.
God Jul 2021
Vi önskar alla våra kunder en riktigt God Jul och skänker en förhoppning att pandemin ska vara över snart.
Dekompilering och felsökning i Oslo
Hur jag dubblerade antalet samtidiga HTTP anrop genom att dekompilera och hitta en bugg i ett bibliotek för anrop av webb-tjänster
Kryptering hos den galna kon
Hur jag byggde en krypteringslösning för en bank i Zürich, samtidigt som jag hamnade hos den galna kon i staden
Felsökning på Arlanda
Hur jag hittade ett allvarligt prestandaproblem för en kund medan jag väntande på ett försenat flyg.
Minnesläckage i Valencia
Hur jag identifierade ett svårfunnet Java minnesläckage i Valencia
Höstterminen börjar
Hösten är här
Spring Framework & Boot
Ny kurs om Spring Framework och Spring Boot
Glad Midsommar
Så var sommaren äntligen här
Vad är Java Records?
Så här kommer du igång med att använda Records i Java 16.
Vad är en Progressive Web App (PWA)?
Kortfattad genomgång av vad som menas med en progressiv webbapplikation (PWA)
Vad är Server-Side Rendering?
Principen för Server-Side Rendering (SSR)
Vad är SPA?
Principen för Single-Page Application (SPA)
Vad är AJAX?
Hur den moderna webb-arkitekturen evolverat under tre decennier
När jag av misstag sänkte mail-servern på KTH
En berättelse från en "svunnen tid" om vådan av auto-mail handlers
Vad fanns före webben?
En kort historik om föregångare till internet under 1980-talet.
Vad är cookies?
En kort historik om cookies med en personlig touch
Vår teknikstack
Vår teknikstack (Eating our own dog food)
Glad Påsk
Glad Påsk och historien bakom HTTP 418
Java 16
Java version 16 har just blivit tillgänglig
Vad är Node.js?
Några ord om server-side JavaScript, dvs Node.js?
Vad är server-less?
Vad innebär begreppet server-less?
Clean Code
En kurs om hur du kan städa upp i existerande kod med hjälp av clean code
Mer om C/C++
Mer om programspråket C++
Zoom
Att koppla upp sig med Zoom
Om fjärrkurser
Att arbeta och utbilda på distans
Java 26 år
Språket Java fyller 26 år i vår
Ny kurs om C++ för Minnesbegränsade System
Ny kurs om C++ for Memory Constrained Systems
Mitt C++
Hur jag började programmera i C++
C++
Varför språket C++ skapades
Gott Nytt År 2020
Vi önskar alla våra kunder ett riktigt Gott Nytt År och hoppas på att nästa blir bättre.
God Jul 2020
Vi önskar alla våra kunder en riktigt God Jul, trots att den präglas av Corona pandemin.