~derf
dark mode

Hi!

This is the personal homepage of Daniel Friesel / derf / derfnull (depending on context and nickname availability). Every now and then, I write software and take pictures, which you can find here. There's also some hosted services.

Services

bimzfinder.de
Daily list of IC trains with Bimz wagons
bimzfinder
genregenerator.de
Provides random music genres
Listen to Symphonic Punk

Projects

Software

App::Raps2 v0.54
CLI password safe
Travel::Routing::DE::VRR v2.19
Interface to EFA-based itinerary services
> 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
Travel::Status::DE::DBWagenreihung v0.03
Interface to Deutsche Bahn Wagon Order API
> db-wagenreihung 'Essen Hbf' 723
▏      G       ▕▏    F    ▕▏    E     ▕▏   D    ▕▏    C    ▕▏    B    ▕▏             A             ▕
     >  39   38    37   36   35   33   32   31    29   28   27   26   25    23   22   21 >
Travel::Status::DE::DeutscheBahn v3.01
Interface to HAFAS-based arrival/departure monitors
> hafas-m 'Messegelände, Leipzig'
14:32    STR   16  Lößnig, Leipzig
14:40    STR   16  Sportforum Süd, Leipzig
14:43    ALT   86  S-Bahnhof Messe, Leipzig
14:47    STR   16  Lößnig, Leipzig
> 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
> ura-m Talbot
14:49:41  52    Aachen Bushof
15:04:47  11    Lichtenbusch
15:05:00  52    Eschweiler Bushof
15:18:00  1     Aachen Bushof
15:19:56  11    Hoengen Markt
15:35:00  1     Schevenhütte
Travel::Status::DE::VRR v1.17
Interface to EFA-based departure monitors
> efa-m Dortmund 'Universität S'
08:32  +1  02  445    Dortmund Am Kai
08:35      3   HB1    Dortmund Technologiezentrum
08:36      3   HB1    Dortmund Eichlinghofen H-Bahn
08:38      02  447    Dortmund Bandelstraße
08:39      2   S1     Dortmund Hbf
08:40      01  447    Dortmund Hacheney
> ct a mutt
mutt: retrieving package
Cloning into 'mutt'...
[..]
created   .muttrc         -> /home/derf/packages/mutt/etc/muttrc
> ekgping ccc.de
__________^________^__________^________^______

Firmware and Hardware

Blinkencat
RGB cat moodlight
TODO!
MicroMoody
I²C moodlight
TODO!
VUSB-I²C v0.02
USB ↔ I²C adapter

Obsolete

These projects are neither developed nor maintained any more. Some do offer basic functionality, though.

App::Slackeria v0.12
Project status overview

News

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

  • Work around (probably incorrect) IRIS coupling of Norddeich and Norddeich Mole stations

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

  • Fix support for ÖBB and other backends which recently switched from two- to four-digit years

The build instructions on the sigrok Wiki only work for Python2, which is past its end of life date. To build libsigrok with Python bindings for Python3, you need to set PYTHON=python3 when running configure.

The dependency list is also slightly different:

sudo apt-get install git-core gcc g++ make autoconf autoconf-archive \
  automake libtool pkg-config libglib2.0-dev libglibmm-2.4-dev libzip-dev \
  libusb-1.0-0-dev libftdi1-dev check doxygen python3-numpy \
  python3-dev python-gi-dev python3-setuptools swig default-jdk

"python-gi-dev" is not a typo -- the package covers both Python2 and Python3.

Side note: Installing libserialport-dev instead of building your own version as documented on the Wiki seems to work fine.

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

  • Result: The date, datetime, and time accessors now report realtime data if available
  • Result: Add sched_date, sched_datetime, and sched_time accessors for schedule data

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

  • Document LWP::Protocol::https dependency
  • Discourage building with Geo::Distance 0.21. Geo::Distance 0.21, released on 7 Mar 2019, is the only release using GIS::Distance's distance_km method -- which was removed on 9 Mar 2019 in GIS::Distance 0.14

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

  • Document LWP::Protocol::https dependency
  • Remove BVG (Berliner Verkehrsgesellschaft) and SBB (Schweizerische Bundesbahnen) services

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

  • Add MVV (Münchner Verkehrs- und Tarifverbund) and VAG (Freiburger Verkehrs AG) services
  • Fix encoding when using VOR or LinzAG services

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

  • Switch from WTFPL to Perl license (GPL 1+ or Artistic)
  • Update VVO (Verkehrsverbund Oberelbe), VMV (Verkehrsgesellschaft Mecklenburg-Vorpommern) and VGN (Verkehrsverbund Grossraum Nürnberg) EFA urls
  • Add VAG (Freiburger Verkehrs AG), MVV (Münchner Verkehrs- und Tarifverbund), NVBW (Nahverkehrsgesellschaft Baden-Württemberg) services
  • Re-add Verbundlinie (Verkehrsverbund Steiermark) service
  • Remove IVB (Innsbrucker Verkehrsbetriebe) and VRNdelfi services as they are no longer available

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

  • Use HTTPS for DING, VOR, LinzAG, VGN, VRR, VRR2, VVS, NVBW, KVV and BSVG services
  • Update VGN, VVO, VMV and KVV service URLs
  • Remove IVB, VVV and VRNdelfi services
  • Re-add Verbundlinie service

A .deb package is an easy solution for distributing Perl modules to Debian-based systems. Unlike manual installation using Module::Build, it does not require re-installation whenever the perl minor version changes. Unlike project-specific cpanm or carton setups, the module is available system-wide and can easily be used in random Perl scripts which are not bound to a project repository.

The Debian package dh-make-perl (also known as cpan2deb) does a good job here. In many cases, creating a personal package for a Perl module is as easy as cpan2deb Acme::Octarine. Delegating the build process to Docker may be useful if you do not have a Debian build host available and would rather avoid having the build process depend on the (probably not well-defined) state of your dev machine.

For CPAN modules, all you need is a Debian container with dh-make-perl. Using this container, run cpan2deb and extract the resulting .deb. You can find a Dockerfile and some scripts for this task in my docker-dh-make-perl repository. The Dockerfile is used to create a dh-make-perl image (so you don't need to install dh-make-perl in a fresh Debian image whenever you build a module). scripts/makedeb-docker-helper builds the package inside the container and copies it to the out/ directory, and scripts/makedeb-docker orchestrates the process.

Note: A package generated this way is suitable for personal use. It is not fit for inclusion in the Debian package repository. As all Debian packages must have an author, you need to set the DEBEMAIL and DEBFULLNAME environment variables to appropriate values. Feel free to extend the Dockerfile and scripts as you see fit – the repository is meant to provide a starting point only.

For non-CPAN content (e.g. if you are a module author and do not want to wait for your freshly uploaded release to appear on CPAN, or if you need to build a patched version of a CPAN module), the process is slightly more involvevd. It requires

  • additional bind mounts (docker run -v "${PWD}:/orig:ro") to copy the module content into the container,
  • a manually provided version (in my case via git describe --dirty), and
  • disabling module signing (unless you pass your GPG keyring to the container).

I also manually specify the packages needed for building and testing. I assume that this is not needed and can be performed automatically by dh-make-perl --install-deps --install-build-deps.

Module content and versioning depends on your setup, so I will not provide a git repository for this case. Please refer to the makedeb-docker and makedeb-docker-helper scripts in Travel::Routing::DE::VRR, Travel::Status::DE::IRIS and Travel::Status::DE::VRR for examples.

Travel-Status-DE-DBWagenreihung-0.03.tar.gz (signature)

  • Wagenreihung: Add train_powertype function
  • Wagon: Add train_no and uic_id accessors

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

  • Add delay code 67 (Behördliche Anordnung). Patch by @marudor

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

  • Provide properly versioned Stations.pm file

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

  • db-iris: Correctly set cache expiry. In 1.42, backend replies were cached indefinitely due to a typo

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

  • Result: Fix TO_JSON method
  • db-iris: Cache backend results by default
  • db-iris: New options: --json and --no-cache

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

  • Result: Add wing_of accessor
  • Follow name and DS100 change of Freiburg West (RFW) to Freiburg-Landwasser (RFLW)
  • Add more stations

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

  • Incorporate the last few years' worth of station name changes

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

  • Add missing geocoordinates to nearly all remaining stations (thanks to @marudor)
  • Add stations opened this year (thanks to @marudor)

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

  • Add geocoordinates for belgian stations (patch by @Knuspel)
  • New IRIS option: keep_transfers