dark mode

You have reached the personal homepage of an on-line entity known as derf / derfnull. Hi! 👋


I enjoy doing things and post some of them on this website. Things may include taking photos, poking at public transit APIs, or putting caffeine into chocolate. Blinkenlights and embedded development are nice, too, though I don't really get around to that anymore.

When it comes to (paid) work, peers usually know me as Birte Friesel. In case you are looking to offer paid work, I also have a small work homepage on this site with a minimal CV and some more details about what I can (and am willing to) do.



You can reach me by E-Mail (d​erf@fina​lr​ewind.org) and on IRC (derf0 @ oftc, hackint). My PGP key for E-Mail encryption is 64FE6EC0 55560F9E F13A3044 19E6E524 EBB177BA. I occasionally post stuff on the Fediverse (@derf@social.skyshaper.org).

The remainder of this page duplicates a curated sub-set of projects and the latest blog entries.


> hafas 'Eichlinghofen H-Bahn, Dortmund' 'Dortmund Hbf'

00:15        Schw-B HB5  (0:03)  S 1

Schw-B HB5 → Universität S-Bahnhof, Dortmund
21:51  ab  Eichlinghofen H-Bahn, Dortmund
21:55  an  Universität S-Bahnhof, Dortmund

Walk 37m  (approx. 3 minutes)
S 1 → Dortmund Hbf
21:58  ab  Dortmund Universität: 2
22:06  an  Dortmund Hbf: 4
> efa Essen Martinstr Düsseldorf Hbf
14:34 ab  Essen Martinstr.: Bstg. 1      Straßenbahn 108      Essen Altenessen Bf Schleife
14:38 an  Essen Hauptbahnhof: Bstg. 1

14:47 ab  Essen Hauptbahnhof: 2          R-Bahn RE11 (RRX)    Düsseldorf Hbf
15:24 an  Düsseldorf Hbf: 10
> hafas-m 'Hamburg Dammtor'
14:43  +45  ICE 2922  Hamburg-Altona
15:10       U 1       Ohlstedt, Hamburg
15:10  +4   Bus 112   Osterbrookplatz, Hamburg
15:10       NBE RB61  Itzehoe
> db-iris 'Dortmund Hbf'
14:38 +16  IC 2027     Passau Hbf            11
14:39      ABR RE11    Kassel-Wilhelmshöhe   8
14:41      RE 57       Winterberg(Westf)     2
└────      RE 57       Brilon Wald           2
14:41      S 5         Hagen Hbf             5
14:42      S 2         Dortmund Hbf          6
14:45 +1   RE 1        Aachen Hbf            16


Travel-Status-DE-IRIS-1.95.tar.gz (signature)

  • Update qos/delay message texts

Travel-Status-DE-DeutscheBahn-5.05.tar.gz (signature)

  • ÖBB backend: handle midnight crossing and fix associated warnings (patch by Cassidy Dingenskirchen)
  • ÖBB backend: adjust request version to fix backend errors with certain trains (patch by Cassidy Dingenskirchen)

Travel-Status-DE-IRIS-1.94.tar.gz (signature)

  • Update stations list
  • Do not use now-deprecated smartmatch features

Travel-Status-DE-DeutscheBahn-5.04.tar.gz (signature)

  • Journey: Add is_additional accessor
  • Stop: Add is_additional accessor

Travel-Status-DE-DeutscheBahn-5.03.tar.gz (signature)

  • Journey: Fix route_interesting accessor (broken by 5.00)

Travel-Status-DE-DeutscheBahn-5.02.tar.gz (signature)

  • Fix calls to $journey->route crashing in handle_day_change or add_message in some circumstances if the $hafas object that created $journey has gone out of scope (and become eligible for garbage collection) in the meantime. The culprit was a mis-application of weaken() introduced in v5.01.
  • hafas-m: Add -v/--via option

Travel-Status-DE-IRIS-1.92.tar.gz (signature)

  • Update meta database (accidentally omitted in 1.91)

Travel-Routing-DE-HAFAS-0.03.tar.gz (signature)

  • hafas: Add --depart and -a / --arrive options
  • HAFAS->new: Add arrival option

Travel-Status-DE-IRIS-1.91.tar.gz (signature)

  • Update stations list. Frohes neues Fahrplanjahr.

Travel-Status-DE-VRR-2.00.tar.gz (signature)

  • New dependency: DateTime
  • Result: Add datetime, sched_datetime, rt_datetime accessors.
  • Result: Remove date, time, sched_date, sched_time accessors. Use datetime->strftime('%H:%M') etc. instead. (BREAKING CHANGE)
  • Stop: Add arr, dep accessors.
  • Stop: Remove arr_date, arr_time, dep_date, dep_time accessors. Use arr->strftime('%d.%m.%Y') etc. instead. (BREAKING CHANGE)
  • efa-m: Remove --track-via option, its behaviour is now included in --via (BREAKING CHANGE)

Travel-Status-DE-VRR-1.24.tar.gz (signature)

  • EFA: Fix full_route creating route elements with invalid data
  • efa-m: Fix -v / -V (as a consequence of the fix above)

Travel-Routing-DE-HAFAS-0.02.tar.gz (signature)

  • hafas: Add -f / --full-route option
  • hafas: Fix -vv / -vvv support
  • Use Travel::Status::DE::HAFAS::Location for location data
  • Remove Travel::Routing::DE::HAFAS::Location
  • Use Travel::Status::DE::HAFAS::Journey for journey data
  • Section: add load accessor
  • Section: add journey accessor
  • Section: remove operator, id, name, category, category_long, class, number, line, line_no, delay, direction accessors. Use journey->operator, journey->id, etc. instead.

Travel-Status-DE-DeutscheBahn-5.01.tar.gz (signature)

  • Fix incorrect handling of HIM messages (introduced in 4.19)
  • hafas-m: Declutter station board output: sort by real-time data and show all messages at the end
  • Journey: Support construction from JSON that does not provide a date attribute (i.e., add date parameter to constructor)
  • Stop: Add messages accessor

Travel-Status-DE-VRR-1.23.tar.gz (signature)

  • efa-m: Do not show free-text messages by default. Use the newly introduced -Om option to show them
  • efa-m: Show real-time departure rather than scheduled time + delay
  • Result: Add train_type and train_name accessors