curriculum vitae

Simon Fire Edition v2

  • Designed the programming patterns used throughout each of the modules for the project using mainly C++ and the Arduino IDE Implemented a concurrent LED animation system on a single core processor. This allows for multiple animations to run on any or all strips simultaneously
  • Calibrated the capacitive touch sensors (MPR121)
  • Fixed a hardware bug where the touch sensors were registered voltage drops when there was no touch
  • Assisted in writing and reviewing the grant application
  • Soldered some headers onto some Arduinos
  • Interacted with thousands of players, recording feedback and iterating on the game.

Daptiv / Changepoint:

  • Follow agile methodologies such as pair programming, test driven development, and tracking user stories using a kanban board.
  • Improved Grunt development build speed from 35 seconds to 5 seconds for the TypeScript project
  • Advocated for using ng-grid instead of writing a grid from scratch
  • Implemented a task management application in AngularJS and TypeScript, using ng-grid with a persistent row that allows for new items to be added to a collection
  • Use Chrome’s heap analysis tools to identify memory leaks
  • Find and fix bugs in legacy C#
  • Set up Linux build boxes with Mono and Nunit Console to compile and run unit tests. Build times went from 3 minutes to 15 seconds
  • Designed and implemented a console application that loads data from MSSQL into the business objects and verifies integrity.
  • Implemented object relational mapping utilities for proprietary custom field configurations
  • Improved existing API endpoints and added new ones using ServiceStack 3
  • Implemented a serializer and deserialize for the jsonapi open format in ServiceStack
  • Integrate legacy software with other systems using APIs
  • Prototype API versioning strategies, implement the company standard

Barracuda Networks:

  • Assisted in implementing a coding standard across all PHP teams
  • Helped design a path for migrating from PHP4 code to loosely coupled, testable, object oriented code.
  • Discovered a Windows data loss bug where binary data streams were missing. I scoped it, wrote a tool that detected and recovered the lost data during the next backup, and fixed the two bugs that caused it.
  • Improved Windows backup speeds by 20% by using bulk inserts to the database and changing queries to be asynchronous calls.
  • Completed a proof of concept implementation for message level backups using synchronization state provided through Exchange Web Services.
  • Fixed bugs in email message level backups:
  • off by one error that resulted in every 100th email within a folder to not be backed up
  • email folders with only numbers in their name were not backed up
  • all emails were being restored as drafts
  • all emails with non-ascii characters in their headers were not backed up
  • errors from Exchange Web Services during a restore caused the process to crash instead of just skipping the email and reporting the error
  • Fixed a fatal memory leak during Exchange Mailbox Database backups
  • Fixed a bug where filesystems with UTF-8 characters in their name could not be mounted.
  • Added new features to Exchange message level email backups to support backing up disabled and linked mailboxes
  • Fixed a performance bug where the backup process had an extra unused database connection open per child

Ann Arbor PHP and MySQL meetup organizer | 2014

Organized and presented seminars Pair programming and live demos of writing testable code and test driven development

Startup Weekend Ann Arbor | 2014

Worked with about 10 people to create an app that allows you to upload and view pictures within a geo-fenced location Implemented the backend API using Node.js and MongoDB

Great Lakes Comnet / Comlink:

  • Created a custom client to send custom packets to an old server provided by a vendor. I wrote it in Ruby and debugged it using Wireshark.
  • Designed and created an object oriented PHP framework where modules can be created and imported into any deployment. It is maintained using Git and is mainly PHP, jQuery, and MySQL, though there are some shell scripts for system utilities and some Perl scripts for integration with other systems.
  • Set up OpenID to work with the internal LDAP backend. This allows us to use single sign on technology without confusing the users.
  • Residential Customer Billing: Designed and built a tool so customers can create an account, log in to view their invoices, previous payments, and schedule new payments. PCI compliant credit card storage and processing. Written as a module in my framework using PHP and uses MySQL. It also has functional tests.
  • Residential Customer Mail Accounts: Created an internal web tool to control unix users and mailboxes to provide webmail access. I worked with another developer to create an API to execute shell commands on the mail server from a separate web server. Written as a module in my framework in PHP and uses MySQL.
  • Dedicated server & VPS billing notification: tickets were manually being created and updated when a customer was past their invoice due date. I automated the process by using the Request Tracker API to maintain a ticket per customer using Perl.
  • Assisted the Network Operations Center with software and hardware troubleshooting, and Linux system administration.
  • Helped solve issues with OpsView server maintenance and configuration, including issues stemming from apache configuration and maxed inode assignment due to all performance logs being kept. Nothing like getting “hard drive full” errors when you barely have 50% of a drive’s capacity in used.
  • Set up an internal deployment of ownCloud. I wrote a utility script in Ruby to allow a sysadmin to restore data from the version history automatically generated by ownCloud. The version history could be used to restore previous versions, but not restore deleted files within the web interface. This script can be found on my github page.
  • Create, Read, and Update interfaces to manage employees, contacts, circuits, servers, and inventory. Most objects can be linked to each other, as well as to tickets. These tools exist as modules with my PHP framework.
  • Quoting Tools: Internal and Channel Partner quoting tools used to estimate and mark up prices using stored data and an API for determining the closest serving wire center. Uses PHP, XML, and jQuery.
  • Redmine: Set up and configured a dedicated FreeBSD server to host separate instances of Redmine, which is written in Ruby on Rails. I used RVM to control the gems for each instance. I managed to not reboot after installing FreeBSD (who knows, maybe someone came into my office with a question) and it stayed that way for about 6 months until I noticed it was in a chrooted environment. Since it was a VM, I took a snapshot, rebooted, and fixed the kernel panic by reinstalling the Linux compatibility libraries from ports.
  • Created frontend and backend tools to parse call detail records and rate information and generate bills from them using PHP.
  • Created a user interface for GLC’s member companies to log in and request changes to their toll and toll free numbers and generate reports. I integrated with multiple different carriers, including Qwest, to automate this process. I used PHP’s implementation of FTP to connect to a server, upload changes, then download the response. I kept track of the information with MySQL.
  • Dedicated Server and VPS order forms: Added objects to existing PHP code and jQuery to process new server orders. The objects have configuration options in a separate script so that sysadmins can more easily update them.

Department of Physics, Michigan State University

Computing Assistant IV | 2007.04 - 2009.05 (2 years, 1 month)

  • Created the content management system used for the knowledge base.
  • Learned object oriented PHP, MySQL, JavaScript, and refactoring
  • Still used today, fast, and stable: http://support.pa.msu.edu/
  • Provided IT support to the professors in the Physics Department
More Reading
Newer// resume