Family Recipe: Pumpkin Soup 

Serves 3-4, as a lunch or light dinner.


  • 1 Pumpkin, roughly 1.2 kg
  • 300 g Potatoes
  • 1 Onion
  • 2 tbsp Oil
  • 1/2 l Vegetable Broth
  • 100 ml Cream
  • Salt, Pepper, Cumin
  • 1 Bundle of Chives
  • (Toasted Bread Cubes)


  • Peel and dice pumpkin and potatoes
  • Peel onion, cut, braise lightly in hot oil
  • Add pumpkin and potatoes
  • Add broth and cook for 20 minutes
  • Purée the soup
  • Add cream, bring to a boil again
  • Add salt, pepper, cumin to taste
  • Cut chives into rolls, use to decorate together with bread cubes

Fixing stuff, once again: Bike and sink drain 

Had to fix my bike and the sink in the bathroom today.

I used to just walk into a store and explain what I need in vague terms and wild pantomime to a guy until he went "Ah, yeah what you need is called Röhrensiphon, here's ten different models", proceeded to reveal their pros and cons and gave DIY mounting advice.

As opposed to that, trying to type "thing which connects sink to wall" into a hardware store's online search mask is a significant challenge for me. Hence my motivation to write down the correct technical terms. Since I also keep forgetting the measurements, here goes.

Bike tire measurements for my mountain bike: 26x1.75, i.e. 26" diameter by 1.75" width, which translates into ETRO 47x559, meaning 47mm width by 559mm diameter.
(Imperial and metric standard phrases switch up whether diameter or width come first. Ugh. At least it's all written on the tire itself.)

Don't forget to mount in the correct direction, it'll say ROTATION or DRIVE with an arrow symbol. Also don't lose track of any shims (ring washers) that might drop onto the floor during disassembly.

Sink drainage (Röhrensiphon): The important measurements are diameter in inch for the plunger connector(?) which plugs into the sink itself, and diameter in cm for the end which plugs into the wall (needs a different kind of large seal called Muffendichtung). 1.25" and 1.5" seem the only common measurements sold, but they're written as 1 1/2" and 1 1/4" respectively. Outlet diameter for bathroom sinks is either 30cm or 32cm, with 32cm the most common.

For the bathroom sink, I need 1 1/4" by 32cm. While you're at it, also swap out the gaskets (rubber seals) for new ones since rubber tends to get porous.

See also Nate Steiner's neat post on house maintenance - he's an XXIIVV webring participant as well.


Spring Cleaning Pt. 2 

Continuing my weirdly energetic current phase, I've gone ahead and painted about 50sqm of apartment walls (with a lot of skilled help). For the first time in my life, my table cloths are ironed. Come to think of it, I hadn't even owned proper table cloths so far. And I'm working through odd law cases of my own volition.

Felix, what in the world has gotten into you?


Spring Cleaning 

Stuff I did these past weeks, in no particular order:

  • Organized all loose items into drawers and baskets
  • Planted some basil (results pending)
  • Installed new ball-bearing rails on cabinet
  • Built new shelf
  • Fixed a few creaky shelves and tightened pretty much all the screws around the flat
  • Cleaned out kitchen, put pans and cooking utensils on hangers
  • Re-organized my work materials, desk
  • Got new lamps with proper luminance (1500+ lm) & a nicely swiveling desk lamp, installed dimmers
  • Cleaned out the balcony
  • Cleaned out the basement
  • Installed OpenWRT on my router
  • Set up a repeater I had laying around
  • Set up printer for network printing and scanning instead of fumbling with USB cables
  • Decorated living room
  • All in all, sorted out half a metric ton of clutter
  • Re-purposed old wooden plates into wine rack
  • Found a beautiful marble plate that had been tragically misused to elevate a shelf, cleaned it with acetone, used as pedestal for decor items
  • De-iced the freezer
  • Prepared my law books with tabs and markers
  • Went running and lifted weights
  • Learned interior design concepts
  • Learned to pick locks
  • Changed my mobile phone provider
  • Set up more secure authentication for online services and moved off SMS 2FA
  • Installed clothes rails and put more of my clothes on coat hangers
  • Re-arranged bedroom
  • Sorted out used seldomly used clothes and gave them away
  • Baked a great many trays of cookies and sent them to family and friends
  • Disassembled several cupboards and tables I was no longer using

Very cathartic.

While going through all my old stuff, I also realized I:

  • Haven't danced Tango in years
  • Don't do even remotely as much martial arts as I used to
  • Don't care about computers much any more
  • Have dumped a frightening amount of math- and engineering-related knowledge from my brain. How did I ever understand any of these things?
  • Am getting very homely here as opposed to my chaotic years of moving and traveling

There I thought I was just going full Mr. Home Improvement, but ended up realizing a things few about myself.

I still miss my friends. About time this whole situation blows over.


The joy of Telegram bots 

I inherited a simple Telegram bot from someone. The ease of programming these small things really makes programming fun again.

You don't need any more than plain python and the requests module to run it.

The SonyDevWorld bot

While working on the bot, I familiarized myself once again with deploying small isolated services with systemd and it's --user features. Pretty neat.

I also wrote a small ansible role to deploy the bot onto a server.


Toggling dark mode manually via javascript 

Building upon my previous explorations, I wanted to let people without an OS-wide dark-mode toggle try it out themselves directly.

For that, we use the styleSheets.cssRules browser API.

Try it! toggle dark/light

function toggleDark() {
  let stylesheets = document.styleSheets;
  for (let sheet of stylesheets) {
    try {
      ruleList = sheet.cssRules;
      if (ruleList == undefined) {
    } catch (e) {
      // Catch CORS denials and skip stylesheet
    let dark = "(prefers-color-scheme: dark)"
    let light = "(prefers-color-scheme: light)"
    for (let rule of ruleList) {
      /* type 4 == CSSMediaRule */
      if (rule.type !== 4) {
      let text =;
      if (text.slice(0, 22) == "(prefers-color-scheme:") { == dark ?
 = light :
 = dark

Caveat: If testing this on local file:// URIs, CORS will bite you, either on Chrome or FF. On FF, at least you can remedy this by setting privacy.file_unique_origin=false in about:config. See CVE-2019-11730.

For Firefox, you'd be better off installing the website-dark-mode-switcher add-on instead.


Dark Mode all the things!

I've recently reworked a whole lot of my pages to work with prefers-color-scheme. Not nearly as much work as I'd thought, lots of fun and the results look stunning.

See Dark Mode rework for details.


Climbing knots 

Posting this mainly so I don't forget myself. In German, because that's the way I learnt it.


  • Ankerstich, Prussig, Doppelter Prussig
  • Mastwurf
  • Halbmastwurf
  • Halfmastwurf mit Sicherungsschlag -> "Halbmastwurf is never alone!"
  • Achter
  • Sackstich (Hausfrauenknoten)


  • Use eight-knot for securing to lap belt
  • Use Halbmastwurf for belaying when securing a climber, keep end of rope (upwards?)
  • Must be clipped in at the top with two counter-facing carabiners when rappelling
  • When climbing along a rope course, have your two carabiners always clipped into opposite directions


  • Have ready: Two carabiners at the ends of your "tentacles"
  • Eighter metal piece for rappelling
  • Prussig, at the back
  • Using upper body strap, not lower


  • Connect two ropes by weaving an eighter from both sides, it's the most practical that way

See also: VDiff climbing



Man, does it feel great to run. I hadn't previously run more than five kilometers at a time regularly, but now I don't feel like I've even accomplished the bare minimum if I don't break ten. At some point, you don't even need music in your ears to keep you going, you just enter deeper into the zone.

Yes, this entry is pretty braggadocious. I felt the need to write it down nonetheless.