My github can be found at https://github.com/joemcmahon; there you’ll see all my CPAN modules, and a few other projects I’ve also made contributions to.
I’ve been programming since the days of OS/360 – still one of my favorite OS’es, for all its faults, bugs, and limitations – and the 360-series assembly language (still one of my favorite languages for its elegance of expression) was the place I learned most of my programming. My first job was as a mainframe assembly language programmer at NASA/GSFC in the late 1970’s, starting off with a coded-from-scratch implementation of the bisync protocol (cutting edge communications for a mainframe in 1979!) to talk between the scientists, the IBM mainframe running the scheduling software, and satellite ground operations for the Solar Maximum Mission. From there, I moved on to systems programming work on the OS/360 systems at Goddard, working informally on the 360/65, then moving to an official role on the 360/95 (a machine big enough to physically get lost in – take a wrong turn in the machine room, and you ended up in a blind alley in a bunch of blue cabinets) and our 3081 (running VM/CMS and MVS).
After a short stint at AT&T in New Jersey teaching assembler and a couple years systems programming at Fannie Mae (where we did a transition to MVS/XA that was so smooth we were asked when it was going to happen…6 weeks after it was done!) I returned to my old group at NASA/GSFC.
At that time the NCCS underwent a transformation from a high-end mainframe group to a supercomputing group. Once the Cray X-MP arrived, it was clear that the days of the IBM mainframe were numbered, and I moved over to Unix system administration, working with the Convex system that handled the UniTree system that fed data to the Cray, and writing custom software in SPITBOL to automate moving data from the MVS system tape archives to UniTree. I was also the informal go-to guy for Mac OS, learning enough about Mac viruses to have become an expert on them – I named the “implied loader” species of virus and predicted it, and worked on running Linux on PowerPC’s, making a number of contributions to Gentoo Linux. Later on, after I got tired of the late nights and early mornings that went with systems programming at that time, I switched to web development in Perl at the very beginnings of the World Wide Web. I worked on the precursor to the EOSDIS ECHO system, a large Perl CGI program that I invented “shadows” for – a way of maintaining a forest of symlinks into a central shared source tree, allowing multiple users to work on the same codebase without stepping on each other’s toes, using only RCS for source control, and a wiki-based multi-user calendaring system.
I later became more involved in the development of Perl itself, contributing a number of patches to the test suite, and the full internal documentation of the debugger. In 2005, I moved from GSFC to Yahoo!, and made the transition from contracting at NASA to senior-level development work, creating an automated test suite for Yahoo! Global search (side note: one set of tests required me to develop tests to validate expected results for “adult” searches on all of the Yahoo! international search engines; this meant I had to post a “WARNING – PORN SEARCH VALIDATION UNDERWAY – ENTER AT YOUR OWN RISK” sign outside my cubicle for a week).
I moved to Blekko in early 2010, learning a lot in that small startup environment, especially about Jenkins, and in August 2011 moved to WhiteHat Security. Around this time, I did my first iOS project, StillStream Radio, a streaming audio receiver for the Internet radio station at StillStream.com, and did a two-year stint as a Python and Django programmer for a project at WhiteHat.
I’m currently working on building a performance testing cluster from the ground up for Whitehat – a very exciting prospect!