This assumes a local file such as n23ur33w.iso downloaded from the Lenovo support website (e.g. from https://support.lenovo.com/fr/en/downloads/DS502281). Use geteltorito to extract the relevant boot image from the ISO file (following the “El Torito” standard): $ sudo dnf install geteltorito ... $ geteltorito -o lenovo-bios.img n23ur33w.iso Booting catalog starts at sector: 20 Manufacturer of CD: NERO […]| Jan-Philip Gehrcke, PhD
Firefox: when you go to about:preferences you may see Your browser is being managed by your organization In about:policies you can then see activated policies. How to disable those policies on Linux? I did not find a decent web resource; hence this quick post. According to Firefox docs, a certain policies.json defines them: This file […]| Jan-Philip Gehrcke, PhD
A quick solution for minimizing all windows but the one that is currently in foreground. Tested with GNOME Shell 44.9, Fedora 38. Install xdotool: sudo dnf install xdotool Create executable shell script: #!/bin/bash currentwindowid=$(xdotool getactivewindow) currentdesktopid=$(xdotool get_desktop) for w in $(xdotool search --all --maxdepth 3 --desktop $currentdesktopid --name ".*"); do if [ $w -ne $currentwindowid […]| Jan-Philip Gehrcke, PhD
Got two Western Digital RED class 3 TB disks (WD30EFRX) in July 2013. The power supply of my NAS machine died last week, but those disks still run. Fascinated! One disk has a Power_On_Hours count of 72306, and the other one has 72305. That are 8.2 years. Let’s have a more in-depth look (I removed […]| Jan-Philip Gehrcke, PhD
ntfs-3g won’t automatically try to “fix up” your NTFS partition when it sees what’s probably the most common error after unplugging an external disk too eagerly: the MFT and its mirror being out of sync. In that case, a Windows system would just heal the problem when you plug in the disk. On Linux, you […]| Jan-Philip Gehrcke, PhD
We can totally use rsync to write to an SMB (Windows) share mounted under Linux. However, mapping file owner and permission meta data might not be directly possible: it’s expected to get errors such as Operation not permitted during chown). In that case, we can use the rsync arguments --no-perms --no-owner --no-group: $ rsync -a […]| Jan-Philip Gehrcke, PhD
Has Google become more conservative with indexing content of personal websites? I think we might see less and less low-traffic quality contents in Google search results. I have carefully done basic search engine optimization for my personal website since somewhen before 2010. For example, I have tooling in place to generate an XML sitemap, encouraging […]| Jan-Philip Gehrcke, PhD
In Kubernetes, a container might get terminated with an “out of memory” (OOM) error. We use the cute word “OOMKilled” for that, as shown here: $ kubectl get pods NAME READY STATUS RESTARTS AGE conbench-deployment-8786544b9-2nfsk 0/1 OOMKilled 0 15h conbench-deployment-8786544b9-57s5z 0/1 Completed 0 26h conbench-deployment-8786544b9-brrpm 0/1 OOMKilled 0 2d17h conbench-deployment-8786544b9-btqhb 0/1 OOMKilled 0 2d17h conbench-deployment-8786544b9-d798x […]| Jan-Philip Gehrcke, PhD
Hello! Small command, lots of power. Example: $ cat testcase2 some code // feature-x-start foo bar // feature-x-end more code $ cat testcase2 | sed '\|// feature-x-start|,\|// feature-x-end|d' some code more code How and why does this work? Now the interesting part. Resources to learn from. https://catonmat.net/sed-one-liners-explained-part-three shows the foundation of this recipe and it […]| Jan-Philip Gehrcke, PhD
Recently, I manually attached pre-existing EBS volumes to EC2 instances in an EKS (k8s) cluster. My goal was to expose these EBS volumes as k8s persistent volumes using a custom storage class. I picked the CSI local volume driver/provisioner to do the gluing. The ride was fun, but also a bit bumpy. Here, I am […]| Jan-Philip Gehrcke, PhD
For measuring the evolution of compute resource consumption of a specific process over time I typically use goeffel. I wrote that at Mesosphere a couple of years back for custom internal needs. Recently, I tried to see if I can reproduce a memory leak in conbench. This here is a quick demonstration of how I […]| Jan-Philip Gehrcke, PhD
Debugging :-). Yesterday it was working. Today it said File "/app/conbench/app/benchmarks.py", line 19, in newest_of_many_results return max(results, key=lambda r: r.started_at) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: max() arg is an empty sequence So, in the following dictionary comprehension, the function newest_of_many_results(bmrlist) was called with an empty list: newest_result_by_bname = { bname: newest_of_many_results(bmrlist) for bname, bmrlist in bmrt_cache["by_benchmark...| Jan-Philip Gehrcke, PhD
First, the solution. A long one-liner. Making use of Python being shipped with FreeNAS: # cat .history | python -c 'from datetime import datetime as dt; import sys; lines=[l for l in sys.stdin]; chunks=[lines[i:i + 2] for i in range(0, len(lines), 2)]; [print(dt.fromtimestamp(int(time[2:])), cmd.strip()) for time, cmd in chunks]' | head -n5 2019-09-15 22:31:36 ls […]| Jan-Philip Gehrcke, PhD
I’d like to blog more about those powerful commands that we carefully craft in our day-to-day. For a file transfer I just ran $ rsync -a --info=progress2 source dest 17,310,485,259 98% 49.04MB/s 0:05:36 (xfr#87446, to-chk=0/99316) As you can see in the output, it transferred 99316 files (~17 GB of data) within ~5 minutes. Re-running the […]| Jan-Philip Gehrcke, PhD
System interface design — a craft ⚒️ and an art 🎨. Needs: rigor, iteration, experience, time, feedback, creativity, taste. The urge to hide complexity. The urge to write lovely, precise docs. To simplify even further. To make this fun to consume. The desire to create something beautiful. (Note: I originally tweeted this in November 2021.) […]| Jan-Philip Gehrcke, PhD