🇩🇪 — Hi, ich bin Martin Ueding. Je nach Situation bin ich Physiker, Maschinenlerner, Softwareentwickler und Fahrradaktivist. Ich habe recht früh mit dem Programmieren angefangen und schreibe darüber im Bereich Computer. Im Physikstudium bin ich immer weiter in die Computerphysik gegangen, meine Studiumsunterlagen sind noch immer Teil dieser Webseite. Nach der Promotion bin ich in die Wirtschaft gewechselt. Seit dem Abitur habe ich meine Wege mit dem Fahrrad erledigt, Radtouren unternommen und irgendwann auch Radreisen.

Aktuell schreibe ich am meisten zu Verkehrsthemen, manchmal auch noch über Wissenschaft, Maschinenlernen oder anderen Dingen, die mir einfallen. Die eher technischen Dinge schreibe ich meist auf Englisch, den Rest auf Deutsch.

🇺🇸 — Hey, I am Martin Ueding, a physicist, software developer, machine learning researcher and a traffic policy activist from Germany. On my blog you can find all my physics study material, English articles about computer and programming, about science and travel. The articles about traffic policy are in German.


Mich findet man auch auf anderen Plattformen und Webseiten:


Verkehr Muss Ressourcenintensiv Bleiben

Verkehrspolitisch scheint Deutschland das Problem einer sehr großen Automobilindustrie zu haben. Sehr viele Arbeitsplätze sind vom Automobilbau abhängig. Jetzt in der Corona-Kriese ist natürlich auch diese Industrie betroffen, da viele Leute in ungewissen Zeiten kein Auto kaufen. In den Nachrichten liest man aktuell eine Diskussion über Kaufprämien für Neuwagen. Und dabei sollen dann auch noch eigentlich veraltete Antriebsarten gefördert werden.

Aber selbst das reicht anscheinend noch nicht, um die Nachfrage und damit den Fluss des Geldes zu sichern. Jetzt wurde auch noch vorgeschlagen dass man erst einmal einen Verbrenner leasen soll, und dann noch ein Elektroauto kauft:

Aber emissionsarme Benziner und Diesel sollten nicht ausgeschlossen sein. Möglich sei auch eine Brückenlösung: "Wer sich heute verpflichtet, in zwei Jahren ein E-Auto zu kaufen, könnte jetzt ein attraktives Leasing-Angebot für einen modernen Benziner oder Diesel bekommen", so Weil. — ARD Tagesschau, 27.05.2020

Natürlich wird das Leasing-Auto dann weiterverkauft. Aber mir erscheinen zwei Jahre als Nutzungszeit für ein Auto absurd kurz. In meinem Bekanntenkreis sind es eher so mindestens 10 Jahre. Das ganze erinnerte mich an »Schöne neue Welt« von Aldous Huxley. Dort gibt es recht am Anfang diese Stelle hier:

‘Strange,’ mused the Director, as they turned away, ‘strange to think that even in Our Ford’s day most games were played without more apparatus than a ball or two and a few sticks and perhaps a bit of netting. Imagine the folly of allowing people to play elaborate games which do nothing whatever to increase consumption. It’s madness. Nowadays the Controllers won’t approve of any new game unless it can be shown that it requires at least as much apparatus as the most complicated of existing games.’ He interrupted himself.

Weiterlesen…

Hard vs. Soft Line Wrap

When editing text, I have been using Vim so far. My text documents were either Markdown, reStructuredText or LaTeX. All of them are just source code in some sense, the output format HTML or a PDF in a browser. Single line breaks do not matter in either format, it takes a blank line in between to separate paragraphs. Therefore one has the freedom to insert line breaks within a paragraph at will without it meaning anything semantically.

For a long time I have used hard line wrap. This means that I let my editor insert a line break after 79 characters per line, limiting the line length to 80 characters (including the line break \n). The alternative is soft line wrap where the editor does not insert line breaks into the source code but just virtually wraps the lines for display such that it fits. This latter approach is what one is used from word processors like Microsoft Word or LibreOffice Writer. Also it is used in virtually all web forms.

The soft line wrap looks like the following picture in an editor. You can see the line numbers and as such each paragraph only has a single line number. The text is wrapped in a soft fashion that is just done to fit the window for viewing.

Weiterlesen…

Markdown Editors (on Fedora)

I use Markdown a lot to create notes and reports. Since April I also use it for my website. And actually I write my dissertation using Markdown as well. All this time I have been using Vim for editing all my text files. For Markdown I wanted to try a few GUI editors with instant preview.

Although there are tons of editors and Fedora Magazine has tested NoteKit, Joplin, MindForger, Remarkable, Ghostwriter, UberWriter, Marker, and Ghostwriter, not all of them are in the Fedora repository. Only Apostgrophe (apparently formerly UberWriter), Ghostwriter and Marker are in the Fedora 32 repository. As there are already enough choices, I did not go to install more external repositories. By searching the package index for “markdown” I was able to also find Notes-Up.

I have used each of them for a bit and want to share my impressions. So far I still use Vim for most of my editing, but I found it nice to work with Marker and Apostrophe for a change.

Weiterlesen…

Simple Captcha with Deep Neural Network

The other day I had to fill in a captcha on some website. Most sites today use Google's reCAPTCHA. It shows little image tiles and asks you to classify them. They use this to train a neutral network to classify situations for autonomous driving. Writing a program to solve this captcha would require obscene amounts of data to train a neutral network. And if that would already exist, autonomous cars would be here already.

The captcha on that website, however, was of the old and simple kind:

It is just six numbers (and always six numbers), the concentric circles and some pepper noise. These kind of captchas are outdated because one can solve them with machine learning. And as I am currently working through “Deep Learning with Python” by François Chollet and was looking for a practise project, this captcha came as inspiration at just the right moment.

Weiterlesen…

Headsets for Every Purpose

Over time I've accumulated a unsettling large number of headsets and headphones. And unfortunately I have yet to find the one that performs well with all tasks. Likely this is not even possible as there are just contradictory requirements. So at the moment I have four different ones which all have their niche.

The best sounding headphones that I have are the Sony WH-1000XM3. They just sound really great and have active noise canceling. I use them in the office and on the go. They connect via Bluetooth to my phone and I can also use them for calling. As they have built-in microphones and were rather expensive, I'd expected them to perform good in phone calls. However, they audio quality sucks so badly that people regularly tell me that they just cannot understand me. So I just cannot use them for calls. Then the Bluetooth chip in my laptop is so outdated (from 2011) that it can only connect via some fallback audio protocol and I can only use them as headphones, not as a microphone. And quality is worse than with my phone. So with the laptop I sometimes use the cable to connect them.

The Sony headphones have pretty much replaced my Sennheiser HD 485. These were fine for the budget that I had at the time. The ear cushions have dissolved over time, so I replaced them, and the new ones are also rather dissolved by now. Guess they were not built to last in this price segment. I did like the sound at the time, but I dislike that one cannot take off the cable on the headphone part. A broken cable therefore means soldering work. Their advantage at home is the acoustically open design, though. This means that I am not completely shielded from ambient sounds but rather hear my own movements. This is more relaxing at home, also I can hear when people try to talk to me.

Weiterlesen…

Radweg an der Siegburger Straße

Aktuell fahre ich mehrfach die Woche von Endenich nach Holzlar. Auf dem Weg fahre ich ein Stück auf der Siegburger Straße vorbei, einer wichtigen Verbindung mit Autobahnzugang. Von der Beueler Rheinseite kommend kann man wunderbar den Bröltalbahnweg nehmen und kommt dann am linken Ende der eingezeichneten Strecke heraus. Ab dem rechten Ende geht es dann nach Holzlar weiter.

Diese Stelle eignet sich großartig für eine verkehrsarchäologische Untersuchung. Fangen wir auf der östlichen Seite der Strecke an. Dort fährt man von Holzlar entlang eines benutzungspflichtigen Radwegs und hat es relativ komfortabel und sicher. Kurz nach der Autobahnabfahrt kreuzt man die Maria-Montessori-Allee. Der gemeinsame Geh-/Radweg wird zu einem Gehweg mit »Radfahrer frei«. Dort beginnt die rote Linie auf der Karte. An dieser Stelle steht natürlich ein entsprechendes Schild:

Weiterlesen…

Zusammen Fahrrad Fahren

Ich fahre sehr gerne mit dem Fahrrad. Und es kann auch sehr schön sein mit einem oder mehreren Freunden zusammen zu fahren. So nebeneinander fahren, sich unterhalten, die Natur genießen. Jedoch habe ich selten Strecken, auf denen das wirklich möglich ist. Letztlich gibt es in Bonn wenig Radwege oder Radrouten die hinreichend breit ausgebaut sind.

Einmal sind da die Schutzstreifen (siehe Artikel dazu). Diese sind nie breit genug, als dass man dort nebeneinander fahren könnte. Man fährt also hintereinander und kann sich nicht unterhalten. Dann sind baulich getrennte Radwege auch fast nie breit genug, als dass man nebeneinander fahren kann. Häufig sind Gehwege direkt daneben, man könnte regelwidrig dort zu zweit nebeneinander fahren. In Fahrradstraßen ginge es, jedoch sind die Bonn nie wirklich lang. Und dann noch rechts und links mit KFZ-Parkplätzen gesäumt, sodass bei Gegenverkehr wieder nicht genug Breite vorhanden ist. Die Radwege an Rhein und Sieg sind meist so schmal, dass man hier bei Gegenverkehr ebenfalls wieder eine lange Schlange bilden muss.

Bei Radtouren habe ich es schwer, eine kohärente Unterhaltung mit Freunden zu führen. Ständig muss man unterbrechen, nach vorne fahren, den Gegenverkehr oder Überholende durchlassen und wieder abbremsen. Es macht einfach keinen Spaß. Und am Rhein stehen immer wieder Schilder, dass alle ganz friedlich Rücksicht aufeinander nehmen und es somit ja für alle total super ist.

Weiterlesen…

Cloud Backup for Linux

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

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

Weiterlesen…

Video Conference Experiences

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.

Weiterlesen…

Bash and Spaces in File Names

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 nice idea.

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?

  1. for $ls; do …; done
  2. for $(ls); do …; done
  3. for i in $(ls); do …; done
  4. 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.

Weiterlesen…