~derf

You have reached the personal homepage of an entity commonly known as derf / derfnull / Birte Friesel. Hi! 👋

Resources

Contact

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.

Projects

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

19.01. 16:51  (00:21)  17:12   .  Bus  S

Bus 440 → Oespel S-Bahnhof, Dortmund
16:51 (+1)  ab  Eichlinghofen H-Bahn, Dortmund
16:56 (+1)  an  Oespel S-Bahnhof, Dortmund

Fußweg 46m  (≈ 3 min.)
S 1 → Dortmund Hbf   .
17:01 (+5)  ab  Dortmund-Oespel  2
17:12 (+2)  an  Dortmund Hbf  7
> 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
> dbris-m 'Bochum Hbf'
06:39  ( +7)   ICE 843                             Berlin Hbf  5
06:39  ( +7)   ICE 853                             Berlin Hbf  5
06:51  (+19)       S 1                              Essen Hbf  7
06:37  ( +1)   ICE 527                            München Hbf  3
Zug fährt abweichend mit nur einem Zugteil. Die Wagen 31 - 39 entfallen.
> hafas-m 'Hamburg Dammtor'
13:49  ( +1)  RE 7     Flensburg                  3
13:49  ( +1)  RE 7     Kiel Hbf                   3
13:49         S 5      Buxtehude                  2
13:50  ( +4)  Bus 5    Nedderfeld, Hamburg
13:50         U 1      Ohlstedt, Hamburg
> efa-m -s VVO Dresden Hbf
13:40 ( -2)  5      66           Lockwitz
13:41        3      3         .  Wilder Mann
13:44        4      3         .  Coschütz
13:44        6      66           Freital-Deuben
13:46 ( +4)  6      360          Kurort Altenberg Bahnhof
13:46        5      360          Dresden Ammonstraße / Budapester Straße
13:48 ( +1)  1      7         *  Weixdorf
13:51        1      10        .  Tolkewitz
13:52        Gl.10  RE3          Hof Hbf

News

Travel-Status-DE-DBRIS-0.08.tar.gz (signature)

  • Journey: Add id accessor
  • Journey: Retrieve train/line number from journey ID if it is not provided by the API

Travel-Status-DE-HAFAS-6.20.tar.gz (signature)

  • hafas-m: Change default service to ÖBB
  • hafas-m: Add --with-polyline option
  • Disable certificate verification for KVB HAFAS service when using the new_p constructor (see 6.19)

Travel-Status-DE-DBRIS-0.07.tar.gz (signature)

  • New optional recommended module: GIS::Distance (for Journey->polyline)
  • Location: Extract lat/lon from location ID, if needed
  • Journey: Add polyline accessor; enhance it if GIS::Distance is available
  • Journey: Add type, number accessors
  • dbris-m: Add --with-polyline option

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

  • Trip: Add polyline accessor

Occasionally, I need to open remote LUKS2 images (i.e., files) that I access via SSHFS. This used to work just fine: mount an sshfs, run cryptsetup luksOpen and access the underlying filesystem. However, a recent cryptsetup upgrade introduced (or changed?) its locking mechanism. Now, before opening an image file, it tries to aqcuire a read lock, which will fail with ENOSYS (Function not implemented) on sshfs mountpoints. This, in turn, causes cryptsetup to report "Failed to acquire read lock on device" and "Device ... is not a valid LUKS device.".

There doesn't seem to be a simple way of disabling this (admittedly, in 99% of cases desirable) feature, so for now I'm working around it by just having flock always return success, thanks to the magic of LD_PRELOAD and a flock stub:

#include <sys/file.h>

int flock(int fd, int operation)
{
    return 0;
}

Compile as follows:

> ${CC} -O2 -Wall -fPIC -c -o ignoreflock.o ignoreflock.c
> ${CC} -fPIC -O2 -Wall -shared -Wl,-soname,ignoreflock.so.0 -o ignoreflock.so.0 ignoreflock.o -ldl

And then call LD_PRELOAD=..../ignoreflock.so.0 cryptsetup luksOpen ... (or sudo env LD_PRELOAD=..../ignoreflock.so.0 cryptsetup luksOpen ...). ignoreflock provides a handy stub, Makefile and wrapper script for this.

Travel-Status-DE-HAFAS-6.19.tar.gz (signature)

  • Remove VRN HAFAS service (discontinued, returns HTTP 403 Forbidden)
  • Disable certiicate verification for KVB HAFAS service (they bodged their certificate renewal)

Travel-Status-DE-DBRIS-0.06.tar.gz (signature)

  • DBRIS: Fix new_p constructor
  • JourneyAtStop->via: return list, not arrayref
  • dbris-m: support raw station IDs as input

Travel-Routing-DE-DBRIS-0.06.tar.gz (signature)

  • Handle gzip-compressed bahn.de responses -- older versions of this module no longer work

Travel-Status-DE-HAFAS-6.18.tar.gz (signature)

  • Add PKP service. Note that it is GeoIP-locked to "probably Polish" IP addresses. Set HAFAS_PROXY_PKP to a suitable proxy address to work around this, if needed.

Travel-Routing-DE-DBRIS-0.05.tar.gz (signature)

  • dbris: Bump dependency version to really fix --json
  • dbris: Handle segments without duration

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

  • EFA->new_p: Return $efa instance in rejected promise if it was rejected after parsing (e.g. due to ambiguous name/place parameter)

Travel-Routing-DE-DBRIS-0.04.tar.gz (signature)

  • Connection, Segment: TO_JSON: convert DateTime and Duration objects
  • dbris: Fix --json
  • dbris: Add -a / --arrival option
  • dbris: Add -o / --with-offers option (work in progress)
  • dbris: Add --with-upsell-offers option

Travel-Status-DE-DBRIS-0.05.tar.gz (signature)

  • Journey, Location: Add missing conversions to TO_JSON
  • dbris-m: Fix --json

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

  • Connection: Add is_cancelled, is_unscheduled, is_unlikely accessors
  • Segment: Add is_unlikely and transfer_duration accessors
  • Parse and expose messages related to connections and connection segments
  • dbris: Indicate connections that include cancelled segments or segments that will likely not be reached due to insufficient layover time
  • dbris: add -j / --with-jid option
  • dbris: add -v / --verbose option

Travel-Status-DE-DBRIS-0.04.tar.gz (signature)

  • Add Travel::Status::DE::DBRIS::Formation and submodules to this distribution (formerly Travel::Status::DE::DBWagenreihung)
  • dbris-m: Run "dbris-m station train_type train_no" to list train details and (if available) carriage formation