#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.

Your employer is not your friend

Yesterday I was talking with a young colleague from India. She felt that her work is not seen and her role seems undervalued in the organisation. She’s putting a lot of effort into her role and tries to deliver at every task thrown at her. But she started to question the benefit for her and her career.

I shared my personal experience and perspective with her. Mainly that one should consider the employee/employer relationship as that what it is: a commercial contract.

Your employer is not your friend. They will at best fulfil your contract, but not go beyond that. So everything you put in beyond what’s in the contract if a free gift to the company.

That might sounds harsh, but thats the reality in my experience. All the hard work and over hours you might put in are not guaranteed to pay out. They depend on individuals like your direct line manager to be recognised and respected. That person however can change at any time at the will of the company. And the next line manager will have no knowledge about your efforts.

Think of your employment contract like of any other commercial contract you enter. When you buy a TV set, the seller will usually not give you something else for free in addition. And you would not consider to pay 10 or 20% more just because you enjoy the deal. So why would you give free labor to your employer? In hope of a promotion?

That might be a reason. But ask yourself what’s the risk here. Does your employer have a document career progression framework? Have you talked to your line manager what is that you need to do to get promoted? Or are you just hoping that your effort will eventually be recognised for a promotion? That means you’re banking on the memory of your line manager and her goodwill to promote you. It’s not a surefire thing to get.

So whenever you commit effort beyond what’s in your contract, make sure you understand what’s in it for you.

I did a lot of over hours throughout my career. And I did so voluntarily, knowing that often times I’m not compensated by the company with money or free time in return. But most of the time it was a conscious decision of mine because I knew that I would learn and gain experience. That was, what I took out for me of those over hours. One might argue whether that was worth it, sure. But I think it was.

#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.

Adding Environment variables to services in home-brew

I’ve recently install Ollama on my MacBook and need it listen on all network interfaces. The default installation view Homebrew brings a service description for home-brew. And the default behaviour of Ollama is to listen only on localhost. I need to add an environment variable to the Ollama command to make it listen on all interfaces.

The service description for the home brew formulae of Ollama can be found in /opt/homebrew/opt/ollama/homebrew.mxcl.ollama.plist

I search for documentation of this file but could not easily find one. Eventually I had to turn to ChatGPT and that gave me the correct solution.

I needed to add the following structure to the .plist file:

<key>EnvironmentVariables</key>
  <dict>
    <key>OLLAMA_HOST</key>
    <string>0.0.0.0</string>
  </dict>

Then after a restart via brew services restart ollama the service was finally listening on all interfaces.

The Return of Infrastructure Independence: Breaking Free from US Hyperscalers

In the rapidly evolving landscape of technology, we sometimes find ourselves experiencing a sense of déjà vu. The current state of cloud computing and infrastructure management feels remarkably similar to the late 1990s server market—a time of major technological transition that ultimately rewarded those who maintained traditional expertise.

The Great Windows Server Migration of the Late ’90s

Cast your mind back to the late 1990s. Windows NT was gaining significant traction in the enterprise server space. Microsoft’s marketing machine was in full swing, promoting Windows as the future of server technology. The interface was familiar, the management tools were accessible, and the promise was enticing: simplify your infrastructure and reduce costs.

Many companies bought into this vision. They let go of their Unix administrators—the wizards who understood the deep intricacies of system architecture—and pivoted toward the seemingly more accessible Windows ecosystem. Unix expertise was deemed outdated, a relic of computing’s past.

But then something unexpected happened: Linux emerged as a powerful force. This open-source Unix-like operating system combined the robustness of traditional Unix with modern development approaches. Companies that had maintained their Unix expertise found themselves with a significant competitive advantage, while those who had discarded that knowledge scrambled to adapt.

Today’s Dangerous Dependency on US Hyperscalers

Fast forward to today, and we’re witnessing a similar phenomenon, but with far greater geopolitical implications. The cloud market has become dominated by a handful of US-based hyperscalers: AWS, Azure, and Google Cloud Platform. These giants now control the backbone of global digital infrastructure, creating an unprecedented level of dependency.

Organizations worldwide have entrusted their mission-critical systems, data, and intellectual property to these American corporations. This concentration of digital power in the hands of a few US companies presents significant risks:

  1. Geopolitical Vulnerability: Non-US entities are subject to American data regulations, surveillance capabilities, and political whims
  2. Sovereignty Concerns: Nations and regions have limited control over their own digital infrastructure
  3. Single Points of Failure: Global dependence on a handful of providers creates systemic risks
  4. Compliance Challenges: Navigating complex and sometimes contradictory regulations across jurisdictions

Today’s developers and systems engineers often have limited exposure to building and maintaining independent infrastructure stacks. The knowledge of creating self-sufficient, sovereign digital platforms has been sacrificed at the altar of convenience offered by the hyperscalers.

The Coming Era of Regional Digital Sovereignty

As geopolitical tensions rise and concerns about surveillance escalate, we’re approaching a breaking point that parallels the Linux revolution of the early 2000s. The excessive centralization of cloud infrastructure in the hands of US corporations is becoming increasingly untenable for many regions and organizations around the world.

Europe, in particular, stands at a crossroads. With its strong regulatory framework through GDPR and emphasis on digital sovereignty, the continent has the potential to lead a shift toward regional cloud infrastructure. A “European Cloud” built on open standards and operated independently of US hyperscalers could provide a template for other regions seeking digital autonomy.

This is where those 50+ year-old systems engineers—the ones who understand how to build infrastructure from the ground up—will become invaluable again. Their knowledge of architecting complete technology stacks without reliance on hyperscaler ecosystems will be crucial as organizations and regions work to establish independent digital capabilities.

Building Regional Digital Independence

The path to reducing dependency on US hyperscalers requires:

  1. Regional Infrastructure Initiatives: Government-backed programs to develop sovereign cloud capabilities within specific geographic or political boundaries
  2. Open Source Foundations: Building on open source technologies to avoid vendor lock-in and enable collaboration
  3. Knowledge Preservation: Actively maintaining expertise in full-stack infrastructure management
  4. Hybrid Approaches: Developing gradual migration paths that balance hyperscaler advantages with sovereignty requirements
  5. International Cooperation: Creating alliances between nations with shared interests in digital sovereignty

The Role of Experienced Infrastructure Engineers

The systems engineers who remember a world before AWS, Azure, and Google Cloud will play a pivotal role in this transition. Their experience building and managing independent data centers, designing network architectures without reliance on hyperscaler services, and understanding the full technology stack from hardware to application will be essential.

These veterans know what it takes to build robust, independent infrastructure. They understand the pitfalls, requirements, and strategic considerations that younger engineers, raised entirely in the hyperscaler era, may overlook.

Conclusion

The technology industry has always moved in cycles. What seems obsolete today may become critical tomorrow. Just as Linux vindicated those Unix administrators who maintained their expertise through the Windows NT revolution, the growing movement toward digital sovereignty could similarly elevate those who’ve preserved their knowledge of building independent infrastructure.

As regions like Europe work to establish their own cloud ecosystems and reduce dependency on US hyperscalers, the experienced systems engineers who understand how to build truly independent technology stacks will become not just relevant, but essential to our digital future.

The coming years may well see a renaissance of regional infrastructure expertise, as organizations and nations alike recognize that true digital resilience requires breaking free from excessive dependency on the American tech giants that currently dominate our global digital landscape.

See also: https://berthub.eu/articles/posts/you-can-no-longer-base-your-government-and-society-on-us-clouds/

#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.

Fixing PaperlessNGX Email Processing Issues After Restart

When running PaperlessNGX in Docker, I encountered an issue where certain emails were not processed after restarting the Paperless container in the middle of a batch processing operation. Paperless saw the emails in the inbox but incorrect

ly marked them as already processed.

Identifying the Issue

The first step to diagnose the issue was to check the mail.log file within Paperless. The log provided information on which emails were skipped from processing, including their unique IDs. For example:

[2025-02-17 09:50:03,084] [DEBUG] [paperless_mail] Skipping mail '321' subject 'Email from Epson WF-4830 Series' from 'scanner@example.com', already processed.

Logging into the Database

To access the Paperless database running inside a Docker container, I used the following command:

docker compose exec db /bin/bash

This command opens a bash shell inside the db service container, allowing further interaction with PostgreSQL.

Resolving the Issue

To resolve the issue, I connected to the Paperless database, which was running on PostgreSQL. Using the provided email UID from the mail.log, I deleted the corresponding entries from the paperless_mail_processedmail table to allow Paperless to process the email again.

psql -U paperless_db_user

Here’s the SQL command I used:

DELETE FROM paperless_mail_processedmail WHERE uid = '322';

After running this command for every of the reported mails that are skipped, Paperless successfully reprocessed the emails during the next processing cycle.

Conclusion

If you encounter similar issues with PaperlessNGX not processing certain emails after a restart, checking the mail.log and manually deleting the processed mail entries from the database can be an effective solution.

#weeklyreview 06/2025

Again a mixed week

Took Monday off to drive a friend to an examiner for his insurance to assess that he’s not capable of working in his job. He’s got severe ME/CFS, can’t sit or stand upright without passing out in a matter of minutes, has the attention span of squirrel before his brain fog kicks in etc. The examination was originally meant to be 2 days of 4 hours examinations each. But it was clear from the start that he’d not be able to do that. The bloody examiner sit’s in a non-accessible building in the south of Berlin. My friends needs a wheelchair to move around. Of course the building neither had an elevator nor a ramp or something. So it took my friend about 25 minutes to rob in his bum up to the 3rd floor. Yeah… because he can’t stand upright and just walk. And he’s also a bit heavy so can’t be easily carried. And our brilliant health system also does not pay for transport and carrying him upstairs anymore. You’d need three persons to move him, but the default staff on official ambulance cars is only two.

Overall a rather humiliating and exhausting experience for him. I’ll just hope that he’ll finally get’s the deserved payout from his insurance.

The good thing was though, that I 4 hours to roam around in Friedenau and was able to give my good friend Boerge as visit in his new home 😀

Tuesday & Wednesday I was fighting with work bureaucrats the get an exemption for using my corporate USB Disks to free off space on my internal hard disk for experiments mit LLM models. I get the need for rules and restrictions etc. But there must be a way to not prevent people from doing their work. There is all this mandatory security training and tools etc. But I think there should be a way for people to somehow prove that they know what they’re doing and get rid of the usual corporate shackles that prevent you from doing stuff and cripple your expensive corporate hardware.

Baltic Sea

For the rest of the week (which was the Berlin winter holiday week for schools) my daughter and me took off to Usedom island. This time we stayed in Świnoujście on the polish side of the isle.

The weather left room for improvement the first two days with grey clouds, cold wind and drizzle. But that’s kind of what we came for. The sea is awesome at any weather and our hotel had a Spa area where we spent time in the pool and sauna 🙂 I also got a fair bit of reading done on my kindle in the sauna. “The dawn of everything” is really good.

We explored the local restaurants and roamed around the city, beach and piers a bit.

On Saturday we took a trip to the German side and payed Gulliver a visit and had good pizza on the pier restaurant in Heringsdorf.

In the afternoon the sun finally came out and people were flocking to the beach for a walk. We saw the TF Line ferries coming in and eventually had really good Sushi at the Hilton Hotel Sushi Bar and Grill.

Overall a rather relaxing four days at the Baltic Sea.

But there was not a single node on the whole Baltic Sea. I was carrying my T-Echo the whole time to check for any nearby radios. Nothing, nada, zilch.