Lee Morris from Fstoppers On the Insanity of Ink Printers

Many people are rightfully upset about the ink printer industry. Everybody has anecdotes about their experiences. Lee Morris does a deep dive into which printer myths are true about his device and presents some very interesting conclusions. Your mileage may vary, even models from the same vendor can have substantial differences.

Continue reading →

How to set a cache policy for Jekyll in Apache 2

Static sites are fast and they erase whole categories of potential issues I would have if this blog ran on a database bound dynamic CMS. This is not to say that things can’t be even better. Setting appropriate expiry headers makes a lot of sense on multiple levels: Clients won’t bug the server for files they already have (stylesheets, images, etc.), which lowers traffic costs and server load. This also meats that the site loads faster for the user and that we put less strain on the global internet infrastructure.

First we make sure that the mod_headers extension is activated for Apache 2:

sudo a2enmod headers

Then we edit the config file for the website and add a header for files that should not change very often.

<VirtualHost *:443>

...

  <FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css)$">
    Header set Cache-Control "max-age=604800, public"
  </FilesMatch>
</VirtualHost>

What we are telling Apache here is that for any file that matches the provided Regex (files ending with .ico, .pdf, etc.) set a Cache-Control header for 604800 seconds (7 days).

If you know that your content won’t change often, or possibly never again, it absolutely makes sense to set an even longer time (i.e. years). In that case it would also make sense to include html/htm in the Regex.

Next we make sure that our configuration changes work as expected. This command will check the configuration and tell you about potential problems:

sudo apache2ctl -T

If that was successful we can restart Apache 2:

sudo service apache2 restart

Finally, of course, check with your browser that the site is actually up 😉.

Apple AirTags: First Battery Change

In August 2021, I ordered four Apple AirTags. At the time, they were competitively priced against Tile and offered full integration into their ecosystem. I also ordered a few Belkin holders with straps and keyrings to attach the AirTags to the objects I wanted to track. In the end, I attached one to my key holder, the backpack I use to carry my laptop around, and I put one into my wallet. The fourth tag I use as a floater that I put into my hiking backpack or into my luggage, depending on where I need it.

I have had these tags for 21 months now. In that time, the one in my laptop backpack actually saved me some trouble. I went with a friend for dinner after work. We were in a rather dark restaurant and chatted away. When it was time to go, I forgot my black backpack under the dark table and left. Five minutes after walking away, my watch and phone started vibrating. I checked if somebody sent me a message, and it was actually a “Find My” notification telling me I left my backpack behind. I hurried back to the restaurant and got it safe and sound.

What I’m quite surprised about is how energy efficient the AirTags are. I expected to swap the batteries every year or so, but they actually managed to run almost two years with the ones they came with. The only thing to keep in mind when getting new batteries: Don’t buy the ones with anti-swallow coating. It’s a child safety feature that should deter children from swallowing the batteries by making them taste awful. For some reason this makes them unsuitable for AirTags. Apple warns about this on their support page:

CR2032 batteries with bitterant coatings might not work with AirTag or other battery-powered products, depending on the alignment of the coating in relation to the battery contacts.

(Nintendo also made their Switch cartridges taste bitter 😝)

Effortless Virtualized Selfhosting With Nginx Proxy Manager

How I'm using a dockerized Nginx Proxy Manager to serve services hosted on different machines from my home.

Continue reading →

Product Review: The EZCast Lightning to HDMI Adapter

A brief review of an off-brand HDMI Adapter I bought recently. tl;dr: I sent it back.

Continue reading →

Putting Docker, Pi-Hole, etc. on my Raspberry Pi 3 Model B

A brief writeup about utilizing my Raspberry Pi as an ad-blocker using former buzzword technologies.

Continue reading →

3D Scanning at Belvedere Palace

After trying out Meshroom recently I thought I should take advantage of living in a beautiful city full of monuments and palaces. I went to the Belvedere Palace to 3D scan some bigger or smaller details to learn and do some experimentation.

Continue reading →

Hello iPhone 13 Pro

My new phone arrived today. Instead of ordering the latest and greatest I got a used iPhone 13 Pro.

Continue reading →

iPhone 11 Pro vs Gravity

Yesterday I accidentially dropped my phone from 4 meters down onto a concrete floor.

Continue reading →

Hello DJI Mini 3 Pro

After using the DJI Mavic Air 2 for one and a half years, DJI released a new model: The DJI Mini 3 Pro. It comes with great quality camera but is much lighter and below the magic 250g threshold.

Continue reading →

Move Streak Ends After 601 Days

I had a rough day yesterday and didn't pay a lot of attention to my rings. Turns out according the watch I didn't move enough 😒

Continue reading →

Move Goals and Monthly Challenges Review for 2021

One of my goals for 2021 was to complete every Apple Watch challenge and to fill the move ring every day.

Continue reading →