Recent articles

Bulk process RAW image files

Posted on May 29, 2015 by

Recently I had to convert about 250 RAW image files to PNGs. For neatness, I wanted to convert the upper-case filenames the camera assigned with a lower-case name. A little bash script-fu is all it took: clean_pics.sh #!/bin/bash # Extract from SD Card for i in /Volumes/SDCARD/DCIM/100ND40X/DSC_0*; do filename=$(basename “$i”) lower_file=”$(echo $filename | tr ‘[A-Z]’ […]

How to prevent duplicate directories in your path

Posted on May 12, 2014 by

What happens with the Path The path is set via a myriad of config files. It is very easy to accidentally add the same directory to the path, and there is no built-in mechanism from preventing this situation. While it has no impact on performance, it does make reading the path more difficult (for example, when […]

Rescued from the ashes: I don’t hire unlucky people

Posted on May 6, 2014 by

Note: this was written by Raganwald on posterous.com, which unfortunately went belly-up April 2013. It is too important a lesson to let disappear, so I’m posting it here. Bertram Wooster and Ernestine Anderson were staffing up their teams. Bertram was hiring trainees to work in the company’s retail stores, Ernestine was hiring software developers to build […]

How to screw up estimates

Posted on March 20, 2014 by

“I need a time and cost estimate to develop a fizzbuzz mobile app on all minor mobile platforms (Windows/Blackberry/Symbian), and I need that estimate in 15 minutes.”

Requirements Gathering: set up to fail

Posted on March 19, 2014 by

Without project requirements gathering, a project is nothing. One failure point is letting the wrong people gather the requirements. There are basically two types of requirements for an application project: the functional/feature-set and the technical. Pitfall: There must be at least one cycle of comparing Functional to Technical requirements to ensure they sync up, followed by […]

The law of Futility of Avoidance

Posted on May 6, 2013 by

Given enough time, you will end up becoming responsible for supporting and maintaining the very system you’re the most desperate to avoid.