You have reached the personal homepage of an entity commonly known as derf / derfnull / Birte Friesel. Hi! 👋
Resources
- Photography
- Projects
- Publications (see also: ESS, ORCID, DBLP, Google Scholar)
- Recipes
- Repositories (partial mirrors: GitHub, Chaosdorf)
- Weblog (Fediverse Microblog: @derf@social.skyshaper.org)
- Whatever
Contact
You can reach me by E-Mail (derf@finalrewind.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 v0.08
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 v6.20
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 v0.07
Travel-Status-DE-DBRIS-0.07.tar.gz (signature)
- New optional recommended module:
GIS::Distance
(forJourney->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 v3.09
Travel-Status-DE-VRR-3.09.tar.gz (signature)
- Trip: Add polyline accessor
Using cryptsetup / LUKS2 on SSHFS images
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 v6.19
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 v0.06
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 v0.06
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 v6.18
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 v0.05
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 v3.08
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 v0.04
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 v0.05
Travel-Status-DE-DBRIS-0.05.tar.gz (signature)
- Journey, Location: Add missing conversions to T
O_JSON
- dbris-m: Fix --json
Travel::Routing::DE::DBRIS v0.03
Travel-Routing-DE-DBRIS-0.03.tar.gz (signature)
- Connection: Add
is_cancelled
,is_unscheduled
,is_unlikely
accessors - Segment: Add
is_unlikely
andtransfer_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 v0.04
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