Rob McBroom

employment@skurfer.com

Introduction

I'm a programmer. Interesting problems keep me up at night and get me out of bed in the morning. If you're looking for someone like that, let's talk.

I'm in central Indiana.

Examples

You can always see what I'm up to on GitHub and Stack Overflow. Some of the projects I've worked on are discussed below.

This Résumé

I wanted to make my résumé available as both text and HTML without manually maintaining two versions. I also wanted to learn a bit about Pyramid. The result is a small application that you're viewing right now. Source code available upon request.

Managing Machine Info using LDAP

I can't take credit for this idea, as it was being done at Georgia Tech, but in my role as system administrator at ADESA, I saw the need to implement it there. When I was hired, Linux machines were being tracked in an Excel spreadsheet. This is sufficient for getting information to human eyes, but I saw an opportunity to automate a large number of tasks by storing the information in a format that both humans and machines could get to. I also wanted to be able to view and change information in a variety of ways, rather than depending on Excel. The answer was OpenLDAP for a number of reasons.

  • Many existing applications (Postfix, Puppet) can use LDAP data
  • LDAP tools are pre-installed on most systems
  • It's available in most scripting environments (Shell, Python, PHP, Perl)
  • The data can be viewed and edited in many ways (including plain-text)
  • The data's structure is more flexible than a spreadsheet or RDBMS
  • We were going to need an LDAP server anyway (for authentication)
  • It's easy for people to read and gather information
  • It's easy for machines and automated processes to read and gather information

Web-based Software Distribution

This was my favorite project at Georgia Tech. To be successful, I had to create an application that interfaced with MySQL, the Enterprise Directory, Remedy, local files and processes, etc. I also had to design a flexible architecture that would allow us to specify access controls and user interface elements per software package if necessary. This application has suffered absolutely no downtime since I first made it "live" in July 2003.

There's only so much you'll be able to do without logging in, but feel free to explore the site.

http://software.oit.gatech.edu/

Frequently Asked Questions

Redesigning the FAQ was one of my first "projects" at Georgia Tech (when my primary role was answering phone calls and e-mail). Since the web site and back-end structure were designed in 1999, it doesn't look very impressive by today's standards, but on the other hand, it shows that I can write code that will run rock-solid without maintenance for many years. (The contents of individual entries are, of course, modified continuously.)

I should also point out that it was a great improvement on what we had. Prior to my involvement, this site was made entirely of static HTML pages for both FAQ entries and navigational menus. After my redesign, all you had to do was drop a new entry into place and the navigational menus would get updated on the fly.

http://faq.oit.gatech.edu/

Self-service Account Management

This web site allows Georgia Tech users to change their password, reset a lost password by answering user-defined questions, manage their e-mail aliases, manage guest accounts, and set preferences for GT's emergency notification system. I was not the primary developer or designer for this site, but I did a great deal of work on the back-end. I was responsible for getting the site to talk to our central account management system via XML-RPC and PostgreSQL queries and for getting it to look up directory information via LDAP. I also helped design a system to adjust the site's functionality based on class of user.

Working on a site like this obviously requires an understanding of the various security risks to a web-based application and the techniques for mitigating them. In addition to helping guard against web-based attacks, I helped design a system to protect the contents of local files in the event of compromise.

http://passport.gatech.edu/

Personal Web Site

skurfer.com began life as my first home.html page in 1994 when I was at IU. I registered a domain in 1999 and have expanded and redesigned the site many times since then. It's hosted on a Debian machine that I maintain.

http://www.skurfer.com/

I also test and discuss more technical subjects at http://projects.skurfer.com/.

Skills

(In order of proficiency)

Languages

  • Objective-C
  • Python
  • HTML/CSS
  • Markdown
  • PHP
  • Shell Scripting

Operating Systems

  • NeXTstep/Mac OS X/macOS
  • Linux (Debian, RHEL, Ubuntu)
  • Solaris
  • AIX
  • Microsoft Windows (95 — XP)
  • MS-DOS
  • Mac OS
  • HP-UX

Applications

  • Quicksilver
  • TextMate
  • Vim
  • Git
  • Subversion
  • Xymon (formerly Hobbit)
  • Zabbix
  • Remedy AR System User Tool
  • Microsoft Office Suite

Services/Other

  • SSH
  • Apache
  • Nginx
  • OpenLDAP
  • OpenSSL
  • MySQL
  • Postfix
  • Puppet
  • Kerberos
  • IMAP (UW, Dovecot)
  • DHCP
  • BIND (DNS)
  • inetd/xinetd
  • TCP/IP
  • NFS

Experience

Quicksilver

Lead Developer, December 2010 — Present

Part of a small international team of programmers dedicated to maintaining the open source Quicksilver application for macOS.

  • Fix bugs
  • Add features
  • Improve internal structure and stability
  • Help set direction and priorities for the project

Six Feet Up - Fishers, IN

DevOps Engineer, August 2014 — Present

  • Python development
  • FreeBSD administration
  • Plone development
  • Plone deployments
  • Pyramid development
  • Django development
  • Complex migrations

ADESA, Inc. - Carmel, IN

Linux Administrator, July 2008 — August 2014

Responsible for over 100 Red Hat based Linux servers as part of ADESA's UNIX team.

  • Manage packages, patches, filesystems, backups, users and groups on Linux systems
  • Implemented and maintain an LDAP-based system for tracking machines
    (Linux, OpenLDAP, Python, PHP)
  • Transitioned systems to centralized authentication
    (Linux, OpenLDAP, Kerberos)
  • Implemented Puppet infrastructure for managing servers
  • Automated monitoring and alerting for Linux systems
    (Xymon, Python)
  • Identify and address hardware problems

Georgia Institute of Technology - Atlanta, GA

Systems Support Specialist II, November 2004 — May 2008

Worked in the Office of Information Technology's Architecture & Infrastructure group providing services to the Georgia Tech campus. Primary responsibilities involved building and maintaining web-based applications and performing a variety of system administration tasks.

  • Maintained a central web server for hosting 400+ departmental websites
    (Solaris, Apache, MySQL, Perl, PHP, shell)
  • Installed/maintained the mailing list server for campus
    (Linux, Sympa, Postfix, MySQL, Perl, shell)
  • Developed secure web-based software distribution application
    (Solaris, Apache, PHP, MySQL, LDAP, Remedy)
  • Developed code that allows self-service account management web site to interact with various back-end systems
    (Solaris, Apache, PHP, MySQL, PostgreSQL, Oracle, XML-RPC, LDAP)
  • Developed back-end for the Frequently Asked Questions website and authored most FAQ content
    (Solaris, Apache, Perl, HTML, CSS)
  • Maintained Google search appliance
  • Scripted migration of calendar events from Oracle Calendar to Zimbra
    (Linux, Oracle Calendar, Zimbra, shell)
  • Maintained the newsgroup server for campus
    (Solaris, INN, Diablo)
  • Supported customers via e-mail, phone, and face to face
  • Maintained top-level web infrastructure (to support www.gatech.edu) [backup role]
    (Solaris, Apache, MySQL, shell)
  • Maintained central web-based e-mail client (based on IMP) [backup role]
    (Solaris, Apache, PHP, MySQL, IMAP, LDAP)

Systems Support Specialist II, January 1999 — November 2004

Worked in OIT's Customer Support Center and assisted students, faculty and staff with user accounts, desktop computers, OS specific questions, networking, remote access to campus resources and various other types of questions. Responsible for redesigning and maintaining FAQs, designing and implementing the software download interface, managing an intranet server, and maintaining 5 informational kiosks located around campus.

Education

Indiana University - Bloomington, IN

BS, Information Systems, May 1998

Studied Computer Information Systems in the IU School of Business. A strong interest in math and science is reflected in courses taken outside of the School of Business.

Training

Certifications

Activities

IndyPy (2011 — Present)

Regularly attend monthly meetings of the Indianapolis Python users' group to discuss Python and other technical topics.

Secretary, IU Water Ski Club (1996 — 1998)

Created and maintained the club web page. Monitored and responded to club related e-mail. Organized teams to attend tournaments with other schools. Taught and learned various water skiing skills with other club members. Drove and maintained the club's competition ski boat.