Preventing CircleCI Tasks from Running on the Same Commit

Posted on September 06, 2021 in blog • Tagged with circleci, devops

A short outline on how to game CircleCI's caching mechanic to prevent sluggish builds from running on the same commit more than once.

Useful if you have some very slow CI steps and use Tags to automatically deploy from CircleCI. In my case, our test suite could take 10 minutes …

Continue reading

Setting up a Self-Hosted Server

Posted on April 30, 2021 in blog • Tagged with linux, ubuntuserver, selfhosting, plex, grafana, prometheus

This post is mostly meant as a reminder to myself in case I'm in a position where I have to set it all up again.

Setting up a new server from scratch can be particularly annoying when you have to remember all of the minor configuration steps you figured out …

Continue reading

Professional Open-Source Communication

Posted on August 28, 2019 in blog • Tagged with github, opensource, communication

*This blog entry is a work-in-progreses

I recently saw a tweet that showcased extremely poor communication in a feature request for an open-source repository. It got me thinking: Sure this person could just be entitled and abrasive, but its more likely he just doesn't know how to communicate well to …

Continue reading

Password Protected Files in Python

Posted on April 12, 2019 in blog • Tagged with python, pdf, msoffcrypto-tool, pikepdf

When working on a system that processes files, you're likely to run in to password protected files. Particularly in Japan, password-protected pdfs, office files, and zip files are the norm.

I turn down feature requests for zip files due to the possibility of them containing an undefined nested directory structure …

Continue reading

Working with ImageMagick's Wand Python Library

Posted on March 19, 2019 in blog • Tagged with python, python-wand, pdf

Handling images in wand can be deviously tricky, especially when you need a common system-wide resolution.

An example use-case:

I work on a system that sends & receives faxes. It also handles email attachments and draws text on to fixed format images (inquiries, order details, etc.).

Due to the fact that …

Continue reading

Property Testing: Why You Should Generate Test Data

Posted on August 31, 2017 in blog • Tagged with testing, property testing, python

This post is cross-posted to

I drank the functional programming cool-aid at my first real job. While I do not currently professionally develop with functional programming, I still apply what functional concepts I can -- property testing is a big one.

I'm going to cover three main points: - What's …

Continue reading

Roping in Complexity, Decay, and Duplication in a Growing Scala Project

Posted on September 13, 2016 in blog • Tagged with scala, conference, scalamatsuri

Roping in Complexity, Decay, and Duplication in a Growing Scala Project

All software projects will grow in complexity and decay over time. Lehman's Laws of software evolution state that as a system evolves, "its complexity increases unless work is done to maintain or reduce it", and that a system "must …

Continue reading