Archives for the «Hacks» category

November 2018
Record number of uploads of a Debian package in a day
October 2018
Salsa ribbons
November 2017
Faking cleaner URLs in the Debian BTS
October 2017
python-gfshare: Secret sharing in Python
July 2017
More Lintian hacking
Installation birthday
December 2016
10 years of Debian
September 2016
Diffoscope progress bar
How to write your first Lintian check
August 2016 CLI client
April 2016
Parsing Jenkins log output to determine job status
September 2015
Joining strings in POSIX shell
January 2015
Calculating the ETA to zero in shell
Giant's Causeway puzzle
Uploading a large number of files to Amazon S3
December 2014
Starting IPython automatically from zsh
November 2014
Validating Django model attribute assignment
Generating gradiented fade images using ImageMagick
August 2014
Strava Enhancement Suite update
July 2014
start-stop-daemon: --exec vs --startas
Disabling internet for specific processes with libfiu
Strava Enhancement Suite
March 2014
Two aesthetically pleasing Python snippets
February 2014
Estimating Training Stress Score (TSS) for running on Strava
Defaulting to comparing against yourself on Strava
December 2013
Quickly switching between imperial and metric units on Strava
Developing responsive websites using the Awesome window manager
October 2013
Readers-writers lock in eventlet
September 2013
Using the Garmin 910XT on Linux
August 2013
Decrypting the Caesar cipher using shell
August 2011
Timezone bingo in debian/changelog files
Careful what you wish for...
Monitoring Redis? Check last_save_time
July 2011
Sysadmin-friendly deployment of Gunicorn in Debian
Optimising directory navigation with multiple terminals
Calculating requests per second with pv
September 2010
irccat plugin for supybot
August 2010
Debian Live Studio
screen-message prompt for Awesome
July 2010
Four men in a mine
June 2010
Distributing locking with Python and Redis
Appending the request URL to SQL statements in Django
May 2010
Rotating email into your inbox using imapfilter
April 2010
Locating source for any Python module
December 2009
Readline tab completion using Django models
November 2009
Transparent directory replacement with zsh
August 2009
No-one expects the string literal exception
Ambigram animations using shell and Imagemagick
May 2009
Poor man's Google Checkout
February 2009
Scrap your boilerplate; POSIX shell edition
Committing every time you save in Vim
January 2009
Matching IPs with regexes conCIDRd harmful
December 2008
Kicking the Vim cursor key habit
July 2008
BTS bot improvements
June 2008
Strange loops
March 2008
AptFs - FUSE filesystem for APT source repositories
January 2008
"Can you get cp to give a progress bar like wget?"
Debian packages sorted by build-time and build-space

Free / open source software reports

Since 2015 I have written a post every month outlining my free and open source software activities. My latest published report is for December 2019, but you can view the archive here:

Aug Oct
Jan Feb Apr May Jun Jul Aug Sep Dec
Apr Dec