Sign in

Mattias Karlsson

@devlead.se
2.5K followers 610 following 2.4K posts

Partner & Technical fellow at WCOM AB .NET Microsoft MVP. Been coding since the ’80s (C128 & Amiga). Father of 2, husband of 1. Occasionally blogs at devlead.se

PostsRepliesMedia
Mattias Karlsson @devlead.se · 24/09/2026
Not sure how useful it is yet, but parsing PageFind indexes in C# was a fun kata. Built a .NET MCP Server for AI agents to search PageFind indexes, locally or online. Demo: list indexes, search my blog & fetch page. Open source & on @nuget.org: www.nuget.org/packages/pfmcp #dotnet #mcp #pagefind
112
Mattias Karlsson @devlead.se · 16/09/2026
What a week, huh?
Tintin meme
Captain Haddock: What a week, huh?
Tintin: Captain, it's Wednesday
030
Mattias Karlsson @devlead.se · 09/09/2026
When you maintain more than 50 #dotnet OSS projects, an SDK/Servurity update can lead to a long tail of releases, so to reduce the number of releases and ensure the latest bits possible in each release, I've resorted to going in waves based on the dependency graph, automation is nice here.
Generated checklist, issue in private repo, waves of dependencies, when verified on NuGet, the next wave gets updated and released, and so on.
030
Mattias Karlsson @devlead.se · 08/09/2026
.NET 11 RC 1 was just released🎉, and it's got a go-live license; let's ship some prod workloads, analyze, and learn for the RTM release in November🚀#dotnet dotnet.microsoft.com/en-us/downlo...
Go-live releases are supported by Microsoft in production. These are typically our release candidate builds, just before the generally available (GA) release.
072
Mattias Karlsson @devlead.se · 04/09/2026
Sometimes you need to ship on a Friday, and it's good that you did😎
Error analytics graph going down to zero
010
Mattias Karlsson @devlead.se · 19/08/2026
Alias is at least not in latest PowerShell
Scrren shot of PoerShell 7 on Windows 11, curl alias gone, curl now ships with Windows 11.
000
Mattias Karlsson @devlead.se · 17/07/2026
This is what happens when you've got more than fifty .NET open-source projects and they release new .NET SDKs 🤣 #dotnet #PatchTuesday
Screenshot: You have used 90% of the Actions storage included for the devlead account
1131
Mattias Karlsson @devlead.se · 15/07/2026
10 years. 10 MVP awards🏆 . Honored, humbled, and proud to be recognized once again as a Microsoft MVP in Developer Technologies (.NET). #MVPBuzz #dotnet
2352
Mattias Karlsson @devlead.se · 11/06/2026
Nice📢dotnet-outdated tool now supports .NET file-based apps for both package and sdk references 👍 www.nuget.org/packages/dot... #dotnet #csharp
1113
Mattias Karlsson @devlead.se · 07/06/2026
June 7th, got further than many...
✗ You have exceeded your monthly quota
031
Mattias Karlsson @devlead.se · 23/05/2026
We added another badge to the matrix 🔨 , one C# build definition running multiple operating and systems🤩 Latest addition @rwx.com 🚀
Table of Cake build continous integration for each commit,where latest addition is RWX.
042
Mattias Karlsson @devlead.se · 21/05/2026
This isn't responsible use of AI... #oss
Screenshot GitHub PRs created by a single user using Cursor in a day in May:
Opened 1,191 pull requests in 301 repositories
011
Mattias Karlsson @devlead.se · 15/05/2026
You wouldn't steal a car
"You Wouldn't Steal a Car" as shown in the art from the anti-copyright infringement campaign known as "Piracy. It's a crime."
120
Mattias Karlsson @devlead.se · 15/05/2026
Guess I had a few dangling containers...
Screenshot of console stating: "Total reclaimed space 1.613TB."
180
Mattias Karlsson @devlead.se · 11/05/2026
Looks like my delivery guy is going to the bottom with things 🚚🤔😎
Delivery middle of river
220
Mattias Karlsson @devlead.se · 02/05/2026
1203
Mattias Karlsson @devlead.se · 20/03/2026
Computer, show me a picture the American mind cannot comprehend
Volvo 7900 Electric Bus
1100
Mattias Karlsson @devlead.se · 18/01/2026
Similar in C# & .NET 10 single-file app "var rnd = new Random();while (true){Console.Write(rnd.Next(2) == 0 ? '╱' : '╲');}"|dotnet run - #dotnet #csharp
Maze console output from a single-line C# program piped into dotnet run
152
Mattias Karlsson @devlead.se · 12/01/2026
I wonder what Snipping Tool notification ever might be classified as important to me...
Important Notification Request

Allow important notifications from Snipping Tool ?
110
Mattias Karlsson @devlead.se · 06/01/2026
Just print more money...
130
Mattias Karlsson @devlead.se · 27/12/2025
Not everyday you can take a picture of your breath ❄️
Photo of breath turing into crystal breath fog pitch black night on narrow road.
020
Mattias Karlsson @devlead.se · 17/12/2025
The spec might be wrong, but reality is never out-of-date...
Screenshot of JSON where the schema says array, but the reality you get an object
031
Mattias Karlsson @devlead.se · 11/12/2025
Working with AI...it was super confident one sentence earlier🤣
Thanks for the correction. I learned the correct...
230
Mattias Karlsson @devlead.se · 26/11/2025
Did you know @dot.net @microsoftdevdocs.bsky.social are open-source and accept community contributions? So if you find a typo or something missing, you can send a pull request by hitting the edit button📝 "dotnet project convert" was missing, a PR later: learn.microsoft.com/en-us/dotnet... #dotnet
Screenshot of table of contents, which now contains "dotnet project convert"
052
Mattias Karlsson @devlead.se · 18/11/2025
It's almost as if they're making it hard to follow the money 🤔😎
050
Mattias Karlsson @devlead.se · 18/11/2025
Can't even use AI to reply something witty 🤔😎
010
Mattias Karlsson @devlead.se · 18/11/2025
CloudFlare successfully blocks AI too by being down...
Chat GTP fails because Cloudflare: "Please unblock challenges.cloudflare.com to proceed."
151
Mattias Karlsson @devlead.se · 18/11/2025
This starts quickly... now how do I... 🤣
100
Mattias Karlsson @devlead.se · 18/11/2025
My notepad adventures gets better today, now it won't even start...🤣
100
Mattias Karlsson @devlead.se · 18/11/2025
My notepad.exe just spent 2 minutes logging in to AI before it became responsive... this is not the notepad I grew up with🗒️ #YouHadOneJob 😎 Maybe fortunate that Edit is coming back.
Screenshot of Notepad Co-pilot, Profile, and settings icon. With a spinning circle around the profile icon.
481
Mattias Karlsson @devlead.se · 13/11/2025
🛸 Tomorrow at 12:00 am in Pacific Standard Time (UTC-08:00) / 9:00 am my time (CET) I'll be speaking @dotnet Conf about using .NET file-based apps for your GitHub Actions DevOps workflow, using C# instead of YAML, for a more joyful experience🚀 www.youtube.com/@dotnet/live #dotnet #devops #csharp
GitHub Actions DevOps Pipelines as Code using C# and Cake SDK

Mattias Karlsson

Build and release configuration as code has become the de facto approach for most continuous build and release solutions today. Most commonly, this is done through a custom task-based, debug-resistant domain-specific language using YAML or JSON files. But what if, instead of using a markup language, you could use a proper programming language with well-defined and documented control structures, flow statements like for, while, and do, and the full expressive power of C#? In this session, we will go step-by-step through how you can orchestrate your GitHub Actions build and release pipelines using C#, powered by the Cake SDK and the latest features of .NET 10. You will see how to test and debug your pipeline locally without the slow push-and-wait cycle for CI to fail or succeed. Using standard developer tools like VS Code, you can reuse the language skills your team already has, reducing friction and unnecessary context switching.
031
Mattias Karlsson @devlead.se · 12/11/2025
C# file-based apps let you do what young me did with BASIC at computer shops in the 80s🤣 #dotnet #charp
2302
Mattias Karlsson @devlead.se · 11/11/2025
Who's waiting, I'm shipping now 😎🚀
100
Mattias Karlsson @devlead.se · 07/11/2025
Nice found a sticker table @oredev.org 🤩 #Oredev2025
Sticker table at Øredev
360
Mattias Karlsson @devlead.se · 06/11/2025
VIM karaoke @oredev.org , what not to love about that ❤️
062
Mattias Karlsson @devlead.se · 06/11/2025
Have you ever yelled at a YAML file? Today at 3:50 PM, Horizon room at @oredev.org Let’s talk about using C# for your DevOps pipeline, spending less time debugging remote logs, and more time shipping features. ...also I brought stickers🍰 oredev.org/program/94bb... #dotnet #csharp #oredev2025
041
Mattias Karlsson @devlead.se · 27/10/2025
You're making me feel like a Luddite...😎
FAST 
Your Internet speed is
2.3 Gbps
020
Mattias Karlsson @devlead.se · 23/10/2025
Will you be @oredev.org? I'm be there! Don't be a stranger! 🛸
Øredev visual
I'm attending with my Avatar and dates for the conference (5-7th Nov 2025)
060
Mattias Karlsson @devlead.se · 14/10/2025
Most days I'm not worried about AI replacing my job, as I several times get responses like "You're absolutely right! That's a much more efficient approach.". What worries be is people that without reflection just accepting what it suggests...🤔😎
Prompt replying: You're absolutely right! That's a much more efficient approach. Instead of
031
Mattias Karlsson @devlead.se · 10/10/2025
Maybe trick them with a cute puppy?
Loni - Jack Russell terrier
000
Mattias Karlsson @devlead.se · 05/10/2025
Getting something to build, unit & integration test on 15 different CI / OS configurations may cause yak shaving... but totally a good feeling when all ✅🤩 #dotnet
Screenshop of GitHub "Add .NET 10 support" WIP PR with 16 successful automated checks, 5 different CI systems, Windows, MacOS, and multiple Linux distros. Running on VMs, Containers, etc.
030
Mattias Karlsson @devlead.se · 03/10/2025
#YAML #DevOps ❌❌❌❌❌❌❌❌❌❌✅😎
Azure Pipelines screenshot of many red x:s of failed builds until one final green check mark.
140
Mattias Karlsson @devlead.se · 02/10/2025
You mean it goes straight to Google Maps? Here in Sweden, which is in the EU, I get Google Maps as part of the search result
200
Mattias Karlsson @devlead.se · 25/09/2025
I understand potentially why things like this are happening, but it's still unexpected
KQL QUERY
let dt = datatable (Int: int, String: string, Bool:bool, Double: double, Decimal: decimal)
[
    1, 'a', false, 0.0,  0.0,
    2, 'b', true,  1.2,  2.2,
    3, 'c', false, 1.1,  2.3,
    4, 'a', false, 0.0, '0.0',
    5, 'b', true,  1.2, '2.2',
    6, 'c', false, 1.1, '2.3',
    7, 'a', false, 0.0,  decimal(0.0),
    8, 'b', true,  1.2,  decimal(2.2),
    9, 'c', false, 1.1,  decimal(2.3),
];
dt

becomes result
Int	String	Bool	Double	Decimal
1	a	FALSE	0	0
2	b	TRUE	1.2	2.2000000000000002
3	c	FALSE	1.1	2.2999999999999998
4	a	FALSE	0	0
5	b	TRUE	1.2	2.2
6	c	FALSE	1.1	2.3
7	a	FALSE	0	0
8	b	TRUE	1.2	2.2
9	c	FALSE	1.1	2.3
000
Mattias Karlsson @devlead.se · 16/09/2025
They've got native TPM 2.0 support, front ports are modular, same as Laptops, so you pick which you want.
100
Mattias Karlsson @devlead.se · 15/09/2025
I'm just a fan 🤣
010
Mattias Karlsson @devlead.se · 15/09/2025
Would recommend something like an ASUS ZenScreen MB16AC, which is great for Teams screen sharing/chat, terminal, have one under my ultra wide (49" Samsung Odyssey G9), also have one in my laptop bag as an extra screen while traveling. www.asus.com/displays-des...
100
Mattias Karlsson @devlead.se · 12/09/2025
Shipping to prod on a Friday 🚀 First .NET 10 workloads live in prod 🎉 #dotnet
INFO: Successfully connected to container:
$ dotnet -- info

Host:
Version: 10.0.0-rc.1.25451.107
Architecture: x64
Commit: 2db1f5ee2b
RID: linux-x64

.NET SDKs installed:
No SDKs were found.

.NET runtimes installed:
Microsoft.AspNetCore.App 10.0.0-rc.1.254
Microsoft.NETCore.App 10.0.0-rc.1.25451.

Other architectures found:
None

Environment variables:
DOTNET RUNNING IN CONTAINER
DOTNET VERSION
191
Mattias Karlsson @devlead.se · 11/09/2025
You specify an individual user in GitHub Actions yaml, would love if you also could pass an NuGet org github.com/NuGet/login/...
Usage
- name: NuGet Login
  uses: NuGet/login@v1
  with:
    user: my-nuget-username
100
Mattias Karlsson @devlead.se · 05/09/2025
Photo of Cisco Catalyst Console Port
010