John Sullivan Resume

Who Am I?

I am an experienced Software Engineer with a demonstrated history of working in the information technology and services industry. My professional skills are in Middleware, Storage Area Network (SAN), Internet Protocol Suite (TCP/IP), Python, Go, C/C++, and Debugging.

Software Contributions

Examples of my work can be found at the following locations:

GitHub Profile

GitHub is (to paraphrase its company profile) a web-based hosting service for version control using Git. It is the basis for a community of developers to collaborate on projects written in a variety of languages and under a variety of open-source-friendly licenses.

Hashicorp Memberlist

memberlist is a Go library that manages cluster membership and member failure detection using a gossip based protocol.

The use cases for such a library are far-reaching: all distributed systems require membership, and memberlist is a re-usable solution to managing cluster membership and node failure detection.

memberlist is eventually consistent but converges quickly on average. The speed at which it converges can be heavily tuned via various knobs on the protocol. Node failures are detected and network partitions are partially tolerated by attempting to communicate to potentially dead nodes through multiple routes.

Source: memberlist

Golang Argparse

The goal of this project is to bring the ease of use and flexibilty of Python's argparse module to Go.

Personal Projects

The line between work and play is blurred. Skills and technologies I learn at work are used in my personal projects, and ones that I have played around with at home can be brought to work.

  • Linksys WRT1200AC with OpenWRT/LEDE
    • I use OpenWRT/LEDE running on two Linksys WRT1200AC wireless routers as the network infrastructure of the house. [More details...]

  • Consul Health Checks
    • I use Consul as a method of monitoring the health of the various devices and services. [More details...]

  • ownCloud/nextCloud
    • I use ownCloud to automatically upload photos from my family’s phones as well as share documents across family members’ accounts. [More details...]

  • Jenkins CI/CD
    • I have Jenkins build jobs configured for various software projects. These jobs automatically merge Git branches to master, and then build and test the merged code within a Docker container. [More details...]

  • Hubot Instances
    • I maintain two Hubot Instances, one which interacts with a friend's Slack workspace and another which interacts with my family workspace. [More details...]

  • Libvirt/KVM
    • I use libvirt and KVM to manage a set of virtual machines on my main Fedora Linux server. [More details...]]

  • Vagrant Test Environment
    • I use Vagrant with the libvirt/KVM plugin to create and provision test instances of each system in my infrastructure. [More details...]
  • Ansible/Puppet Configuration
    • I use Puppet for system configuration, and am transitioning to Ansible mainly because I want to gain experience with this configuration tool for work. [More details...]

  • OSMC Media Centers
    • I maintain three Raspberry Pi-based OSMC nodes; two media centers and one WiFi-accessible tablet. [More details...]

  • CoolNAS – in hibernation
    • This project is in hibernation mode, the concept is to enable remote back ups across a wide area network. [More details...]