Patrik Svensson

@patriksvensson.se

Father. Husband. Programmer. Likes OSS, compilers, programming. Spectre.Console, Cake. Ally ✊🏾🏳️‍🌈🏳️‍⚧️♀️(He/Him) @patriksvensson@mstdn.social Stockholm, Sweden

The new Exxon ad with Woody Harrelson goes so hard… «And there will, of course, be a lot of finger-pointing and blame, which is why we at Exxon want to make sure you blame the correct people. Like poor immigrants and refugees.”

This has been a lot of work, but I finally managed to remove null from Mew, including during platform interop with .NET! Some small gaps left, but hopefully those will be easy to fix.

Screenshot of a VSCode showing a file called main.mew with three lines of code, each underlined in red:

```
let text: string = null;
let names: string[] = new string[3];
let home: string = system.Environment::GetEnvironmentVariable(“HOME”);
```

The Problems panel below lists three errors: “Mew has no null. Use an ‘Option’ and ‘.none’ instead”, “An array of ‘string’ has to be filled when it is created. Use ‘Array::repeat’ or ‘Array::generate’”, and “Cannot convert type ‘Option<string>‘ to ‘string’”.

This talk is (obviously) brutally close to home on a number of axis. Change requires us to sit with our discomfort and then do something about it. I want you to watch this.

Jo Franchetti @thisisjofrank.bsky.social · 2w ago

I gave a talk at EMF titled "Men in Tech #YesAllMen", in which I told my experience of being a woman in tech. I was afraid to publish it in case it affected my current or future employment. With all the current news I would like to add my 2¢. So here is the recording: youtu.be/WXL6K1lhvt0?...

I need to get better at Angular. Since I’m a boomer at heart, does anyone have any book tips for me? I’m happy to try other formats as well, as long as they’re really good.

Yesterday, me and 13 friends rented a hotel in the middle of nowhere and ran an unconference for the second year in a row. People talked about everything from sourdough to text editor data structures. Here's a picture of me, after three gin and tonics, demonstrating Mew's build system.

Me kneeling at a small antique table with a laptop, next to a large TV showing a build.mew file in VS Code. Gold wall, ornate mirror and a flip chart in the background.

I was supposed to put down new flooring in my office today, but somehow I ended up turning the snake game I wrote about yesterday into a proper game. Music, sound effects, new fruits, adventure mode, high scores, skins, a weather system, death replays, animations... All written in Mew 😍

Mew's build system "Purr" is coming along nicely. It's still an early prototype, but everything finally works the way I envisioned! Naturally, it's written in Mew and included in the stdlib.

Terminal output from the Mew build system. The first run executes three steps (setup, restore, compile) and finishes in 2.4 seconds. Running the same "mew run build.mew compile" command again skips restore and compile because they're already up to date, and the build finishes in 0.0 seconds.A Mew build script:

```
task restore 
    in sources = glob(
        "src/compiler/**/*.{csproj,props}",
        "global.json") 
    out assets = glob("src/compiler/**/obj/project.assets.json") {
    dotnet("restore", "src/compiler/Mew.slnx")?;
}

task compile(ctx: Mew) : restore 
    in sources = glob(
        "src/compiler/**/*.{cs,csproj,props,targets}",
        "src/stdlib/lib/**/*.mew",
        "global.json",
        "!**/{obj,bin}/**")
    out compiler = file($"src/compiler/Mew/bin/{ctx.configuration()}/net10.0/Mew.dll")
{
    dotnet("build", "src/compiler/Mew.slnx", "--no-restore", "-c", ctx.configuration())?;
}
```

I wrote this for me; now you can read it too. It’s been in draft for years. I was recently a guest on the .NET Rocks podcast on the topic, that episode landed today, which made me revisit and finally get the post out of drafts: Taking control of your digital legacy www.devlead.se/posts/2026/2...

@devlead - Mattias Karlsson's Blog - Taking control of your digital legacy

A practical inventory, five categories, and the platform features that decide what happens to your domains, repositories, and accounts when you're not around

devlead.se

Made some real progress tonight, and I suddenly feel like three years of work is finally starting to pay off. I doubt anyone will use this, but it feels really good to realize a vision and see it through.

As a swede, it’s a bit weird to buy land for “recreational use” as the right to roam makes most land available to anyone. If he has some idea that this will be his private property, it’s going to be funny to see what happens when people hike, camp, pick berries and mushrooms on “his” land

Palantir CEO Alex Karl quietly purchased 37,000 acres of forests in Sweden—and locals found out when hunters lost leases to use the property | Fortune

Cladonia Skog AB, a newly registered company owned by Karp, said it would use the land for “forestry and other related activities.”

fortune.com

One thing that I wish macOS did better was multi-monitor support. I have two fairly recent Dell monitors on my desk daisy chained via thunderbolt (to mac) and DP (to second monitor). And when I plug in the mac its hit and miss as to whether its going to work or not.

I'm considering submitting a talk about building a compiler for the CLR to a conference in February, but I haven't decided whether I want to add yet another thing to my already busy schedule.

I got error propagation working in Mew yesterday! One thing I love about how the compiler works is that this change didn't require any new concepts, just new lowering mechanisms, which made it pretty quick to implement.

Mew code:

```
pub fn evaluate(text: string) -> Result<i64, string> {
    if text.is_empty() {
        return .ok(0);
    }

    let tokens = tokenize(text)?;
    let expr = parse(tokens)?;

    let eval = new Evaluator { };
    return .ok(expr.accept(eval));
}
```