Work History

Principal Software Developer with 22 years of experience in the technology industry. Proven ability to forecast, lead, and deliver software projects. Expertise in a variety of technologies, including Python, Java, Typescript, Ruby on Rails, React, and AWS. Extensive experience designing and implementing web APIs. Knowledgeable in geospatial data science and remote sensing. (GIS master's degree expected October 2023.)

Current Role

ExecOnline - Principal Software Developer

Oct 2015 - Present

As a Principal Software Developer, I am given large, challenging, and often high-risk projects. Working independently and on small project teams, I have delivered many of the key features for ExecOnline's online learning platform.

Technologies: React with functional TypeScript, Ruby, Python, AWS.

Techniques: Distributed agile, Kanban, no-estimation forecasting

Successes: I instigated and piloted the use of ActionableAgile for no-estimation project forecasting, which was adopted by the organization. I was a key contributor to shaping the client-side architecture, the details of which can be seen at https://cooperts.io. I served on the company's technology leadership team, helping drive team and organizational improvements.

Past Roles

Fidelity Life Association - Manager of Software Development

Oct 2013 - Oct 2015 · 2 yrs 1 mo

At FLA I was hired to build out a new development team and office to take on some of the biggest challenges facing the company at that time. Our team grew from two people to 10, delivered on projects, and brought new techniques and ways of thinking to the organization.

Technologies: Ruby, RabbitMQ, AWS

Techniques: Kanban, lean startup, Drive-inspired leadership and team-building

Successes: Using ideas from lean-startup, delivered the first consumer-facing, agentless point-of-sale system, conducting multiple experiments on streamlining the sales experience.

Jama Software - Senior Software Developer

Apr 2012 - Oct 2013 · 1 yr 7 mos

At Jama, I was recruited to come join a new, small team that was building out the next generation of the company's products. We were a team of four, working independently from the rest of the development organization, doing rapid prototyping and experimentation. Our work was eventually folded back into the core product, which led to new challenges of merging multiple server- and client-side architectures into the same product.

Technologies: Java, Jersey RESTful services, Backbone.js, Ext JS, jQuery, server- and client-side logicless templates, Ruby on Rails.

Techniques: Kanban, rapid prototyping, continuous integration

Successes: Helped accelerate the learning and decision-making that led to our team's work being fed back into the core product.

Analog Analytics (now Barclaycard) - Software Developer

Jun 2011 - Mar 2012 · 10 mos

Analog Analytics was a start-up that developed a white-label platform for daily deals. I joined a mature team as an individual contributor. This was my first experience doing continuous delivery. We would deploy to production many times a day using Chef code that developers themselves helped develop and maintain.

Technologies: Ruby on Rails, Chef.

Techniques: Pair programming, continuous integration and deployment, dev-ops style collaboration.

Successes: Integrated quickly into an existing team, delivering software on day one, building out several key new features, and serving as lead on some important customer-driven projects.

Collaborative Software Initiative - Software Developer, Lead role

Jan 2008 - Jun 2011 · 3 yrs 6 mos

At CSI, I was the first full-time development hire, coming over from Liberty Mutual with my manager to build a new team and start work on a new project. We were to build an open source, disease surveillance application. Initially the application was for the public health department of the state of Utah, with the hope that a community would grow around it and be used by other health departments and the CDC. I worked closely with the VP of Engineering and Product to build out the development team that would work with the subject matter experts in Utah to accomplish these goals. In the first year, we built a highly effective team and replaced Utah's existing surveillance application. In the years that followed, we continued to iterate, growing the application into a powerful tool in the fight to prevent disease.

Technologies: Ruby on Rails

Techniques: Distributed agile, continuous integration, open-source devlopment/community maintenance

Successes: Building a great team and product that did some good for the world

Liberty Mutual - Software Developer, Technologist

Jul 2005 - Jan 2008 · 2 yrs 7 mos

I started at Liberty Mutual in Portland when IT was still under Liberty Northwest. In those days, I was an individual contributor on a web-based, auto-insurance application whose backend was a staged, event-driven system. I was developing services 'on the bus' and fixing scalability issues with the pre-existing ORM implementation.

Eventually, Liberty Northwest IT was folded into Liberty Mutual, and I was asked to join a small team that reported directly into the CTO of Liberty's agency markets business unit. Our charter was to help establish the future application architecture for Liberty Mutual, bring agile and lean software development techniques to the rest of the company, and bring open-source software usage and development in the company mainstream.

On this new team I was involved in rapid prototyping, architectural spikes, and product evaluations. On any given day we could be called upon by the CTO to stop what we were doing to address some business inefficiency. We were also asked to take trips out to other parts of the organization to present on agile and lean development techniques.

Technologies: Java, Ruby on Rails, Adobe Flex, JavaSpaces, Spring, Hibernate, ESB, SonicMQ

Techniques: Test-driven development, lean, agile

Successes: On the Liberty Northwest team, a re-write of an ORM implementation drastically improved performance of a key system. On the Liberty Mutual team, one of our greatest successes was to help stop a major project that was failing.

Other roles

Medical Management International (Banfield) - Software Developer

Tech: Java, Oracle DBMS

Techniques: XP, Pair programming

Mar 2005 - Jul 2005 · 5 mos

Portland Public Schools - Software Developer, Lead role

Aug 2002 - Feb 2005 · 2 yrs 7 mos

Tech: PHP, Java, PostgreSQL, Oracle (DBMS, App server, Portal Server), HTML, JavaScript, CSS

Apress - Software Developer

Feb 2002 - Aug 2002 · 7 mos

Tech: PHP, MySQL, HTML, JavaScript, CSS

The Industry Standard - Software Developer

Apr 2000 - Sep 2001 · 1 yr 6 mos

Tech: Tcl, SQL, HTML, JavaScript, CSS

Sparks.com - Software Developer

Mar 1999 - Mar 2000 · 1 yr 1 mo

Tech: XML/XSLT, HTML, JavaScript, CSS