Feed List
Back to Feed List2025 so far
2025-09-26 10:45:00
It's almost October, which means we're three quarters into 2025 already. Time dilation is real when you're getting older and a year becomes an increasingly smaller portion of your life.
For 2025 I set some goals for myself, which you can read about in this post. Those goals are mostly related to running, health, photography and work. I think with just another three months to go it's good to look back and see how I'm doing. The goal is to reevaluate and adjust if necessary, to finish strong and set myself up for 2026.
Let's start with running. I set out to run a half marathon and even an ultra, but due to various factors I didn't get to that, yet (more on that later). I did really pick up the pace from June onwards, putting in about 100 kilometers a month, increasing my Vo2Max by 6 points and running a 24 minute 5k and a 53 minute 10k. Running started to become a habit rather than a chore, something I'm eager to do. Lacing up my shoes became something to look forward to and that's a win in and of itself. Not bad at all considering all the curveballs life threw at me.
Health wise I feel like I'm doing pretty well. I haven't been sick in a long while, or at least not as much as previously. I've also been working on my mental health, things I'd rather keep private for obvious reasons. I do feel more balanced and in control which is something I really needed. All good on this front!
Photography, again a bit of a mixed bag. I did take my camera out a few times, and every time I really did enjoy it, way more than using my iPhone. As I said earlier, I don't like the overprocessed computational photography stuff. I did however not take it out as much as I wanted to. I think it's a matter of building the habit, making sure the camera is always charged and ready (it's micro USB which is a pain) and keeping the phone in my pocket more often. Baby steps.
Work has been going very well. I set out to take more of a leadership role within the company and earlier this year I got promoted to lead platform engineer. Everyone's really happy with my performance as a lead and things are looking bright.
I think my running goals have been the biggest miss as I didn't get to complete the goals I set out for myself. I did however make huge progress in terms of speed and endurance. Currently I'm battling a major injury so I'll have to see how that plays out. I know that this too will pass and I'll be back on the road soon enough. I signed up for a half marathon in March so I have a goal to work towards. Sustainability is key, so I'll be taking it a bit easier for the rest of the year to prevent further injuries.
Overall I think I got sidetracked by old habits and patterns, like consuming way too much news and social media. I try to be more mindful of that, so I can actually focus on the things that bring me joy. The theme for the last 3 months of 2025 is going to be about consuming less, creating more and a sustainable approach to running.
Onwards and upwards!
Some running top tips
2025-08-07 13:00:00
Another blog post? The second one in two days. My mind has been occupied with running lately, so much so that it got me thinking about all the things I learned from running over the last 20 years.
I'm not saying I'm some sort of running expert, not at all actually, but I do know a thing or two by now. Running has been on the rise in popularity since COVID and I love to see it, but there's also a lot of these runfluencers out there who are telling you absolutely need to run in a certain way, or that you need to buy certain gear or else you'll surely fail.
Anyway, here's a few things I learned over the years.
- Stop me if you've heard this one before, but RUN SLOWER (and don't be embarrassed about it). I've seen so many people burn out because they start running at maximum effort right away. Just kind of relax in zone 2, build up your mileage over time and don't worry about speed. Speed will come naturally over time, consistency is key.
- Recovery is very very important. Running every single day isn't the way to go, your body needs some downtime too. An absolute recovery multiplier is sleep. Get as much sleep in as possible as it will help bring down those recovery times by a lot.
- I hate to say this, but please do a little bit of strength training, at home if you like (no one wants to go to the gym). It will help build up some muscle to get you through the long runs a lot easier than you would otherwise. It really doesn't have to be much, just a few simple workouts a week will do.
- If you use a Garmin watch for tracking your runs, there's a feature called Daily Suggested Workouts which I use quite a bit. The things is though, these suggested workouts are, among other things, based on any upcoming events you put on your calendar in Garmin Connect. So if you're training for a 10k and put in a goal of 45 minutes, DSW will try to train you towards that goal, and it won't be fun. So if you use this feature, make sure to set your goals realistically, or just don't set any goals at all.
- Speaking of Daily Suggested Workouts, listen to your body first and foremost. If your watch says you should do a base run, but your stomach is upset, just skip it and get some rest. Maybe do a little strength training instead. Your body knows best, the watch just goes by the numbers.
- This is going to be controversial but for the love of all that's holy, you don't need those running sunglasses and protein shakes (especially when just starting out). I cringe every time I see a runfluencer wear a pair of those running sunglasses. What are you even trying to optimize for? Aerodynamics? While doing a 6:30 kilometer? Stop it. Just wear a regular pair of sunglasses when the sun's out. And protein shakes? Just eat a banana or something (and have a bit of a healthy diet in general). Unless of course you're seriously training for a marathon, then sure it makes sense. But don't optimize prematurely.
- Lastly, and this is arguably the most important one: don't compare yourself to others. Don't watch those runfluencer video's, don't listen to podcasts, don't sign up for Strava. Running isn't a social network or a contest. It's about you versus yourself. It's your own journey, your own progress. You've won the moment you stepped out the door and started running. Don't let anyone tell you otherwise.
A static website on OpenBSD
2025-08-06 14:00:00
Back in 2021 I was dipping my toes into the world of OpenBSD. A few days ago I got the itch to try OpenBSD again, mostly because I'm kind of fed up with how little control I have over security headers and such on GitHub Pages. Since I have a Synology NAS with 32GB of RAM and plenty of storage, I decided to install VMM (Virtual Machine Manager) and run it there for a while.
VMM
Here's a really quick overview of how I set up the VM for OpenBSD:
- Install VMM from the Synology Package Center
- Open VMM, go to "Virtual Machine" and click "Create"
- Select Linux as the operating system
- Select your storage pool
- Give the VM a name and select the amount of RAM and CPU cores you want to allocate, leave everything else as default
- Assign 40G of storage
- For the network, select "Default VM network"
- For "ISO file for bootup" select the OpenBSD ISO you downloaded
Start the VM and click "Connect" to open the console. Follow the installation instructions, which are pretty straightforward. I chose to install OpenBSD on the whole disk, which is fine for this use-case.
Doas
OpenBSD uses doas instead of sudo for privilege escalation. If you want to run commands as root, you can use:
doas <command>
To allow your user to run doas to gain escalated privileges, you need to edit the /etc/doas.conf file. Add the following line:
permit persist yourusername
HTTPD
OpenBSD comes with a built-in web server called httpd. To set it up, you need to create a configuration file at /etc/httpd.conf. You also need to create a directory for your website:
mkdir -p /var/www/htdocs/mydomain.foo.bar
chown yourusername /var/www/htdocs/mydomain.foo.bar
Here's my configuration for serving a static website:
server "mydomain.foo.bar" {
listen on 127.0.0.1 port 8080
root "/htdocs/mydomain.foo.bar"
log style forwarded
gzip-static
location "/.well-known/acme-challenge/*" {
root "/acme"
request strip 2
}
}
server "secure-redirect" {
listen on * port 80 block return 301 "https://$HTTP_HOST$REQUEST_URI"
}
Notice the gzip-static directive, which enables gzip compression for static files. You can gzip your assets using the following command when building your static website:
find dist/ -type f -exec gzip -9k "{}" \;
To enable httpd and start it, run:
rcctl enable httpd
rcctl start httpd
Relayd
Relayd can act as a reverse proxy to httpd to handle TLS termination and add security headers and such. It's installed by default, but you will need to create a configuration file at /etc/relayd.conf.
ipv4="your.ipv4.address"
table <local> { 127.0.0.1 }
http protocol https {
tls keypair "mydomain.foo.bar"
tls ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256"
match request header append "X-Forwarded-For" value "$REMOTE_ADDR"
match request header append "X-Forwarded-Port" value "$REMOTE_PORT"
match response header set "Referrer-Policy" value "same-origin"
match response header set "X-Frame-Options" value "deny"
match response header set "X-XSS-Protection" value "1; mode=block"
match response header set "X-Content-Type-Options" value "nosniff"
match response header set "Strict-Transport-Security" value "max-age=31536000; includeSubDomains; preload"
match response header set "Content-Security-Policy" value "default-src 'self'; font-src 'self' https://fonts.googleapis.com https://fonts.gstatic.com; style-src 'self' https://fonts.googleapis.com; script-src 'self' https://fonts.googleapis.com https://fonts.gstatic.com 'sha256-1jAmyYXcRq6zFldLe/GCgIDJBiOONdXjTLgEFMDnDSM=' 'sha256-ZswfTY7H35rbv8WC7NXBoiC7WNu86vSzCDChNWwZZDM=';"
match response header set "Permissions-Policy" value "accelerometer=()"
match response header set "Cache-Control" value "max-age=86400"
return error
pass
}
relay wwwtls {
listen on $ipv4 port 443 tls
protocol https
forward to <local> port 8080
}
Make sure to replace `your.ipv4.address` with the actual IPv4 address of your server and adjust the `keypair` directive to match your TLS certificate setup.
To enable relayd and start it, run:
rcctl enable relayd
rcctl start relayd
ACME client
ACME client can be used to automatically obtain a certificate from, in this case, Let's Encrypt.
cat <<EOT >> /etc/acme-client.conf
authority letsencrypt {
api url "https://acme-v02.api.letsencrypt.org/directory"
account key "/etc/acme/letsencrypt-privkey.pem"
}
domain mydomain.foo.bar {
domain key "/etc/ssl/private/mydomain.foo.bar.key"
domain full chain certificate "/etc/ssl/mydomain.foo.bar.fullchain.pem"
sign with letsencrypt
}
EOF
You can now fetch the certificate by running:
acme-client -v mydomain.foo.bar
To automatically renew the certificate, add the following to /etc/daily.local:
next_part "Refreshing Let's Encrypt certificates:"
acme-client mydomain.foo.bar && rcctl reload relayd
Rsync
To deploy your static website, you can use rsync to copy files to your OpenBSD server.
First, install rsync if it's not already installed:
pkg_add rsync
Then, create the configuration file at /etc/rsyncd.conf:
[global]
use chroot = yes
max connection = 5
log file = /var/log/rsyncd.log
[mydomain.foo.bar]
path = /var/www/htdocs/mydomain.foo.bar/
read only = false
list = yes
uid = 1000
gid = 1
Finally, enable and start the rsync daemon:
rcctl enable rsyncd
rcctl start rsyncd
PF
For a basic firewall setup, you can use OpenBSD's Packet Filter (PF). You can find the PF configuration file at /etc/pf.conf. Here's an example that allows SSH, HTTP and HTTPS outbound.
cat <> /etc/pf.conf
set skip on lo0
block all
pass in proto tcp to port { ssh http https }
pass out proto { tcp udp } to port { 22 53 80 123 443 }
pass out inet proto icmp icmp-type { echoreq }
pass proto ipv6-icmp from any to any
EOT
pfctl -f /etc/pf.conf
Shutdown
To enable graceful shutdown of the VM, you need to install the qemu guest agent package. Without it you will not be able to properly shut down the VM from the Synology VMM interface.
pkg_add qemu-ga
rcctl enable qemu_ga
Conclusion
All in all this was a pretty painless experience. I was able to set up a copy of this website on OpenBSD with minimal effort using the built-in tools. Performance is generally pretty good, even though it's running on spinning disks that occassionally go to sleep.
Using this relayd config I now get an A+ on Security Headers, another A+ on HTTP Observatory, and yet another A+ on SSL Labs.
For my use, I'm not entirely sure yet whether I will keep this setup or not. Maybe I'll run my OpenBSD VM some place else like Hetzner or similar. It also depends on whether I actually want to deal with the sysadmin part of running a server. I do like the complete control I have over every single part of the stack.
I love shaving yaks
2025-08-02 13:00:00
There are apparently two definitions of yak shaving:
Any apparently useless activity which, by allowing one to overcome intermediate difficulties, allows one to solve a larger problem.
and
A less useful activity done consciously or subconsciously to procrastinate about a larger but more useful task.
I think the latter is actually quite useful, because it allows your brain to do something else for a bit while it works on whatever you're stuck on in the background.
In tech, we say we're shaving a yak when we do something that seems tedious or boring. This often includes things like writing documentation, refactoring code, working through tickets, going after tech debt. It carries kind of a negative connotation, as if it's something that should be avoided at all costs.
I however want to argue that yak shaving is a wonderful activity that should be embraced and celebrated.
People often talk about getting the most energy from working on and delivering big projects, and yak shaving is seen as a waste of time that distracts from that. What I found in my 17 years of working fulltime is that yak shaving is actually the most rewarding part of my job. It allows for a sense of accomplishment as it rewards instantly through constant iteration and small wins.
When I work on a big project, I often feel like I'm not making any progress for weeks or months at a time. But when I shave a yak, I can see the results of my work immediately. Every time I fix a bug, write a piece of documentation, clean up some code, or tackle a small piece of tech debt, I feel like I've made the platform a little bit better. I've contributed to the overall health of the platform and codebase, and I made the job easier for future me.
This is not to say that big projects aren't important or rewarding, but I think we should also recognize the value of yak shaving. It's not just a distraction from the real work; it's essential to help us maintain and improve the systems we work on, for ourselves and others.
So next time you find yourself shaving a yak, don't think of it as a waste of time. Celebrate the small wins and the progress. Remember that every yak you shave brings you one step closer to a better platform, a healthier codebase, and an easier job for future you.
Week notes 26
2025-06-27 15:11:00
Week 26 was full of Kubernetes and getting a lot of work done in a very short amount of time. What else happened?
- Over the weekend my left ear was completely blocked again. I get that a lot, especially in the summer. On Monday I went to the doctors office where they fixed it, it's such a good feeling being able to properly hear again.
- I had to renew our energy contract this week. Weird thing happened where their own system told me to renew at a higher price than what was offered while I was logged out and on the homepage. So I played dumb, signed up for a "new" contract at a lower rate, and low and behold, it worked. Bit scammy, but we're gonna end up paying a bit less so I don't really care too much.
- If I look at our Jira board, I'm kind of amazed at the amount of work I got done this week. Nice to have a productive week like that.
- Speaking about work, this week has been about Kubernetes a lot. I had some upgrades to do, some low level cgroups and runc issues to debug, some networking things to address. Not complaining, I like the challenge and being able to do some actual engineering. These days I don't do a lot of that anymore.
- I wrote about some tips to make remote working a bit more enjoyable.
- In terms of gaming, I didn't have a ton of time to play on the Switch 2 but I did manage to play some Halls of Torment on Steam Deck. What I like about it right now is that it has a HUGE number of achievements to unlock which I'm working on right now.
- I also installed a thing called Greenlight on my Steam Deck which allows me to stream whatever my Xbox would show to the deck. It was easy to get going and works reasonably well. I wouldn't use it for super fast action games, but for slower paced ones it's great.
Pro tips for remote working
2025-06-26 16:24:00
For the past two years I've been working remotely most of the time. I sometimes go the office in Amsterdam, but I vastly prefer working from home. Being at the office is really nice for a change of scenery, working together with others, and having lunch together, but I find that I get more stuff done when I'm at home just because I have a difficult time focusing when there are other people around.
That's not to say that working from home is easy or is without its challenges. I think working from home requires a certain sense of discipline because there are still so many other distractions. There's also a certain degree of isolation the comes with working from home.
I find that being more intentional about how I spend my time and how I set up my work environment helps me to be more productive, and also care for my mental health.
Over the past two years I've learned a few things that help me in these respects. Most of them are pretty obvious, but I think it's worth repeating anyway, if only to remind myself of them.
Focus time
One of the great things about Google Calendar, and I'm sure other calendar services do this as well, is that you can create focus time blocks. I use them quite liberally to block my time and to make sure no other meetings are scheduled. They also make it clear to myself, and others, that it's time for work and no distractions are be allowed. During this time, I disable notifications in Slack and put my phone on do not disturb.
Take that break
When you're working from home, it's easy to just keep going because no one is there to pull you into a meeting, or talk to you at the water cooler. I easily get caught up into thinking I have to be available all the time, but that's not true. Remote work is inherently asynchronous, so it's perfectly fine to take regular breaks. These smalls breaks are great for recharging and to come back fresh for another round of focussed work.
Communicate
When you live with someone else, be it your spouse or a roommate, it's important to communicate when (rougly) your meetings are taking place, or when you've scheduled focus time. This way, they will know not to disturb you or what to expect in terms of availability.
A dedicated workspace
Having a dedicated workspace is crucial. It helps separate work from everything else because you have a door to close at the end of the day. It also helps to have a dedicated space where work happens, so you can get into the right mindset. This dedicated workspace is preferably a separate room, but not everyone has that luxury. But in any case, try to make it uniquely yours. Make it a place that you enjoy being in, and that's comfortable in terms of climate and ergonomics.
Switch it up sometimes
Even if you have the most beautiful home office, sometimes you will get sick and tired of seeing the same walls every day. I find that switching it up every now and then works wonders for my productivity. Sometimes I work from the kitchen table for a few hours, or I head out to the library. It's also a nice way to get out of the house for a bit, see other people, and get some fresh air.
Invest in your setup
If you're working remotely in the same spot most of the time, it's worth investing in your setup. You're not tied to whatever the office provides, so you can go all out and get the best equipment you can afford. I invested in a Herman Miller chair for example, and I don't regret that purchase one bit. I also recently invested in the best (for me) ultrawide monitor I could find. I'm looking at a screen for over 8 hours a day, might as well get the best one. Also add some plants and art to your space for some personality.
Week notes 25
2025-06-20 11:05:00
Yesterday on Mastodon I said that the week notes were cancelled because of people being really weird. But I thought about it a bit more and decided to just keep going anyway. I like writing them, even just for myself (not sure who's reading them anyway), and they make me reflect on the week which I think is very valuable.
Here we go again.
- Monday and Tuesday I was out sick with the flu. The allergies are still hitting hard this year which undermines my immune system. Luckily I have new medication that helps a lot better than the previous ones.
- Wednesday my wife had to get her immonutherapy treatment again so I took a day off to drive her to and from the hospital. It's always a long and emotionally draining day, but we got through. The next one is 6 months away.
- We've been playing a ton of Mario Kart World on the Switch 2 this week. We're really enjoying it and it's a great way to unwind.
- The weather has been excellent this week and will continue to be so for the forseeable future.
- My phone use is down by 40% week over week. I try to look at screen time a little more critically to see where I can improve even further. There's a lot of wasted time in there, time that often goes unnoticed. My phone needs to be a tool, and nothing more.
- After buying myself a Garmin Forerunner 570 and a Switch 2 I'm in the process of selling my old Garmin 255 and my original Switch. The 255 is already sold at a very good price, the Switch is still available. I'm taking my time, not in a rush to sell at all.
Smartphone resentment
2025-06-18 19:00:00
I am (was?) definitely addicted to my phone; I would check it every 15 minutes in hopes of seeing new content or notifications. I would aimlessly scroll through short videos, my Mastodon timeline or Reddit. I'm someone who can't let a notification badge just sit there, I have to clear them all.
Lately I've been offline for a bit more than usual.
Like the flick of a switch, my addiction to my phone has been replaced by resentment towards it. Out of nowhere I feel like my phone is a burden, something that I have to carry around with me because it does so much for me. But now, every time I pick it up, I feel like I'm wasting my time. Every time I get a notification I sigh and think "what's going to waste my time now?". Even messaging apps feel like a chore, because digital communication is so impersonal and hardly ever meaningful or important.
My phone became a source of frustration and anger.
This might be a phase, or a symptom of something else entirely, but I can't complain while it lasts. I hope it lasts forever though, because I feel like I'm finally free from the incessant need to check my phone.
If this holds, my phone will become a tool rather than a distraction. I will be less... available to people though. But I'm sure it will all be alright. I will still be reachable, but I won't be checking my phone all the time.
Week notes 24
2025-06-13 14:10:00
- After a good fews days with rain, the weather turned and we now have a lot of sunshine and heat. But with that, the seasonal allergies are making a huge comeback. I've been feeling terrible again and I'm so ready for the pollen to go away so I can start running again as well.
- I drove to Almelo, about a 2h15m drive, on Thursday to visit our warehouse where we have this giant robot for order picking. It's an amazingly large place and fascinating to see how that side of the business works.
- The biggest news of the week for me personally is that I ordered a Nintendo Switch 2 with Mario Kart World. I was hesitant at first, but then I got to try one and I was sold immediately. It's currently making its way across the border into The Netherlands and I hope it will arrive tomorrow, but Monday is more likely. I'm sure I'll share some more thoughts later on.
Forever games
2025-06-12 10:00:00
Today I want to talk about my forever games. I don't mean games that never end, like Minecraft, but rather games that I keep coming back to and play in perpetuity. All of these games are the ones that will always be installed on whatever gaming system I have at hand.
This list is not in any particular order.OpenTTD
I have so many fond memories of playing OpenTTD. It maybe is a forever game in the sense that you can start a map and play it forever, but I get bored too easily for that. Anyway, I love the gameplay loop of building a huge transport empire, making a ton of money and seeing all the trains, planes and busses whizzing around. On the surface it's a very simple game, but once you get into the weeds you can really dive into optimizing every part of the operation. And of course the best part is that the game is open source and free to play.
Civilization V
One. More. Turn. I sunk so many hours into Civ V already and I still keep coming back for more; there's always a new strategy to try. Turn-based strategy games are perfect for playing in short bursts, but we all know Civ is video game crack; you start playing and suddenly many hours have passed and you didn't drink or eat. I tried newer versions of Civ, but I don't like them as much as V for some reason.
Dead Cells
Dead Cells is a game that beats my ass every single time but I still love it. The atmosphere and the way the game flows is just magic. I also really like the feeling of every weapon having a certain weight to it. And the glorious feeling of finally having a really good run will never get old.
Diablo III / IV
I can't decide between Diablo III and IV to be honest. I played hundreds and hundreds of hours of Diablo III because back then I just had more time to play. I think both III and IV are really good games in their own right. Diablo for me is a game that I can pick up, slay some demons, and then put it down again for a while. I think from the list you can discern that I enjoy pick up and play kind of games, I don't need a huge expansive story and lore to enjoy a game.
Hades II
Both the first Hades and the second installment I really enjoy, but I went with the second one for this list because I think it improves on everything from the original. The gameplay, the art style, the weapons, the world building, everything is just so well done. I really love the roguelike genre and I think Hades is the best it has to offer.
Splatoon 3
Splatoon 3 is so colorful, so original in its gameplay and so much fun to play. Even when I lose a match, I still had a great time. Like a lot of Nintendo games, Splatoon 3 is very easy to pick up and play, but very difficult to master. Today an update for the Switch 2 is released with higher frame rates and better graphics, so I can't wait to sink even more hours into it.
Mario Kart
Mario Kart is mostly on this list because it's the perfect game to play with friends. The feeling of winning a tight race against a friend is unbeatable. I don't think I need to explain any further, everyone knows Mario Kart. It's great.
Smash Bros.
Smash Bros., like Mario Kart, is also an amazing game to play with friends on the couch or online. It gets chaotic very quickly, is difficult to master, but it's always such a good time. I can't say I'm particularly good at it, but does it matter?
Week notes 23
2025-06-06 10:14:00
It's June already?! Times flies. Feels like last week that we were celebrating New Year's.
- I received my new Garmin Forerunner 570 which I wrote my first impressions of here.
- I also wrote about my phone number being poisoned.
- On Thursday I went to the office for a team day. Always a good time seeing everyone again. We spoke a lot about AI, automated testing and tech debt.
- I made some minor changes to the website like adding a new favicon and updating some content here and there.
- My car, a 2019 Ford Focus ST-line, had to go in for maintenance. Luckily nothing major came up, just an oil change and a new air filter so the costs were reasonable.
- The Nintendo Switch 2 was released! I don't have one yet, I'm pretty sure I will at some point since my daughter loves playing Mario Kart on the OG Switch. I just don't see a reason to upgrade yet as there's not a ton of new games that take advantage of the new hardware.
Garmin Forerunner 570
2025-06-04 13:26:00
Two years ago I got myself my first Garmin watch, the Forerunner 255S. I bought it at a heavy discount when the 265 was released. I didn't want to spend too much money on my first Garmin as it's always a bit of a gamble switching ecosystems like that.
I was quite happy with my FR 255 but over the past few weeks it started having some issues. Coincidentally Garmin just released the new Forerunner 570 and after some usual waffling I decided to treat myself to an upgrade and got the 42mm version in black.
I've only had my 570 for about 20 hours so I can't really give a full review, but I suck at those anyway. I do however want to share some initial impressions in no particular order.
- The watch is very lightweight. This is exactly what I want as my wrists are small and during a run you don't want to have a rock attached to your arm. Not sure about the difference compared to the 255S though.
- The screen is absolutely beautiful. The colors really pop off, and the resolution isn't quite retina but it's close enough for my eyes. The 255S had a MIP screen and although outside in direct sunlight it was superior to AMOLED, the colors always looked dull and washed out to me.
- I am a little worried about the screen getting scratched since it ever so slightly protrudes past the bezel. But I'm not willing to put a screen protector on so I'll just have to live with the inevitable scratches.
- I have to get used to no longer having an always-on display. Yes, it can be enabled on the 570 but I don't want to trade battery life.
- I get about 10-11 days on a full charge according to the watch itself. Of course I haven't tested this yet, but these numbers are usually pretty accurate. That's only a 10% decrease compared to the 255S which I think is totally fine for my use. Not an issue, despite people making a really big deal out of it.
- The HR sensor on the bottom of the device is way larger than I expected. It's also a little bit more flat though, which is good.
- The first hour or so of using the 570 I experienced some lag in the UI. This has since been resolved and everything is quite snappy now. Maybe it needed some time to cache my data.
- The vibration motor is a lot stronger which is helpful for silent alarms.
- I never thought I'd say this, but I think having a touchscreen is a nice addition. You can disable touch during workouts if you like.
- The side buttons are much more clicky compared to the 255S. They're also made out of metal instead of plastic.
- Because of the bright colors and the touchscreen, this watch feels way more like a smartwatch.
- There's a ton of UI and UX improvements compared to the 255S which make navigating all the menus a lot easier.
That's about it, hope it's helpful in some way. I won't do a full review as I don't think I'm qualified for that. Let me know which Garmin watch you use and what you think of it.
My phone number is poisoned
2025-06-03 06:00:00
Oh, my phone number. It's been with me through half a dozen phone companies, countless devices, and many different life stages. I've had this exact same number for the past 20 odd years which means it's utterly intertwined with my life. All kinds of services are linked to it, the government has it, my bank has it, and of course, so do all my friends and family.
You know who else has my number? Recruiters. Recruiters have my number, and they keep calling me all the time. Despite me never answering their calls, they keep trying.
A while ago I asked a recruiter how they got my number and the answer they gave me was "oh, I don't know, it was on LinkedIn I think". But my number isn't on LinkedIn. It's not on my profile, never was.
I think we all know where they got my number from. It's been sold, and sold again, and then the dataset was leaked, and now it's out there. It's everywhere. My phone number is poisoned.
Now, when someone's calling me, and their number is not in my contacts, I don't answer. I just let it ring, or I'll push them into voicemail. If it's important, they'll leave a message, right? But they hardly ever leave a message. They just call, and then maybe send a message on LinkedIn.
I don't have anything against recruiters, I really don't. They have a job to do, and I think they're serving a very useful purpose. If I were looking for a new job, I'd be delighted to use their services. I'm just calling them out because they're 90% of the calls I get these days. They might have something really important to share, some amazing opportunity just waiting for me. But I won't know about it.
What about email? You can send me an email with all the information you have, and I'll get back to you if I'm interested. I can read it on my own time, which is a lot better than the disruptiveness of a phone call.
Please give me my phone number back. I want to be able to trust it again. I want to be able to answer calls from people and not have to worry about some clingy recruiter totally walking over me.
Email is great. Please and thank you.
I got promoted
2025-05-30 15:00:00
Over the past 17 years I've been working in IT, I've had the opportunity to work in many different roles and companies. I started out as a systems administrator at a digital agency, working on ColdFusion, MS SQL, Linux and VMware. I then transitioned to a role where I had to work a lot with the Microsoft stack, including Windows Server, IIS, MS SQL and Exchange.
My heart is and will always be with Linux and open source though, so of course I ended up working for a managed hosting company where I was able to work with all that. I was also an early adoptor of AWS and introduced it throughout the companies I worked for. Then in 2015 I became an AWS consultant working for a long list of clients, helping them with getting their applications to the cloud.
For the past 2 years my title at work was that of Senior DevOps Engineer, which definitly fit the way we were and are working currently. However, as the companies' strategy and needs are shifting, and I was stepping more and more into the lead role for everything infrastructure and cyber security related, I felt it was time to slowly start transitioning to a platform team. Of course this transition will not be an overnight change, but rather one of slow incremental changes over time.
Through stepping up and taking on more responsibilities, I was granted the oppportunity to show what I'm capable of. A few weeks ago this all accumulated to a promotion to lead platform engineer.
Back in 2022 I was already thinking about how DevOps teams would evolve in the future. I'm a firm believer in the idea that DevOps teams eventually die out in favor of platform teams which serve the needs of the development teams and other stakeholders.
A platform team should provide self-service capabilities to the development teams using a combination of proccesses, automations and templates. This allows the development teams to decrease their time to market, and it allows the platform team to focus on the platform itself instead of the development teams' needs. I wrote about this in my post Stop doing DevOps teams if you want to scale.
It's fun to see LinkedIn light up with all kinds of posts from people also warming up to the idea of platform engineering over DevOps. I think this is a great development and I hope to see more companies adopt this approach.
In any event, I'm very happy with this promotion and recognition of my work and abilities. I wouldn't be where I am today without the support of everyone I've worked with over the years. There's been a time where, because of an unscientific test, I was erroneously labeled as someone who's unable to work in teams, unable to communicate, and somehow not after the best results, totally unable to lead in any capacity.
I think I've proven them wrong.
Week notes 22
2025-05-30 09:41:00
This week hasn't been very eventful so I'll just give you an update on everything that's been changing on my website.
- The most obvious thing is the new layout. I sometimes think of a new purpose for the website, or I see something I really like on another website. I also changed the font to a sans-serif one because while I liked the serif one at first, it quickly became stale to me. I think the sans-serif font looks a bit more modern. I also put the navigation at the top to make it more accessible.
- Because the blog became overwhelmed by week notes I decided to separate them into their own page. Now I have a blog page for general thoughts on technology, running, minimalism and everything in between, and a separate one where I share my week notes. I think this makes a lot more sense.
- To separate the week notes from the blog posts, I needed to create new 11ty collections anyway. Doing this also allowed me to create separate RSS feeds. Now you can subscribe to the blog posts or the week notes separately, depending on what you prefer. The current feed still exists as well and contains both.
- I rewrote the CSS to use variables which hopefully makes it easier to maintain.
- A lot of tiny under the hood changes like a rewrite of my eleventy config, restructuring the html, and removing unused code.
Week notes 21
2025-05-23 15:26:41
Another week done, another week of learning, of doing, of thinking. Here are the highlights.
- I got promoted at work to lead platform engineer. My department if you want to call it that is currectly called DevOps but I want to get rid of that. A platform team would serve the needs of the company much better. It's not going to be a single large change but rather a series of small changes.
- Work for some reason has been incredibly productive this week. Maybe I was running on pure adrenaline. In any case, my backlog is just about empty.
- It's been a long week with seasonal allergies ruining almost everything. I hope it lets off for a bit while we get some rain over the weekend.
- We've been selling a bunch of stuff online, sort of like a garage sale. We've also been giving away a lot of stuff for free. Feels good to have some space in the garage.
- I've been using my plain text TODO file for a while now to manage work and life. But I've been thinking of maybe moving it to Obsidian instead. A text file on your desktop doesn't scale very well obviously. I do like having a single file though. Whenever I try something like Reminders of Things, the tasks just end up in a black hole and I forget about them ever existing.
Week notes 20
2025-05-16 09:12:41
Week 20 is almost done! A round number, I like round numbers.
It's been a busy week again, with not much time to do anything besides work and puppy... things.
I did get around to adding a photography section to the site, which is something I've been meaning to do for a while. It's definitely a work in progress as I'm still not entirely sure what to do with the layout. And the photos aren't individual posts so I can't generate an RSS feed for them. I might look into fixing that at some point. At this point I have no clue what an elegant solution would be within the relative contraints of Eleventy.
Currently the photography section shows a bunch of photos from years past. Of course I fully intend to add new photos as I've taken my RX100 out of storage and I'm currently using it more and more.
The main point of this new page is to have it fully under my control and available on my own domain, not on someone else's platform.
Enough about that, though. This week I've also been doing some running which was really nice. But otherwise this week has been thwarted by seasonal allergies. I'm ready for spring to be over please.
Week notes 19
2025-05-09 16:14:55
It's Friday again! Time to look back at the week.
- Our daughter is back to school after 2 weeks off. It was really nice having her around more, but it was also quite difficult to jugggle work and family responsibilities.
- Sam, our Corgi puppy, has been doing really well since the school break is over. It's a bit more quiet in the house, so he can get more rest which leds to better behavior all around. We're also focussing more on training him now that we have more time and he's doing really well. The biting has also decreased by a lot. A relief for us all.
- I took some time to finally take my Sony RX100 Mark IV out of storage. It's such a nice little camera with really great glass, a nice sensor and a ton of manual control. I'm taking it to more and more places now and I'm trying to figure out a bit of a worklow. I think I'll just stick to shooting jpeg since I don't have any fancy requirements. I can quite easily transer the photos from the camera to my phone using the Imaging Edge app. Then I do some quick edits in the Photos app.
- Once I get the hang of it again, I hope to make a page where I can showcase some of my photos right here on this website. I'll see what I can do with the design and overall layout.
- All this experimentation led to a messy desk, something I absolutely despise most times but this week it didn't really bother me.
- I've been reading way more this week, something which seems to help well with sleep quality.
- I noticed when I share a post on Mastodon, it doesn't show an image or the summary of the post. I need to set aside some time to make it a bit more presentable. Coming up soon!
This messy desk is pretty emblematic for the past week.
Week notes 18
2025-05-06 13:00:00
I'm again way too late in posting these week notes. I really think I need to rethink my schedule and system here. It's been crazy busy with the puppy and work, and I don't have a lot of time left in the day to sit down and write.
In any case, here's a summary of the last week:
- Sam is slowly turning into a land shark with a lot of biting at our heels and pants. It's definitely a rough phase, and something that makes you doubt your decision to get a puppy. But with some really great help we're slowly working through it and learning his language more.
- We had someone come over for some maintenance on our electric heat pump. It was a bit of a hassle to get a skilled technician to come over, but it seems we've struck gold with this one. He was really knowledgeable and friendly, and he even fixed a small thing on our solar inverter as well.
- Together with my brother in law we made a really nice closet made out of kitchen cabinets from IKEA to go around our washing machine and dryer. The result is really nice and makes the space feel a lot more organized.
- On Wednesday I took the afternoon off to go to the forest with my family including Sam. Of course he passed out halfway through the walk and we had to carry him back. With his smol legs.
Week notes 17
2025-04-25 13:00:00
Bit of a short week because I posted the previous notes a little later than usual. Still have a couple of things to share.
- Sam's been growing really quickly and he's been making this house his home. He's really used to us and the routine right now. That's not to say everything has been easy; the shark phase and the witching hours are something to behold. But outside of that he's a really sweet, chill dog to have around.
- I haven't been feeling very well this week, both physically and mentally. The combination of work, the new puppy, and other general life stuff is all quite overwhelming. I've been trying to manage my time and energy and make sure I also keep doing stuff for myself. I haven't gone running since Sam's here for example, and I can really feel that. Hope I can get back to a bit of a routine once the dust has settled.
- I'd like to find some time soon to set up this Garmin Grafana dashboard. Looks cool, not sure what the value will be but I like the idea of having all this data in a place that I control.
- Doom The Dark Ages is releasing soon and I'm obsessed. I never buy games at full price anymore, so I'll hold off on buying it until it gets a discount. In preperation I've downloaded Doom 2016 onto my Steam Deck. It's so cool playing that game on a portable machine. I get an easy 60fps at medium settings.
Week notes 16
2025-04-21 13:00:00
Excuse me while I publish these weeks notes a little later than usual this time around. I've been busy gushing over Sam our new Corgi puppy. He's been an absolute joy to have around – he listens very well, is playful, and has a ton of personality.
Some other things that happened this week:
- Last week on Sunday we went to see Frozen the musical. It was an amazing experience with a great cast, stunning visuals and an incredible orchestra. Highly recommended!
- We hired a puppy trainer to help with Sam and we met her for the first time this week. She gave us some great tips for the first few days. Next week we'll start proper training.
- On Wednesday I went to the AWS Summit in Amsterdam. When you've been working with AWS for 17 years it's kind of a tradition to go. Always nice to see familiar faces, meet new people, talk to some vendors and attend a session or two. Because AWS increases the sponsor fees the number of vendors was a lot lower than previous years, and also the food was quite a bit worse. But it was still a nice change of scenery from the usual work week.
Here's a photo of Sam when he just arrived at our home.
Week notes 15
2025-04-11 15:00:00
Another week has passed and it's time to share some notes.
- We went to see our Corgi puppy again this week. He's growing really quickly and he seems to really like cuddling. We're going to pick him up next week.
- We had people come to install a new garage door. Quite an expensive and big project but they really delivered. We now have a normal door to use to get in and out of the garage. The goal is to use the garage more once the puppy is here so that should really help.
- We bought all the stuff needed for a puppy like a bench, toys, food, a leash and much more. Really looking forward to having him around!
- My wife's company car was picked up today so we're now a one car family. We bought a 2019 Ford Focus 2 years ago and it wasn't really used much, but now that will finally change. It's a great car to drive after all.
- This weekend we're going to see Frozen the musical. My wife really wants to go but because of her disease it's quite the challenge. I hope she gets to enjoy it and that it doesn't take too much out of her.
That's it for now! Again, don't hesitate to reach out if you have anything to say or share.
Silence as a tactic
2025-04-08 10:00:00
Even when you're just working a 9-to-5, you will find yourself in a negotiation sometimes. Not with a vendor, a client or a customer, but rather one with your manager about a promotion or a salary increase. These kinds of talks are often difficult and stressful and it's easy to get caught up in your anxiety and say things you don't want to.
One of the things that kept me back in my career progression was approaching these conversations in a completely wrong way. First I would state my case, but then an awkward silence would follow. I would then try to fill that silence with more words, which would often lead to me breaking down my argument and making it weaker.
To make this is a bit more tangible I will give you an example. Let's say I want to ask for a promotion. I would start off by saying something like "I've been working here for 3 years now, and I've been getting some really good results. I also got us that new client and I've been strengthening our relationships with our current clients. Therefor I believe I deserve a promotion to senior consultant". Then I would wait for a response and instantly I would start to ramble on, saying things like "but maybe it's not a good time because money's tight but it would still mean a lot to me to get this recognition".
What I've just done is give the other party a way out. I made my argument weaker by adding all these unncessary comments. I've also made it easier for the other party to say no because I've just given them a great reason to do so.
The best advice I ever got was from my manager at a previous employer. He told me exactly what I just explained and how it affects my bargaining position. He told me to just state my case and wait, let the awkwardness wash over the other party and sit there. You've just stated what you want and now it's up to the other party to come up with an answer.
Silence is a tactic that can be used to your advantage. It puts some pressure on the other party to respond and it gives you time to think about your next move. It also shows some confidence and assertiveness. It shows that you've thought this through and that you're not afraid to ask for what you want or need.
More often than not, this will only garner respect from the other party.
Week notes 14
2025-04-04 15:00:00
Week 14 was a bit of a boring one. Luckily we have a race weekend coming up (in Japan this time, white RBR woo!), and we're gonna see our corgi puppy again.
- This past Sunday I participated in the local 5k. Despite the wind, it was a pretty good race. My legs felt really good througout and I could really go for it in second half. Gives me some confidence for the next race that's coming up soon.
- On Monday and Tuesday I expierenced some pain and cramps in my right leg which I felt during my runs. I think it was just a fluke, it's all solved now anyway.
- I went to the office on Wednesday. Again I had to go the long way round (by train) because of issues near Rotterdam, but at least the weather was enjoyable.
- I discovered and have been enjoying Fickle Friends on Spotify.
- The Nintendo Switch 2 was announcend. I don't think I'm gonna buy it considering the price and how much I play games these days. Maybe I'll get one in a few years.
- I just wishlisted Oh No! UFO! on Steam. It's an indie game where you play as a tiny adorable UFO and you get to cause all kinds of chaos. Can't wait to play this on Steam Deck.
Week notes 13
2025-03-28 15:00:00
I keep saying this but, what a week! Not in terms of any super exciting new developments or anything, it's just busy at work and at home. Anyway, let's get into this week's notes because I have a lot to share this time around.
- A few days ago I posted a free startup idea on Mastodon: vibe coding keyboards (it's a keyboard with only a tab key). People seemed to resonate with it so I think there's a business opportunity there. Have at it.
- On Wednesday I picked up my bib for a local running event on Sunday. I'm just gonna soak up the atmosphere and enjoy the event, I don't have any goals in mind.
- This week I posted about needing to reset my inboxes. Work, life, everything has been pretty overwhelming lately and a constant barrage of notifications and information isn't helping. I'm already much happier with reducing the amount of inboxes and therefore noise.
- This tiny website is now mentioned on 11ty.dev! You'll hopefully see it pop up on the 11ty leaderboards soon.
- I've been working on my tan quite a bit this week. The weather has been absolutely gorgeous so I did a bunch of running. I'm happy with my pace at the moment and it can only get better from here as I'm also doing some strength training on the days where I don't go running.
- Another thing that happened this week: the internet was up in arms about something! Garmin is adding a subscription service and it's completely optional so far. I've seen people selling off their Garmin watch in response and I don't think that's the right move. They already have your money, the service still works. Let's just wait and see what Garmin will do next before doing anything drastic. It will however likely impact my decision to buy another Garmin watch in the future.
- Halls of Torment remains an incredible game. Having an absolute blast over here on my Steam Deck. Buy it if you haven't already.
- What's even going on at Red Bull Racing anymore? I'm really happy to see Yuki finally getting the seat, but I'm also really scared for his career. That car is obviously not great to drive for anyone other than Max Verstappen.
And that's it for this week! In the meantime, if you have anything to say, anything to share, any question, please feel free to reach out. I love getting emails from random people around the world.
I need to reset my inboxes
2025-03-26 14:00:00
In the Getting Things Done (GTD) productivity system there's this concept of an inbox. People often think of their inbox as just their email, but in GTD an inbox is anything where you collect things that need to be processed. If you're not careful you'll quickly end up with too many of them.
When I look at my phone and laptop I can identify at least 14 inboxes, ranging from email and calendar, to messaging apps and social media.
This is becoming an issue, especially with life and work becoming ever more complex. Every one of these inboxes have to be checked regularly or send a notification by themselves, and every one of them can contain tasks or information that I need to act on or process.
The sheer amount of information and tasks that pile up in any of these inboxes is a constant source of distraction and stress. And of course it's also definitly a me problem; I have a severe case of FOMO where I sometimes even end up going through a bunch of these apps in rapid succession to see if anything new popped up.
It's clear that I need a reset.
First off, I need to consolidate my inboxes. I really don't need three separate messaging apps, I also don't need to have both LinkedIn and Instagram installed on my phone. A concrete example are the messaging apps – I have Messages, WhatsApp and Signal installed at the moment. It's difficult to get everyone on Signal so I'll try to consolidate as much of my messaging to WhatsApp. I know it's a Meta product, but sometimes you have to make compromises. Once more people and groups move over to Signal I'll be in a place to reconsider this.
The second thing I need to do is to set specific times for checking my inboxes. I'll simply put this on my calendar, and I'll see how this goes. I'll start with three times a day (morning, lunch, evening) and see if I can later on reduce this to two times a day.
Lastly I need to be way more mindful of my information intake. It's easy to have a pinned tab for Mastodon and IRC open at all times. All they are doing is distract me from work, costing me a bunch of time I could spend on other things like spending time with my family, running or reading a book.
Week notes 12
2025-03-21 13:00:00
What a week, lots has happened.
- It's been a really stressful week at work. Safe to say I need a quiet weekend to recover.
- Before the Steam spring sale ended I made sure to pick up Halls of Torment for 4 euro's. It's kind of like a mix between oldskool Diablo and Vampire Survivors. Numbers pop up out of enemies and it has a whopping 500 achievements. Highly recommended.
- The F1 sesaon is underway! Last Sunday I woke up at 5am to watch the Australian GP and it was pure chaos because of the rain. This weekend the Chinese GP is on, I haven't seen anything yet because of the time difference and work but I'll catch up later. It's gonna be a banger of a season!
- Last Tuesday we finally met our Corgi puppy for the first time. We have to wait another 4 weeks now before he can come live with us. His name will be Sam and we're all very excited to welcome him into the family!
- One week left until the 5k event in my town. Due to work and other responsibilities I'm still not running and working out as much as I would like, but the times I have been running have been very promising. Even after this long hiatus I can still run a 27 minute 5k no problem. Really looking forward to the event and on to many more.
I'm gonna enjoy the sunny weather, F1 and some more Halls of Torment. See ya next week
Week notes 11
2025-03-14 13:00:00
- After many many months of noise coming from our eletric heat pump, I can safely say it's fixed! I gave the engineer who fixed it a nice bottle of whiskey that's how happy we are. We can finally sleep at night without turning the heat off.
- The new F1 season is underway with practice sessions in Australia already done. It's going to be an absolete banger of a season! Hamilton in a Ferrari, Kimi in the Mercedes, McLaren in the mix from the start, some other promising rookies in there. No clue how it's going to pan out and that excites me.
- Steam Spring Sale is here and I finally bought Slay The Spire to play on my Steam Deck. Everyone kept saying it's a very addictive game and they... weren't wrong. I think I'll stick with this game for a good while.
- This morning I started running again, I feel like my body and mind are again in a place where I feel like I can do it. Of course I didn't take it easy because I wanted to benchmark myself a little bit to see where my limit is at currently. I wasn't disappointed at all, I still have a pretty good base to work off of. Just need to put some kilometers in over the coming weeks.
- I've signed up for a local 5k on the 30th of March to make sure I keep at it and have a bit of a goal to work towards. I don't have any specific finishing time in mind, I'm just gonna enjoy this one and use it to get back into the rythm.
That's about it for this week! Sunday I'm going out for dinner with a friend and next Tuesday we'll finally meet the Corgi puppies! Can't wait. See ya then!
Week notes 10
2025-03-07 13:00:00
Quite a few updates to share this week!
- The weather has been absolutely amazing these past few days. It's finally sunny and warm and nature is waking up!
- We've made some good progress on the project to insulate the garage. We finally have a pretty good game plan and we can close on some deals to make it happen.
- Another thing that's finally out of the way (I hope, let's wait another few days) is the trouble we've been having with our electric heat pump. When it's cold outside, it would make this terrible noise that kept us up at night. After many visits from technicians, it seems to be fixed now. And of course the fix was relatively simple, it just took a long while to figure out.
- I haven't been running for almost 3 months now. I've been very busy with work and due to everything else going on in my life I haven't been feeling great both physically and mentally. I'm really hoping I feel well enough soon to pick running back up because I have an event coming up in May.
- I've been enjoying Fusq while working this week. I don't think why but it works really well with my brain.
- Firefox 136 is released and it has vertical tabs! The design is really well done in my opinion. I would highly recommend you check it out.
- Tonight we'll be binge-watching the new season of Drive to Survive on Netflix. And on Saturday I have a poker session planned with some friends.
Happy Friday and enjoy the weather!
Week notes 9
2025-02-28 11:00:00
What a week, huh? It's been a quick one again, with a lot of work done and a lot of things happening. Here are some highlights.
- After a call with a breeder we are now officially on the list for a Corgi puppy. After years and years of waiting and dreaming it's finally happening, or so I hope. We're gonna meet the puppies in about 3 weeks time and we'll see how that goes.
- I'm currently re-reading The Night Agent by Matthew Quirk. I've seen the tv show but honestly the book is better.
- I also started reading Bill Gates' new memoir Source Code.
- The 2025 F1 season is underway with 3 days of testing. Of course, nothing can be gleaned from testing, but it's nice to see the cars out on track again. It's going to be a tight field with some rookies that are very promising as well.
Lastly, I'll leave you with another song. Blues legend Buddy Guy and one of my favorite bands Switchfoot released a single together called Last Man Standing.
Practice optimism with a single question
2025-02-26 10:00:00
People that know me well will tell you that I'm not the most optimistic person in the world. I tend to see the negatives in things rather than the positives. I'm not proud of it of course, but it's something I've been working on for a while now.
I vouched to try to default to optimism and see the good in things and situations.
As Steph Ango put it:
The life of a pessimist is easy but dreary. The life of an optimist is hard but exciting. Pessimism is easy because it costs nothing. Optimism is hard because it must be constantly reaffirmed. In the face of a hostile, cynical world, it takes effort to show that positivity has merit.
As a family we unintentionally started a bit of a tradition. Every night at dinner we ask each other "what was the most fun thing that happened today?".
A single question that helps us reflect on the day and focus on the positives. Our daughter loves it as well and it's a great way to get her to talk about her day. It's also a great way for me to practice optimism. Lastly it really helps with gratitude and storytelling skills – making you think a little harder about what transpired during the day.
Week notes 8
2025-02-21 11:00:00
- This week I finished reading Extra Focus. For me personally there wasn't a ton of new information in there, but it was nice to get some extra validation for all of the things I've been experiencing over the years.
- All of the extra responsibilities I'm given at work are starting to materialize. It's a busy but very exciting time right now.
- I've been going back to writing notes, todo items and other things on paper in a little notebook. The problem however is that it's very hard to keep it somewhat organized. I'm currently thinking about how I can best tackle this problem.
- I've been thinking about quantum computers for almost 30 years at this point. This week Microsoft announced a new process for creating a scalable error-corrected quantum chip. Obviously that's all very exciting. We need quantum computers to build better quantum computers, so in a few years time this innovation will only accelerate exponentially.
- Through the Welsh Corgi Club here in The Netherlands I enquired about getting a Corgi puppy. We've been dreaming about this for almost 8 years and we're finally in a position to make it happen.
Oops, I bought it
2025-02-18 15:00:00
Remember me waffling about computer monitors? That was just six weeks ago. I have a confession to make: I bought it (yes this was shared in week notes 5 already, but I have some more things to say now).
Admittedly, I wouldn't recommend anyone else do this, unless you've got a bunch of money to squander. I certainly don't, usually. But unexpectedly, I received some extra money to spend and I decided to treat myself for once. I'm always very good at convincing myself that I don't need the thing I actually really want to have. But this time, after much deliberation, I decided to go for it. And boy, is it worth it.
The Dell U4025QW is by far the best monitor I've ever owned.
It came packaged in probably one of the biggest piles of cardboard I've ever seen. The mark of a good quality product I guess. The entire unboxing experience was really easy and my new 40 inch 5k 120hz monitor was up and running on my desk in no time at all. Getting rid of the giant mountain of cardboard was the hardest part.
Speaking about those specs: they don't matter. There are other monitors with similar specs and they don't matter either. What does matter is the sharpness of the text, the color reproduction, the insane ports selection, the build quality... I could gush over this thing for hours. My favorite thing is this little pop-out thing that has 1x USB-A and 2x USB-C, easily accessible on the front. Why didn't others think of this? Another really convenient thing is the ambient light sensor that automatically adjusts the monitor's brightness. I didn't expect it to work very well, but it totally does!
Anyway, I wanted to update ya'll on my waffling. I'm a total hypocrite for buying it anyway. Not that I feel sorry about it, I'm rather pleased with my purchase.
Week notes 7
2025-02-14 19:00:00
- We went on a 5 day trip to a place with lots of playgrounds and a swimming pool for our daughter. Disconnecting from work for a bit was sorely needed for my brain to recover from the insane hours I've been putting in lately. I wouldn't mind to extend by another week or two.
- I'm 4 hours into playing Cult of the Lamb on Steam Deck. It's Stardew Valley but with satanic rituals. From the trailers it looked pretty simple, but it actually has a ton of depth.
- I started reading Extra Focus by Jesse J. Anderson. I'm only a few pages in so I'm not sure yet if it's going to be helpful for me, but I'll be taking notes. We'll see.
- With everything that's going on in the world, the government has been telling us to maybe prepare an emergency kit. For the past few months I was pretty sceptical, surely war won't reach us? But with the dismantling of the United States and the ongoing aggression by Russia, I'm starting to think it might be a good idea to have some stuff on hand.
Week notes 6
2025-02-07 10:00:00
Bit of a boring week (again) with not much going on. I was mainly working a lot to finish everything before I'm off for a week.
- I focussed on getting our backups in a better shape. All of our photos are stored in iCloud, but they're also now going to the Synology NAS automatically via the Synology Photos app. I've also set up a backup of the NAS to Backblaze for around $6/month.
- Went to see a couple of friends and we played some boardgames together. It was nice seeing them again and getting out of the house for a bit.
- On Wednesday I went to the office and had a pretty productive day there. Still takes almost 3 hours for a one way trip, though. I always need to recover the day after.
- The list of things I want to write about is ever growing but I just haven't found the time yet. I won't promise anything, just expect some more of these week notes with nothing else in between while I get on top of other stuff first.
- Next week we'll go an a little vacation for a few days. I expect lots of swimming, reading, relaxing and eating. But most of all, just not having to worry about work for a bit is going to be very good for me.
Week notes 5
2025-01-31 10:00:00
New (not so) boring week, new notes!
- After 37 years of stumbling through life I got unofficially diagnosed with ADHD. I'm now thinking of requesting an official diagnosis, but I'm not sure yet what that will bring me. It's not like it's impacting my performance at work or anything, every employer I've worked with has been really happy. Anyway, it's good to know I'm not totally crazy or stupid, and my suspicions were right all these years.
- Currently finishing up another crazy week at work. But it's a really good chance to step up as a leader more and more. I'm very much enjoying the challenge and the career growth.
- Again, didn't get to do any running or rowing this week because of everything that's been going on. I'm just too tired in the evenings to do anything. I hope to pick it back up again soon because my Garmin watch is screaming at me. I'm starting to sound like a broken record. Moving on.
- Yesterday my new computer display (Dell U4025QW) arrived. It was the most frivolous purchase I've ever made but I'm so happy. Everything looks so crisp, the port selection is insane, the build quality is really good, the light sensor is super useful and works very well. It's my dream display. I'll put a photo of my current setup down below.
- This weekend we'll meet up with some friends we haven't seen in a while to play boardgames. I'm terrible at boardgames but I'm looking forward to seeing our friends again.
I'll leave you with a YouTube recommendation. Even when she worked at The Verge I would watch all of her videos, every last one of them. But now she's gone independent and her videos are somehow even better. I'm talking about Becca Farsace. She takes tech outside. Go watch her videos.
Week notes 4
2025-01-24 09:00:00
It's the year of week notes on the desktop! (if you know, you know)
- My position at work involves a lot of non-technical work like talking to people and vendors, filling out spreadsheets, doing presentations. Which is all great, but I'm a nerd at heart so I allowed myself some time to do some engineering work this week. I really have to carve out more time for that kind of stuff.
- During a company-wide kick-off event, I presented how the tech team is going to contribute to the overall goal of the company for 2025 and beyond. I was a little nervous to present in front of 100+ people, but I got some really nice compliments afterwards.
- Ellie has given me access to try Atuin Desktop and it's just incredible. It's still early days so it's all a little rough around the edges, but the potential is definitly there. I'll be sharing some more thoughts in a separate post soon.
- After the inauguration of the Orange Man, I decided to filter out a ton of words on Mastodon. My timeline is now a happy place once more.
- Last time I talked about how we're planning to have some work done to our garage. We received the first quote and wow is it a lot of money. I kind of expected it, but not this much. Anyway, we have a few more quotes coming in so we'll see how it goes.
- Today I brought in my car for maintenance. Fingers crossed nothing unexpected pops up.
That's it! Bit of a quiet week this one. Until next time!
The algorithm isn't always to blame
2025-01-20 12:00:00
Everyone is a victim of The Algorithm in one way or another. I'm still on Instagram (yes, I know) and I quite often fall into the trap of looking at Reels (super short videos) for too long.
I don't even like most of the content it shows me, but I keep swiping just in case the next one is something funny. The algorithm is really good at recognizing when I'm looking at a video of a golden retriever for 3 seconds longer than usual. I will get a bunch of other golden retriever videos and suddenly it will cut to something else entirely, lest I get bored and quit the app.
Then again, showing a user videos of golden retrievers is a benign use of an algorithm. The algorithm is also used to get you hooked onto extreme, dangerous content. Our brains love nothing more than engaging with content that gets us angry, scared, sad, or anxious. All to make us pay attention for longer, because eyeballs sell ads and ads are the lifeblood of these companies. They are using our psychology against us to make a buck, and it's working incredibly well. Thousands of people are working every day to exploit our brains in better, more efficient ways.
It's this algortihm that is (partly) to blame for the state of the world today where people are more divided than ever. Big tech became politicized; it's no longer about the truth, it's about what gets the most clicks, the most eyeballs, the most ad revenue. People are acting dumb willingly, all to get that precious attention.
But is the algorithm to blame for all of these problems?
I wrote about my favorite laptop and someone put it up on Hacker News and Lobsters. Both HN and Lobsters don't have much in the way of an algorithm - they rank stories based on newness, amount of comments in a certain timeframe, and upvotes. Again, people love nothing more than interacting with negative content and, even without an algorithm, the negativity still spread like wildfire and reached the top so more people felt the need to chime in. The result was a whopping 140+ comments on the Lobsters thread which are insane numbers on there.
It's easy to blame to algorithm for the flood of negative, harmful shit that's spread out over the internet nowadays. It puts the blame on a thing we have no control over, instead of on ourselves. But maybe, instead of leaving a comment on something you have no affinity with, you should ask yourself "is what I have to say going to add anything of value?" and if the answer is no, maybe just don't comment? If you don't care at all about Mac hardware, you can quite safely ignore all content that's about Mac hardware. It will save you and everyone else a bunch of time and frustration.
Week notes 3
2025-01-17 12:00:00
New week notes, who dis?
- I wrote about my favorite laptop and someone put it up on Hacker News and Lobsters. I know I shouldn't read the comments, but I did it anyway. And I came to the conclusion we cannot blame the algorithm for the state of the internet, not for all of it anyway. Even on websites without much of an algorithm, negative comments are still going to reach the top because people love nothing more than engaging with negative content apparently. There were still quite a few positive comments though, so that was nice to see. Not everyone has absolutely lost their minds yet.
- I got a PR merged on the AWS EKS documentation so that was nice.
- In terms of sports, this week was and is a bit better than the previous one. I did some running and rowing, and I will hopefully do some more of that this weekend.
- We had some people come over to look at our garage. The plan is to insulate the whole thing, put in a new tile floor, redo the electrical wiring, and put in a new garage door. It's going to be a big and costly project, but I hope it will be worth it in the end.
- Work has been chaotic with a lot of things breaking. Didn't have the most fun week ever, but I'm glad we could fix it pretty quickly every time. I'll take the learnings out of these incidents and move on.
- After a pretty intense week full of work and other tasks, we're gonna order sushi and watch trash tv tonight. I think we deserve it.
That's it for now! Hope you have a wonderful weekend!
The best laptop ever
2025-01-15 16:00:00
A laptop for just €950 is bound to be crappy, have some issues, and not last very long. Or so you’d think.
I bought my M1 MacBook Air — just the base model with 8GB of RAM and 256GB of storage — somewhere in mid 2021 to use as a couch computer for, you read that right, just €950 on sale. I like having a strict separation between work and personal use, and the 15" MacBook Pro we had before was plagued by the dreaded keyboard issue. Also, using a 15" laptop on the couch is far from comfortable.
But back to the MacBook Air — what a machine. Granted, I only use it for light web development, browsing, emails, and occasionally running a small Docker container. But that’s not much different from what I do for work. I could literally do my job on this tiny little laptop. The keyboard is clicky, the webcam is... fine, the screen is Retina and beautiful, the battery lasts forever, and it’s eerily quiet because it doesn’t have any moving parts. It just keeps chugging along, never slows down or gets hot.
For work, I have a 14" MacBook Pro with an M2 Pro, 16GB of RAM, and 500GB of storage. But for my use, I don’t really notice a difference between the two. Yes, the screen on the M2 is much nicer, but does that even matter? I guess if you’re doing a lot of photo or video editing, sure. But for me, it just displays text in Ghostty or VS Code, and almost any monitor can handle that just fine. I guess I’m not a pro user according to Apple’s standards.
The price difference is over €1000! Yes, the M2 is a good laptop — it’s fast and stable, has more ports and it has a lot more performance — but it’s not €1000 better than my M1 Air.
I can already hear you shouting from the rooftops “I could never do my job with just 8GB of RAM!” or “256GB of storage would fill up so quickly!” — and you’d probably be right. But I’ve never hit those limits. With a machine this affordable, you sort of reprogram yourself to live within its boundaries.
I could keep going about specs and how it compares to a MacBook Pro, but here’s the thing: this is by far my favorite laptop ever. It’s cheap, it does the job, it’s light, it’s quiet, and it’s beautiful. I love it, and I can’t see myself replacing it unless the battery dies, I drop it and the screen cracks, or some other terrible thing happens.
I love affordable tech that just does its job and gets out of the way. That’s also why I bought a Garmin FR 255 on sale for just €280. Sure, there are better ones out there, but this does everything I need. The same goes for my Kobo e-reader, which I also got on sale. Again, there were better models available, and the technology has advanced, so there are much nicer ones now. When you buy something afforable, you don’t have to worry about it as much. You can just use it and enjoy it.
I don’t need the latest and greatest. I just need a tool that works. My MacBook Air is exactly that, and it’s the best laptop ever.
Blog questions challenge
2025-01-13 14:00:00
1. Why did you start blogging in the first place?
My blog has taken on many forms over the years, but the main theme was always sharing technical content that others might find useful. Some things that I've learned, some bug I've solved, some tools I discovered. I am and forever will be a firm believer that knowledge should be freely available for anyone. What I did find though, was that keeping the technical content up to date was a hassle so I decided to dial that back a little bit.
Now I write about whatever comes to mind and I recently started sharing week notes which has done wonders for my creativity, mental health and output on this blog as well. I just love having my own home on the internet that I can do anything with. I don't need to ask for permission and my name is attached to it, not some large corporation.
2. What platform are you using to manage your blog and why did you choose it?
This also has changed over the years, but I'm currently all in on Eleventy and I love everything about it. I love static websites for their speed and myriad hosting options it gives me. Eleventy has a very good plug-in ecosystem as well and the community is super friendly.
My blog is hosted on GitHub Pages. All details can be found in the colophon.
3. Have you blogged on other platforms before?
Many, many changes over the years. I started out on WordPress, was active on Tumblr for a while, switched to Jekyll, then to Hugo and now on Eleventy. I also tried Ghost in the past but quickly found it didn't suit my needs very well. I just want the tool to get out of the way as much as possible now.
4. How do you write your posts? For example, in a local editing tool, or in a panel/dashboard that's part of your blog?
I write my posts in Visual Studio Code and I preview them locally using Eleventy's built-in server. I just copy over one of the Markdown files in src/posts and start writing. Nothing fancy.
5. When do you feel most inspired to write?
I follow a ton of different independent blogs in my RSS reader where I come across so many good posts that inspire me all the time. When my brain gets some downtime that's when I find myself thinking about what I could write about next. I either write immediately when I'm at my desk, or I add it to my Reminders app for later.
6. Do you publish immediately after writing, or do you let it simmer a bit as a draft?
I publish immediately because most times I'm pretty excited to share what I've written and I love getting feedback. I do proofread but I still have to go back and add a few more commits to fix the odd spelling mistake.
7. What's your favorite post on your blog?
Currently it's Goals for 2025 as it guides me through the year. A technical topic I still really like is Avoid using internal load balancers because it saved me a ton of time as an AWS consultant back in the day.
8. Any future plans for your blog? Maybe a redesign, a move to another platform, or adding a new feature?
I just redesigned my blog and I'm happy with it for now. I do want to eventually add a photography section on here.
Week notes 2
2025-01-10 09:00:00
Week notes 2 already? Feels like I just wrote the first one. If time keeps flying by like this, it will be a very short year.
- I didn't do much running this week unfortunately as life got in the way. Maybe next week will be better.
- Work has slowly started picking up again now that everyone's coming back from their holiday break. We've got a pretty good roadmap ahead of us and I'm excited to get stuck in!
- I'm getting some extra responsibilities at work soon which I'm pretty excited about as well.
- We haven't seen the sun much over the past couple of weeks, but starting today we'll have a few days of clear skies. It's cold though!
- I kept on playing Diablo IV, trying to transform my Spiritborn into an endgame build and hitting at least 200 paragon before this season ends.
- I wrote down a few ideas for more blog posts which are coming soon. I'm trying to spread it out a little bit so I don't run out of things to write about and I don't want to spam your RSS readers either.
- Received some lovely blogs to read after my call to send them my way.
That's it! See ya next week.
I'll read it
2025-01-08 13:00:00
I think with the ever growing power of mega corporations on the internet, writing a personal blog is a good way to keep the internet weird. It doesn't matter if it's about personal experiences, some very specific topic, or just random thoughts.
It's difficult to keep writing and come up with topics to write about, more so when you feel like no one is reading along. Manuel is motivating people to start writing by offering to read their blog so you have your first reader.
So, I'd like to join Manuel in this effort. If you have a blog, send it to me and I will read it. Even better if you add an RSS feed so I can easily keep track of new posts. I like reading in English or Dutch, any and all topics are welcome.
Display waffling
2025-01-07 06:00:00
I think almost any nerd remembers their first computer monitor. Mine was a tiny CRT one that could only display a few lines of amber text. It was hooked up to an Intel 8086 I think and even though it was very outdated at the time already, it was my very first personal computer.
Fast forward to today, by now I've owned well over a dozen different computer monitors. Needs and preferences change, so you end up buying something else every few years because you think it will serve your needs or wants better than what you had before.
When COVID hit, we had 2 separate desks set up with 27 inch 4k displays. My wife needed a bit more space for her work and I didn't want to get into the trouble of having a multi-monitor setup. More so because we have wildly different tastes in computers and trying to connect it all in a manner that works for the both of us would have meant I also needed to buy a dock of sorts, adding to the cost. Instead, we opted for a single ultrawide display, the Dell P3421W. I continued working on my 27 inch 4k display and she got the ultrawide.
Little did I know, once you go ultrawide you can never really go back. I'm not all about "productivity" and "workflow" but the extra horizontal space means I can have my code editor and my terminal side-by-side very comfortably. By chance, we got a second ultrawide for free from someone who didn't use it and apparently didn't care about its monetary value. It was an HP Z38C that offered even more vertical space than our Dell monitor.
Back to the present. I've been using the HP monitor for the longest time now since I work remote and I want a nice monitor because I have to look at it for 40+ hours a week. Thing is, when you look at a computer monitor for that much time, you start to notice its tiny flaws.
And then the new Dell U4025QW appeared.
No, I didn't buy it (yet?) but I read about it on RTINGS or whatever and immediatly put it on my wishlist. A 40 inch 5k2k ultrawide monitor that costs a whopping €1800. I would still run it at 1600p but the added pixels would mean text would be extra crispy. Do I need it? Absolutely not. Do I want it? Absolutely yes. I mean, it has all the ports, it has a little pop out thingy with even more ports! It's an Ultrasharp so the colors are supposed to be very good!
Something unexpected happened with the HP Z38C though. My MacBook Pro ran out of battery even though it was supposed to be hooked up to USB-C. Turns out, if you don't use the extra fancy HP cable that comes with DRM, you only get 15 watts of power delivery. That annoyed the hell out of me so I took it out of my office and got the Dell P3421W back from retirement. I hooked it up to my MacBook, got 65 watts of power delivery and I'm back in business.
First thing I noticed: the colors are way more vibrant than on the HP, apparently the HP was always a bit washed out. Another thing I noticed is that the Dell isn't that much smaller. In fact, I think I actually prefer a smaller monitor. I'm someone who can't focus on anything at all, so multitasking never works for me, I just want my terminal and code editor side-by-side please. I don't need a 40 inch 5k2k monitor, what I need was sitting in my attic all along. Sure, it's not perfect: uniformity is a bit off, the text isn't as crisp as I would like, it doesn't have enough useful ports... But it doesn't cost €1800 either.
Still, the U4025QW is on my wishlist just in case. Maybe a smaller version of that monitor will come along some day.
Goals for 2025
2025-01-03 14:00:00
2024 has not been the best year for me and my family. My wife got diagnosed with a chronic illness called MS, which has turned our life upside down in a number of ways. Death has also been a big theme last year. I didn't think I'd already be dealing this much with it at 37, but here we are.
It's been tough and that makes me reconsider a few things. I'm normally not someone who does new years resolutions, and I'm not going to do them now either but I do have some goals in mind for 2025.
I think the overarching theme is going to be about taking care about myself and my family first. I've always been a bit of a people pleaser and I care way too much about other people's opinions. I'm going to try to deal with my own issues only and let others deal with theirs. You know, for my sanity.
Running
Running has been a big part of my life in 2024 and I intend to go above and beyond this year. I'm planning to run a few 10k events, again raising funds for MS research. I'm also going back to the half marathon distance which I'm equal parts excited and scared about. The goal is to get close to the 2 hour mark.
The big one is going to be my first ever ultra in November. I have plenty of time left, but it's going to be grind and the biggest challenge yet. Can't wait to cross the finish line.
Health
Health wise 2024 wasn't the best with a ton of stress, bad eating habits and just not listening to what my body needed. I'm going to try and listen a little more, take rest when needed, have a healthier diet, cut out late night snacks, drink less alcohol, the works. The ultimate goal is to transform this body into a machine for the aforementioned ultra marathon.
I also have some mental health goals but I don't think I'm ready to talk about those yet. I hope it will make me a more balanced person that understands his own limits and can communicate them better.
Photography
Photography has always been a hobby for me - it makes me look at the world differently and makes me consider certain things in a different way. I have this nice Sony camera just collecting dust and I intend to bring it with me more often, where appropriate. I have a certain photographic style in mind which I want to explore some more. When I have something to show for I'll create a photography section on this website.
Work
Despite all the difficulties in my personal life, professionally 2024 has been a year of immense growth. I took on more of a leadership position and I've been working with other leaders in the company; I think technology wise we're in a much better position now. I'm incredibly proud of myself in that regard, it's what I've been working towards for 16 years at this point. In 2025 I'd like to continue this growth and take on even more responsibilities in coaching people, shaping infrastructure and platform architecture, and making sure we're all on the same page.
Week notes 1
2025-01-02 10:00:00
This is my first ever entry in a new series. Just about every blog I follow does these week notes where they summarize what they've been up to. It's often very personal, sometimes it's about work or games or music. I always get something out of reading them, so I thought I'd give it a try myself. There's no particular format or structure and I'm trying to figure things out as I go. Bear with me.
Normally I'd publish these things on a Friday, but I just got back to work today and I wanted to get this out there. Here goes.
- I was off work for almost 2 weeks which was the longest stretch of not having to think about work in a long long time.
- New Years eve was rather uneventful. We stayed home because most other people we regulary hang out with during NYE had other plans. Maybe next year...
- Ghostty is my new terminal emulator and it runs great. Love the defaults so my config is just 3 lines.
- I double dipped and bought Diablo IV again for my Steam Deck. Doesn't run great in endgame, but good enough to be enjoyable. Having a blast with the new class. Already put in well over 20 hours again.
- This website got quite a large refresh in terms of its design. I'm very happy with the result.
- After 2 months of being sedentary I got back into the habit of running. Planning to run a few events this year, with some 10k and 21k distances in there. The big one is going to be a 50k in November. Back to the grind!
- Still thinking of some new years resolutions, nothing is set in stone yet. I'm not going to make my life very hard or anything - I just want a quiet year with a bigger focus on myself and what my body needs.
- Been listening to one of my favorite bands Switchfoot quite a bit after a long stretch of not listening to them.
That's it! I'll leave you with a playlist to listen to.
2024 GOTY
2024-12-20 10:00:00
My gaming habits can be summed up in a single word: erratic. I have a Nintendo Switch and an Xbox Series X just sitting there, collecting dust most of the time. Turning on the tv, powering on the console, waiting for things to update and then finally playing a game just feels like a burden. Espescially the part where the Xbox hogs the tv and my wife can't use it while I play a game. Cumbersome. As a result I didn't really play much on there this year. And yes, I know I can use my Switch as a handheld, but playing it for any significant amount of time makes my hands cramp up. The ergonomics of the Switch are terrible, for me at least. Don't @ me.
I did play a single game on my Xbox though, and it's my GOTY for 2024: Diablo IV. Back when the game came out I went through a rough time. My wife ended up in the hospital after she was diagnosed with Multiple Sclerosis and I was left to fend for myself and my daughter for the week. It was the most stressful time I ever experienced and I spent it playing Diablo IV every night until it was time to go to bed. A perfect escape from reality. It's very grindy and works well with my monkey brain because numbers pop out of enemies when I hit them. It's mindless fun, not much skill involved if you don't want to, but it can also be a very deep and difficult game if you're into that. I know there's issues with the game and it's not perfect at all, but for me it was the perfect game at the perfect time.
When the situation started to settle down again though, my Xbox went back to collecting dust as I was focussing on other things that occupied my mind.
It wasn't until I finally pulled the trigger on a Steam Deck that things started to turn around again for gaming. I always found the Steam Deck to be a really interesting device, but I always thought I'd never use it. Just another console that would collect dust, right? I couldn't be more wrong.
The Steam Deck feels more personal, it feels like I'm way more connected to the games I play. I can just pick it up, play for a short session and put it back down again. The ergonomics are way better than the Switch as well; I have zero issues playing for a few hours on end. The games are generally much cheaper compared to the Xbox and Nintendo stores as well, which makes trying a game a bit less prohibitive. I've even been double dipping on games that I already own on Xbox so now I'm back to playing Diablo IV but on Steam Deck instead. It's perfect.
I got my Steam Deck at the end of October and I already played many dozens of hours on it. Some honorable mentions, really all roguelite games, are: Hades II, Vampire Survivors, Brotato and Ballionaire. Every one of these are an incredible time sink and I can't recommend them enough.
Now if you would excuse me, I have some demons to kill and some levels to grind.
Default apps 2024
2024-02-19 10:00:00
Here's a fun new thing in the blogosphere: sharing your default apps. I saw a few people I follow do it and borrowed the format, as one does. A ton more pages like this to look at are catalogued by Robb Knight.
I've always been a minimalist since having too much stuff doesn't fit in my brain. The same is true on my electronic devices; having too many apps gives me a headache. As a result, this might be a rather boring list for most people, but I'm eager to see how it evolves over time.
- 📨 Mail Client: Apple Mail
- 📮 Mail Server: iCloud+
- 📝 Notes: Apple Notes
- ✅ To-Do: Apple Reminders
- 📷 Photo Shooting: iPhone, Sony RX100 IV
- 🎨 Photo Editing: Apple Photos
- 📆 Calendar: Apple Calendar
- 📁 Cloud File Storage: iCloud
- 📖 RSS: NetNewsWire
- 🙍🏻♂️ Contacts: Apple Contacts
- 🌐 Browser: Firefox
- 💬 Chat: Apple Messages, Whatsapp
- 🔖 Bookmarks: Firefox
- 📑 Read It Later: Pocket
- 📜 Word Processing: Google Docs, Word
- 📈 Spreadsheets: Google Sheets, Excel
- 📊 Presentations: Google Slides
- 🛒 Shopping Lists: Apple Reminders
- 💰 Budgeting and Personal Finance: Excel
- 📰 News: Brutalist Report
- 🎵 Music: Spotify
- 🎤 Podcasts: Overcast
- 🔐 Password Management: 1Password
- 🧑💻 Code Editor: Visual Studio Code
- ✈️ VPN: none
Config-driven Terraform
2024-01-18 10:00:00
Some time ago I wrote about config-driven import which became available in Terraform 1.5. Import blocks are a way to import existing resources into the statefile, which is useful when you have a bunch of infrastructure that was created manually. Yesterday Terraform 1.7 was released that extends this functionality with a for_each argument.
Terraform 1.7 also includes an enhancement for config-driven import: the ability to expand import blocks using for_each loops. Previously you could target a particular instance of a resource in the to attribute of an import block, but you had to write a separate import block for each instance.
Expanding on my previous blogpost about Import blocks, here's a quick example of how to use the new for_each argument on a list to import multiple Digitalocean Spaces buckets at once.
terraform {
required_providers {
digitalocean = {
source = "digitalocean/digitalocean"
}
}
}
locals {
buckets = {
"test" = "bucket-test"
"staging" = "bucket-staging"
"prod" = "bucket-prod"
}
}
import {
for_each = local.buckets
to = digitalocean_spaces_bucket.mybucket[each.key]
}
resource "digitalocean_spaces_bucket" "mybucket" {
for_each = local.buckets
bucket = each.value
}
Another great addition in Terraform 1.7 are Remove blocks. There are times when you need to remove a resource from your Statefile, optionally without removing the underlying resource itself. Of course there are CLI commands to accomplish this, but having it available as a Remove block means we can run terraform apply and check the changes before executing them.
As an alternative to the terraform state rm command, the removed block addresses all of these challenges. Just like the moved and import blocks, state removal can now be performed in bulk and is plannable, so you can be confident that the operation will have the intended effect before modifying state.
removed {
from = digitalocean_spaces_bucket.mybucket
# Instruct Terraform not to destroy the underlying resource
lifecycle {
destroy = false
}
}
Both of these additions are great improvements to Terraform, and I'm looking forward to using them in my projects. They will ensure I'm much more confident in working with the Statefile which has always been a bit daunting.
On running with a watch
2023-12-08 10:00:00
Anyone that knows me well can attest to me being a dreadful sports person in almost every category; except for one: running. I've been running for a very long time, I could at one point run a 5k in 20 minutes and a 10k in less than 50 minutes. I never really had a plan, I just go out for a run and don't think about it too much. To the chagrin of some of my friends, running comes natural to me. I naturally have a rather high vo2max and I'm not super prone to injuries so I can just keep running for a good while before I hit my limits.
Because of all this, I never had a use-case for a better watch than my Apple Watch SE. But as I get older I do need a little more hand holding to get my old form back. I finally decided to get a Garmin Forerunner 255S and I've been using it for 2 weeks now.
First things first, there's absolutely no way to compare an Apple Watch to a Garmin Forerunnner. They are for completely different use-cases. The Apple Watch is a smart watch with some fitness features, the Garmin is a fitness watch with some smart features. That's not to say I don't wear my Garmin throughout the day, on the contrary; I wear it as much as possible to give it as much information as I can. I even use it to track my sleep, which is something I never did with my Apple Watch.
Another thing that's incomparable between the two is the ease of use and the user interface. My new Garmin has an app called Garmin Connect and the UI just isn't as pretty. Because of the UI the entire experience takes a while to get used to, factor in the huge amount of data that's being collected and presented in the app, and you have a recipe for a steep learning curve. Luckily every single metric has a 'help' button which describes exactly what it is and why I should care about it.
What I like most about the Garmin as compared to the Apple Watch is how well it ties all the data together to create a comprehensive overview of how your training is affecting you and your overall health. Something the Apple Watch did not do, it just showed you all the individual data points and left it up to you to figure out what it all meant. It really does take out all the guesswork out of training for say a half marathon which I'm doing right now.
Speaking of training, the Garmin does give me daily suggestions on what I should be doing that day. Today I got a recommendation to do interval sprints, and tomorrow is long run day. Due to personal circumstances I can't always follow the recommendations, but it's nice to have a little guidance when I am able to get a run in.
All in all, I'm really happy with my move to Garmin. Even though I'm currently not following the recommendations closely, I do feel like I can get much more out of my runs with this watch than I ever could with my Apple Watch. This thing gives me the confidence to reclaiming my old form, run a half marathon and do well in it.
Obsidian doesn't click for me
2023-10-12 10:00:00
The idea of a personal wiki has always appealed to me. I tried a few times to incorporate one into my "workflow" if I even have one. I tried all sorts of different tools but the latest one that's been keeping me occupied is Obsidian. I really want to like and use Obsidian, but I'm unable to. Let me explain.
I've implemented the PARA method into my personal wiki. It's a way of organizing all information into four buckets:
- Projects for any ongoing stuff
- Areas for anything that's going on in your life like your car, finances, mental health, etc.
- Resources for anything that you might want to reference later
- Archives for anything that's no longer relevant
Gotta say, I love this so much and it's not really relevant to any one tool. I've been using this method for a while now and it's been working great.
But, even with this organisation of information going on, Obsidian still doesn't click for me.
To be frank, Obsidian just... feels wrong. It's undeniably an Electron app and that just makes the experience really cumbersome to me. The application always feels a little sluggish and is never truly at home on any platform. You can make Obsidian look a little better using the great Minimal theme but its core problems remain. The entire ecosystem of themes and plugins is also a little overwhelming and are prone to break in any subsequent release. I don't want to spend hours tweaking my personal wiki, I just want to use it. The barrier between my thoughts and putting them into writing needs to be as low as possible.
I know there are many people out there who love Obsidian, people who spend dozens of hours making it just right. I however will be reluctantly looking elsewhere.
Saving time using Terraform import blocks
2023-06-15 10:00:00
Anyone who uses Terraform must be familiar with the import command; it allows you to gather existing resources and put them into your statefile. This way, existing resources which were previously not created using Terraform are now under management of your infrastructure as code.
You can import your resources in the terminal, but you still have to write the code for the resources you import. With Terraform version 1.5 there's a better solution: import blocks.
Let's take a DigitalOcean Spaces bucket as an example here.
Before Terraform 1.5 you first had to import the resource into your statefile:
terraform import digitalocean_spaces_bucket.mybucket `region`,`name`
Now, using a bit of terraform plan trial and error, you could write the code for the resource until no changes were found anymore.
resource "digitalocean_spaces_bucket" "mybucket" {
name = "mybucket"
region = "ams3"
}
Using import blocks you can basically skip the last step for the most part. You can now import resources using code, and have a basic skeleton of the resource code be created for you.
First we get the DigitalOcean Terraform provider and define our first import block.
terraform {
required_providers {
digitalocean = {
source = "digitalocean/digitalocean"
}
}
}
import {
id = "ams3,mybucket"
to = digitalocean_spaces_bucket.mybucket
}
Using terraform plan with the -generate-config-out flag, Terraform will generate configuration for the resource and outputs the plan.
terraform plan -generate-config-out=generated.tf
Of course, the code it generates isn't perfect, but it's a very good starting point. Now, finally, we don't have to go back and forth between our code and terraform plan to guess the arguments of the resource. You can go ahead and take the output and put it in the correct place in your own codebase.
The above import block will generate something like this:
resource "digitalocean_spaces_bucket" "mybucket" {
acl = null
force_destroy = null
name = "mybucket"
region = "ams3"
lifecycle_rule {
abort_incomplete_multipart_upload_days = 0
enabled = true
prefix = null
expiration {
date = null
days = 7
expired_object_delete_marker = false
}
noncurrent_version_expiration {
days = 7
}
}
versioning {
enabled = false
}
}
Reusable Terraform modules using Dynamic blocks
2022-12-08 10:00:00
In the realm of Amazon Web Services there's this thing called a Landing Zone, a set of infrastructure as code modules built to deploy new environments faster. You can build a Landing Zone using CloudFormation, CDK, Terraform, or any other tool you like. The point is that you have a starting point for as many use-cases as possible. For a Landing Zone to work you have to write reusable generalized code that could work for any client and any combination of infrastructure.
While trying to create a Landing Zone in Terraform I found that it's very hard to make them follow the DRY principle (Don't Repeat Yourself). After a while the code started to be really hard to maintain. But then I found Dynamic blocks.
Terraform provides Dynamic blocks as a way to create repeatable nested code within a resource, it's kind of similar to a for loop but for stuff within a resource. But Dynamic blocks also allow you to conditionally create certain properties on a resource.
As an example, let's take the platform code for toot.community.
Here I wanted to create multiple Digitalocean Spaces, one for storing user files, one for backups, one for Terraform state management, etc. On some of these Spaces I want to create a lifecycle rule to automatically delete files older than a given threshold. But of course I don't want to apply that same lifecycle policy to everything; it would be a stupid idea to delete Terraform statefiles after all. At the same time, I really want to define the Digitalocean Spaces resource only once, for DRY reasons.
In this example you see a Dynamic block for the property lifecycle_rule. There's a for_each that needs the variable expiration_enabled to be set to true, else the for_each loop will be empty and the property will not be created.
resource "digitalocean_spaces_bucket" "this" {
name = var.spaces_name
region = var.region
acl = "private"
dynamic "lifecycle_rule" {
for_each = var.expiration_enabled == true ? [1] : []
content {
id = "${var.spaces_name}-lifecycle-rule"
enabled = true
expiration {
days = 7
}
noncurrent_version_expiration {
days = 7
}
}
}
}
Now if I don't specify the variable expiration_enabled the lifecycle_rule property isn't created and I just get a standard digitalocean_spaces_bucket. I don't have to repeat myself anymore and it makes my module a lot cleaner.
A word of warning though, overuse of Dynamic blocks will eventually lead to code being unreadable and not very easy to understand. Only use Dynamic blocks if there's no other way to avoid repeating the same code. If you have to repeat a few lines once or twice, stop and think if you really need a Dynamic block or if you can live with it in that instance.
Speaking of Terraform modules, that's something I want to talk about in another blog post as well. A question I get asked a lot is "how do I organize my environments and modules?". More on that later. If you want to get notified of new posts you can import the RSS feed for this website in your reader.
Responsive images on a static Hugo website
2022-12-06 10:00:00
For years and years I've been using Jekyll as my static site generator of choice, mostly because I like their templating engine and I'm a fan of Ruby as a programming language. I've been experimenting with Hugo as well, but it never really clicked for me. Well, until I found the perfect theme for my needs. The same theme is now used here and on the toot.community blog so I wanted to set mine apart a little bit by adding banner images on some posts. Downloading an image from Unsplash and manually resizing it wasn't an option though - I need things to be frictionless when I want to add a blog entry.
I started looking for ways to automatically generate multiple sizes of an image and came across a lot of different solutions. Most didn't work anymore or were very convoluted. That's to say, until I found Bryce Wray's entry.
I quickly adapted his code to my needs and had it working on no-time, you can see it in action right here.
Here's how I did it.
Assets directory
In order to leverage the built-in image resizing capabilities of Hugo, you have to create an assets/images directory in the root of your project. Any other place doesn't work, unless of course you customize the directory. But I like using defaults to avoid breakage later down the line.
Shortcodes
The following Hugo shortcode will generate multiple sizes of a given image and spit out .webp and .jpeg files.
Create a file called /layouts/shortcodes/imgh.html in the root of your project with the following contents.
{{- $respSizes := slice "960" "1280" "1920" -}}
{{- $imgBase := "images/" -}}
{{- $src := resources.Get (printf "%s%s" $imgBase (.Get "src")) -}}
{{- $alt := .Get "alt" -}}
{{- $divClass := "" -}}{{/* Init'g */}}
{{- $imgClass := "w-full h-auto animate-fade" -}}
{{- $dataSzes := "(min-width: 1024px) 100vw, 50vw" -}}
{{- $actualImg := $src.Resize "640x jpg" -}}
<picture>
<source
type="image/webp"
srcset="
{{- with $respSizes -}}
{{- range $i, $e := . -}}
{{- if ge $src.Width . -}}
{{- if $i }}, {{ end -}}{{- ($src.Resize (printf "%sx%s" . " webp") ).RelPermalink }} {{ . }}w
{{- end -}}
{{- end -}}
{{- end -}}"
sizes="{{ $dataSzes }}"
/>
<source
type="image/jpeg"
srcset="
{{- with $respSizes -}}
{{- range $i, $e := . -}}
{{- if ge $src.Width . -}}
{{- if $i }}, {{ end -}}{{- ($src.Resize (printf "%sx%s" . " jpg") ).RelPermalink }} {{ . }}w
{{- end -}}
{{- end -}}
{{- end -}}"\
sizes="{{ $dataSzes }}"
/>
<img class="{{ $imgClass }}"
src="{{ $actualImg.RelPermalink }}"
width="{{ $src.Width }}"
height="{{ $src.Height }}"
alt="{{ $alt }}"
loading="lazy"
/>
</picture>
</div>
Using the shortcode
Now in order to use the above shortcode you can simply drop an image into /assets/images and insert this line of code in your MarkDown file.
{{</* imgh src="my-example-file.jpeg" alt="My example file" */>}}
Stop doing DevOps teams if you want to scale
2022-12-05 10:00:00
If you're serious about scaling your company you should stop doing DevOps teams. I realise this is probably a controversial opinion and one I'm most likely almost alone in thinking, but it's something I've been thinking about a lot as of late.
DevOps teams are developers and IT operations people who work together collaboratively in order to increase the speed and quality of software development and deployment. Development and Operations are not working in their own bubble but rather work closely across the entire lifecycle of an application. Anyone who ever worked in such a team must be familiar with the DevOps loop of infinity.
I'm here to argue that, while this model of integrated DevOps teams works well for smaller companies, it's absolutely awful for scaling a company beyond what would be considered medium sized. I think eventually the integrated nature of DevOps inhibits a team's ability to execute projects while adhering to set standards for quality, stability, and speed.
My preliminary conclusion is that in order to scale, a company needs to embrace the silos of development and operations again. Now, I'm not arguing for dev and ops not to talk to each other anymore - to the contrary, I think operations needs to be serving the development team with pre-baked building blocks for any and all use-case. While we're at it, the operations team needs to be called the platform team as they provide the platform for the developers to build applications on. The developers should be able to use the building blocks like Lego and the platform team needs to be empowering the former.
Again, DevOps teams are still the right solution for a lot of companies. But if you're serious about scaling your operation, you need to be thinking about seperating the two again. There's always the possibility that in a few years time I'll look back at this and come to the conclusion I was wrong, but for now it sounds like the right solution.
Just a thought for now, I'll get back to this topic. I'd love to hear what others think so send me a message.
Scaling a Mastodon community to 27k people
2022-12-04 10:00:00
Tomorrow marks the first full month of my move to toot.community, a Mastodon instance initially set up by my friend Jorijn. My move to Mastodon wasn't motivated by what's going at Twitter right now, but rather the technical challenges of scaling the shit out of it. In the first week we welcomed thousands of people and we certainly had to put out a fire or two, but most of the time we had the time to focus on optimization.
If you look at the #MastoAdmin hashtag on Mastodon you'll see a lot of messages from other admins sharing scaling tips and tricks. There I got the idea to open source everything we were doing so that others could hopefully benefit from it. Open source software has shaped my carreer and giving back is the least I could do. While we were working on making the scaling of toot.community fully event-driven, I got to work to write Terraform code for the infrastructure. Since I have a lot of experience with Terraform, I made sure to create modules for every part of the platform so we can easily rip out and replace every part of it without any hassle at all.
At the same time we were also working on a fully event-driven scaling setup on top of Kubernetes. Currently we run between 3 and 7 nodes in the Kubernetes cluster depending on the requests to the web server and the amount of messages in the queues. This way we're never overspending on infrastructure, something that's incredibly important while running a Mastodon community because it's fully supported by donations. Of course we don't want to squander the money so we're constantly optimizing and tweaking to be able to handle more people on the same amount of infrastructure; now at 27k people we're paying about the same amount of money per month as we were at 15k people.
We now have an event-driven, self-healing Mastodon instance that can basically scale into infinity given enough funds. That doesn't mean we sit back and relax however, we still have a ton of ideas to optimize further. Some things we want to do over the coming months include: getting our CloudFlare setup into Terraform, turning the screws on security, more visibility into key metrics, and database optimizations.
On the toot.community blog we will publish updates on financials and some deepdives into the technical implementation of it all. There's an RSS feed it you want to follow along.
A minimalist take on Vim
2022-04-15 10:00:00
I've been a Vim user for as long as I can remember, but in the last few years VS Code kind of took over as the defacto choice for us DevOps engineers. VS Code is great at offering all kinds of plugins that should, in theory, make life a little easier. It's funny actually, because plugins are the sole reason I never quite got into using Vim fulltime. To me, plugins in Vim just added to the complexity of remembering all of the keyboard shortcuts and quite frankly, the many ways of installing a plugin didn't help me make sense of things either.
But then Vim 8 was released.
Vim 8 introduced a really simple pack system for installing plugins. You can just drop a directory in the designated pack directory and Vim will automatically load everything that's there. When you git clone a plugin it's quite easy to update it whenever a new version is released.
That's not to say I've gone crazy and I'm now running 20 plugins. I only have a plugin for working with Terraform and one for loading EditorConfig files installed. And for me that's more than enough. Not because I can't handle complexity but mostly because Vim can do so much out of the box that most people are not aware of.
Let's dig deeper into my setup.
Installing plugins
Installing vim-terraform and editorconfig-vim is as easy as cloning their repositories into the pack directory.
git clone https://github.com/hashivim/vim-terraform.git ~/.vim/pack/plugins/start/vim-terraform
git clone https://github.com/editorconfig/editorconfig-vim.git ~/.vim/pack/plugins/start/editorconfig-vim
Within Vim you can execute :scriptnames to list all loaded plugins.
My .vimrc
My .vimrc is exactly what I need and nothing more.
syntax on # enable syntax highlighting
set tabstop=2 # set 1 tab to 2 spaces
set shiftwidth=2 # set an indent to 2 spaces
set expandtab # convert tabs to spaces
set ai # automatic indentation
set number # enable line numbers
set hlsearch # highlight search matches
set ruler # show current row and column position
set backspace=2 # fix backspace behaviour
set wildmenu # enable autocompletion
set path=$PWD/** # set search path
set wildmode=longest:list,full # set autocompletion mode
set pastetoggle=<leader>p # toggle paste mode using \p
set nuw=3 # set left margin
set noswapfile # disable swapfiles
set clipboard=unnamed # copy to system clipboard
highlight LineNr ctermfg=DarkGrey # set linenumbers to grey
nnoremap <esc><esc> :noh<return> # clear search results using esc-esc
colorscheme nord # set colorscheme to nord
Keyboard shortcuts
Some of the common ones I use are i for insert mode and v for visual mode. Then there's u for undo, y for copy (yank), d for delete, and aB for selecting a block with accolades. And of course a bunch more, but I think you're good to go with just these ones.
Even after years of use and some amount of muscle memory, it still feels like I've only touched the surface of what's possible. When you're just starting out I highly recommend keeping a cheatsheet at hand, like this one.
40 questions
2022-03-18 10:00:00
The end of the year or your own birthday are both for reflection on the days and months that came before. We try to look back on all the things that went right and the things that maybe could've been better. The highs and the lows, the moments where we experienced stress, where we felt love. We try to make new resolutions for the year ahead. But sometimes we fail to notice trends as the years go by quicker and quicker.
I'm 34 years old and 35 is quickly approaching. Someone should have told me that your 30s will fly by; it's like I only just turned 30 but I'm almost half way through. We still can't slow down time, except for maybe orbiting a black hole, and everything's relative. But I somehow feel like I'm losing my grip as the years go by.
Recently I came across Stephan Ango's 40 questions. It's a list of questions you can ask yourself every year and you can keep the answers around to maybe spot trends and you can share the questions with family and friends to have a conversation about what it's been like for them. You certainly don't have to have an immediate answer to everything then and there - instead, take your time. It might take a week or two to answer them all and that's perfectly fine.
The world is a loud place that never stops moving. Sometimes it's good to step out of it for a little bit to sit down and reflect on everything that happened and everything that awaits you. Ask yourself these 40 questions, it might help you understand yourself and the world around you just a bit more.
Avoid using internal load balancers
2022-03-15 10:00:00
One of the most well-known patterns in infrastructure is having an internal load balancer in front of backend services like application servers. When you're migrating your workloads to say AWS Fargate it's easy to just carry over that same pattern because, well, it works. But, as with all things in the cloud, internal load balancers cost money and add complexity. When you're just migrating to using containers for the first time, adding complexity to an already steep learning curve might not be the best way to go about things.
That's where Service Discovery comes in.
Service Discovery is a thing where you let the backend servers register themselves in some kind of database, so the requestor knows where the targets are. This has been done in all kinds of scenarios; from DHCP to XMPP, as well as DNS in Kubernetes.
While I agree that adding Service Discovery to your architecture does add a little bit of an up-front learning curve, in the long run it's kind of a set-and-forget thing.
A great service for such a use-case is AWS CloudMap which integrates really well with AWS Fargate. Say you have a backend service running on AWS Fargate that accepts traffic on port 4000 that you can to be able to horizontally scale, it's pretty easy to implement in CloudFormation.
First we need to create a namespace to register targets in.
PrivateNamespace:
Type: AWS::ServiceDiscovery::PrivateDnsNamespace
Properties:
Name: my-backend-service.aws
Vpc: !Ref VPCId
Now we can create a Service which is a collection of backend servers that Fargate knows how to register itself into.
DiscoveryService:
Type: AWS::ServiceDiscovery::Service
Properties:
Description: Discovery Service for my-backend-service
DnsConfig:
RoutingPolicy: MULTIVALUE
DnsRecords:
- TTL: 0
Type: A
- TTL: 0
Type: SRV
HealthCheckCustomConfig:
FailureThreshold: 1
Name: app
NamespaceId: !Ref PrivateNamespace
To connect your Fargate service (AWS::ECS::Service) to CloudMap we can simply specify the DiscoveryService resource.
ServiceRegistries:
- RegistryArn: !GetAtt DiscoveryService.Arn
Port: 4000
Anyone who needs to access your backend server can now simply use the hostname app.my-backend-service.aws:4000 without every having to deploy a load balancer.
Of course AWS CloudMap also has the ability to specify exactly which services can access certain backends by integrating IAM into it. But that's for another day to discuss.
AirPods Max
2022-03-04 08:00:00
To be clear right off the bat: I don't do well in busy offices. I get distracted easily, I don't like it when people can see what I'm doing, I don't like people talking and radio's blaring. The open office plan truly is the bane of my existence. Therefore, noise cancelling headphones are a Godsend.
I've owned just about every popular pair of noise cancelling headphones out there. That doesn't mean I'm an expert or anything, it just means I know what I like and don't like.
The latest pair that I bought are AirPods Max - yes, the expensive Apple ones. Luckily I didn't pay full price for them; no pair of headphones is worth that much money. Even though I use them almost every day and, spoiler alert, they are pretty awesome, I'm glad I paid about 60% of MSRP. And yes, even AirPods Max have problems and because it's Apple about everyone and their mom knows about them.
The case
Many things have been said about the case so I'll avoid repeating all that. What I can say though, is that the case isn't as bad as people on the internet make it out to be. It's easy to get AirPods Max in and out of, it's made of nice materials and after getting used to it, the case doesn't look weird to me anymore.
Of course it does have issues.
The case doesn't protect the headband, which makes travelling with it that much more awkward. I have to really keep it in a safe place in my backpack. But the most damning thing to me is that, when you retract the headband to fit your head, the charging port doesn't line up with the hole for the cable to go through. This means that I usually charge my AirPods Max while they are out of the case. For me, that's the biggest design flaw.
Weight
When you use your headphones as much as I do, one of the most important aspects is weight. Well, not really the weight but rather the comfort levels after having them on for hours on end. The issue I always had with other headphones was that, after some amount of time, the headband would get really painful. It always felt like the headband was trying to force itself into my skull.
Not so much with AirPods Max. Yes, on paper they are on the heavy side, but in real life I don't notice the weight just because the headband is really good at distributing all that weight. This is the first pair of headphones that I can truly wear for hours without any discomfort.
Condensation
Condensation inside of the earcups, I bet every type of closed-back noise cancelling headphones have the issue. It's just that on AirPods Max it's really easy to get the earcups off and have a look inside. Mine sometimes have a little bit of condensation inside the earcups as well, but will it be a problem long-term? We'll have to wait and see.
Verdict?
The problems listed about don't detere me from declaring AirPods Max an awesome pair of headphones. They are mostly about the integration with the Apple eco-system of course. Previous headphones I owned came with an awful mobile app to control things like EQ and NC levels, and app that never worked properly and felt out of place on iOS.
I've had AirPods Max for a solid 2 months now so the jury's still out on durability but I bet they will hold up pretty well.
I still wouldn't recommend anyone buying them at full price. But if you can find them at a discount I highly recommend you at leat give them a try.
OpenBSD
2021-11-01 10:00:00
I've been an avid user of various Linux distributions for 22+ years now and I will forever love everything about it and what it brought me. I have my entire carreer built on Linux and open source software. I've also known about BSD for about as long, but I never quite got into it, until now. I'm as much a minimalist as I am a nerd and I love simple software that does one thing well. I want all of my software to Just Work, no hassle or needless features added. After coming across OpenBSD.ams I decided to read up on OpenBSD and its goals.
Long story short, I'm currently in the process of moving some workloads from Linux VM's to OpenBSD ones. It's been quite a journey so far because unlearning 22 years of Linux experience is... hard. Luckily the community is awesome and the available documentation even more so. But what makes OpenBSD such a joy to use are the sane defaults and the completely empty config files that are just there for me to fill out as I see fit. It feels like the system was designed to fit whatever purpose I have in mind without ever getting in the way. Stuff like httpd(8), relayd(8), acme-client(1) and pf(4) make the entire system feel very robust and well thought out.
Over in the Linux world everything just seems to be strung together with little sense of direction. It always felt like a pile of software that happens to sometimes work together. OpenBSD is the opposite of that and I love it. I just wish I could run it on my laptop as well, with all the bells and whistles working. But that's a bit of a pipe dream as bluetooth support is currently completely missing.
For now it's a great operating system for servers for me. If you also want to play around with OpenBSD and indirectly support the foundation I would highly recommend getting a VM over at OpenBSD.ams.
Information processing
2021-02-15 10:00:00
Ever since this COVID-19 thing hit I've been working from home non-stop. That's almost a full year of working remotely and being fully in charge of my own productivity. To be honest, I could keep this going forever - I've never been more productive in my life.
The last few months have also been perfect to optimize certain aspects of my work, the most important one being information processing. I've been horrible at keeping track of todo items before since I could never make it stick. Due to WFH I had the time to create a system for myself and I've never been more productive, stress-free and happy.
My system hinges on categorizing all of my information into 4 silo's: articles, todo items, quick notes and knowledge. Let's go through them one by one.
Articles
One of the websites I visit (almost) daily is Hacker News. Before, I would open a bunch of links and have something like 10 tabs open until I got around to reading the articles. In practice this meant I'd probably read 2 and skim through the rest. I always hated myself for it because I know a lot of these articles would've added a lot of value to my life.
Over a year ago my wife gifted me a Kobo e-reader which has the ability to connect to a Pocket account. Firefox has built-in support for saving articles to Pocket as well, no extensions required. Now, instead of opening 10 articles in tabs and keeping them open for a few days, I save everything I want to read to Pocket which then automatically syncs to my Kobo. There's absolutely no manual action required which I like a lot. Of course, an e-ink display is a much more enjoyable way of reading long-form articles than the LCD screen of my laptop or phone.
It's nothing novel but this simple action enriches my life with new insights I glean from all of the artices my Kobo safeguards for me.
Todo items
Many years ago I subscribed to the idea of Getting Things Done, but only a subset of the concept ever stuck with me. I think GTD is way too complicated for a single person with a limited amount of todo items at any given time. Since then, I've been trying just about every todo application, but one that always appealed to me was Things.
Things is only as powerful as you want it to be since it has many features I never really used before: headings, tags, sub-items, etcetera. I basically used Things as a glorified list of todo's without any context apart from projects.
Things deserves its own blog post because I can talk for hours about the many ways you can process information inside the app. I'll tell you about the most important things I do inside of Things so I'll, hopefully, never forget something again.
- I added an iOS widget that points to my Inbox to make adding a new task as easy as possible
- I created new areas to categorize projects under and added emoji in the title of the area for easier visual grepping
- Each project now has a description in the notes field that outlines my goals
- I've added a recurring task for a daily review to have a look at any new tasks from the Inbox and add new tasks I want to work on to Today
- I started adding Tags to todo items to easily filter on priority and assumed effort
Quick notes
I've always had a bit of a love-hate relationship with digital note taking tools and I've again tried most of them. At the end of the day I want the least amount of friction between my thoughts and putting them in writing for later reference. I also like it when a tool feels a well crafted Mac app instead of some janky web app. That's why I always found apps like Bear to be very cumbersome. Since I'm already knees deep in the Apple ecosystem I'm currently using the default Apple Notes app across my devices.
Since WFH I have a lot of meetings with all of my different clients. During those meetings I make quick notes of everything we talk about. Right after the meeting I review my notes and distill everything into action items which I jot down in Things. After that the note basically becomes useless again as the information is processed.
Knowledge
You've probably found yourself Googling a Git command or something about regex more than once. I've been there, doesn't feel great.
Recently I got into the concept of a Second Brain, Digital Brain or whatever you wanna call it. It's a collection of, in my case, Markdown files with stuff I want to keep around for future reference. Notes that I want to keep around for a short period of time are in Notes, my Digital Brain is for keeping knowledge around that will prove its worth over time.
The tool I've chosen to create my Digital Brain is Obsidian, but there are of course others as well like Roam Research. The latter is way too complicated for my taste as I just to have a bunch of Markdown files and I want to link certain pages together to create a cortex of sorts.
At first it's quite time consuming to jot down every little piece of knowledge I can think of. But in the end I hope it'll lessen the amount of Google searches for trivial stuff. Obsidian allows me to very quickly search the contents of my Digital Brain so that's awesome as well.
Another reason I'm building this is because I want to have this as my part of my legacy - a small window into what it was like when I was alive. I hope it's going to be one of those time capsules they put in the ground to be recovered a hundred years from now.
My Tmux setup
2020-04-16 10:00:00
Tmux is a terminal multiplexer. It lets you switch between several programs through windows and panes, detach your session and reattach to it on a different computer. I reckon it's mostly used on servers where people have long running jobs and such running in a tmux session.
The learning curve is what always withheld me from just diving in and giving Tmux a chance to get integrated into my workflow. I wanted to share some of the small changes I made to my Tmux configuration to make life a little easier.
I now work in Tmux fulltime and I'm loving everything about it. Mostly because Tmux can be configured just the way I like it and because I can have this exact same configuration on all of my computers and servers.
And when I'm stuck there's always the Tmux cheat sheet.
Meta key
One thing I struggled with is getting my meta key right. The meta key is the prefix you use before issuing other commands that control Tmux. Commands such as creating and closing windows, splitting panes, moving between panes, etc. I finally landed on ctrl + a for my meta key, but you can pick anything you like really.
unbind C-b
set -g prefix C-a
bind-key C-a send-prefix
The status bar
By default the Tmux status bar is green. This hurt my eyes so I figured out a way to change its colors a little bit. You can put all kinds of stuff in the status bar like your load averages, battery status, and much more. I like to keep it clean though.
set -g status-bg '#666666'
set -g status-fg 'white'
set -g status-left ''
set -g status-right ''
setw -g window-status-current-style 'fg=white bg=colour19'
Count from 1
The status bar shows your currently open windows. One minor annoyance I faced was that it counted from zero and wouldn't rearrange its count as I closed windows. I change that behaviour so it's much easier to switch between windows using ctrl + a and the number of the window that I want to switch to.
set -g base-index 1
set -g renumber-windows on
Start new windows in the same path
When I open a new window I usually want to start off in the same directory as the window I came from. Or at least close to it.
bind c new-window -c "#{pane_current_path}"
Easier window splits
How to split a window into two different panes has quite the learning curve as, for me, the defaults were a little hard to work with. Now I can split windows using the | and - keys.
unbind '"'
unbind %
bind | split-window -h
bind - split-window -v
On minimalism
2019-01-28 10:00:00
Places like Reddit and Twitter are filled with people who practice their version of minimalism. The most prevalent method is to just have less of everything. Some groups of people even go so far as to think they can only have a fixed amount of things in their lives.
Don't let anyone tell you this is the spirit of minimalism because it's not. Let me explain.
I've always practiced minimalism, even way before I knew about the term. This was born from a desire to have a less complicated relationship with technology. I genuinely hate having a lot of stuff because nowadays, more so than say 10 years ago, everything needs updates and needs to be charged all the time for it to be useful. Gadgets are outdated the minute you buy them. Keeping track of where everything is and making sure everything gets its maintenance is nauseating to me.
The burden of having to keep track of all of these things is what led me to practice minimalism. Unfortunately, talking about minimalism is hard because a lot of lies and misinformation is thrown around.
Minimalism is never about simply owning less. It's also not about having just blue jeans and grey sweaters. It's certainly not about being able to fit all of your belongings in a backpack.
Don't get me wrong, owning less stuff is a great endeavor and one that the Earth sorely needs. But just owning less without a clear goal in mind is not very productive.
To me minimalism is about making more deliberate choices about what to buy and, more importantly, what not to buy. If I truly think something will bring me joy I will buy it. I have no hesitation about buying things because I don't keep track of how many things I own. I want everything I own to have a purpose, even if that's to just bring joy into my life. If something doesn't fulfill its intended purpose anymore I will gladly put it up for sale, or give it away.
I love cleaning out drawers because it means less stuff to keep track of.
Back to Feed List