#weeklyreview 16/2025

Swimming

The weather on the weekend was really nice and warm. Almost 20º C and even during the nights it stayed above 5º C. Swimming on Sunday was really refreshing and I could have easily swam across the lake. We but decided to just swim to the new buoy in the middle of the lake. Apparently some research institute does some measurement in the lake. Likely to determine water quality and health of the lake.

Dance Camp

Kids are on vacation this week. Our girl is attending a dance camp in the countryside. Looks fun spending a few days off-site with the whole team and combining training and recreation.

Kiddo came back happy but also pretty exhausted. Apparently it was intense. But she liked it.

Still fighting macOS Updates

After I managed to lift my external SSD to 15.4 eventually Apple released an emergency patch to 15.4.1.

Of course that has the same issue that it can’t be easily applied to my external SSD. All Tricks fail so far to get this updated. The thread on the Apple Support forum still grows with people having the same issue. There are but also some who succeeded.

Photo hoarding

Few weeks ago I downloaded my Google Takeout. About 2.1 TB of images and videos. Now I finally got around to unpack and sort the data. Images have their original names and are organized in Google Photos album as folders. Each file has a supplemental JSON file with metadata.

I want to organize my images in a folder structure of Year/Month/Date and name the file after its creation timestamp YYYY-MM-DD_HH:MM:SS

The opensource tool ‘exiftool‘ can do this kind of renaming and moving of files based on the metadata in the image files.

Did that in a first pass and sorted thousands of images. Still there were a few thousand left which exiftool couldn’t extract the creation date from.

So I thought reading the respective data from the supplementary JSON files. Tried for about a day to write a shell script finding the images, the corresponding JSON files and extracting the timestamp. But utterly failed due to fancy file and path names. Passing them between functions and commands in a shell script isn’t trivial apparently.

I gave up on this approach and instead wrote myself a python script to do the job. Eventually enriching the left over images with the metadata so exiftool can sort them properly.

Now that I have the files in order ready for my archive I wanted to remove duplicates at least. So I loaded the whole folder of 1.1 TB (I omitted the videos from the Takeout ) into digikam. It took almost 6 hours for it to generate the needed meta information. Fortunately it uses all the 12 CPU cores and the data resides on an external NVMe SSD with 10 Gbps connectivity.

digikam not only looks at file names and sizes to find duplicates but at actual images content with wavelet patterns. Found of course thousands in my stash and was able to remove them.

Next step will be syncing the archive to my home NAS over the network. That’s going to take a while as well …

#weeklyreview 15/2025

burger crafting

On Monday I spontaneously did some burgers as I had the bun’s left over from the weekend. Invited kiddo over and got some bacon, almost burned the buns and finally assembled the damn thing. The bacon makes the difference 😀

A close-up of a burger on a dark plate. The burger has a glossy bun, lettuce, a beef patty with melted cheese, bacon, and pickles.

Backup

Was looking into restic backup with rclone to nextcloud. Restic is a really fifty command line utility to do encrypted backups. Either to local directories or attached volumes or to remote destinations. Restic supports a whole bunch of remotes out of the box.

It can be extended to further destinations by using “rclone” … another command line utility that tries to provide an abstraction of remote filesystems.

My goal was to use a NextCloud file storage as restic destination. You can theoretically just the NextCloud desktop client and backup to the local folder that is synced to the NextCloud server. But this way you have to have the storage space for the original AND the backup available locally. I wanted to use NextCloud as a remote storage without syncing to the local files.

So I chose a folder on the NextCloud server which I have excluded from syncing to my local machine (you can do this in the settings of your NextCloud client). Created an rclone configuration for NextCloud following the documentation. And then just backup to the rclone destination:

restic -r rclone:nxtcld:restic-backups/work-macbook backup ./Downloads/Instagram-Backup

Why all this hassle? Because Hetzner is offering StorageShares based on NextCloud at a pretty good price point. Beside using it as mere document sharing space, one can also use it as a backup destination.

macOS Update issues

Im still struggling to update my personal macOS sitting on an external disk to the latest version of 15.4. Apparently Apple has an issue in that version with this particular update type as many others report the same problem. Updating macOS sitting on an external disk seems to fail. Some users claim success , but it’s unclear what they did differently. I’ve tried a whole bunch of attempts already that include turning off FileVault (as the issue seems to relate to encryption) and also installing from a USB stick. No luck so far 🙁

Heating repair

Our floor heating was broken since last year. It didn’t fully turn off in one room. Trying to find a company to repair this wasn’t easy. Most companies I contacted didn’t reply at all or never came back to me after a first attempt. So I had to pull the vitamin b card and call my cousin who runs a very successful plumbing company in the south of Berlin. They were sweet and nice, kept all the appointments and called back when promised. And not because their boss is my cousin. So eventually their guy was there this week to fix the probably broken actor motor of one of the valves. let’s see how long this fixes the issue.

A person in work attire is kneeling on the floor, working on a panel with various dials and pipes, possibly a heating system. Tools and a black tool bag are placed beside them on a wooden floor.

US Colleagues visit

This week we also had two colleagues from the US over. First time in several years that work related travel in the “lower ranks” was approved. Been in a workshop with some AWS folks for two days. That was intense but also good to spend focused time with the whole team on a topic.

And of course there were the obligatory team dinners.

A group of eight people sit around a long table in a restaurant, each holding up a drink and smiling towards the camera. The table is set with a menu, condiments, and a large bottle. The setting appears casual and friendly, with visible booths and patrons in the background.

Dinner again

It almost became a tradition to have dinner over at my friends place. This week it was deliciously roasted chicken on the menu. Also some other substances were involved that I didn’t felt the effect of yet 😉

A plate with roasted chicken, cubed potatoes, and sautéed greens on a decorative patterned dish. A can and a glass are in the background on a red wooden table.

Kiddo requested pasta with salmon and tomato cream sauce as she recently had in a restaurant. So we gave that recipe a try and kiddo approved. Super simple to make actually. We might see this more often now.

A black bowl filled with wide, flat pasta topped with a creamy orange sauce containing chunks of meat or vegetables, placed on a wooden table.

Spring finally

It’s getting warmer outside and finally the trees and bushes started to push leaves and blossoms. So I had to do my share of taking and posting pictures of blossoming trees and bushes. Here you go.

Back in the countryside I enjoyed coffee outside on the terrace with my glorious golden mug.

You can see our tomato and chilli seedlings in the background. They eagerly wait to get outside. But we need to be sure the nights are free of frost for sure. We but planted a few herbs and vegetables on the refurbished raised beets on the weekend and also started the well pump.

That pump started immediately to pump water without any fiddling. This also seems to reflect the high level of ground water this year. Although the surface soil is super dry as it hasn’t rained in quite a while substantially. But the trenches in the fields and in the forest are actually filled with water which I haven’t noticed in years in our area.

Knitting

Kiddo found an old blanket he had started several years ago but didn’t finish. So he picket it up and is running through quite some wool now.

A colorful crocheted blanket with a yellow border is draped over a red couch. Another multicolored, fluffy fabric item is also on the couch. There's a ball of yarn on a wooden floor, and a person's foot wearing a black sock is partially visible in the bottom right corner.

New Hardware

It was about time to replace the old 2012 MacBook Air of my wife. With all this taxation kerfuffle going on, it might be a good time to get something new out. Also the current generation of MacBook Air M4 has just arrived and got really good reviews.

A large white box with the outline of a laptop on it is wrapped with a sheer turquoise ribbon tied in a bow. It's placed on a dark wooden surface in front of a bookshelf filled with various colorful books and framed artworks.

#weeklyreview 14/2025

Sunday evening was out for beers with a good friend. Talking about scrap wood and the lack of supply thereof in Berlin. Also tried the crispy pork knuckle at Lemkes Brauhaus. It’s very good.

Two people sitting at a wooden table in a brewery, smiling and enjoying a meal. One person waves at the camera. Plates of food, including a roast dish and fries, are on the table. Empty and full beer glasses are visible. Large wooden barrels line the background.

Joplin again

After I’ve switched to Joplin for my personal notes the previous week my best friend considered switching as well. And also leaving Evernote. However there was one particular Evernote feature that seemed missing in Joplin: sharing notebooks with other people.

So we tried to rebuild that feature and might have found a useable solution. The secret is a second Joplin profile that’s using different sync settings. Now you share the sync with someone else and have a shared notebook.

We used NextCloud as sync backend and shared the respective NextCloud folder with another NextCloud account. This works even across NextCloud instances if NextCloud federation is enabled.

I’m writing up a more detailed article about the setup currently.

That day also had lots of sun and nice clouds. So we enjoyed (OK, I enjoyed, my friend merely tolerated) our lunch on the roof top terrace of the office.

Pie

Tuesday evening I was invited to dinner at a friends place. A pie with mushrooms and cheese was on the menu. That was so good that I had to try it myself the next day. It looks fancy and tastes good

Girls Day

On Thursday kiddo attended Girls Day and spent it at Universal Music in Berlin. They learned about what they’re doing there (mostly building website for Universal Music artists) and also build a website for their own imaginary artists. Sounded like they had some fun and got an idea what’s it like to be working in the music industry.

I almost found the time to flip through the BRAVO they had on the table in the entrance area :D.

On my way back home I passed by Brammibal Donuts and gave them a try. They look fancy and make a bit of a hype of the products. 21 EUR for 6 donuts is quite a price.

Refresh

We have raised beets made of wood planks. The oldest ones are meanwhile so rotten that there is the risk they’ll crumble and all the soil comes out. So I had to built a replacement. First I had to get some new planks. Fortunately my dad is hoarding stuff and I could just pick up some planks from him. Then building the replacement, burning it out and finally collect the old soil and sieve it into the new beet in place.

Why the burning you ask? Rumor has it that when you burn the top few millimetres and thus turn any organic material into charcoal and minerals the wood planks won’t rot as fast. The previous beet lasted 4 summers in that setup.

What’s of course always an adventure is to get to the attic of dads barn 😀

#weeklyreview 13/2025

iTerm2 with local LLM

Stumbled across this blog post and gave it a try. One can indeed run iTerm2 with a local LLM
This way non of your local shell questions go to OpenAI. Everything stays local.

screenshot of iTerm2 Settings for the AI Plugin. The lower section is highlighted with a red circle. Emphasising the settings to connect to a local OLLAMA backend for the AI generation.

Input to the AI Agent:

Screenshot of macOS iTerm2 window with the AI plugin prompt window on the top. The input to the prompt reads "iterate over all files in a directory and show their first 10 lines"

Generated output/command:

screenshot of a macOS iTerm2 window. Showing the AI overlay prompt with the generated AI command. Ready to be pasted into the shell.


Switching from Obsidian to Joplin

So far I was using Obsidian for my daily notes. Nice simple Markdown. Was using a community plugin to sync my notes via my personal S3-compatible object storage. That was rather flaky lately.

I took another look at Joplin. Another simple note taking app that’s free and open-source. It can use several systems to sync notes between different machines. One of those is using NextCloud as a sync backend. Since I’ve got my own NextCloud instance I chose that option.

Import of all the Markdown files was rather easy as Joplin can import a whole folder of Markdown notes. So I just pointed it to my Obsidian root folder and swoosh – everything was imported.

Car vs. Building 0:1

Tuesday evening I heard my daughter entering the balcony of her room which is facing the street. Thought that’s unusual as it’s past her bedtime already. So I went checking and saw street all flashing blue from several police cars.

Apparently a car crashed into our apartment building. Fortunately nobody was injured. Someone tried to park and likely mixed the pedals for acceleration and brake and thus jumped over the pavement into the wall. It was one of these car sharing rental cars. So looks like the driver was not familiar with that particular model of car.

haircut

First time kiddo goes to a commercial hairdresser. She wanted to get rid of her long her. Came out really good. We all like the new haircut. They grow up so fast … 😉

repairs

On the weekend I noticed that one of the headlights of my wife’s car wasn’t working. So I checked how to change the lightbulb. As expected … this is not trivial. Had to look up a YT video for the specific model to find instructions how to get to the lamp socket. One needs to open a flap in the wheelhouse to get to the headlights. Then open another flap and pry out the lamp. All blind and just with my hands because no way one can see what ones doing there as it’s so hidden.

A close-up of a hand holding a car part near the underside or wheel well of a vehicle, showing dirty and textured surfaces with visible dirt and wear.


Cold Brew

it was warm and sunny enough this week to make the first batch of cold brew coffee and enjoy it on the balcony in the sun 🙂

#weeklyreview 12/2025

Last week was a lot of fiddling around with my Mac. Decided to have macOS on an external SSD that I can boot from. So that I can have an almost physical separation between my private macOS and my corporate macOS using the very same hardware.

First decision was which type of SSD. I’ve got an SATA-to-USB adapter with an old Crucial SSD that I tried the approach first with. Worked reasonable well. Although the SSD itself probably can only do 450 MB/s read/write. The macBook internal NVMe SSD can probably do ~ 6 GByte/s according to this reddit post.

While the USB SATA SSD worked reasonably well, I anyway wanted to have a larger capacity and also better speed. Choice was between an USB 3.2 model where the USB port could theoretically transfer up to 10 Gbit/s or go for USB 4 which apparently goes up to 40 Gbit/s. Also which make of the disk. Briefly considered the Sandisk Extreme Portable NVMe SSDs. They are durable and affordable at good speed. Only drawback is their product quality issues. Some badges seem to have bad solder and tend to fail. So I settled with a Samsung T7 2TB NVMe SSD. That only does USB 3.2 but for normal day-to-day work I do not feel any speed difference over the internal SSD. An USB4 model would just be a waste of money for no noticeable gain in my eyes.

Advantage of the Samsung disk is, that it’s small and with an aluminium casing. On heavy usage, these SSDs tend to get warm and thermal management might slow them down. The aluminium finish allows for attaching heat sinks if need be I figured. The Sandisk with their plastic and rugged exterior is probably harder to cool passively.

Google Takeout

I also finished to download my most recent Google Takeout. That’s where you can get a download of all your data on your Google Account. You can choose which services to include. I mainly care about my photos in Google Photos which I use as a convenient backup of my phones camera roll. Over the years I’ve collect about 2TB of data.

Downloading and moving this amount of data is not trivial. Google offers to archive in chunks of 10 to 50 GB as ZIP or Tar.GZ files. After I triggered the takeout it took about 2-3 hours for them to compile the archive and send me a links with the individual downloads. For the 10 GB chunks size that were 203 individual files. I created a second takeout with 50 GB chunks size and tried to download that. Unfortunately the chunks didn’t fit on my machines disk at first. So I had to clean up a little. Tried on other computers etc. Just to find out that after a certain amount of attempts the downloads are blocked on the Google side. Apparently a security feature. 💁

OK, then I went with the 10 GB chunks instead. Those I hadn’t tried that often yet. Took me two days on the office network and home to download all the chunks and store them on my external 4TB USB drive.

To unpack the data I needed another large external USB drive to receive the more than 2TB. Unpacking all the TAR.GZ archives took my Macbook several hours. The limiting factor here was the USB transfer speed of the two physical hard disks.

Next challenge will be to sort unpacked images into my usual naming and folder scheme and then sync it with the data I already have local on my NAS. That will probably also take a couple of days each. Still have to develop a plan to do that on one my spare Linux machines to not block my Mac for several days in place. That amount of data you don’t just transfer over your home WiFi. The machines need to stay connected via cabled LAN and the Disks attached via USB.

Beer & Burger

On Wednesday we finally had our spring session of the legendary beer and burger crew. This time we befell the Burgeramt in Berlin Friedrichshain. Nice location, funny staff and good burgers. Easily a 7/10 for the venue. 15/10 for the crew of course.

#weeklyreview 11/2025

walking to the office

Managed at least once to walk to the office this week. It’s a 5km walk in one direction. So doing about 10-11km total on such days. That’s good exercise. And indeed it’s been to toll at all now compared to the first time I did this. The weather was cold and air quality this week was really bad. The large deconstruction side on the way certainly contributed quite a bit of dust.

A large green demolition excavator is tearing down a graffiti-covered, partially demolished building. Rubble and debris are scattered on the ground. In the background, there are two cranes and a modern building under construction. A person wearing a white hard hat is standing near a temporary structure, observing the site.

making pasta

Felt for pasta this week. First batch was the simple aglio, olio e peperoncini. Lot’s of garlic of course.

A close-up of a plate of spaghetti aglio e olio, featuring sautéed garlic slices, red chili peppers, and chopped parsley, glistening with olive oil in a dark bowl.

Second thing I tried was a Amatriciana sauce. I remembered that from one of our nearby lunch restaurants. Looked up a recipe and it’s surprisingly simple and fast to make. I could not find the correct meat in the nearby stores – guancale – and had to make do with normal bacon instead. Also seasoned with balsamic vinegar and it came out quite delicious. I like that it’s simple and fast and doesn’t take hours of cooking to extract the umami from the tomato sauce.

Apple Updates

Security updates for macOS and iOS. Some people complained that such updates would re-enable Apple Intelligence for them when they had previously turned it off. Didn’t happen to me. I remained turned off.

A laptop and a smartphone, both displaying the Apple logo with progress bars, are on a desk. The smartphone is connected to the laptop with a cable. A white keyboard and a decorative cat figurine are also visible, along with several wires and monitors in the background.

Considering it pretty useless anyway. And Gruber even called it vaporware.

AI/LLM investigation

My local AI/LLM investigations continue. Still hindered by our corporate security policy which prohibits the use of any USB storage. So I can’t offload stuff to my company payed external USB drives to make room for new LLM models and virtual machines.

I’m trying to evaluation and develop with the LLM stuff in a secure way. Means… I don’t want to use any public APIs or services to not leak any company material to the outside. I don’t trust any of the LLM API providers despite us having a legal framework in place to “securely” use the likes of CoPilot and ChatGPT.

UX hell & Car roof

Realised after about 4 days that I left the car sunroof tilt open. Fortunately it didn’t rain in these 4 days. I don’t understand why VW didn’t implement a notification feature for such cases and the ability to remote close the sun roof. The car does have all the capabilities for sure. It’s connected to the internet – the companion app on my phone clearly tells me that the roof is open and the car is locked. The companion app can send me notifications as it does every once in a while that charging is complete.

The roof can be closed with a long press on the key fob – so remote triggered. So why the heck is it not a feature of the app to get notified that I forgot to close the roof and to close it remotely?

Close-up of a car sunroof slightly ajar, reflecting cloudy sky and surrounding buildings. The roof surface is dusty. Other parked vehicles are visible in the background.

torch

Eventually got myself a little kitchen torch to sear and caramelise stuff 🙂 (Ab)used it to pimp my coffee

A torch is caramelizing sugar on top of a cup of coffee, likely creating a crème brûlée latte, on a wooden table.

Nails and Bacon

On Friday I was invited to a Serrano bacon and wine at a friend’s place. Finally time and reason to get my nails somewhat done again.

A thumb nail painted with vertical rainbow stripes is prominently displayed against a light tiled floor background.

#weeklyreview 10/2025

Last week was a week of crazily beautiful sundowns. Clear skies and city scenery made for some spectacular photos.

Hacker Stammtisch

Tuesday was this month session of the old nerds. There were animated discussion about a IT cooperative. One friends bugs us since years with that idea. It sounds nice and some of us kinda do have this with our self-hosting efforts at a small and family scale. But I doubt this can take off commercially. If you offer IT services to companies and need to respect SLAs and all the regulatory requirements it quickly becomes involved and expensive. Or someone is being exploited …

Plate of breaded schnitzel topped with a lemon wedge, served with potatoes. A glass of beer and a mug with utensils are in the background, alongside a bowl of salad.

Crocusses

On Friday I used to good whether to have a walk over the nearby cemetery. We can see it from our balcony and I could tell it’s full or crocuses.

Glorious mug

A friend gifted me this glorious golden mug for always bringing tea for our winter swimming group. Isn’t it gorgeous?

A reflective, gold-colored mug held in a hand, filled with frothy beverage, against a blurred outdoor background of grass and trees.

Rust programming

I also continued working on my little Rust program to batch upload images to Pixelfed. Adding support for various options to generate the image descriptions.

I gave up on trying to write the whole thing with help of tools like ChatGTP, Claude or Copilot. It just doesn’t work in my eyes. As soon as stuff gets more complex, one spends more time explaining context and functionality to the tools than writing code. I’m only using some help for short functions and lines that needs fixing or alternatives. But just doing the good old RTFM and reading blog posts with examples and explanations seems still a more effective way to get this moving forward.

It’s not fully done yet, but the code is available in the branch “Ollama” on my repo.

#weeklyreview 09/2025

I guess previous week Sunday was the last ice swim of this season. During the week before the temperatures were really cold but on the weekend they were already above freezing and the ice was brittle. We reopened the path we cut the weekend before to take a dip.

In the afternoon it but turned above 14ºC and we could witness that one of our two beehives seem to have survived the winter. The bees were coming out and cleaning their hive.

A green beehive is set on a wooden platform outdoors. Several bees are visible near the entrance, with some flying in and out. The surrounding area includes dirt and foliage.

Local LLM setup

Made progress with my local LLM setup. Finally got the RAG properly working with my documents. I’m using Open WebUI as interface for the Ollama installation on my machine. For the RAG setup I use the Ollama model bge-m3:latest to generate the embeddings of the documents. Also tweaked the values of Top K to 10.

The biggest difference seems to make the System prompt and the query prompt. I’ve created custom models by combining an existing model plus my knowledge objects (the documents I’ve uploaded with the embeddings generated as described above) and a custom system prompt.

The system prompt explains to the model what it is and also especially the structure of the knowledge objects. This way the model has a better “idea” of what data it’s dealing with and can respond more accurately to the queries later on.

Dinner

Wednesday I was at a friends place for dinner. Was meant to be a bigger round at first, but eventually most others had to bail out for being sick. So just my friend with her husband an me. Was still a great evening with delicious food and lots of conversations. Learned a lot about onions 😄

I’m walking

Trying to walk to the office more often now. Roughly takes me one hour to get there and is a nice exercise. According to my fitness tracking that’s spending almost as much calories as going to the gym. So figured I can just do that and have a nice brisk walk twice a day and also take pictures around the city.

On the weekend I took a longer bike ride in the countryside to the forest with our little pond. Also started a rewrite of my Pixelfed Bulk Uploader in Rust. Figured that trying to write the whole thing with tools like ChatGPT or Claude doesn’t give me the clean code I like. I spent too much time explaining to the LLM what I want to achieve and an equal amount debugging the output from the LLMs.

#weeklyreview 08/2025

geez … I’m late with my review again….

Last week was a quiet one, with my friend Sam returning from her trip to Australia. We caught up and got back into our regular gym routine.



Our Sunday winter swimming sessions took place as usual, but this time we had to clear a patch of ice from the lake to get in the water. The ice was 5cm thick and needed to be cut through using axes. We managed to create a small path into the lake, which we used for our short dip. The water temperature was around 0.5-1°C, but it wasn’t too bad once we were in.


The rest of the week was spent experimenting with the Ollama tool. I’ve been testing various machine learning models and user interfaces, trying to get a better understanding of how they work. My goal is to set up a local installation of a LLM (Large Language Model) with Retrieval-Augmented Generation (RAG), which will allow me to securely work with my personal documents.

Thursday was again family dinner time and I made veggie wraps. Fried the fancy looking Enoki mushrooms. They are trick to eat without cutlery. Much too stringy and hard to chew off. Not recommended for wraps


Overall, it’s been a productive week, but mostly focused on testing and experimentation rather than any major achievements.

#weeklyreview 07/2025

Not too much going on in week 06. The highlight certainly was the birthday of our daughter. Finally a real teenager. She had wished for a New York Cheesecake and surely got one.



To celebrate she took a friend over to our house in the countryside and we went to the NaturTherme Templin for the Spa and Sauna. Since we got there early it was empty and I had the first two session of sauna all for myself.

Got some reading done and a total of 4 sauna session.

Monday was again family dinner day and K1 was over for and stayed for a session of Trival Pursuit.

Mid week it started to snow seriously in Berlin and by Thursday we had about 15cm of snow. As it was also cold enough the snow stayed and nicely covered the city in a white blanket. That also amazingly quieted down the whole city.

Friday my best friend Sam was back from her long trip to Australia and we had breakfast together. Sooo good to have her back.