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.

At the age of 13 I started programming with C. Then I looked into HTML and CSS, started to use PHP and then MySQL. Looking for something to write software with a nice user interface with, I came to Java. Then I looked into more languages like Bash, Python, JavaScript, GNU Octave, VimScript, Fish. From then on, I tried to do most things in either Python 3 or C++11, so that I only have two languages, which I know well. For my work I now use R and also picked up the Wolfram Language. See my portfolio.

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.

You can also find me on other platforms:

Cross-Posting von Stellenangeboten

Aktuell schaue ich nach Jobangeboten. Es gibt da einen Haufen Webseiten, die Stellenangebote haben. Mit denen hier hatte ich schon Kontakt:

  • LinkedIn
  • Xing
  • Stepstone
  • Monster
  • Bundesagentur für Arbeit
  • Joblift
  • Glassdoor
  • Indeed

Aktuell schaue ich meist auf LinkedIn. Dort findet man immer wieder Stellenangebote, die einfach nur miserabel formatiert sind. Offensichtlich wurden die einfach von einer anderen Plattform kopiert und nicht weiter angepasst. Wohl irgendwie automatisiert per API auf LinkedIn gerotzt.

Aber gut, die Stelle klingt ganz interessant, also wollte ich dem trotzdem eine Chance geben. Also habe ich einmal auf »Bewerben« geklickt. Dann landete ich bei Joblift, noch einem weiteren Portal. Dort war der gleiche zusammenkopierte Text, den ich schon kannte.

Read more…

Tools for Remote Programming Teaching

In the past years I have done a bit of programming teaching. Mostly at the university, where I have tutored in-person classes for C and LaTeX. On the side I have also taught people C and recently Python. In order to learn programming, one has to be able to experiment, therefore one needs to have a shared environment that allows to execute code. I want to introduce a few options that I have found.

The first one is JDoodle. It supports a bunch of programming languages and one can work on a single file there. It supports interactive programs but no interactive interpreter. Collaboration is possible, but I found it flaky, often one person would just drop out.

Read more…

Identitätsverifikation mit Personalausweis-Scan

Es gibt immer wieder Situationen, bei denen man seine Identität im Internet nachweisen muss. Dafür braucht man also irgendwie ein Ausweisdokument, was auch digital funktioniert. In Deutschland haben wir dafür den elektronischen Personalausweis (ePA), der irgendwelche Zertifikate enthält. Mit einem geeigneten Lesegerät kann man damit seine ganze Identität oder nur sein Alter gegenüber einem Dienst verifizieren.

Klingt alles super, nur leider unterstützt fast niemand den ePA wirklich. Die Software läuft nur unter Windows und macOS; Linux ist mit unter 5% Marktanteil willkürlich ausgenommen, obwohl das Teil mit C++, Qt und CMake programmiert ist. Jedenfalls hat fast niemand so ein Lesegerät, und man muss den ePA für die breite Masse wohl einfach als gescheitert ansehen.

Gängige Verifikationsmethoden sind dann Hochladen von Ausweiskopien, Postident oder Videoident. Bis auf Postident ist das alles ziemlich bekloppt. Im realen Leben muss ich den Ausweis haben, und natürlich mit dem Passbild übereinstimmen. Bei Postident ist das genauso, da muss ich den haben. Wenn ich Videoident mache, muss ich den Ausweis auch haben und entsprechend aussehen. Das ist beides okay, wobei über das Smartphone nicht unbedingt alle Sicherheitsfeatures korrekt zu sehen sind. Durch Schwenken des Ausweises und Winken mit der Hand vor dem Gesicht ist das immerhin so halbwegs okay. Jedoch bindet beides Personal und dauert auch viel länger, als wenn man das einfach mit einem Lesegerät macht. Zudem man für das Lesegerät noch die Pin wissen muss, also hat man hier zwei Merkmale.

Ausweiskopien sind aber wirklich das letzte. Wenn ich eine bei Dienst A hochlade, was hindert Dienst A dann daran sich gegenüber Dienst B mit meiner Kopie »auszuweisen«? Ich kann auch auf meinem Rechner die immer gleiche Ausweiskopie an alle schicken. Es ist also weder haben noch wissen, was man hier braucht.

Read more…

Registrierung bei der Agentur für Arbeit

Mein Vertrag bei der Universität läuft in etwas mehr als drei Monaten aus. Damit man seinen Anspruch auf ALG-1 nicht verliert, muss man sich mindestens drei Monate vorher als arbeitssuchend melden. Das ist die Vorstufe von arbeitslos. Dazu muss man sich aber erstmal online einen Account erstellen. Das ging auch ziemlich einfach, für die arbeitssuchend-Meldung brauche ich den sogar nicht nicht zu bestätigen. Heute kam der Brief mit dem Code an. Also erstmal zur Anmeldeseite:

Als nächstes wollten sie dann den Code haben.

Read more…

Photochromic Lenses Suck

A few years ago I needed to get new prescription lenses into my glasses. As this usually cost around 200 EUR and I did not want to spend much more money on separate sunglasses, I have tried out photochromic lenses. These have a chemical component which darkens under UV light such that it automatically block out excess sunlight.

At least that is the theory. The problem is that they get triggerd by UV light, not brightness. So when there is shade on the glasses, they won't darken. Take the following example, where I was on a walk and had sun from the right side. You can see how the shadow of the frame has left a brighter line diagonally through the glasses. Also the left part of the lens is not as dark because it was under my hat.

When you turn around, you have partial sunglasses, which suck. Then car windows block the UV light but not the bright visible light such that the chemical compound does not trigger and one is left with regular classes. That also sucks.

So although they might seem appealing, they just totally suck.

Launching GTA 5

Launching GTA 5 on my PC takes a lot of step. So step 1 is to start the Epic Games Launcher:

Then it shows the screen. Apparently they want to sell me more games and not let me play the ones that I already have. Step 2 is going to the library.

In the library I need to select the game (step 3).

Read more…

Number Sequence Questions Tried with Deep Learning

As part of IQ tests there are these horrible number sequence tests. I hate them with a passion because they are mathematically ill-defined problems. A super simple one would be to take 1, 3, 5, 7, 9 and ask for the next number. One could find this very easy and say that this sequence are the odd numbers and therefore the next number should be 11. But searching at the The On-Line Encyclopedia of Integer Sequences (OEIS) for that exact sequence gives 521 different results! Here are the first ten of them:

Sequence Prediction
The odd numbers: $a(n) = 2n + 1$. 11
Binary palindromes: numbers whose binary expansion is palindromic. 15
Josephus problem: $a(2n) = 2a(n)-1, a(2n+1) = 2a(n)+1$. 11
Numerators in canonical bijection from positive integers to positive rationals ≤ 1 11
a(n) = largest base-2 palindrome m <= 2n+1 such that every base-2 digit of m is <= the corresponding digit of 2n+1; m is written in base 10. 9
Fractalization of (1 + floor(n/2)) 8 or larger
Self numbers or Colombian numbers (numbers that are not of the form m + sum of digits of m for any m) 20
Numbers that are palindromic in bases 2 and 10. 33
Numbers that contain odd digits only. 11
Number of n-th generation triangles in the tiling of the hyperbolic plane by triangles with angles 12

So there must be an additional hidden constrain in the problem statement. Somehow they want that the person finds the simplest sequence that explains the series and then use that to predict the next number. But nobody ever defined what “simple” means in this context. If one would have a formal definition of the allowed sequence patterns, then these problems would be solvable. As they stand, I deem these problems utterly pointless.

Since I am exploring machine learning with Keras, I wondered whether one could solve this class of problems using these techniques. First I would have to aquire a bunch of these sequence patterns, then generate a bunch of training data and eventually try to train different networks with them. Finally I'd evaluate how good it performs.

Read more…

Default Standard Deviation Estimators in Python NumPy and R

I recently noticed by accident that the default standard deviation implementations in R and NumPy (Python) do not give the same results. In R we have this:

> x <- 1:10
> x
 [1]  1  2  3  4  5  6  7  8  9 10
> sd(x)
[1] 3.02765

And in Python the following:

>>> import numpy as np
>>> x = np.arange(1, 11)
>>> x
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
>>> np.std(x)

So why does one get 3.02 and the other 2.87? The difference is that R uses the unbiased estimator whereas NumPy by default uses the biased estimator. See this Wikipedia article for the details.

Read more…

GPS Tracking mit AllTrails, Komoot, OsmAnd und Strava

Während Radtouren nutze ich gerne mein Handy in der Lenkerhalterung um mir Fahrradkarten anzuzeigen. Die Open Streep Map hat entsprechende Metainformationen, sodass man sich auf der Karte die für den Radverkehr empfohlenen Karten anzeigen lassen kann.

Zusätzlich nehme ich gerne Touren auf, so habe ich zum einen eine Übersicht über die Strecke und kann sie einfach nochmal fahren. Ich kann die Strecke mit anderen Personen teilen, zeigen wo ich gefahren bin. Und ich bekomme Statistiken über Strecke, Zeit und Höhe.

Nun gibt es einige Apps, die man dafür nehmen kann. Ich kenne diese hier:

In letzter Zeit habe ich häufig Strava genutzt und wollte einmal vergleichen, welche App sich eigentlich für was am besten eignet.

Read more…


Bei Epic Games gab es GTA 5 neulich kostenlos. Nachdem ich mit GTA 4 eher mäßige Erfahrungen gemacht hatte, wollte ich es mir vorher nicht kaufen. Aber so kann man ja einmal testen.

Zurerst musste ich einen Account erstellen und den Epic Games Launcher herunterladen. Das scheint eine ziemlich fette Anwendung zu sein, die man nicht unbedingt auf einem Arbeitsrechner haben will. Da ich auf dem Spielerechner aber schon Steam, EA Origin, Ubisoft Uplay und GOG Galaxy installiert habe, macht es dann auch keinen Unterschied mehr.

Für die Installation von GTA 5 braucht man knapp 100 GB Speicherplatz. Also gut, dann geht das Spiel halt auf die große HDD.

Read more…