I am a technology agnostic software developer with over twenty years of experience spanning the full web stack. I began my career implementing custom networking protocols in C++ for distributed simulation and render farm management, and that evolved to working on three-tier systems for workflow and asset management, then microservice cloud architectures and single-page applications.
I enjoy the challenge of building and operating a system that solves a problem for its users, but also recognize that the success of an engineering organization depends not only on the technologies and architecture patterns it employs, but also on the processes it puts in place. A well-run organization empowers teams to efficiently iterate on a product - to align on goals, design, build, deploy, and ensure the quality of a release, then operate, monitor, measure, and iterate again. Development processes depend upon a happy team that can evolve over time, as well as recruit, train, retain, reward, and promote the talented individuals that ultimately define the culture of a workplace.
Finally, the best engineering organization cannot overcome a misunderstanding of what problems a product solves for its users, otherwise the team builds the wrong features, and the product cannot best competitors with a better understanding of the needs driving the market.
For me the job is most interesting when it works to keep all these forces in balance.
software developer and devops; Center for Translational Data Science at the University of Chicago (https://ctds.uchicago.edu/); Aug 2017 - Feb 2021
5454 South Shore Drive Suite 2A/B Chicago, IL 60615
reactjs python kubernetes terraform golang
I worked with the plan-X team at CTDS (https://ctds.uchicago.edu) developing the next generation platform for research data commons (see https://medium.com/@rgrossman1/how-data-commons-can-support-open-science-40b0d978d2fb). We generalized and extended the software and automation that drives the Genomic Data Commons (GDC - https://portal.gdc.cancer.gov/), so it can be applied in other research domains and deployed to Kubernetes or similar clusters in both public and private clouds. The technology we worked with varied from Reactjs on the frontend to swagger/openapis defined public facing GraphQL and REST API's driven by python code on the backend to devops and CICD automation with terraform, kubernetes, and jenkins.
senior software engineer; OpenText Corporation (https://opentext.com); Jan 2014 - Aug 2017
275 Frank Tompa Drive Waterloo, ON N2L 0A1 Canada
I worked on the full life cycle (design, develop, test, deploy) developing Optimost (https://www.opentext.com/products-and-solutions/products/customer-experience-management/opentext-marketing-optimization/opentext-optimost) (formerly of HP). The small Optimost developer team worked with a wide variety of technologies to implement Optimost's web-testing capabilities - from a clickstream analytics platform using Apache Storm and Vertica, to a legacy PHP backend that we extended with HTTP API's to support new single-page web UI's using Backbone.js - working with tools like git, jenkins, Chef, maven, nodejs, gulp, less, and Docker to automate as much as we could.
software consultant; Bullingdon Research (https://www.quantemplate.com/); London; May 2011 - May 2013
software consultant; Nickelodeon Animation Studios (https://nick.com); Jan 2010 - Feb 2011
java python jpa mysql
I aided in the design, development, and test of a prototype distributed workflow support system. A SQL database stored a node-based data model manipulated via APIs served by a J2EE application server. A simple json over HTTP python binding allowed integration with Maya.
cataloging software support; Auburn University Libraries (https://www.lib.auburn.edu/); Auburn, AL; 2007-2011
C# scala oracle
I developed custom cataloging tools, and helped deploy open source discovery and publishing tools.
system software developer; Sony Pictures Imageworks; Culver City, CA; 1999-2007
java perl python oracle postgresql
I worked on systems for render management, asset tracking, and workflow automation.
Purdue University; 1994 - 1999
At Purdue I carried out research under the guidance of my adviser, Professor Vernon Rego, toward my dissertation: "Algorithms for Improving the Performance of Optimistic Parallel Simulation" (http://docs.lib.purdue.edu/dissertations/AAI9952158/).
The thesis explores various methods to decrease the runtime of an optimistic parallel discrete event simulation system on a network of workstations or other distributed platform.
University of Illinois; 1990 - 1994
I worked on a senior project with Professor Loui that we eventually filed as a research paper - "A Fault Tolerant Distributed Algorithm for Minimum-Weight Spanning Trees" - http://hdl.handle.net/2142/74575
java scala typescript bash