It’s been two weeks since I received my Framework 13 Pro, and I am still very happy about my purchase. I have the Intel® Core™ Ultra 5 325 Series 3 processor with 16 GB LPCAMM RAM and a 2TB SSD that I took out of my old laptop. You can get details of my configuration, and the shipping and setup process in my first impressions post.
At long last, my Framework 13 Pro arrived! I must say, I’m delighted with it so far. I hope to make this the first post in a series about this laptop as I put it through its paces, so let me know what you would like to know about the laptop in the comments!
Configuration
Earlier this year, I preordered the Framework 13 Pro DIY Edition. The preorder process for Framework uses a batch system where they send out the laptops in batches based on when you ordered the device instead of all at once. I was in Batch 12 which was supposed to ship in September. However, due to a glitch in the touchpad drivers, they delayed shipping on all models by a month.
The chat-based workflow encouraged by existing AI harnesses results in a fragmented source of truth for the desired functionality of the software.
To centralise the source of truth, we should use Markdown as Source (MaS). We should adopt a Specify, Generate, Inspect, Loop (SGIL) workflow which puts human-written Markdown files stored in source control front-and-centre.
My Current AI Workflow
I hate my AI workflow. I don’t know how everyone else is using AI, but currently my workflow looks something like:
- Open Claude and type a chat message indicating what I want it to do.
- Look at the code or plans it generates and test the functionality of the code it produced.
- Type a chat message clarifying my ask or correcting the AI’s assumptions. Normally this involves telling it what I dislike about the code it generated.
- Go to 2.
I like to keep track of my finances pretty religiously. I don’t really budget, I am just very obsessive about tracking every expense, and ensuring that my overall savings rate is high1. I started by using Mint (may it rest in peace) and when it got killed, I switched to Rocket Money. Eventually I got annoyed with that due to it not supporting connections to some of my accounts and I ended up keeping track of my finances manually in markdown files in a git repo for a few years.2 Last year, I started using Origin, which was pretty good. However, recently I started looking for a new solution due to a few reasons:

I announced
offlinemsmtp in 2019. It’s a
program that allows queueing email messages to send using msmtp (part of
isync). Today, at long last, I’m releasing a
stable v1 version of offlinemsmtp
after rewriting the project in Go. The release can be found
on GitHub.
You’ve almost certainly encountered Conventional Commits before. It may have reared its ugly head in the changelog of an open source project you’ve used. It may have been the enforced commit format for an open source project you contributed to. A lot of people swear by it. I swear at it.
Even though it is used by a large number of popular open source projects, Conventional Commits is an actively bad standard which encourages focus on the wrong things and fails to deliver on its promises.
I have been asked a few times to review student resumes and in my current position I review quite a few resumes of potential candidates.
I think a lot of resume advice out there is tied to formatting, presentation, and writing style. While all of that is important, I think that it’s been well-adjudicated.
In this article, I would like discuss the content of your resume. I’m going to describe three rules that I made up to guide your resume’s content.
The purpose of this trip was (ostensibly) to attend the FOSDEM 2026 conference. Since I’m no longer working at Beeper, there is not really any work-related reason for me to attend the conference. But I wanted to do it to give myself an excuse to go to Europe, and as an opportunity to catch up with former Beeper coworkers, and meet up with a few other friends as well.
I woke up very late today (like 14h). I guess I needed some sleep after my crazy train ordeal yesterday. It was kinda sleeting anyway, so I didn’t feel that bad about missing out on the morning.
I was hungry, so I started walking to find somewhere to eat. I ran across a restaurant that looked like it served local fare, and I got their beef goulash. I ordered with “dumplings” which were the bread slices. I think I should have tried with the wild rice instead.
This morning, I left Vienna for Prague, and on the way I went to Brno. Brno is very near the Austerlitz battlefield, Napoleon’s best military masterpiece. After visiting Waterloo (the site of Napoleon’s ultimate defeat) the last two years I figured that it was only fair to go see the site of his greatest victory.
I woke up in time to get to the Vienna Main Station in time for the REX 1 at 09:07 towards Breclav for my connection to Brno. Unfortunately, the train was cancelled! I had to wait an hour until the 10:07 train. The train was a regional train, and was very slow. It stopped so often. We arrived late in Breclav, and I ended up getting on the wrong train. I ended up on a Regiojet instead of whatever rail line I was supposed to be on. When the conductor came around, I had to pay for the Regiojet train segment. It was luckily not that expensive. The Regiojet was also a pretty good train and it was direct from Breclav to Brno. When I arrived in Brno, it was already nearly 13h and the public transit to the Austerlitz battlefield museum was off-phase, so I took a Bolt.



