A Guided Tour of My Projects
A maintained list of my (software) projects.
- For Python Developers
- Data Science & Jupyter
- Software Design & Architecture
- Debian Packages
- Docker & Kubernetes
- Miscellaneous
🚧 This article is work in progress, and is updated regularly with new content.
For Python Developers
The Springerle GitHub organization is a collection of cookiecutter project templates, with templates for these types of project:
- single-file scripts (py-minimal-script),
- fully equipped packages and applications (py-generic-project),
- DEB packaging of existing projects (dh-virtualenv-mold · debianized-pypi-mold),
- and more.
Fundamental elements for any Python project, like configuration handling, are in the rudiments package It is used for runtime support in the Springerle templates mentioned above.
On the project automation side of things, rituals is a library of Invoke tasks that are needed again and again. The Springerle templates use it to add management tasks that are updateable via pip
, independently of the template.
dependency-check-py is a shim to easily install OWASP dependency-check-cli into Python projects, by adding it to your requirements.
The collection of Jupyter notebooks in whats-new-in-python3 summarize the “What's new in Python3?” documentation, with live code in the notebooks. Right now, it is unfinished and work in progress.
Data Science & Jupyter
jupyter-by-example has learning resources and practical tips on how to use Jupyter notebooks for fun & profit. The Today I Learned about Data Science… wiki contains similar information, with an extended scope (beyond Jupyter).
See also the debianized-jupyterhub
project further below.
Software Design & Architecture
In c4-notation I collect technical resources about using the C4 model for visualizing software architecture. This is so far rather small and unfinished. See also my Diagrams as Code wiki page for similar resources.
Debian Packages
I'm a contributor to dh-virtualenv, and I use it for all my Debian packaging needs. Especially when it comes to deploying applications with lots of dependencies, or services needing tight integration with the host (i.e. systemd units). For pure command line tools, pex and shiv can be a better alternative.
There are several projects using dh-virtualenv as the basic packaging tool:
- 1and1/debianized-jupyterhub packages JupyterHub, a multi-user server for Jupyter notebooks, It also comes with a Python3 kernel, populated with an extensive data science stack.
- 1and1/debianized-sentry puts all sentry.io 9.x services into one package using systemd as a supervisor, you just need to add a PostgreSQL databasse.
- devpi-enterprisey/debianized-devpi allows easy deployment of the devpi package repository and proxy. This doesn't get updated that often, it basically chugs along silently on my workstations, speeding up virtualenv creation and allowing off-line work.
Note that these are typically built in a Docker container.
See the For Python Developers section on how to easily roll your own projects of this type. The dput-webdav plugin then allows you to use dput
to comfortably upload created packages to a WebDAV repository like Artifactory (BinTray).
Also check out (Dead) Snakes on a… Debian System for being able to install newer Python versions on all major Debian-like releases.
Docker & Kubernetes
dockyard offers basic Dockerfile templates and other Docker build helpers. It contains some experiments regarding Python base images, shows how to build Debian packages within a container for repeatable builds, and comes with extensive documentation also showing how to optimize your Dockerfiles.
Miscellaneous
The README of awesome-python-talks is an opinionated list of videos related to Python, with a focus on training and gaining hands-on experience. The awesome-tech-talks repository is very similar, but about software development and general IT topics.
confluencer contains a CLI tool that automates common Atlassian Confluence maintenance tasks and content publishing.
There's no place like home… ruby-slippers is my dotfiles repository (and I found “dotfiles” way too boring as a name). It also includes setup scripts for installing a bunch of developer tools and packages.