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.

At work, I research performance modeling and performance-aware configuration methods for software and hardware product lines, currently with a focus on disruptive memory technologies. Please refer to my professional website for details.



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). Outside of the internet, there is a good chance of finding me at the Chaosdorf Häkelspace hackspace.

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

Travel-Routing-DE-VRR-2.24.tar.gz (signature)

  • efa: Make output less horizontally dense; show arrival and departure delays in-line
  • EFA::Route::Part: Add arrival_delay and departure_delay accessors
  • EFA::Route::Part: via: Add delay field to returned list refs

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

  • hafas-m: Add --raw-json option (useful for HAFAS client development)
  • hafas-m: Add train search support, e.g. "hafas-m '!EC 6'"
  • HAFAS->new, HAFAS->new_p: Add journeyMatch flag
  • Add Travel::Status::DE::HAFAS::Location module
  • HAFAS::Stop: Fix some documented accessors not being provided by the module
  • HAFAS::Stop: Add "loc" accessor that returns the corresponding Location instance
  • HAFAS::Stop: Breaking change: The "eva", "name", "lat", "lon", "distance_m", and "weight" accessors are no longer supported. Use the (identically named) Location accessors instead, i.e., $stop->loc->name instead of $stop->name, etc.

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

  • Initial release
  • Supports itinerary queries using Deutschen Bahn's mgate.exe interface
  • No stable API yet

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

  • hafas-m: Fall back to locationSearch if StopFinder is unavailable
  • Message: Expose message type; document ->code and ->type accessors

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

  • Allow HAFAS and hafas-m users to specify the backend language
  • Update services list to include known language specifiers
  • hafas-m: Add -l / --language option
  • HAFAS->new, ->new_p: Add language option

Travel-Routing-DE-VRR-2.23.tar.gz (signature)

  • Update default API endpoint as the previously used efa.vrr.de/vrr seems to be gone for good
  • Rename VRR2 API to VRR and VRR3 to VRR2

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

  • Update stations list
  • Result: weaken (circular) wing references
  • Result: include arrival_wings departure_wings replaced_by replacement_for in TO_JSON

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

  • Journey: Fix date parser for cross-midnight journeys that start on the 1st through 9th day of a month.