I am a committed and passionate software developer with experience in various programming languages and environments. I enjoy tearing apart technical debt, building fast realtime applications, understanding horrible legacy code and specifications, managing giant hordes of servers, and helping other people. I program for fun almost every weekend and take my trade very seriously.
I am extremely friendly and can get along with any passionate team. I tend to work many years at the same place because I always end up thinking of my co-workers as family. It is important to me that the company I work for has ethics I agree with.
- Linux
- OpenBSD
- JavaScript
- C
- Java
- Perl
- Git
- PostgreSQL
- Continuous Deployment
- Operations
- Unicode
- Database/Systems Architecture
- Regular Expressions
|
|
- OpenGL/GLSL
- Natural Language Processing
- Genetic Algorithms
- Arduino/Microcontrollers
- Distributed Databases
- Printing/Rendering/Rasterization
- Low level audio programming (ALSA/PulseAudio)
- Desktop UI Libraries
- Move the cat around with the arrow keys!
- Teaching
|
- HAproxy
- AWS / CloudFlare / DigitalOcean
- Automated Build Systems
- Maven
- Terraform
- Consul
- Vault
|
Job Experience
SixFifty (Jan 2022 - Present) Director, Software Operations
I just started! Woohoo!
Shareworks / Morgan Stanley (Jan 2020 - Dec 2021) Senior Software Engineer
At Shareworks I managed deployment tools and infrastructure for five different products that all come from different aqcuisitions or backgrounds.
Some of these tools are very outdated and do not have any developer resources allocated. I enjoyed wrangling these relics and doing my best to make
them better.
- Moved a product out of cloud hosting and into on-premise with a short maintenance window
- Designed automation for production and deployment of new products
- Learned Akamai configuration for WAF, CDN, and DNS
- Set up new build infrastructure with configuration as code for reliable builds
- Managed some simple kubernetes clusters
- Built user management with ansible custom plugin so that users' SSH keys automatically expire
- Built visualizer for huge Active Directory structure for easy troubleshooting of users and groups
Teem WeWork (Teem Apr 2018 - Sept 2018, WeWork Sept 2018 - Dec 2020) Senior Devops Engineer
Teem is a workplace experience company that helps companies manage and schedule large numbers of
conference rooms, schedule on-demand workspaces and desks, front door kiosks, and display campus
resource usage on large displays.
- Mentored developers around me to help them move in a positive direction
- Designed automation for production and development environments
- Wrangled a large production deployment which in the past had been configured completely by hand
- Redesigned large portions of AWS infrastructure to enable development environments. Automated VPN server configuration.
- Redesigned DNS structure to stabilize and remove complexity from a rats nest of private Route 53 zones.
- Designed and implemented dynamic load balancing using HAproxy, Consul, and Nomad
- Troubleshooted (Troubleshat?) ... "Solved" severe database problems
- Wrote a new tool for applying database permission changes from code
- Built new automated build system for docker based deployments
Experticity ExpertVoice (2015 - 2018) Senior DevOps Engineer
Experticity is a marketing/engineering/sales company focused on connecting experts with the best brands. I started there as a toolmaker/plumber on their release engineering team, and then the operations team.
- Helped design and implement a continuous delivery pipeline for a large complicated system, including a legacy java monolith, a large number of new microservices, BI systems, and databases
- Maintained deployment system and tools, both for development environments and production systems
- Assisted with attaining PCI DSS 3.1 compliance
- Helped provision and configure a new datacenter in AWS. We successfully moved our entire production system into AWS in 24 hours with only a few hours of downtime.
- Large amount of plumbing work in Puppet, Python, Jinja templates, Maven, and Atlassian's tools (Bamboo/Stash/Jira)
- Rewrote core deployment tool in Go. It now deploys 30+ microservices, 6 very heavy java applications, elasticsearch, rabbitmq, GridGain, and mysql databases several times a day into 20 differently configured development environments, 6 continuous testing environments, staging, QA, and two production environments with several hundred nodes, all with zero downtime. It maintains a pool of several hundred SSH connections and has literally never crashed.
- Designed a new operations stack to completely replace the existing system. This was a multi-year project involving switching hundreds of production servers with no downtime. The new system uses the open source tools Consul and Terraform to reduce complexity, enable infrastructure auto-scaling, reduce costs, and help our teams deliver their software faster.
CaduRx (2003 - 2014)
CaduRx is a medical software company. I helped develop one of the first web accessible medical record systems for both doctors and patients to use. Since this was a very small company at the time, my duties were very diverse.
Besides being a primary web developer, my experience included:
- Installation and administration of a large variety of servers, for roles as diverse as database, web, firewall, mail, DNS, intrusion detection, fax rendering and transmission, and automated testing
- Designing, building, and maintaining a large web-based medical records system that was highly performant on commodity hardware.
- Designing, building, and maintaining a large database schema with several hundred tables, and more than a thousand hot-deployed schema changes over 10 years.
- Building a testing framework for running unit tests automatically for web applications (utilizing Selenium)
- Building a java client application that rendered network print jobs and printed them (utilizing the Java Service Wrapper, XML/XSLT/XSL-FO). This application included automatic self-updating and restarting over the network, SSL encryption, and a mutant network protocol I whipped up (this was before JSON)
- Web design and maintenance of our main corporate site
- Training five developers and bringing them up to speed with our technology stack (which included teaching them new programming environments). Several of these developers were starting from scratch
- Building a framework for our system to communicate with a multitude of vendors for health information transport via cryptic government protocols (HL7, NCPDP, CCR, CCD, and X12)
- Writing custom scripts for importing data from various competitors' databases for new customers who wished to migrate their old data. This included reverse engineering the file format of an antiquated database engine
- Sales and marketing work at trade shows
- Visiting many medical clinics across Utah, Idaho, Nevada, and California for local support and training
- Meaningful Use Phase 1 and 2 certification (A tough specification for medical software.)