I spend quite a lot of time on GitHub or on projects hosted on GitHub. These are my hobby projects, although I use several of them also for work. There is no theme. From time to time an idea comes to me and then I just "see what happens". I have a lot of fun with it. Some projects are more successful than others, and some are much more fully developed than others; surprisingly, success and completeness are not correlated.
I have many hobby projects. Over the years I have developed some habits that reduce the time I need to spend on them. Time spent on project maintenance is time not spent on playing with exciting new ideas and you can surely guess which is my preference.
The most important habit is that I don't advertise these projects. The projects are for me first and foremost. I am happy when someone else finds them useful, but that's not the primary goal. Generally speaking, once a project can do the thing I set out to achieve, I tend to avoid adding new features. I do however try to fix bugs and keep the project up to date with changes in the ecosystem.
Secondly, I try to keep dependencies to a minimum. My favorite hobby projects are ones that depend only on the standard library; easier with Python than Rust but my orientation is towards fewer when possible. I am confident that these will work for a long time and with minimal input from me. To be clear, I am not against dependencies! I use many at work and I even wrote a book called "20 Python Libraries You Aren't Using But Should". But for hobby projects, I want to keep the maintenance burden as low as possible.
It isn't only code dependencies you have to worry about: packaging in Python has been constantly shifting sand for many years, release practices keep changing, and even CI also keeps changing every five years or so. Before github actions I used AppVeyor and before that, travis-ci. Once you have a few tens of projects, any small changes you have to do to all of them starts to add up. Over longer timeframes, all external dependencies change so the fewer the better.
Finally, I try to keep the project small in scope, and the code quality high. Quality varies a lot on how long I spend on the idea. I don't always succeed but I try. I write tests, as much as I can, I track coverage, and I try to write detailed documentation. The documentation is especially important because I even need it myself to help remember why I did things a certain way several years ago. Regression tests are very important if you're aiming for long-term reliability.
The list of projects below excludes forks, archived repos, and toy experiments. They are sorted in the following way:
- All projects with more than 10 stars are at the top.
- Projects less than 6 months old are the next group. (You probably don't want to use my older stuff)
- The rest appear below.
Each group is sorted by the number of stars. I don't especially care about stars but they're useful as a proxy for "someone else finds this useful".
This way newer projects can be highlighted above very old projects that might have a couple more stars.
A "run" function for asyncio-based apps that does all the boilerplate.
This project is written in Python. It is 7 years and 3 months years old, and has 445 stars on GitHub. These are the topics associated with this project: async, async-await, asynchronous, asynchronous-tasks, asyncio, asyncio-python
Change conda environments in the Vim editor (with Jedi-vim support)
This project is written in Python. It is 9 years and 11 months years old, and has 111 stars on GitHub. These are the topics associated with this project: conda-env, conda-environment, jedi-vim, python, vim, vim-conda
An easy way to convert a .pyx file into a .pyd file and avoid having to write a setup.py
This project is written in Python. It is 10 years and 6 months years old, and has 96 stars on GitHub. These are the topics associated with this project:
Automatic slots for your Python classes
This project is written in Python. It is 7 years and 3 months years old, and has 63 stars on GitHub. These are the topics associated with this project: efficiency, metaclass, metaprogramming, python, python-3, slots
Static, offline, command-line CLI thesaurus
This project is written in Rust. It is 6 years and 0 months years old, and has 18 stars on GitHub. These are the topics associated with this project: cli-app, language, thesaurus
High-speed physical quantities and dimensions in Python
This project is written in Python. It is 11 years and 7 months years old, and has 15 stars on GitHub. These are the topics associated with this project:
Smart sockets and scalability protocols for messaging network applications
This project is written in Python. It is 6 years and 9 months years old, and has 15 stars on GitHub. These are the topics associated with this project:
itertools (and more-itertools) in the form of function call chaining (fluent interface)
This project is written in Python. It is 4 years and 11 months years old, and has 14 stars on GitHub. These are the topics associated with this project: chainable-methods, fluent-interface, itertools, itertools-library, pipeline-processor
Download and sync new releases of single-file binaries from Github Releases and other sites
This project is written in Rust. It is 4 years and 4 months years old, and has 14 stars on GitHub. These are the topics associated with this project: binaries, cli, package-manager, sync
A Python Process Pool Executor implementation that is harder to break
This project is written in Python. It is 2 years and 4 months years old, and has 14 stars on GitHub. These are the topics associated with this project: concurrent-futures, executor, multiprocessing, process-pool, processpool, processpoolexecutor, subprocess
A CoroutineExecutor for asyncio, similar to nurseries and task groups
This project is written in Python. It is 5 years and 3 months years old, and has 13 stars on GitHub. These are the topics associated with this project: asyncio, coroutines, taskgroup, taskgroups
Firefox automation
This project is written in Rust. It is 0 years and 5 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
A cargo-generate template repo to start a no_std binary project using data structures from the heapless crate
This project is written in Rust. It is 0 years and 4 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
Programming language
This project is written in Rust. It is 0 years and 2 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
Program launcher with memory and cpu limits
This project is written in Rust. It is 0 years and 1 months years old, and has 0 stars on GitHub. These are the topics associated with this project: cgr, cpu-limit, memory-limit, systemd-run
CLI tool to reformat text replacing whitespace with commas, or field template substitution
This project is written in Rust. It is 0 years and 0 months years old, and has 0 stars on GitHub. These are the topics associated with this project: cli, pipeline, shell
Context manager for managing the lifetime of a docker container
This project is written in Python. It is 7 years and 10 months years old, and has 8 stars on GitHub. These are the topics associated with this project: docker, python, unit-testing
Better environment variables for Python
This project is written in Python. It is 7 years and 7 months years old, and has 8 stars on GitHub. These are the topics associated with this project: environment-variables, environment-vars
Working files for my talk at PyCon AU 2018
This project is written in JavaScript. It is 6 years and 7 months years old, and has 6 stars on GitHub. These are the topics associated with this project:
An experiment in browser automation
This project is written in Python. It is 8 years and 9 months years old, and has 3 stars on GitHub. These are the topics associated with this project:
Clone all your github repos AND set upstream for your forks
This project is written in Rust. It is 4 years and 5 months years old, and has 3 stars on GitHub. These are the topics associated with this project: automation, cloning, github-api, setup-development-environment, setup-tool
CLI emitting json when song changes on Linux. Uses MPRIS and dbus to receive events
This project is written in Rust. It is 2 years and 2 months years old, and has 3 stars on GitHub. These are the topics associated with this project: cli, cli-app, dbus, mpris, mpris-dbus-interface, mpris2
Easy executable symlinks to your virtualenv Python scripts
This project is written in Python. It is 7 years and 8 months years old, and has 2 stars on GitHub. These are the topics associated with this project:
Decorators for coroutines
This project is written in Python. It is 6 years and 10 months years old, and has 2 stars on GitHub. These are the topics associated with this project:
Language detection. Finally one that works with short text.
This project is written in Rust. It is 3 years and 7 months years old, and has 2 stars on GitHub. These are the topics associated with this project:
Neater management of environment variables (intended for microservices)
This project is written in Rust. It is 3 years and 6 months years old, and has 2 stars on GitHub. These are the topics associated with this project:
Back to basics indentexpr for Python
This project is written in Vim Script. It is 0 years and 6 months years old, and has 2 stars on GitHub. These are the topics associated with this project: indent, indentation, indentexpr, neovim-plugin, python-indent, vim-plugin
Recursively copy a directory tree, with filters.
This project is written in Python. It is 9 years and 11 months years old, and has 1 stars on GitHub. These are the topics associated with this project:
A Python logging Formatter subclass for messages with SQL queries
This project is written in Python. It is 8 years and 1 months years old, and has 1 stars on GitHub. These are the topics associated with this project:
A very thin string.Template subclass with extra features.
This project is written in Python. It is 7 years and 8 months years old, and has 1 stars on GitHub. These are the topics associated with this project:
Automatically inject Task-context-aware fields into loggers
This project is written in Python. It is 7 years and 1 months years old, and has 1 stars on GitHub. These are the topics associated with this project:
Version bump, tag and deploy your python packages
This project is written in Python. It is 5 years and 8 months years old, and has 1 stars on GitHub. These are the topics associated with this project: automation, bump-version, bumpversion, deploy, pypi, release, tagging
Static, offline, command-line CLI dictionary (including word definitions)
This project is written in Rust. It is 5 years and 1 months years old, and has 1 stars on GitHub. These are the topics associated with this project:
Emotion detection microservice based on natural language inference
This project is written in Python. It is 3 years and 3 months years old, and has 1 stars on GitHub. These are the topics associated with this project: emotion-detection, mnli, natural-language-inference, natural-language-processing, sentiment-analysis, sentiment-classification
Python wrapper for sile/scalable_cuckoo_filter
This project is written in Rust. It is 0 years and 6 months years old, and has 1 stars on GitHub. These are the topics associated with this project:
My blog 🤷
This project is written in Jupyter Notebook. It is 11 years and 3 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
Prints out the windows %PATH% variable as a list
This project is written in Pascal. It is 10 years and 2 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
Add root logger config to argparse automatically
This project is written in Python. It is 7 years and 6 months years old, and has 0 stars on GitHub. These are the topics associated with this project: argument-parser, logging
Easily bind new LogRecord fields into your logger instances.
This project is written in Python. It is 7 years and 6 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
Structured logging support for application performance and monitoring data
This project is written in Python. It is 7 years and 5 months years old, and has 0 stars on GitHub. These are the topics associated with this project: logging, monitor-performance, monitoring
File templates for faster project bootstrap
This project is written in Python. It is 7 years and 3 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
Handy math routines
This project is written in Python. It is 7 years and 2 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
A Python logging Handler for JSON logs (with LogStash support)
This project is written in Python. It is 7 years and 2 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
Very simple TCP-based health check service.
This project is written in Python. It is 7 years and 1 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
PS1 prompt generator
This project is written in Go. It is 6 years and 9 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
Password and passphrase generator in rust
This project is written in Rust. It is 6 years and 2 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
Python logging handler for ZMQ transmission
This project is written in Python. It is 5 years and 9 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
A replacement enumerate function that allows reverse order
This project is written in Python. It is 4 years and 9 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
Compare two xml coverage files, report on branch and line coverage
This project is written in Rust. It is 3 years and 11 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
Static, offline, command-line rhyming dictionary
This project is written in Rust. It is 3 years and 8 months years old, and has 0 stars on GitHub. These are the topics associated with this project: alliteration, pairing, perfect-rhymes
Hobby project exploring tree traversal in Rust using iterators
This project is written in Rust. It is 3 years and 8 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
This generates the README.md for my github profile, which is likely what you're currently reading.
This project is written in Rust. It is 3 years and 7 months years old, and has 0 stars on GitHub. These are the topics associated with this project: readme, readme-gen, readme-generator, readme-md, readme-profile
Python wrapper for my "thesauromatic" library.
This project is written in Rust. It is 3 years and 3 months years old, and has 0 stars on GitHub. These are the topics associated with this project: pyo3-rust-bindings, python-wrapper, thesaurus
Aggony DB is a one-trick-pony database that can perform rapid aggregation of many-fields low-cardinality big data
This project is written in Rust. It is 2 years and 9 months years old, and has 0 stars on GitHub. These are the topics associated with this project: aggregation, datasketches, probabilistic-data-structures
The "Dining Philosophers" problem
This project is written in Rust. It is 1 years and 4 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
A python wrapper for nnsplit 0.5.9 that runs in newer python versions
This project is written in Rust. It is 0 years and 7 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
Dict that only stores hashes of the keys, and not the key value. Good for large keys.
This project is written in Python. It is 0 years and 6 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
Read lines from either stdin or filenames provided on the CLI.
This project is written in Rust. It is 0 years and 6 months years old, and has 0 stars on GitHub. These are the topics associated with this project:
Small terminal menu to run preconfigured commands
This project is written in Rust. It is 0 years and 6 months years old, and has 0 stars on GitHub. These are the topics associated with this project: command-line-interface, command-runner, terminal-based, terminal-menu
THIS IS NOT UPSTREAM! Forked from gitlab: https://gitlab.com/xamn/terminal-menu-rs
This project is written in Rust. It is 0 years and 6 months years old, and has 0 stars on GitHub. These are the topics associated with this project: