Haupz Blog

... still a totally disordered mix


2022-07-27 — Michael Haupt

At the beginning of this year, I took a two-week intensive course to learn some basic Chinese. The intense vocabulary and letter memorisation that came with this refreshed my interest in flash cards. Preferably in an electronic form that synchronises across devices.

Thankfully, there's Anki. Note that this is an unpaid and unsolicited ad. I'm just very excited about this.

Anki runs in the browser, on desktop, and mobile. It synchronises flash card decks across all of these seamlessly. It has a price tag on mobile, but it's worth it.

What makes Anki really strong is that the design of flash cards is up to the user. There are HTML and CSS templates. It also automatically generates multiple cards from any entered content; that is, if you have a note describing a front and back side of a card, it'll generate two cards so that you can exercise the memorisation both ways. Of course, the note formats are also editable.

In my case, with Chinese, my notes have three aspects: the German word, the Pinyin transcription of the Chinese word, and the Chinese letter. I've built three card templates - each of the three aspects can be the front side so that I can memorise everything in every way possible. When I add a new piece of vocabulary, three cards will be generated, and next time I go through the deck, I'll be given those three questions.

The spaced repetition logic in Anki, too, is configurable, of course. The amount of daily new cards is limited to a low number at first, but it can be changed for times of super intense learning (like these) to have a higher limit - and that's even possible to configure per deck.

Anki is a bit idiosyncratic at first, and takes some getting used to, but it's a true power tool. Definitely worth the price. Did I mention it has a plugin interface?

Tags: the-nerdy-bit

Mature Programming Language Ecosystems

2022-07-23 — Michael Haupt

I used to work a lot with, and on, Java, so I have a soft spot for that language and ecosystem. One specific point I've come to realise while dabbling with some tech and reading about log4j problems over the past months is that a rich standard library (like the one that's part of Java) can make you a lot of days. The following can easily be misunderstood as flamebait. Please don't.

The log4j misery could have been avoided - the Java standard library has a built-in logging facility since JDK 1.8; and a capability for remote code execution simply isn't needed in a logging library.

Dependencies can be tricky. On Windows, there used to be DLL hell; today, we have npm dependencies that have a tendency to go really awry. Yes, Java has its issues too, when there are hard-to-resolve conflicts between dependencies managed by Maven, for instance. But back to npm. The JavaScript language is very small, and it and Node.js don't come with a very rich standard library. Consequently, many "standard" things end up being pulled in as dependencies through npm. Also, everybpdy (and then some) thinks it a good idea to release their particular solution to a recurring problem as an npm module.

The maze of dependencies, sometimes conflicting licences, and outdated or insecure code becomes ever harder to navigate, leading to yet more software being built to help developers and companies (who don't want to lose lots of money in licencing or software security lawsuits) to handle the complexity. That means there's businesses flourishing on the fallibilities of the ecosystem, rather than fixing those.

Sometimes modules are pulled "just like that" (because the developers can), and sometimes this happens for the worst reasons, e.g., because a developer cannot make a living from software they hand out for free after their apartment burned down. This points to a deeper problem with open-source software: it's taken for granted. And if a maintainer doesn't have a company behind them that helps with paying the bills, it's a precarious gratitude those developers are showing.

Libraries and dependencies growing out of proportion is an issue that can be addressed by relying on an ecosystem that comes with a rich standard library to begin with. Java is at the heart of one such ecosystem, and it's being maintained and developed in a very sane and transparent process, by a very capable and mature community. Some big industry players are part of that community, and fund a lot of the work. I'm using Java as one example - there are others.

What's my point? There are several:

  • When choosing technology that's meant to run a business, erring on the side of true-and-tried ecosystems with rich standard libraries and robust buy-in is safer.

  • Where vivid open-source technology is used, consider funding it in addition to using it, to have a visible stake.

  • Technology should be chosen for the right reasons. Therefore, it doesn't need to be hip. It needs to work, reliably and sustainably.

  • Working with true-and-tried (some might say "old and boring") technology does not substitute supporting research into new, innovative things that can be the true-and-tried ones ten years from now.

Tags: work, hacking

Old-School Music Listening

2022-07-23 — Michael Haupt

So yes, I love music, and I have a music collection that's not a playlist at some streaming service. I confess: I own CDs, and I still frequently purchase CDs.

Call me old-school. I don't get why I should pay a streaming service money every month when I can have all the stuff readily available for listening after a one-time payment and audio ripping session. (Having a phone with a lot of flash memory helps.)

My main interest is in classical music, and there, in some very cranky and niche late-romantic or 20th-century composers that aren't well served by streaming services. I understand there are streaming services for classical music fans (e.g., Idagio), but see above about one-time payments as opposed to subscriptions.

In a nutshell, you should listen to CDs.

Tags: music

Large-Scale Song Cycles

2022-07-11 — Michael Haupt

There's a triad of late-romantic symphonic song cycles that I love so much I'd actually attend a concert night where all of them would be played. Sure, it'd take four hours or so, but people go to the opera all the time to take in long performances either. So what's the problem?

The three pieces were written by three different composers who were in close contact with each other. These pieces all are large-scale orchestral works with solo voices, one also with choir. I love them for their sheer expressiveness and colourfulness. (And scale, I'll admit it. I like large orchestras.)

It begins with Gustav Mahler's Das Lied von der Erde. Written after the composer's monumental Eighth Symphony, it had all the hallmarks of a symphony, but Mahler refused to call it so, because of the superstitious belief that composers would not live long past their Ninth - see Beethoven, and Schubert (who however cheated with the numbering). Das Lied von der Erde uses poems by Chinese poet Li Bai, which, in spite of some sanguine outbursts, all have a distinctly melancholic tone to them - an air of departure and sadness is woven into the texts, and into the musical fabric. This becomes especially clear in the long final movement. This performance is a bit dated, but Leonard Bernstein conducting with René Kollo and Christa Ludwig singing (in order of appearance) make it a classic. As an interesting side note, the final melody to which the words "ewig, ewig ..." ("forever, forever ...") are sung forms the main theme of the first movement of Mahler's Ninth Symphony, establishing a tight connection between the two works. Das Lied von der Erde premiered in 1911, after Mahler's death.

Arnold Schönberg - infamous for his seminal contributions to "atonal music", or the twelve-tone technique - also wrote a fair amount of very, very tonal compositions. His major song-cycle Gurre-Lieder is one such example. Schönberg worked on it for a long time: he worked on the initial script from 1900-1903, and then on the orchestration in 1910-1911, finishing it in the same month that also saw the premiere of the aforementioned Das Lied von der Erde. The work premiered in 1913. It's massive: Schönberg really didn't care much about saving energy, so the orchestra is huge, and the (large!) choir is used, after an appearance by the male voices, in its entirety only in the very final (and comparatively short) movement. Gurre-Lieder also features a narrator soloist in addition to the singers, for the first time in music history. - The piece is based on lyrics by Danish author Jens Peter Jacobsen, and tells a tragic love story. Let's take this performance from the Proms for example. I fail to grasp how the conductor is not blown off the podium when the 200+ voices strong choir goes off towards the end.

While the names of Mahler and Schönberg are popular or yield at least some raised eyebrows ("... twelve-tone technique? yuck!"), Alexander von Zemlinsky is much less widely known even among people who take a general interest in classical music. That's sad, because his music is immensely wonderful - highly chromatic yet always in the tonal space, and of an intense expressiveness. Enter Lyrische Symphonie, which premiered in 1923. Like Mahler before him, Zemlinsky looked to the farther East for inspiration, and used texts by nobel prize laureate Rabindranath Tagore for his work. Here is a rather impressive performance that also has an actual concert video. It says something about the relative popularity of the work that there is a far greater number of performances that just have a CD cover on display. In a way, that's a shame - the Lyrische Symphonie should definitely be more widely known.

Returning to the top, I'd go to a concert sporting all of these three works any time. It's very unlikely, but I'd probably be in a dream-like state for weeks thereafter.

Tags: music

Elephants, and Emperors

2022-07-09 — Michael Haupt

Sometimes there's an elephant in the room. Sometimes the emperor wears no clothes. And then, sometimes, the elephant in the room wears no clothes, and that's when it's really important to speak up.

That works best when there's psychological safety. In spite of its name, it's not at all a touchy-feely concept: it takes a lot of hard work and courage to achieve, foster, and sustain. It begins with building trust, and involves freeing the workplace of fear.

Psychological safety also has nothing to do with being nice: rather, it's all about being kind when raising concerns and issues. Being nice just leads to tiptoeing around issues (see above about naked elephants) but never resolving them. Being kind, conversely, means that necessary criticism can be brought up, and that it comes from a position of support, not revenge; with a spirit of caring, not blaming; in a culture that makes issues transparent to learn, rather than retaliate.

Tags: work

Programming and the Fine Arts

2022-07-09 — Michael Haupt

There's a certain kind of "strange" programming language that could be called "poetic". This is because programs written in these languages read like texts from altogether unexpected genres.

Expressed in the Shakespeare programming language, for instance, programs read like dramatic plays by a certain famous English poet. And Rockstar makes programs look and feel a lot like heavy metal ballads.

Of course that's all a bit nuts. What's wrong with that? After all, English author Tom Holt, in his novel Flying Dutch, notes that Wagner's opera Der fliegende Holländer is actually part of an accounting software system. (If I recall correctly.)

Tags: music, books, the-nerdy-bit

Look After Yourself First, Then Help Others

2022-07-03 — Michael Haupt

That thing they say on airplanes when they talk about the oxygen masks - first help yourself, then help others - may sound like an invitation to selfishness, but it's actually completely sensible. Without that mask on, I might faint, and couldn't help anyone then. If you don't look after yourself first, you may end up being unavailable for helping others.

The same is true in everyday workplace situations. Caring about one's teams and colleagues is important, and it won't be possible after some point if there's no self care. This little thread on Twitter really hits home on that.

Tags: work

German Humour and Wagner Music

2022-07-03 — Michael Haupt

There is such a thing as German humour, and Loriot defines it. Also, when it comes to "German" music, Wagner is probably on the top ten list of those who define it.

What happens if you combine the two?

You get "Loriot erzählt Richard Wagners Ring des Nibelungen", a collection of musical snippets from the vast 16-hour opera cycle, with the key story line narrated by Loriot in his unmistakeable precise and ever so slightly ironic style. I'm sorry, you need to be able to understand German to appreciate this, but here's a review that also summarises a bit.

It's sad that the 'tubes don't seem to have a trace of this gem, so I advise you to go get a recording and listen to it. Chuckles guaranteed.

Tags: music