Felix Elsner

Projects, Interests and Initiatives

I've compiled a small list of my contributions below to give you an idea of what a hobbyist developer might be working on.

I like coordinating with others, distributing work and responsibilities, testing and tinkering, setting up build systems and building new tools where needed.

Own Projects

Android Work

Working on Android projects is an interesting endeavour spanning many technologies, companies, people and languages.

My focus lies on the Sony Xperia line of devices. I am not as active in that area as I used to be, but still maintain builds for the Xperia XZ.

In regognition of my contributions, Sony named me "Hero Developer" in 2019.

AOSP is one facet of my work; for more about SailfishOS, LineageOS and more, visit the Android subpage.

tango interface

Video management and annotation interface, conceived to augment Argentine Tango lessons and practice.

I used to dance myself and created this tool for noting down lessons, concepts and inspiration, intersecting the visual with the textual.

See this more detailed page showing its use: tango interface page.

If you know the password, you can also view an exported static archive at tango.ix5.org

flask-admin jinja2 misaka youtube-dl

sleek-tern

Theme for the static site generator pelican, available at git.ix5.org. Supports lots of plugins and customization options. Nice typography, sleek and elegant.

Although the generated site is static, comments are available via a custom isso instance, see further down below.

Used for my "thoughts" section.

pelican python jinja2

sixfive

My own small blogging engine. Running at ix5.org/stream. If I had a twitter, that's what I'd post there.

Source unavailable, but it is very unremarkable. Using flask-admin for editing and frozen-flask for creating a static version to upload and serve with nginx.

flask-admin jinja2 misaka

FachschaftW Homepage

I re-launched the homepage of my old student union "Fachschaft W" with a custom-written theme "fsw", including updated German translations, auto-updating configuration, custom plugins, auto-backups, live monitoring.

Using PHP and SASS, a CSS preprocessor.

Also overhauled the hosting from the last solution and saved a good bit of dough…

wordpress sass css

FachschaftW Wiki

Created and wrote the initial articles for the FachschaftW Wiki, based on MediaWiki. Used for knowledge management, a passion of mine.

Running Visual Editor with parsoid instance to allow easier editing for all members.

mediawiki php

Member Cloud

Created the FachschaftsCloud (internal), based on Seafile. Used for file revisioning, GDPR compliant. Supports team integration tools, configured automatic deduplicated backups.

Upstream commits:

python django file-synchronization

Ansible Roles

Created and improved lots of roles for use with the Ansible automation tool.

…and many more! Some below:

automation python ansible

MusicBrainz Picard Plugin

Created a plugin to get metadata from tango.info for the music tagging editor MusicBrainz Picard, available at the plugins site.

This was my introduction to cleaner python code and team code review. Having your changes scrutinized can seem like a blow at first, but then you realize what a great favour you're being done by having people give feedback and teach you.

python picard

Other Contributions

misc

Running Services

I like small and self-sufficient over large and centralized, that's why I host my own services. Having a single source of authority that is beholden to a single country’s interests is not the right fit for other parts of the world. I can’t imagine turning away Russian or Chinese friends on the whims of jingoist policies.

gitea

Self-hosted git service. Upstream: gitea.io. My own instance is available at git.ix5.org.

GitHub is great for attracting contributors, but having a gatekeeper has too many downsides. Bit ironic that most of the links on this page point to GitHub…

self-hosted go git

isso

Self-hosted commenting service.
Upstream: posativ.org/isso.

I like commento.io, but it's a bit too heavy and requires PostgreSQL. Isso is lightweight and easy to adapt to one’s needs.

Own upstream commits:

self-hosted python

syncthing

Self-hosted file syncing service.
Upstream: syncthing.net.

I run my own discovery server and provide bandwidth for other users and businesses via my own relay server, see the list on relays.syncthing.net.

self-hosted go file-synchronization

zulip

Team chat solution. Lightweight, productivity-enhancing threading model, mobile apps available. Fully open source and way faster than Slack. Available at zulipchat.com.

I run a small instance for an internal development team.

python self-hosted

Pelican

Used for my "thoughts" blog with the sleek-tern theme.
Upstream: pelican.

Own upstream commits:

static site generator python markdown

Hugo

Using own forked jeblister/kube theme.

Used for Sony Xperia corner documentation.

static site generator go markdown

Sphinx

Using a custom theme.
Upstream: sphinx-doc.org

Used for foresail documentation.

documentation python reST

goaccess

Privacy-friendly log analyzer, available at goaccess.io.

No need to place javascript on websites when nginx logs already give you plenty of information.

go self-hosted

funkwhale

Federated audio server, nice to share music and playlist with friends.
Upstream: funkwhale.audio.

The federated model allows you to share music with other instance owners, building a mutual catalog and discover great new music. Music streaming services like Spotify with their pointless restrictions are a spit in the face of our arts and culture.

The open governance model ensures this project will last. This is what happens when people are doing things the right way.

No version hosted by me any more, but still a nice project.

python self-hosted

Closing

Contributing to varied projects will teach you the ins and outs of collaborative development. You will learn to write good code, write even better commit messages, test your code before submission, keep an eye on maintainability, and all the while gain insights into team dynamics and the inevitable politics that permeate even declaredly nonpolitical groups. Fun stuff!

Of course, this isn't for everyone. This type of commitment will require time - or more accurately, the (financial) freedom and willingness to devote sufficient amounts of it - while not aligning with your interests. There are lots of other ways to improve the world apart from implementing yet another version of The Same Thing. I have chosen this "hobby" as part of my portfolio of interests, but realize that it by far shouldn't be the only one.