Välkommen till min blogg

Så kul att just du är här! Jag har tänkt att skriva några ord här om min resa inom programmering och teknik, men med några övriga inlägg från mitt liv med dansen också. Hoppas det kan bli en rolig läsning för dig.

Här hittar du inlägg om olika programmeringsspråk, webbutveckling, och mina projekt. Använd navigeringen ovan för att utforska bloggen!

Senaste inläggen

  • Modernisera din byggstruktur när du uppgraderar till .NET 10

    Att kliva från en .NET 8-applikation – speciellt en som bär på legacy-bagage – direkt till .NET 10 är ett fantastiskt tillfälle att inte bara lyfta ramverket, utan att faktiskt städa bort teknisk skuld. För att göra kodbasen mer lätthanterlig, enhetlig och framtidssäker bör fokus ligga på att centralisera inställningar, utnyttja kompilatorn hårdare och implementera moderna arkitekturmönster.

    I den här artikeln går vi igenom hur du sätter upp en modern, strömlinjeformad projektstruktur från grunden med hjälp av det nya .slnx-formatet, global.json, Directory.Build.props, och Central Package Management (CPM med Directory.Packages.props).

  • Migrera dina gamla SSDT-databasprojekt till SDK-style SQL-projekt

    För oss som bygger moderna .NET-lösningar – kanske med en Vertical Slice-arkitektur och med siktet inställt på .NET 10 – är smidiga CI/CD-flöden helt avgörande. Ett historiskt smärtområde i våra Azure DevOps-pipelines har varit databasprojekten. Klassiska SQL Server Data Tools (SSDT) .sqlproj-filer är ökända för att skapa enorma merge-konflikter eftersom varje enskild fil måste registreras i en gigantisk XML-struktur [1].

    Lösningen stavas SDK-style SQL-projekt. Genom att använda Microsofts SDK Microsoft.Build.Sql får vi minimala projektfiler, wildcard-inkludering av skript och fullt plattformsoberoende kompilering via kommandoraden.

    Här är en komplett guide till hur du migrerar dina gamla databasprojekt till det moderna formatet, hur filstrukturen bör se ut och en viktig varning gällande stödet i Visual Studio 2026.

  • Vad är nytt i DIGG:s nationella REST API-profil? Från v1.1.0 till v2.0.0

    Om du har designat och byggt API:er för den offentliga sektorn under de senaste åren är chansen stor att du har använt DIGG:s (Myndigheten för digital förvaltning) nationella REST API-profil, troligtvis version 1.1.0. Syftet med profilen har alltid varit att standardisera och skapa interoperabilitet mellan offentliga aktörer.

    Nyligen lanserades version 2.0.0 av REST API-profilen. Om du inte har haft tid att plöja igenom den uppdaterade dokumentationen ännu, är denna bloggpost för dig. Vi går igenom de största nyheterna, vad du behöver läsa in dig extra på och de relevanta standarder och RFC:er som styr arkitekturen.

  • DIGG:s nya REST API-profil (v2.0.0): Så bygger du moderna, spårbara och robusta API:er i .NET 10

    Offentlig sektor i Sverige digitaliseras i en rasande takt, och i navet av denna utveckling hittar vi Myndigheten för digital förvaltning (DIGG). Med lanseringen av REST API-profil version 2.0.0 (nu den 16 juni 2026) har ribban höjts. Fokus har flyttats från isolerade system till hur API:er samverkar i stora, distribuerade kedjor över organisationsgränser.

    För oss som bygger system i .NET-ekosystemet är tajmingen perfekt. Med .NET 10 har vi inbyggda, kraftfulla verktyg för att möta dessa nya, strikta krav. Här går vi igenom de största nyheterna i v2.0.0 (och uppstramningarna från 1.2.0) och tittar på hur du implementerar dem rent praktiskt i C#.

  • Fixa de "osynliga" uppdateringarna: Så hanterar du statusmeddelanden enligt WCAG 2.1

    När vi bygger moderna, dynamiska webbapplikationer strävar vi ofta efter en sömlös användarupplevelse. Vi använder asynkrona anrop för att spara formulär, lägga till varor i en kundvagn eller hämta in nytt data utan att ladda om sidan. Visuellt är detta fantastiskt – en liten grön ruta dyker kanske upp med texten “Dina ändringar har sparats!”.

    Men vad händer för de användare som inte ser skärmen och förlitar sig på skärmläsare? Ofta: ingenting alls.

  • Mörkt läge/Dark Mode: Inte ett lagkrav, men viktigt för dina användare (Så implementerar du det)

    “Måste vi verkligen bygga ett mörkt läge för att uppfylla tillgänglighetskraven?” Det är en av de vanligaste frågorna när organisationer ska anpassa sina digitala tjänster efter DOS-lagen och det europeiska tillgänglighetsdirektivet. Svaret är både enklare och mer komplext än man kan tro. Låt oss reda ut juridiken, den medicinska vetenskapen och hur du bygger en skottsäker teknisk arkitektur.

  • Tillgänglighet för alla: Så granskar du din webbplats enligt WCAG 2.1

    Oavsett om plattformen du bygger är en komplex .NET-lösning, ett interaktivt webbaserat spel, eller en inbjudande informationssida för den lokala dansklubben, finns det en gemensam nämnare som aldrig får ignoreras: tillgänglighet.

    Att granska en webbplats enligt WCAG 2.1 (Web Content Accessibility Guidelines) handlar inte bara om att bocka av lagkrav, utan om att säkerställa att din kod och design fungerar för alla användare, oavsett funktionsvariationer. Här är de viktigaste tekniska och designmässiga aspekterna du bör fokusera på vid en granskning.

  • Få koll på din kod: En guide till OpenTelemetry, Traces och Spans i .NET 10

    I moderna, distribuerade system räcker det sällan med traditionell felloggning. När ett anrop från en användare studsar genom en API-gateway, två mikrotjänster och en databas, och något går fel – hur vet du var flaskhalsen eller kraschen uppstod?

    Svaret är Observability (observerbarhet), och branschstandarden för detta är OpenTelemetry (OTel). I den här guiden ska vi bryta ner de centrala koncepten Traces och Spans, och titta på hur vi implementerar dem i .NET 10.

  • .NET Framework 4.8 eller .NET 10? Arkitekturvalet fram till 2032

    Det finns ett klassiskt ordspråk inom IT-världen: “Om det fungerar, rör det inte.” Men när vi pratar om publika webbtjänster och interna API:er som förväntas rulla stabilt, säkert och prestandalätt fram till år 2032, så håller inte det gamla tänket längre.

    Står du inför valet att låta dina applikationer ligga kvar på det beprövade .NET Framework 4.8 eller att migrera till det moderna .NET 10? Det korta svaret är att det finns en inbyggd paradox mellan målet att minimera livscykelhantering (LCM) och målet att ha ett modernt, säkert system.

    Här bryter vi ner varför steget till .NET 10 är helt rätt väg att gå – särskilt om du kör i en lokal on-prem-miljö med både Windows-servrar och containers.

  • .NET-versionsförvirring? Så styr `global.json` och `*.runtimeconfig.json`

    Har du någon gång kliat dig i huvudet när pipelinen kraschar för att en .NET SDK saknas, eller funderat på om din app faktiskt kommer att starta på produktionsservern efter den senaste säkerhetspatchen?

    Du är inte ensam. .NET-världen är full av versionsnummer: 10.0.106, 10.0.301, 10.0.108. Men sanningen är att .NET har ett väldigt smart (och ibland missförstått) system för att hålla isär byggtid och körtid.

    Allt kokar ner till två filer: global.json och *.runtimeconfig.json. Låt oss reda ut vem som gör vad!

  • Förstå .NET SDK-versioner: Vad är skillnaden på 10.0.108, 10.0.204 och 10.0.300?

    Har du någon gång tittat på versionsnumret för en .NET SDK och undrat varför det hoppar från 10.0.108 till 10.0.204 istället för att följa vanlig semantisk versionshantering (SemVer)?

    Det är lätt att tro att det bara är slumpmässiga siffror, men sanningen är att de tre sista siffrorna i en .NET SDK-version döljer viktig information. Genom att förstå hur Microsoft paketerar sina utvecklingsverktyg kan du både säkra dina applikationer och förhindra att dina CI/CD-pipelines plötsligt går röda.

    I det här inlägget reder vi ut begreppet Feature Bands och hur du bäst konfigurerar din global.json för en stabil och säker utvecklingsmiljö.

  • DevSum 2026 – Dag 2: AI-dissonans, produktivitet utan backloggar och pragmatisk testning

    Om den första dagen på DevSum handlade mycket om djupgående kodstrukturer och .NET-specifika verktyg, lyfte dag två blicken mot de större och ibland mer obekväma sanningarna i vår bransch. Det blev en dag fylld av produktkritik, välbehövliga sanningar om hur vi spenderar vår tid och mycket handfasta strategier för att skriva tester som faktiskt gör nytta.

    Här är min sammanfattning av de mest tankeväckande sessionerna från dag två!