- Quality-driven lead/senior developer with deep experience mentoring teams and
- Extensive freelance history has allowed me to develop all the skills
necessary to marshall a project from proposal through implementation.
- Demonstrated ability to innovate "Why didn't I think of that?"
solutions to amorphous problems.
- Extensive Java, Python, SQL/ORM, and network application experience.
- DevOps experience working with AWS and docker containers.
- I am an avid problem solver. I enjoy puzzling through challenges,
whether they be programming tasks, infrastructure issues, or
architecture difficulties. It's embedded into my being and carries into
my personal life as well, from improving my swim stroke to solving
KenKens, crossword puzzles, and acrostics. I am intrinsically motivated
to complete tasks and refine solutions.
||Java (Tomcat, Hibernate, Maven, Ant, Struts),
JVM Languages (Scala, Groovy),
Python (Pyramid, SQLAlchemy, pip),
Ruby (Rails, ActiveRecord),
Perl, Bash, PHP, C.
||MySQL, PostgreSQL, MS SQL Server, Oracle (PL/SQL)
|Amazon Web Services (AWS)
||IAM, EC2, RDS, S3, ElastiCache, VPC, SES
||docker, docker-machine, docker-compose, docker
||XHTML, CSS, JSP/Servlets, XML, Git, RabbitMQ, Celery,
||Servlet Container (Tomcat), Web Server (nginx,
Apache, IIS), DNS (bind), Firewall, NAT
(ipchains/iptables), Mail Server (qmail)
||Linux, OSX, AWS EC2
Senior Developer - Ocrolus, LLC, February 2015 - April 2016 (Portland, OR)
Ocrolus, LLC - Software startup focused
on automating the process of reading and analyzing bank statements
Hired as a senior developer, my role expanded to also include Security and DevOps.
- On my own initiative, researched, proposed, documented, developed
and implemented a novel solution using inheritable config files and
mustache templates to fix our code configuration issues that had
been plaguing the team for months.
- Transformed our ad-hoc deploy from an unreliable, unpredictable,
manual, error-prone, two-week process to a docker-based single
script that worked across development, testing and production.
Included in the deployment was:
- A flexible pip-based docker deployment system that could
deploy from either branch heads or semanitcally versioned git
tags, which pulled from 14 internal git repos and 69 pinned pip
- A rollback system (both code and data)
- A data migration system (Alembic)
- A multi-docker machine log capture system
- HipChat notifications on success/failure
- Graceful diversion to maintenance pages
- Co-designed and implemented a Vault-based secret management system
so we could remove secure data (AWS access keys, passwords, etc.)
from our code repositories
- Responsible for assessing security for our application, vpn, AWS,
email, and internal services
||Persistence: SQLAlchemy; Caching: Redis; Messaging:
||AWS: EC2 (Security Groups, Load Balancing), IAM,
S3, RDS, ElastiCache (Redis), VPC, Route 53, SES
||IntelliJ (PyCharm plugin)
Sole Developer - Consultant, 2002
- Present (Portland, OR and New York,
Shambhala Publications - Independent
publisher and seller
- Designed and implemented a Java web application
to create and manage mailings lists for both email and postal mailing campaigns.
- Developed a sophisticated and performant matching algorithm to
link mailing records (10M) with orders (400K) that enables my
clients to make business decisions on how to best spend their
- Developed a web-based replacement for a word processor based
catalog creation tool that is so fun and intuitive to operate that
my clients literally argue over who gets to use it next.
||Java (Streams, Lambdas, Generics, Enhanced for
Loop, Autoboxing/Unboxing, Typesafe Enums), Groovy
||Persistence: Hibernate; Caching: ehcache and
OSCache; Dependency Injection: Spring; Messaging: SOAP (Apache Axis2);
AJAX: jQuery; Testing: JUnit 4.x (Annotations, HSQLDB); Logging:
Apache Commons Logging and Log4J;
Runtime Performance Monitoring: JETM; Web: Apache Struts;
Sole Developer - Consultant, 2014
- Present (Portland, OR)
Inner Traditions • Bear & Company -
Independent book publisher and seller
In full cooperation with Shambhala Publications, expanded and resold
the software built to handle mailing campaign, catalog management and
Sole Developer - Consultant, 2009
- Present (Portland, OR and New York, NY)
Pono'i - Privacy software
- Enhanced code for current Java versions, testing,
architecture and implementation of new security features.
- Spearheaded task of creating technical UML documentation for patent application.
- Significant experience with cryptography packages (JCE, Bouncy Castle).
Sole Developer - Consultant, 2008
- 2013 (Portland, OR and New York, NY)
Geneva College - Private, four-year
Created a novel solution that allowed prospective students to save their
work in progress on Geneva's online application form. The program required
no change or even awareness of the html form designer, used
(frontend) to avoid compilation and used an XML
file data store to provide the most transparent solution for the
non-technical project owners.
Co-Developer - Consultant, 2002 -
2006 (Portland, OR)
Mandala Designs - Boutique software
development and hosting firm
Primary back-end developer for several Java
applications: E-Commerce (Samovar
Tea Lounge Store
), Publishing (Inner Traditions
(Marylhurst University Course Evaluations, not public).
Sole Developer - Consultant, 2000
Formix - High-performance computing
Designed and built a web-based host administration application for a
heterogeneous computer network. The application
maintained the information necessary to provide network services (DNS,
DHCP, YP/NIS) to all computers on the
network. Implemented robust error handling as well as extensive run-time
Technical Lead - Employee, 1997 -
2000 (San Francisco, CA)
Viant - Dot-com Internet
- Innovation Center: Implemented dynamic, multi-tier
web applications, including wireless
technologies on WAP phones and Palm devices.
- Compaq project: Led a team of three
developers to enhance a custom CMS. Key feature additions
more robust security scheme coupled with a single
sign-on solution for three of the Compaq sites.
- Tandem Personalization project: Led a team of four
developers to enhance a custom
additions included developing a sophisticated rule engine that
allowed administrators to build
targeted banners based on user behavior and preference
selection, as well as allowing users to
create their own profile-based personal links to both internal
- Tech Center: Wrote re-usable code for several
including a Java web stress tester, an
automated survey handling tool, and the
Browser (FWB), an
internal knowledge management application. Gave a presentation
of my work on the FWB at IBM's
- Compaq project: Developed a Java
codebase using object
programming with hooks for extension/enhancement. Provided
guidance to more junior members of
- Online college application services company:
Performed a technical architecture audit
current site. Performed an application stress test using Viant's
custom Java web stress tester.
Within Viant, was a member of the technology discipline and was a
member of the San Francisco mentoring group.
of the IT group as backup for the San Francisco-based Information
Technologist. Played an active role in
serving as the Haas School of Business recruiting captain.
Developer - Employee, 1996 - 1997
(San Francisco, CA)
Andersen Consulting - Global management
consulting, technology services and
Developer for a global customer service client-server
Informix Software. Development planning and resource allocation,
customer data modeling and
database design, detailed technical design, customized application
development, system test preparation,
performance tuning, interface design and development.
Cornell University: B.S. in Environmental Systems
Teaching Assistant for ABEN 151: Introduction to Computing
- Triathlon enthusiast. Beware, I may convince you to join me!
- Member of the Portland
- Puzzler! Rubik's Cube (under 60s), crosswords, KenKens, acrostics,