Hi, I am Martin Ueding, a physicist (M.Sc.), programmer and PhD student in Lattice QCD.
Although I am German, most of the content on this website is in English as both science and programming is communicated mostly in English.
Since 2011, I study Physics at Bonn university. I have finished my Bachelor degree in 2014 and my Master thesis in 2017. See the studies section for the study related material.
My most popular project are the thinkpad-scripts which I wrote to get all the screen and digitizer features working effortlessly on my ThinkPad. It is a collection of Python modules that take care of docking and screen rotation.
For several years now, I have been almost paperless. The main challenges are papers I get from other people and hand written notes. The former can be faced with a scanner, the latter was more interesting. I own a Wacom Tablet since long before I started to become paperless, but I never had a good software for note taking. Since I did not find one at first, I wrote jscribbe. After I was almost done with that, I discovered Xournal which I now use most of the time.
During the pandemic I work from home, just like most office workers. To keep in
touch we use video conference tools. But as we did not have anything set up
before, we needed to find something that works sufficiently welt. Also with the
GDPR it is not that easy to just take anything.
It turns out that none of the tools are quite satisfactory, there always is a
bunch of friction.
The first that we tried is the DNF Conf system by the German Research
Network. It uses WebRTC, is hosted in Germany and fulfills the GDPR
requirements. Also it supports presenting PDF documents. Unfortunately it has
been hopelessly overrun and it took a month before they ramped up resources and
users went to other services such that it is mostly usable now. On my laptop is
uses a lot of resources.
The second thing that we have tried is Jitsi Meet on their
site and then also hosted an instance on our own. I like
this the best so far. It also uses WebRTC but supports keyboard shortcuts for
muting the microphone and even has a push-to-talk feature. But somehow the
resource use is quite high and the members of our group with flaky internet
connections would be cut of all the time.
For Android there is an app, that seems to work just fine also. I have used it
occasionally and am quite happy with it.
I routinely do backups on external hard drives using
backintime. It is a tool which uses
hard links to create snapshots with deduplication. Restoring is super easy,
either use the tool or copy files manually. The directory hierarchy had a
directory with time as filename and your whole directory tree below that.
As I only do these backups every couple of weeks, there is a gap of time during
which I could lose data. Also on the go I want to have backups. My PhD thesis
draft is in a private GitHub repository, so I can just push to that and have a
backup in the Microsoft cloud somewhere. For everything else I need something
else, so I started researching this a couple years ago.
Backblaze offers a software client and unlimited
cloud space for 5 USD/month, but just for Windows and macOS.
The SpiderOak service was recommended by Edward
Snowden, so i tried that. It works with Linux and has encryption already on my
laptop. I just needed around 150 GB of space, they used to charge 10 USD/month
for that tier. Their client looks nice to use and I quickly had set it up with
the free trial. It took a while before it actually started to upload things.
And it seemed to use quite a bit of resources, I guess for encryption and file
My friend Simon, who had the same problem, discovered that one could also use
duplicity with the Backblaze
B2 storage backend. Their
rates are really affordable and so I had a look at that. One can store
unlimited data there and is billed proportional to the amount. I ended up
paying a few EUR/month for the service, so it was cheaper than SpiderOak.
I want to show how I did it with duplicity and why I am now back with
On LinkedIn one can specify skills that one has as a collection of keywords.
Contacts can verify these skills by vouching that one has them. A recently
added feature is that one can take a 15 question multiple choice test and show
a badge if the test result lies in the 0.7 quantile or above. In principle a
The tests for C++, Python, R and Git seemed sensible, The one about Bash was
rather well for the most part, except for one question:
In order to write a script that iterates through the files in a directory,
which of the following could you use?
for $ls; do …; done
for $(ls); do …; done
for i in $(ls); do …; done
for i in $ls; do …; done
Well, the third one will get the job done under a lot of dangerous assumption
from the programmer, so it likely is the “correct” answer. But is is terribly
brittle and I would never accept that in any code that I review. Let's take a
look at this and make it fail.
Over the time I have learned a lot of programming languages. DOS batch scripts
was the first, but that is not really programming, more scripting. Later I
started to learn C but got stuck at pointers. At that age I just did not
understand this concept from the book I had. My father has showed me HTML and
then PHP, I started to create my personal website with that. And then with PHP
I was able to program things that other people could see and try out on my
website. Then I wanted to write GUI applications and came to Java, programmed a
bunch of little games with that. During my high school I also needed to learn
Pascal for my computer science class but never gotten far with it.
During my work at DLR I started to learn Python and used it for data analysis.
Then at university I attended a course in C given by two very funny
mathematicians. This gave me a completely fresh start into C and I shortly
after wandered off into the C++ world and still really like it there. I used
GNU Octave (the free clone of MATLAB) for my lab courses first and then
switched to Python for that task. I picked up Bash scripts somewhere along the
way, did some scripting in Vim. Eventually for my master thesis I could do even
And then during the PhD I seemed to have picked up another trove of languages.
My advisor has an R library to analyze the data that we see in that field. PhD
students have tried to rewrite it in Python which they liked better, but it
just lacked features and maturity. It turned out that learning R was really
straightforward at this stage. It just took me a few weeks to get going in the
language and after a few months I had the impression to really feel the
language. I also picked up Haskell for fun and the Wolfram Language for a
But why am I writing all this? The interesting thing here are the decreasing
costs of learning a new programming language. Just as with spoken languages,
the programming languages fall into categories. The very first language you
learn will be tough because you will have to learn that particular language but
also programming and also patterns. The second language will be easier as you
already know how programming works. But you might not have seen enough
diversity to abstract the patterns that are there. So the second language will
be about that language and abstracting patterns. Just as I learned a lot about
German grammar while learning English and having to formalize the concept of
This likely will be my last season of tutoring high school and university
students. The final exams for the high school are coming up next week. I
thought that it might be a good time to look back and reflect on those years.
I have started with tutoring already while I was in high school. At the
beginning I would teach material that I just had learned myself shortly before.
According to the four stages of
competence this was
just after crossing from conscious incompetence to conscious competence. I
would recall pretty exactly what knowledge I lacked, which experiences were
needed to understand. This made me a reasonable tutor for my peers.
Later on during university studies I did tutoring as an university employee and
also on the side as a private tutor. In both cases I have eventually worked
mostly with university students. In general university students are
self-motivated and really want to understand the material at hand. Sometimes
they just want to pass a course, sometimes they want to build a foundation that
lasts longer. High school students on the other hand are usually not as
conscious about their future as university students and seem to be a more
motivated by their exam scores than with building a foundation. Of course,
there are school subjects that one just has to bear with until graduation and
already knows years in advance that they are not going to pursue a future into
these directions. I certainly had those subjects and did not too well in them
as I just lacked the motivation that drove me in physics and mathematics.
Schon seit längerem läuft in der Maximilianstraße ein Experiment mit einem
Fahrradstreifen. Da die Ratshausgasse für den Durchgangsverkehr gesperrt
worden ist und durch die Sperrung der Kaiserstraße somit auch in der
Maximilianstraße nur noch sehr wenig Verkehr durchkommt, konnte eine Spur an
die Radfahrer gegeben werden. An der zweiten Ampel an der Einmündung zu Am
Hauptbahnhof sieht das ganze dann so aus:
Erstmal scheint das eine feine Sache zu sein. Jedoch offenbart sich das Problem
nach der Rechtskurve: Die Straßenbahnschienen. Die liegen nämlich hier in der
rechten Spur. Man muss also beim Abbiegen entweder rechts der Schienen bleiben
oder zwischen die Schienen wechseln. Hinter der Kurve sieht es dann so aus:
Ab dem 01.04.2020 darf man mit dem Fahrrad in den Straßen »Am Hof« und
Radhausgasse Richtung Rhein fahren. Vorher waren beide Straßen eine
Einbahnstraße. Der General Anzeiger beschreibt die
Neuerungen, die zu dem Stichtag umgesetzt werden.
Ich habe die neue Verkehrsführung als Radfahrer jetzt häufig genutzt und bin
davon angetan. Da dies ein Experiment bis zum 18.06.2020 ist, möchte ich durch
meine positive Rückmeldung darauf hinwirken, dass dieser Zustand dauerhaft
Man fährt auf der Straße Am Neutor an und darf dort jetzt rechts abbiegen.
Jedoch muss man erstmal seine Ampel finden, das ist die Fahrradampel auf der
In meiner Stadt Bonn gibt es recht wenig baulich getrennte Radwege. An sehr vielen Stellen gibt es nur Schutzstreifen. Damit es keine Missverständnisse gibt, muss man erstmal die verschiedenen Arten von Radinfrastruktur trennen:
Auf der Fahrbahn ist eine gestrichelte Linie angebracht, die am rechten
Rand der Fahrbahn einen Bereich für Radfahrer markiert. Mit einem
Kraftfahrzeug darf man diesen nur bei Bedarf überfahren. Autos dürfen auf
dem Schutzstreifen nicht halten (vor 2020 war es nur Parkverbot).
Ähnlich, aber mit einer durchgezogenen Linie. Kraftfahrzeuge dürfen nie
darüber fahren. Es besteht Benutzungspflicht.
Ein baulich getrennter Weg, der nur für den Radverkehr vorgesehen ist.
Gehweg »Fahrrad frei«
Auf einem derart markierten Gehweg dürfen Radfahrer als Gäste fahren, mit
angepasster Geschwindigkeit. Es besteht keine Benutzungspflicht.
Hier teilen sich Fußgänger und Radfahrer gleichberechtigt einen baulich
getrennten Weg. Da die Radfahrer aber schneller unterwegs sind, müssen sie
sich von der Geschwindigkeit natürlich anpassen.
Aus dem Englischen als protected bike lane bekannt. Ein Radstreifen, der
mit Pollern vom Autoverkehr abgetrennt ist und nicht überfahren werden
Diese Feinheiten sind den meisten nicht bekannt, daher kommt es immer wieder zu
Diskussionen aufgrund falscher Vorstellungen. Am schlimmsten ist es mit dem
»Schutzstreifen«. Dieser wird von vielen Autofahrern anscheinend als Sonderweg
wahrgenommen, sodass kein zusätzlicher Abstand zum Radfahrer eingehalten wird.
In der Praxis sieht das dann so aus:
For the past decade I had just regular rain paints that would cover the whole
legs. Together with a rainproof jacket and rainproof shoes (or shoe covers)
this would protect me from the rain completely. However, it would not
necessarily keep me completely dry. Although the rain paints that I have
feature a membrane, one would still sweat in them.
In Bonn usually it does not rain very hard or very long. Also one often has a
gradual fade-in, which makes it hard to decide what to wear. If I puts on the
rain pants too early I will sweat a lot, too late will have my pants wet
and then it does not make sense to put on the rain pants at all. Or I start
from home and it rains a lot, so I start with the rain pants. But five minutes
into the ride it stops raining and I am not sure whether it will start again
later. So I either keep it on and sweat, or take it off and get wet later. Or
take it off and put it back on. It is a hassle every time.
I've seen the Rainlegs product on the internet years ago, and every now and
then saw people using it. Eventually I had so much positive feedback from users
that I decided to buy my own pair. I got them in white reflective as I do not
want to ride around in neon yellow.
Several years ago I used Matomo to analyze the traffic
that I have on my website. This is a PHP application that uses either
me a list of the most popular pages and also told me how people got to the
“page not found” page. I could go ahead and improve already popular articles
and fix redirections.
There have been somewhat frequent updates to Matomo which I had to install due
to security. I did not want to have unpatched PHP stuff on my web server. My
website has been static and zero maintenance at that time, so I got annoyed. At
tomes I updated Matomo more often than I actually looked at the data. Then came
the GDPR and I ditched Matomo because I was not entirely sure what sort of
privacy statement I would need on my personal website.
This left a gap and I have thought about filling it. I wanted something that
did not require me to update stuff on the server regularly. So I thought about
Google Analytics as I would just have to add their little bit of tracking
than Matomo regarding the GDPR. My web hoster provides logs processed with
Webalizer, which look terribly old fashioned.
Luckily I have found GoAccess and can download the logs