Cellphone:
734-368-4939
E-mail: mhgraham@crow202.org
Languages: |
PHP, C, C++, Perl, bash, SQL, Java (Android), node.js |
Operating Systems: |
Linux(Gentoo, Ubuntu, RHEL/CentOS), Windows 2000/XP/7 |
Databases: |
MySQL, some Postgres |
The Arizona Republic: Phoenix, AZ |
June 2008–present |
Sr. Online Developer
Administered over 50 Linux machines responsible for serving web pages in a demanding 24/7 environment with millions of page views per day, using DRBD, LVS, and heartbeat to eliminate single points of failure.
Wrote new PHP apps, debugged and added features to old PHP apps.
Built custom RPMs, did almost all OS installs, put in a better monitoring system for all the machines, and troubleshot any and all problems with the web/DB servers or the website as a whole.
Wrote some microservices in node.js that are in constant use.
Wrote one fairly standard Android application (RAGBRAI for Android)
Maintained internal documentation wiki.
Responsible for PCI compliance on all of the team's machines.
Nth Degree: Lansing, MI/Tempe, AZ |
October 2000–February 2008 |
Programmer/Sysadmin/Scientist
Wrote a series of Perl and shell scripts to automate validation, processing, and cleanup of several terabytes of XML data. This automation reduced operator time required from 4 hours/day to less than 1/2 hour/day.
Wrote bind9, exim4, Samba, frox, apache, proftpd, and postfix config files from scratch, put a working sendmail.cf together using m4, and patched linux-utils to allow mounting FAT filesystems by label in September 2003, a month or so before the official maintainer did that.
Found and fixed over 600 bugs in several programs developed for the document conversion and prepress industries. Also wrote C++ code and small applications where needed to deliver new features.
Diagnosed and fixed many hardware and configuration problems with minimal information.
Worked onsite with customers to assess their needs, train operators, and determine where our programs could be improved.
Administered the Debian and Redhat machines that provided mail, web, FTP, DNS, Samba, and other vital services from 2002 onwards. Also did all tech support from 2005–August 2007.
U of M Business School, Ann Arbor, MI |
September 1998–August 2000 |
Technical Support Shift Manager/Programmer
Trained over 30 tech-support employees and supervised up to 5 at one time; also wrote large portions of a manual outlining policies and procedures for the workplace.
Wrote an application in C under Solaris allowing employees and managers to keep track of their schedules, request time off, and cover for people who had requested time off.
Answered user questions on a wide variety of problems with WinNT/95/98, MacOS 9, and Solaris, both in person and over the phone.
Answered over 10,000 user questions touching on all aspects of Linux since January 2000, as reported by http://groups.google.com/groups?as_uauthors=Dances%20With%20Crows
Found a kernel bug in Tux On Ice and wrote a working patch before the maintainer did.
Maintained multiple steadily-growing frequently-used MySQL databases since 2001 across multiple machines and architectures, never lost any data.
Very familiar with RHEL 4 and 5, CentOS 5/6, various Ubuntus, and all versions of Gentoo from 2002 to now. Used RHEL/CentOS and Ubuntu at work for mail, DNS, apache, Samba, CVS, SVN, Perl/shell scripting, and multiple web-based apps. Use Gentoo at home for its high customizability.
Familiar with virtualization through Qemu and virtualbox.
Read and understood Alexander Viro's description of how to get a Linux machine where libc and ld.so had been unlinked back into a working state, without rebooting or using a rescue system. (Also know how to prevent this situation from happening in the first place, by installing sln and sash.)