bjorn.now

08 January, 2026

A trail of footprints through deep, fresh snow, each step breaking through the drift. A snow-covered shoe is visible at the bottom of the frame.

I hoped to be blazing new trails professionally and not because I was dropping the niece off at daycare after 10-20cm of snow (the wind drift makes it hard to estimate)

06 January, 2026

05 December, 2025

borrowed a full-sized Swedish keyboard for the new PC, and I swear, my fingers hurt. Contorting to hit special chars and stretching all over… Ordered a TKL (sans numpad) Keychron with ANSI/US layout and I’ll just figure out how to type Swedish in Windows as well as I do on my mac 😅 now… colemak?

04 December, 2025

also, very impressed by tailscale and how easy it makes creating my own “enterprise-like WAN” where all my machines can talk to each other. I set it up on the new machine and left it in the coworking space and it’s just accessible now that I’m home if inspiration strikes (work/life balance? pff 😉)

aw hell, switching to a dedicated windows machine cut my iteration time down drastically: browser e2e test went 5m -> 1m. virtualized OS + translation from my arm host to x64 because of old .NET seems to have been quite the culprit for slowness 😅

I’m installing Windows on a new machine for the first time in forever and during installation I had to use my other machine to download drivers so it could connect to the internet and continue. As a mac user it surprises me but I guess it shouldn’t. Maybe this Intel WiFi 7 card is just too new…

05 November, 2025

04 November, 2025

majorly nerdsniped myself today by fixing bugs that were easy to manually fix, but, now I have fully refactored my script and fixed the problem 😅

Marking the content/ folder for your Hugo site as a “Source Root” in IntelliJ lets you use Path from Source Root to get the path to the file without the content/ prefix you don’t need when linking internally.

To make linking internally easier, I created an Alfred app snippet ({{< relref “{clipboard}” >}}), so now I only have to open the other post, double-tap shift, type “source root”, then run the snippet, and all linked up.

IntelliJ context menu showing Copy Path/Reference options with 'Path from Source Root' highlighted

Right-click folder → Mark Directory as → Sources Root.
To copy path: open file and search ‘source root’, or right-click → Copy Path/Reference → Path from Source Root

three pokes until all blood was collected for tests today, par for getting blood out of my miserly veins. the nurse seemed amused by my warnings that I’m often a difficult case, then a bit relieved afterward that this was normal 😁

I keep getting surprised when overtaken by others while walking here in Sweden. Back in Singapore I was the one overtaking people. Then again, so many Swedes tower over me, and I at least cottaged over people in Singapore 😉

03 November, 2025

a tea filter ball (one of those little mesh ball on a chain) and a Clever Dripper really works great for brewing oolong tea 😁

Maintaining n8n inline Javascript as code

…and more importantly: with unit tests

In this devlog I’ll make a change in my n8n POSSE setup, that could’ve taken ~an hour if I kept doing it manually as I had, but instead I spent ~5 hours tidying and removing manual steps for the future.

The work itself was about making my “scraps,” that is this site’s tweets, be sent out raw to my syndication targets. I feel that sending a link to something you see in the preview, or it could be inline in the post, is a bit much, I should just let it show up in the platform itself.

[… more]
devlog 35 min read #n8n

Use /@<name> to access the value of an attribute when you’ve selected an element with XPath.

With the expression //*[@class="published-at"] you will get the HTML tag that has class="published-at", and if you then want the datetime property you add /@datetime to get it.

29 October, 2025

my brother’s computer was lagging, and after debugging we decided to get more RAM. He tried installing, first time. After booting still only 16gb, he knew it was supposed to click, but it felt like a lot of pressure and it might break…

Went over. Applied pressure. click “oh, that’s all?”

huh? five hours? I keep being amazed at how the hours fly when coding, even when I feel like I did very little 😅

and my company careful chaos AB is now approved with Bolagsverket! 🥳

28 October, 2025

Fixing Mastodon URL truncation in n8n

I have been working on automating my POSSE setup, and ended up trying n8n and it has been a great experience, there are so many plugins that it’s mostly just wiring things together.

But, I discovered that despite being within the character limit, one of my URLs were truncated when posting to Mastodon. This is because Mastodon does something non-obvious: it treats all URLs as 23 characters, no matter if they’re shorter or longer.

[… more]
devlog 22 min read #n8n, #genie

26 October, 2025

Apple Notes can evaluate calculations with variables that update as you change them. The variable name has to be “one word,” so usual camelCase or PascalCase will likely do you best.

I realized this while trying to calculate what height TV bench I should get:

Apple Notes calculations determining TV bench height using variables for TV size, sofa height, and eye level

The center of the TV should be about eye level, so what height bench should I get given myself and the sofa? Seems around 60cm will be good. Update: I realized the TV stand adds to the height of the TV bench, so it shouldn’t be part of the center of TV calculation.

[… more]
til Updated 2 min read #macos, #productivity

24 October, 2025