
I've been a software developer since my parents first bought me a TI-99/4A in kindergarten, and professionally since 2000. I've worked on all sorts of systems, including customer service, intranets, data collection, point-of-sale, emergency telephony, automotive sales, and hospitality. I've also been active in the open-source community, both contributing to others' and maintaining my own projects, working in areas like software packaging, web application platforms, virtualization, and deployment.
I believe in simplicity and correctness in software design, seeking to create software that solves problems neatly and understandably, not just in development, but in deployment and operations as well.
Open Source Projects
- brewdo – A sandboxing wrapper for Homebrew
- octothorpe – A Python library for controlling telephony applications
- xon – A library to easily adapt JSON-supporting APIs to readable
Papers and Presentations
-
The Modern Command-line Tool Stack: Pipenv, Click, and Friends
- PyOhio | July 2018
-
Electron in the Real World
- Beer City Code | June 2018
- SE Michigan JavaScript Meetup | March 2018
- CodeMash | January 2018
- SoftwareGR | November 2017
- Michigan!/usr/group | November 2017
-
Security Hygiene for Software Professionals: Lightning Edition
- PyOhio 2017 | July 2017
-
Command Injection, or How /bin/sh can rm -rf your server
- PyOhio | July 2016
-
Making and Taking Calls with Octothorpe
- PyOhio | July 2014
-
Python Packaging and Distribution: bdist_rpm
- Grand Rapids Python User Group | March 2014
-
Packaging and RPM
- DevOps West Michigan | January 2013
The Atomic Team
- Leadership & Operations
- Development
- Delivery
- Design
- Testing
- CeCarlCarl Ericksonbio →
- A2 JbJonahJonah Baileybio →
- A2 JfJohnJohn Fisherbio →
- GR JwJeffJeff Williamsbio →
- GR MaMicahMicah Allesbio →
- GR MmMikeMike Marsigliabio →
- GR MoMaryMary O'Neillbio →
- GR ScShawnShawn Crowleybio →
- GR AmAdamAdam Medemabio →
- A2 EeElaineElaine Ezekielbio →
- GR JhJesseJesse Hillbio →
- A2 KdKellyKelly Danielsbio →
- GR LtLisaLisa Tjapkesbio →
- GR MdMaryMary DeYoungbio →
- GR TvTerriTerri Vrugginkbio →
- GR AkAaronAaron Kingbio →
- GR ApAndyAndy Petersonbio →
- GR AzAlexAlex Zurekbio →
- GR BcBekahBekah Cheekbio →
- GR BmBrianBrian Maybio →
- GR BvBrianBrian Vanderwalbio →
- GR CfChrisChris Farberbio →
- GR DcDrewDrew Colthorpbio →
- A2 DgDylanDylan Goingsbio →
- GR DkDanDan Kelchbio →
- A2 GlGillianGillian Lemkebio →
- GR GvGageGage Vander Claybio →
- GR GwGregGreg Williamsbio →
- GR JbJoeJoe Bustamantebio →
- GR JcJoeJoe Chryslerbio →
- A2 JdJoanieJoanie Davisbio →
- GR JnJordanJordan Nelsonbio →
- GR JrJohnJohn Rublebio →
- GR JsJordanJordan Schaenzlebio →
- A2 JwJarekJarek Wojciechowskibio →
- A2 KdKoryKory Dondzilabio →
- GR LcLydiaLydia Cuperybio →
- GR LrLauraLaura Robbbio →
- GR MaMollyMolly Algerbio →
- A2 MbMattMatt Behrensbio →
- GR MlMeredithMeredith Lindbio →
- A2 MnMattMatt Nedrichbio →
- GR MsMikeMike Swietonbio →
- A2 MwMikeMike Woelmerbio →
- GR PbPatrickPatrick Baconbio →
- A2 PpPatrickPatrick Palebio →
- GR RaRyanRyan Abelbio →
- GR RmRachaelRachael McQuaterbio →
- A2 SsSivhaunSivhaun Serabio →
- A2 ThTylerTyler Hoffmanbio →
- A2 TlTomTom Liaobio →
- A2 WsWilliamWilliam Shawnbio →
- InInternsAtomic Interns→
- A2 AbAmyAmy Burkebio →
- GR BhBrittanyBrittany Hunterbio →
- GR JpJasonJason Porrittbio →
- GR MfMattMatt Fletcherbio →
- GR TpTammyTammy Pearsonbio →