I’m a full-stack developer with 18 years of professional experience spanning a variety of languages, frameworks, industries, scales, and methodologies. Lately the majority of my work has been with Docker, Python, Django, Redis, and Vue.js. While I think of myself as primarily interested in technology, I’ve also lead teams, mentored developers, and interfaced directly with clients. I’m taking some time off for parental leave this fall/winter, but I’m looking to return to work starting March 1st, remotely or in the Vancouver area.
Technical Team Lead
- Technical merger: Facilitated the merging of tools and data between Gossamer Threads and Carbon60 Networks through requirements gathering, systems analysis, and data migration scripting
- Team leadership: Managed a team of software developers, coordinated standups and one-on-ones, provided mentoring to junior and intermediate developers, and ran technical interviews
- Risk analysis: Identified single-points-of-failure in both systems and personnel, and took steps to add appropriate redundancy through hiring new staff, cross-training skills, introducing CI/CD, and converting legacy applications into Docker images
Lead Integration Engineer
My tenure at Gossamer Threads spanned 12 years, during which my responsibilities shifted from custom third-party development into internal systems integration. My focus was on building internal and integrating systems to eliminate pain-points for others in the organization.
- Systems integration engineering: Greatly reduced interdepartmental confusion by designing and implementing a centralized CMDB with Django REST API, Vue.js, and Redis PubSub; Identified, consolidated, and integrated redundant legacy systems into this infrastructure
- Process integrity automation: Exposed process integrity issues by formalizing and codifying business practices, empowering sysadmins and sales reps to proactively reach out to clients before issues became critical, such as domain expiration, unusually frequent VMware VM migrations, or published CVEs relevant to user-installed software
- Billing pipeline: Resolved the services/billing gap by automating the detection of all services across 2000+ hosts and reconciling it against the known contract information, generating on-the-fly invoices with metered and custom-agreement services
- Monitoring: Built a monitoring/rendering/IPAM system and reduced total polling time of hosted servers and domains in local and remote datacenters from 200s to 3s with a multithreaded Django-based SNMP/RRD polling system, giving the sysadmins fine-grained access for troubleshooting, and generating alerts for classified issues
- Datacenter management: Modernized the internal datacenter records by building a WYSIWYG DCIM interface, capable of heterogeneous network topology detection and client-accessible live traffic flow diagrams
- Backup access: Provided clients with access to their VMware partition snapshots by building a browsable web front-end, integrating with both VMware API and file-system introspected NetApp snapshots
- TLS automation: Integrated Let’s Encrypt into the internal system architecture, enabling automatic certificate regeneration
- Lead tracking: Developed an email-integrated CRM tool, providing sales a system in which they could track their leads, manage client records, and generate predictive reports
- Third party consulting: Facilitated client-facing feasibility assessments and business needs investigations, culminating in iterative rounds of design, feedback, development, and testing on dozens of projects
Senior Software Developer
Assessed feasibility and longevity of potential RIA ecosystems for future development, designed tool workflow in UML state and activity diagrams, and implemented them in Adobe Flex with a corresponding back-end server for remote saving, loading and publishing
Test Automation Engineer
Automated repetitive testing efforts and managed the defect tracking software
Implemented iterative changes to the company’s premium finance software using J2EE, JSP, JBoss and PostGreSQL
This was my first exploration into Python development and an experiment in interface design for voting systems. I’m particularly proud of the conversion of a complex algorithm (Schulze STV) into a relatively readable Python script.
Continuing the theme of collective decision making, this site was built to help make consensus-building easier by reducing the scope of decisions for those with large boardgame collections. It ended up being a fairly nuanced dive into remote API caching, performance optimization, and recommendation systems.
I build this site to help parents pick the name for their child, and as another opportunity to explore complex algorithms behind streamlined interfaces. It focuses on mobile-first design using a Vuetify front-end and a separate Django REST API backend.