Skip to content

2025‐10‐14 Faery

Alexandre Marcireau edited this page Oct 14, 2025 · 6 revisions

Hacking hours 2025-10-14: adding Rosbag support to Faery

Web: https://github.com/neuromorphicsystems/neuromorphic-drivers Expert: https://github.com/amarcireau

Script (in minutes)

Roles: Alexandre develops, Jens asks questions

  • 00:00 - 05:00: Introduce the project and motivate the video
  • 05:00 - 10:00: Pick an issue, decompose tasks, write them down (keep in a separate window?)
  • 10:00 - 15:00: Clone the project, open an editor and
  • 15:00 - 45:00: Go through the tasks
  • 45:00 - 50:00: Commit, push, and start a PR
  • 50:00 - 55:00: Explain CI and look at the CI results
  • 55:00 - 60:00: Jens reviews, we discuss the PR process Alexandre merges

What is Faery?

TL;DR: GStreamer for events.

  • Inclusive event file conversions
  • Streamy Tonic (basic event stream transformations)
  • Renders (PNG frames / mp4 videos)
  • Other event-stream "visualisations" (event rate, spectrogram...)
  • Real-time visualiser
  • Real-time camera interface

Today's plan

Add Rosbag (https://wiki.ros.org/rosbag) support to Faery since this format is used by many datasets (for instance UZH FPV dataset - https://fpv.ifi.uzh.ch/datasets/).

Dependencies and Python: a match made in hell

faery == 0.7.0
    robags == 0.10.11
        | lz4 (actual 4.4.4)
        | numpy (actual 2.3.3)
        | ruamel.yaml (actual 0.18.15)
            | ruamel.yaml.clib >= 0.2.7 (actual 0.2.14)
        | typing_extensions >= 4.5 (actual 4.15.0)
        | zstandard (actual: 0.25.0)

Python does not support multiple versions of the same library in a given project.

Python does not have lock files (by default).

  • Dependencies versions conflicts
  • Compatibility issues due to under-specified transitive dependencies
  • Supply chain attacks using under-specified transitive dependencies

Transitive deps issues addressed by:

  • pip freeze (creates a fully specified requirements.txt file) but pip freeze is not (by default) compatible with pyproject.toml
  • lock files (poetry.lock, uv.lock), but these solutions are not standard yet

Anatomy of the coolest Python package

  • A lot of Python files
  • A (few) big .so (shared object) files (aka DLLs) - compiled C/C++

_core/_multiarray_umath.cpython-313-darwin.so: 3.3M

Faery's anatomy

Python wherever possible (without dependencies besides numpy), Rust (ie C++ done right) everywhere else.