Senior Developer
- Quality-driven lead/senior developer with deep experience mentoring
teams and
self-managing.
- Extensive freelance history has allowed me to develop 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.
Technical Skills
Languages |
Java (Tomcat, Hibernate, Maven, Ant, Struts),
JVM Languages (Scala, Groovy),
Python (Pyramid, SQLAlchemy, pip),
SQL,
JavaScript (jQuery, Angular, React, Node.js),
Ruby (Rails, ActiveRecord),
Perl, Bash, PHP, C
|
Database Administration |
MySQL, PostgreSQL, MS SQL Server, Oracle (PL/SQL)
|
Amazon Web Services (AWS) |
IAM, EC2, RDS, S3, ElastiCache, VPC, SES |
Docker |
docker, docker-machine, docker-compose, docker
registry
|
Internet Technologies |
XHTML, CSS, JSP/Servlets, XML, Git, RabbitMQ, Celery,
Ant, Maven
|
Administration |
Servlet Container (Tomcat), Web Server (nginx,
Apache, IIS), Atlassian (Jira, Bitbucket, Confluence, HipChat),
Jenkins, DNS (bind), Firewall, NAT
(ipchains/iptables), Mail Server (qmail)
|
Development/Deployment Platforms |
Linux, OSX, AWS EC2 |
Experience
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.
Achievements include:
- 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
repos
- 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
Languages |
Python, JavaScript, SQL, Bash
|
Frameworks |
Persistence: SQLAlchemy; Caching: Redis; Messaging:
RabbitMQ; Distributed/Asynchronous Task Queue: Celery; JavaScript:
Node.js, React, Gulp, jQuery, Bootstrap;
Testing: Selenium;
|
Cloud |
AWS: EC2 (Security Groups, Load Balancing), IAM,
S3, RDS, ElastiCache (Redis), VPC, Route 53, SES
|
Build |
Docker |
Version Control |
Git |
IDE |
IntelliJ (PyCharm plugin) |
Sole Developer - Consultant, 2002
- Present (Portland, OR and New York,
NY)
Shambhala Publications - Independent
book
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
marketing dollars.
- 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.
Languages |
Java (Streams, Lambdas, Generics, Enhanced for
Loop, Autoboxing/Unboxing, Typesafe Enums), Groovy
(Builders, closures, GStrings), JavaScript, SQL, XML, XHTML, JSP,
Bash
|
Frameworks |
Persistence: Hibernate; Caching: ehcache,
OSCache; Dependency Injection: Spring; Messaging: SOAP (Apache
Axis2);
AJAX: jQuery; Testing: JUnit 4.x (Annotations, HSQLDB); Logging:
Apache Commons Logging, Log4J;
Runtime Performance Monitoring: JETM; Web: Apache Struts;
Documentation: Docbook
|
Build |
Apache Ant |
Version Control |
Git |
IDE |
IntelliJ |
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
reporting.
Sole Developer - Consultant, 2009
- Present (Portland, OR and New York, NY)
Pono'i - Privacy software
- Modernized code to current Java version, added
testing, improved architecture, and implemented 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
college
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
Groovy (backend) /
JavaScript/jQuery
(frontend) to avoid compilation and used an
XML-based
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 web
applications: E-Commerce (
Samovar
Tea Lounge Store), Publishing (
Inner Traditions), and
Education
(Marylhurst University Course Evaluations, not public).
Technical Lead - Employee, 1997 -
2000 (San Francisco, CA)
Viant - Dot-com Internet
consulting
firm
Technical Lead |
- 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
included a
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
CMS.
Key feature
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
and external
content.
|
Senior Developer |
- Tech Center: Wrote re-usable code for several
projects,
including a Java web stress tester, an
automated survey handling tool, and the
Focus Workspace
Browser (FWB), an
internal knowledge management application. Gave a presentation
of my work on the FWB at IBM's
WebSphere
2000.
- Compaq project: Developed a Java
codebase using object
oriented
programming with hooks for extension/enhancement. Provided
guidance to more junior members of
the
development team.
- Online college application services company:
Performed a technical architecture audit
of their
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.
Member
of the IT group as backup for the San Francisco-based Information
Technologist. Played an active role in
recruiting,
serving as the Haas School of Business recruiting captain.
Developer - Employee, 1996 - 1997
(San Francisco, CA)
Andersen Consulting - Global management
consulting, technology services and
outsourcing company
Developer for a global customer service client-server
application at
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.
Education
Cornell University: B.S. in Environmental Systems
Engineering
Teaching Assistant for ABEN 151: Introduction to Computing
Activities/Interests
- Triathlon enthusiast. Beware, I may convince you to join me!
- Member of the Portland
Timberfish
- Puzzler! Rubik's Cube (under 60s), crosswords, KenKens, acrostics,
etc.