Rob McBroom

employment@skurfer.com

Introduction

I’ve been doing some type of programming since I was 8 years old.

Interesting problems keep me up at night and get me out of bed in the morning. If you give me problems to solve, lunch will seem like an annoying chore instead of a welcome break.

If you’re looking for someone like that, let’s talk.

Examples

You can always see what I’m up to on GitHub and Stack Overflow. Some of the other 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 was a small application that served both the HTML and the original Markdown source.

Then, I decided that was overkill and rewrote it using Flask, which is what you’re viewing now.

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

Skills

(In order of proficiency)

Languages

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

Development

  • Django
  • Flask
  • Pyramid
  • Docker
  • Plone
  • Zope

Data Sources

  • OpenLDAP
  • PostgreSQL
  • MySQL
  • ZODB
  • SQLite
  • Redis
  • JSON
  • CSV
  • Parquet

Operating Systems

  • NeXTstep/Mac OS X/macOS
  • Linux (Debian, RHEL, Ubuntu)
  • FreeBSD
  • Solaris
  • AIX
  • Microsoft Windows (95 – 10)
  • MS-DOS
  • Mac OS

Tools and Applications

  • Quicksilver
  • TextMate
  • Homebrew
  • Git
  • Pipenv
  • tmux
  • Xcode
  • Visual Studio Code
  • Vim
  • Dash
  • Xymon (formerly Hobbit)
  • Remedy AR System User Tool
  • Microsoft Office Suite

Services

  • SSH
  • Nginx
  • Varnish
  • HAProxy
  • Apache
  • Postfix
  • Kafka
  • Kerberos
  • IMAP (UW, Dovecot)
  • DHCP
  • BIND (DNS)
  • inetd/xinetd
  • NFS

Other

  • OpenSSL
  • Puppet
  • SaltStack
  • Amazon Web Services

Experience

Quicksilver

Lead Developer, December 2010 – Present

Part of a small international team of volunteer 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
  • Support users

Six Feet Up

Developer/Senior Developer, August 2014 – Present

As a developer at a small consulting company, I work on dozens of projects in different areas, from managing servers to front-end design.

My primary role involves writing Python code, but I’ve also been able to apply my experience as a sysadmin. I spend much of my time working with Django, PostgreSQL, Redis, Poetry, Buildout, and other tools common in the Python world.

  • Custom Django and Flask application design for large, institutional clients
  • Backend Python-based services
  • Managing systems and orchestrations using SaltStack
  • System configuration and maintenance (primarily FreeBSD and Ubuntu)
  • Supporting the rest of the team as the resident macOS, Homebrew, and Git expert
  • Custom exports of content from Zope/Plone to JSON or CSV (for clients migrating to Wordpress and other platforms)

ADESA, Inc.

Linux Administrator, July 2008 – July 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)

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

Activities

IndyPy (2011 – Present)

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

Volleyball Coach (2016 – 2019)

When my daughter was playing for the Carmel Dads’ Club, I volunteered to coach her team… poorly.

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.