I have always tried to work smarter, not harder. When I started my career in IT I had a lot to learn, and I always enjoyed it when I could automate a task or make it more reliable. Automation saves time that can be spent on more important things like continuous learning, delivering features and communicating with others.
I recently added OTP authentication using pam_google_authenticator.so to most of my machines. It's non-trivial to set up, especially if you have system users with limited capabilities that need to be able to log in non-interactively, but all in all it feels good to have a little more security. When logging … more
There are various ways to send an ebook to a kindle, I use a tiny script. The only tricky part is to set the correct content type. You can get your kindle email address from your devices list on amazon. Don't forget to whitelist your from address in your Amazon … more
This is an update for my post about automated django deployments Edit 09-2020: I've expanded the script to fetch remote data and load it into the local Django dev instance. Make sure you never run this script anywhere except than a development environment. more
I love quodlibet and have a big collection of music in it. Some time ago I wanted to transcode some big lossless files into the more mobile-friendly ogg format and wanted to query quodlibet for the songs. This is an example of a script that can access the quodlibet database … more
This post describes a deployment and maintenance method for Django projects that was designed with scalability in mind. The goal is to push new releases into production at any moment with minimal or no downtime. Upgrades can be performed with unprivileged access to the production server, and rollbacks are possible. I use Gunicorn, Fabric and Supervisord in the examples. more
The function should probably check if the post already has the tag/category before adding it a second time. I should probably look into the wpispost_revision() part again as well. more