Using python to transform and filter data in bash pipes

Posted on Thu 30 April 2020 in Articles • Tagged with bash, python, tools

I've long been a fan of bash pipes and the unix philosophy of composability. The text stream interface is so simple to extend and build upon that once you create a simple command line tool that works over stdin and stdout you suddenly have interoperability with a tremendous number of …


Continue reading

How CheckMK predictive monitoring works

Posted on Sun 07 October 2018 in Articles • Tagged with python, monitoring

Code walk through of predictive monitoring features of the CheckMK monitoring toolset.


Continue reading

Developing an OSX app with Python

Posted on Fri 16 March 2018 in Articles • Tagged with python, osx, ionic, pyinstaller, multiprocessing, pkgbuild

Application architecture

The purpose of the project was to build an application that would watch a directory for changes and respond to directory events with a flexible set of actions.

I broke the problem into a few parts, which mapped well into separate processes.

  1. Directory watcher. Responsible for responding to …

Continue reading

Python multiprocessing and CoreFoundation libraries

Posted on Fri 02 March 2018 in Articles • Tagged with python, multiprocessing, parallel

Python's multiprocessing library is pretty awesome, and it can make it much easier to build programs that exersize multiple cores in python. However, some libraries are known not to behave well with multiprocessing. You may be running into this problem if you see output like this from your program, in …


Continue reading

Validating BibleScholar Scraping

Posted on Mon 02 January 2017 in Articles • Tagged with python, scraping, biblescholar

As with any data scraping tool, verifying correctness in BibleScholar's verse scraping utilities was pretty important. After my first run through verses, here is what I was seeing between versions. Note that this is before I added the ESV translation, which as you'll see below is the version with the …


Continue reading