Björn Andersson
gaqzi.bjorn.now
Björn Andersson
@gaqzi.bjorn.now
Software geek who just moved back to Sweden🇸🇪 after a decade living & working in Singapore🇸🇬

Pottering about for now
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?
December 5, 2025 at 6:50 PM
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 😉)
December 4, 2025 at 8:57 PM
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 😅
December 4, 2025 at 8:49 PM
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…
December 4, 2025 at 4:01 PM
when doing research on how to format stuff and you’re looking at UN CEFACT codes, have you dug too deep? https://github.com/schemaorg/schemaorg/wiki/Using-UN-CEFACT-Codes
November 5, 2025 at 9:30 AM
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 😅
November 4, 2025 at 8:11 PM
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 ({{}}), so now
… more
Use Jetbrains IntelliJ Source Roots to strip prefixes from copied paths | bjorn.now
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.
bjorn.now
November 4, 2025 at 11:24 AM
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 😁
November 4, 2025 at 10:28 AM
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 😉
November 4, 2025 at 7:51 AM
a tea filter ball (one of those little mesh ball on a chain) and a Clever Dripper really works great for brewing oolong tea 😁
November 3, 2025 at 5:29 PM
Use /@ 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.
Use `/@<name>` to access the value of an attribute when you've selected an element with XPath. | bjorn.now
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.
bjorn.now
November 3, 2025 at 2:06 PM
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
… more
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.
bjorn.now
November 3, 2025 at 2:06 PM
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?”
October 29, 2025 at 8:34 PM
huh? five hours? I keep being amazed at how the hours fly when coding, even when I feel like I did very little 😅
bjorn.now
huh? five hours? I keep being amazed at how the hours fly when coding, even when I feel like I did very little 😅
bjorn.now
October 29, 2025 at 2:57 PM
and my company careful chaos AB is now approved with Bolagsverket! 🥳
bjorn.now
and my company careful chaos AB is now approved with Bolagsverket! 🥳
bjorn.now
October 29, 2025 at 8:22 AM
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
… more
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.
bjorn.now
October 28, 2025 at 12:38 PM
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:
The center of the TV should be
… more
Apple Notes can do calculations with variables | bjorn.now
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: 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.
bjorn.now
October 26, 2025 at 11:38 AM
I have enjoyed doing the daily Explainle.org for the last couple of days. It triggers some of the fun bits of language for me. 🙂
The twist compared to straight up “the opposite of this” is that there are “forbidden words” that you’re not allowed to use, and only 100 characters.
Luckily for
… more
Explainle: a daily game to describe words | bjorn.now
I have enjoyed doing the daily Explainle.org for the last couple of days. It triggers some of the fun bits of language for me. 🙂 The twist compared to straight up “the opposite of this” is that there are “forbidden words” that you’re not allowed to use, and only 100 characters. Luckily for me, it’s relying on an LLM and is therefore quite nerdy, so I can explain it in language I understand
bjorn.now
October 24, 2025 at 6:50 PM
Disposable code is here to stay by Charity Majors.
I like the distinction between disposable and durable code: it’s about whether you try to make the code maintainable or not. Most code when working at a company is durable code, because the outcome when we get it wrong is so high (even if
… more
Disposable vs Durable code | bjorn.now
Disposable code is here to stay by Charity Majors. I like the distinction between disposable and durable code: it’s about whether you try to make the code maintainable or not. Most code when working at a company is durable code, because the outcome when we get it wrong is so high (even if it’s just the risk of losing money or at worst, our job). And the idea that we can experiment, create POCs, the 10 variations of an idea to see which one works better… that’s great. Work with the genie and figure it out, then spend the proper time and effort making it durable.
bjorn.now
October 23, 2025 at 12:09 PM
and now the bank has confirmed that I’ve sent the money, and sent it on to Bolagsverket.
I love the transparency and setup of their page explaining how long it should take to process my application, there’s a goal (7 working days), and which applications they’re aiming to process this week
bjorn.now
and now the bank has confirmed that I’ve sent the money, and sent it on to Bolagsverket. I love the transparency and setup of their page explaining how long it should take to process my application, there’s a goal (7 working days), and which applications they’re aiming to process this week (those from 14-19th of October). Wish more gov’t services did this. eyes Försäkringskassan
bjorn.now
October 23, 2025 at 12:09 PM
aktiekapital sent for starting my company, the bank has talked with me and decided I’m allowed to have an account with them, next up, get approved by the gov’t.
also TIL, in Singapore you only need $1 as starting share capital and in SE it’s a minimum of 25,000 SEK (~3,500SGD)
bjorn.now
aktiekapital sent for starting my company, the bank has talked with me and decided I’m allowed to have an account with them, next up, get approved by the gov’t. also TIL, in Singapore you only need $1 as starting share capital and in SE it’s a minimum of 25,000 SEK (~3,500SGD)
bjorn.now
October 23, 2025 at 8:53 AM
the first (digital) forms signed on the question of opening my own company, now the waiting begins
bjorn.now
the first (digital) forms signed on the question of opening my own company, now the waiting begins
bjorn.now
October 9, 2025 at 4:49 PM
Don’t quote regex patterns in Bash [[ ]] tests, because they’ll match literally.
So the below won’t match because it’s looking for a literal $ in the string, instead of matching at the end of the string:
Copy Copied! file="https://example.com/blog-post/index.html" [[ "$file" =~ "/index.html$"
… more
Don't quote regex patterns in Bash [[ ]] tests, because they'll match literally | bjorn.now
Don’t quote regex patterns in Bash [[ ]] tests, because they’ll match literally. So the below won’t match because it’s looking for a literal $ in the string, instead of matching at the end of the string: Copy Copied! file="https://example.com/blog-post/index.html" [[ "$file" =~ "/index.html$" ]] && echo MATCH But this will:
bjorn.now
October 9, 2025 at 9:53 AM
The regex | (or) operator splits the pattern left or right unless explicitly grouped. Group it using (pattern) if you need to use the match later, or as a non-capturing group (?:pattern) if you do it for clarity.
I used to think there was some magic rule about how | decided where to split,
… more
The regex | (or) operator splits the pattern left or right unless explicitly grouped | bjorn.now
The regex | (or) operator splits the pattern left or right unless explicitly grouped. Group it using (pattern) if you need to use the match later, or as a non-capturing group (?:pattern) if you do it for clarity. I used to think there was some magic rule about how | decided where to split, but it’s simply: characters and sub-patterns concatenate into a single pattern first, then | splits the entire thing left and right unless you explicitly group it. So while I used to think that prefix_cat|dog would match prefix_cat and prefix_dog, it actually matches prefix_cat and then dog. And that exact problem in a real-world example to find if a page is linking to another, relative or full URLs:
bjorn.now
October 8, 2025 at 9:35 PM
I just caught myself thinking, “I need to get coasters” so turns out that’s a thing I’m missing from my Singapore stuff 😅
… more
bjorn.now
I just caught myself thinking, “I need to get coasters” so turns out that’s a thing I’m missing from my Singapore stuff 😅
bjorn.now
October 8, 2025 at 2:29 PM