Technology

Debugging a slow SSD on my arch home server

TL;DR If your Arch-based system with an SSD feels oddly slow—check if TRIM is enabled. Arch won’t do it for you. Quick test: systemctl status fstrim.timer Quick fix: sudo systemctl enable fstrim.timer sudo systemctl start fstrim.timer I’ve been running a mini PC (an Intel N100-based NUC) as a home server—Docker containers, monitoring, file sharing, the usual suspects. But something had been off lately: the system felt weirdly slow. Not CPU-bottleneck slow. Not RAM-starved slow. Just… laggy.

Read more →

April 6, 2025

N100 Mini PC homeserver build

A few years ago I got into the home server building habbit. I started with a typical tower PC during my student years but after moving around a lot, needed something more portable. As energy efficiency was also a criteria for me, I decided to build everything based on a RPI setup. It turned out I could run most of my needs back then on a RPI 4 with 4GB of ram.

Read more →

October 1, 2023

Starting a new Blog based on Hugo

I decided to start a new website and blog based on hugo and a template called hextra. The idea is the following: pascalbrokmeier.de: Will be my digital business card. Mostly linking to other pages but with minimal information. curiloo.com: Hosted by myself, contains my blog and other content. Kept mostly personal-brand free, focuses on content.

Read more →

October 1, 2023

Order in Pubsub, is it a big deal?

When talking to clients, the topic of message ordering came up a few times when talking about GCP Pub/Sub or event architecture cornerstones like it. When looking at the architecture, it becomes clear, Pub/Sub can have ordering issues, since it contains N publishing forwarders and M subscribing forwarders, depending on the ingress and egress load. But that doesn’t mean that messages will always be out of order. Often, messages may come in at a rate as low as 1 msg per second. Will it be out of order then? Or maybe at a rate of 10 msg/sec? Or 50? Of course this depends on many factors (such as message size and sender count / geographical location). But assuming we have 1 sender and 1 receiver, when will PubSub start showing out of order messages?

Read more →

February 14, 2020

My XPS customizing diary

In the beginning of 2018 I started looking for a laptop that would serve as my mobile workstation. I bike a lot so there is a weight restriction to it. After a lengthy research phase where I compared the Thinkpads, Huawei Matebooks and some other competitors, I ended up choosing the XPS 15. It was discounted and I also made use of the student discount so I ended up paying about 1050€ for it. It’s the 16GB, 512GB SSD, i7 7700k 1080p 96Wh variant. Most importantly it is the US keyboard layout variant. You wouldn’t believe how hard it is to get a US keyboard on a laptop in the EU.

Read more →

August 11, 2018

Turning your Linux computer into a screencast station for pareto principle level professionality

(See video tour at the bottom of the post or here) So I recently decided to record some of my coding sessions and put them on the internet. Why? Well, firstly it’s a good way to show what I can (and can’t) do. If I apply somewhere for a Data Scientist or Software Engineering position I can show what’s to expect from me. But of course it also serves the purpose of focus, as you tend to think your actions through when you are on record. So while recording yourself, you tend to explain exactly what you do and that helps in itself to generate better results (see ruber duck debugging).

Read more →

April 15, 2018

Enabling Tensorboard to see what's happening during training of an LSTM on Keras using a Timeseries Generator

Learning neural networks is still very messy, so without tools such as tensorboard, it would be really hard to really comprehend what is happening. Unfortunately, it’s not super easy to get tensorboard working out-of-the-box with Keras when training certain structures. When running an LSTM learning algorithm on large datasets, it is sometimes needed to generate the sequences on the fly and feed the data that is used to learn the algorithms in several steps. If the size of the data is large but the series for each logical unit is small however, it is often not possible to run several epochs on the whole set but rather run single epochs on each smaller unit.

Read more →

March 30, 2018

Starting to screencast about my thesis and machine learning

An updated version of this post is available here I have posted my first video on YouTube about how to do screencasts on Linux with free tools and without having to invest heavily into hardware. I only added a microphone to the mix but even that I had lying around already for recording music. It’s not ideal for screencasts because it is made to record stereo full room sound but it’s a good start.

Read more →

March 21, 2018

Letting reinforcement learning agents learn from each other in competitive environments

In the last months I have researched mainly on the basics of AI research and the more precise technologies of reinforcement learning. This led me to my upcoming thesis topic, which tries to let agents learn not only through trial and error but also through observation of other agents. The motivation is embarrassingly simple: I don’t learn about AI by trying different paths in my state space. I take most of what others have developed and researched and basically imitate their behavior. Sometimes I stop reading and start experimenting. But it is certain that I could never learn to become as good with AI as with software development. (My previous field of expertise) by simply doing trial and error or by simply reading. It’s the mix that makes the most sense. The two amplify each other.

Read more →

February 10, 2018

Getting the capture date in a .NEF Nikon raw file with python

While importing all of my Google Photos into my local library in the process of deleting everything, I needed to get the capture times of about 20k .NEF files from my library. I used those to compare files with the same name (DSC_1000.jpg DSC_1000.NEF) to verify if these are in-fact the same files or just have the same serial number. Because I am also learning python (great language btw), I am processing everything in python.

Read more →

January 24, 2018

Spin down HDDs on Linux for extra quiet desktops at night

I often up/download large amounts of files while sleeping. I am still in the process of uploading my 600GB essential personal data offsite backup to AWS Glacier. With an average upload speed of 50-150KB, that takes a loooong time. So here are some tips to get the PC to shut up while asleep. This assumes your main disk is an SSD.

Read more →

November 22, 2017

Choosing the right blog technology in 2017

TL;DR: A list of choices ranging from the publishing service medium.com all the way to custom server,tech,build tools etc. I was recently asked to help decide on a new setup for a website and its underlying technology. I decided to give several alternatives from “dead simple” but very restricted to “very geeky” but with full control over the whole development chain.

Read more →

November 11, 2017

Optimizing a Jekyll Blog with minification, image optimisation and caching on Firebase Hosting

Where I was: Jekyll Blog hosted on Github Pages No HTTPS about 1.8MB page load PageSpeed Ranking of 61/100 Where I am now: Jekyll Blog hosted with Firebase Hosting HTTPS X.X MB load size on initial load X.X MB load size on subsequent load using caching PageSpeed Ranking of XX XXX Dynamicially sized images using XXXX search engine ranking improvements Tools required The Jekyll-Cloudinary plugin is my first step. My images are huge! I had some automated size reduction going with imagemagick but this is by far better suited to do the job An Atom custom snippet for the required liquid tag Switching to Firebase for hosting. Reasons: Caching and SSL Where we start I assume you have jekyll installed as well as ruby-bundle and know how to work with git(hub). If you don’t then this post is most likely not for you and you should first figure out how to set up a blog using jekyll.

Read more →

November 3, 2017

Problem statement We want to build a system that allows computing a large number of expensive functions on rows in a dataset We want to do this in a distributed fashion The size of the dataset is larger than memory the functions are expensive to compute and may either be executed through an API call or against a local GPU we want to cache the results in a storage system but ideally avoid long-running DBs to be running the system may be shared by multiple teams to benefit from economies of scale Solution approach the distribution of compute will be done via ray as it allows us to run large scale of huggingface models the caching layer is an open question the reading will happen with kedro and polars datasets in lazy mode polars will read the data in batches which will be passed to ray for processing we believe that we should determine what needs calculating before passing to ray as we expect the % of the total data that needs computing to be very small in most moments

Read more →