I love deadlines. I love the whooshing sound they make as they fly by.—Douglas Adams, The Salmon of Doubt
Like Douglas Adams, my announced deadline for go-script-bash v1.4.0 is flew by last week. It’s not that I’ve stalled development on it at all; quite the contrary! While I had 634 tests as of a month ago, now there are 789 pieces of living proof that Bash scripts aren’t "too hard to test".
But let me get back to that. A few updates are in order.
DevOpsDays Baltimore Keynote
First and foremost, I’m a keynote speaker at DevOpsDays Baltimore on March 8. This time the talk will be called The Rainbow of Death, and will focus primarily on how all of the experiments and practices from the Testing Grouplet line up with the Three Ways of Devops (as outlined in The DevOps Handbook) in order to make the right thing the easy thing.
Portfolio updates
Next, after over two years of neglect, I’ve updated my portfolio page to include all the Open Source work I’ve been doing since late 2014. I forced myself to learn a little about flexboxen to make the layout a bit more palatable and responsive, and under the hood, used YAML files to make the collection and presentation of the data more uniform. By making the right thing easy for myself, hopefully I’ll do a better job of keeping it current (and readable!).
go-script-bash and…
Finally, no, I haven’t abandoned the HPKP with Let’s Encrypt series; but in the process of looking to migrate parts from certbot-webroot-setup back into go-script-bash, along with other minor enhancements, I had a stroke of inspiration that led to three outcomes:
- I extracted the lib/bats/helper-function module, whereby I genericized the Bats stack trace-disabling mechanism for use with all helper functions. This resulted in a 2x speedup of the test suite across UNIX systems (O (7-8min) down to O (3-4)), and a 2-3x speedup of the suite on Windows Bash versions (O (50-60min) down to O (20+min)). See also go-script-bash#156.
- This insight led me to optimize Bats by eliminating subprocess spawning (note the tag should read “20170215”, but I made a typo), for which I’ve submitted sstephenson/bats#210. Times were further slashed by over 2x across the board on UNIX, and by 3x or more on Windows. Now the entire suite of 789 Bats tests runs in O (1min) across UNIX platforms (some as fast as O (45-50s)!), and even the Windows tests all run in O (3.5-6.5min)!
- Finally, accomplishing this inspired me to announce myself as a candidate to become the new Bats maintainer.
Like I mention in that issue comment, assuming maintainership of such a popular Open Source project would be a new experience for me, but I really believe I’m up to it.
Outside of that, still in talks with a bunch of folks to get some independent contracting gigs rolling. Prospects are various and exciting, but I’m anxious to get to work.
I should have go-script-bash v1.4.0 out in a couple more days. Most of the features currently still posted (JSON logs, user prompts for configuration, etc.) will have to get bumped to a later version, but there’s too much good new stuff not to release sooner than later!