Projects, Interests and Initiatives
My contributions to open source software have been somewhat dwarfed by my recent research into material related to the Russian invasion of Ukraine. This research can be found at the Ukraine War project page.
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.
Projects & Contributions
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.
In regognition of my contributions, Sony named me "Hero Developer" in 2019.
Visit my Mobile Projects page to learn more about AOSP, SailfishOS, LineageOS and other facets of my work.
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.
Reworked the styling in Feb of 2020 to use stronger colours coupled with better typography, see Stream rework.
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:- ansible-role-seafile: Update for ansible 2.x
- ansible-role-seafile: Update to version 6.3.2
python django file-synchronization
Ansible Roles
Created and improved lots of roles for use with the Ansible automation tool.
…and many more!
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.
- picard-plugins: Add plugin tangoinfo
- picard-plugins: Re-add tangoinfo plugin
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
Dark Mode rework
Reworked most of my pages to work with a system-wide dark theme.
See Dark Mode rework.
css
NeoVim
I of course use Vim, NeoVim to be exact, as my day-to-day file editor. My configuration is available at dotnvim to enjoy.
Also contributed to a few plugins:
- vim-ags: Add async stop control
- vim-ale: Allow custom executable for ansible linters
w0rp's Asynchronous Lint Engine, ALE for short, is a great tool for vim autocompletion, error highlighting and automatic linting.vim neovim plugin
Rview
An Android app to interact with Gerrit code review servers.
Upstream: rview.
I added a few small improvements and made the app more friendly for freedom-minded people.
- styles: Switch AppTheme to MaterialComponents
- AndroidManifest.xml: allowBackup=true
- Add fastlane metadata for F-Droid
I also packaged the app for listing on the F-Droid app catalog, see New app: Rview 1 2.
android code-review
Other Contributions and Projects
- flask-admin: Prevent escape key from confirming deletions
- flask-admin: Demo of tagging functionality, an often-requested functionality
- NewPipe: Downloader: Deleter: Dismiss previous Snackbars
- Dark Mode Toggle WebExtension demo (use website-dark-mode-switcher instead)
misc
Running Services
I like small and self-sufficient over large and centralized, that's why I host my own services.
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, used for comment areas under my statically generated sites, for example here.
Website: posativ.org/isso - Development at github.com/posativ/isso
Own upstream commits:- html: Add markdown render flags option
- admin: Set default order_by to 'created'
- Improve docs, cleanup, align with current version
- docs: Add 'Testing' section
- Makefile, docs: Align with changes to npm handling
- Swap node-sass for sassc, mention in docs
- share: isso.conf: Use dashed-case for misaka 2.0
- Serve isso.css separately instead of inline
- utils: Improve cookie SameSite/secure handling
- docs: install: Reorder Install from source, py3.5
- Remove legacy werkzeug support
- Use pre for comments in admin area
- utils: html: Normalize misaka extensions
As of late 2021, I've become a maintainer of isso! I've managed to close over 40 issues and helped rejuvenate the project, encouraged more active contributors and steered the development towards more modern practices, including automation.
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
Telegram bots
Telegram, while proprietary, has somehow managed to provide a great platform for developers.
Together with another developer, I run a small bot that trawls a specific news site, extracts information and posts it to a channel. I have written a bit about it at The joy of Telegram bots.
Source: sonybot, deployed via ansible of course.
python bot
zulip
Team chat solution. Lightweight, productivity-enhancing threading model, mobile apps available. Fully open source and way faster than Slack.
Upstream: 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.
static site generator python markdown
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 best 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.