Creating a GitHub Repository Showcase (3 Part Series)
How and why I publish a maintained list of my (software) projects as part of my developer blog.
I added A Guided Tour of My Projects to my Snakes on Callisto developer blog, as part of a revamp of my GitHub pages. It replaces the former homepage, which mainly consisted of such a list besides the list of blog posts, which is now also separate – the homepage now just being a guidepost to other pages.
The guided tour complements the automatically generated GitHub portfolio page I already wrote about, providing some context and order about repository content and intent, instead of just a stars-sorted repository list. That allows people to get an overview of what might be of interest to them much more quickly than digging through all the repositories one by one themselves.
So, to show you how this can look like, let's go on a tour… (but you could also stop reading here, and do your own 😀)
- 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.
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.
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).
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.
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.
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.
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, installing the Python tools using ‘dephell’.
Level up every day