Experience
2020 — 2021
● Built an e-commerce system which integrated with BigCommerce, Shopify, and Dsco. Product and order information was synchronized between our database and their platforms. Implemented in nodejs using a job queue (pg-boss), I designed the system so that failures were easily recoverable via manual or automatic retries.
● Developed two frontend applications: one for employees and one for partnered brands. The apps were built using the react-admin framework with custom components being created based on the material-ui library.
● Developed REST APIs with express, typescript, and mocha. Endpoint implementations were strongly typed and data was type-checked at runtime (io-ts).
● Designed, operationalized and optimized production postgres database schema and queries.
● Implemented product search in typescript and postgresql. Search functionality was more sophisticated than full text search; products were matched using product attributes (structured data) and ordered using personalization scores from a data science model.
2015 — 2020
Los Angeles, California, United States
● Introduced CircleCI Enterprise and helped teams transition from an unmaintained Jenkins installation to CircleCI. Developed tooling to deploy docker containers to Amazon Elastic Container Service from continuous deployment environments.
● Partnered with product teams to build docker images for their services. I empowered them to be self-sufficient by developing infrastructure-as-code repositories which allowed them to create environments for their services with pull requests and continuously deploy to those environments.
● Our service oriented architecture had three separate routing configurations resulting in distributed spaghetti code/configuration which slowed down product development and was a frequent source of bugs. I created a routing service with all the routing configuration, added tests to provide confidence that changes to the configuration file didn’t have unintended consequences, and integrated it with pre-production environments so that product teams could implement and test routing changes.
● Created a system which enables developers to create ad-hoc, pre-production builds of the website via a web application. The websites are composed of ten services and users could specify that any combination of
them should be built from pull requests. This enabled teams to test pull requests prior to merging them and also to test changes to multiple services simultaneously. The system was implemented using docker-compose, nodejs & react.
● Created a REST APIi microservice used by internal applications to handle user authentication, authorization and auditing of authentication attempts. This allowed applications to implement role-based security without integrating directly with Active Directory. Implemented with nodejs.
2012 — 2015
Los Angeles, California, United States
● Led the frontend engineering team for two of Nordstrom’s e-commerce websites: HauteLook.com and
NordstromRack.com.
● Oversaw the rewrite of the majority of the website - from a custom javascript framework to emberjs and then eventually reactjs.
● Worked with teammates by code reviewing most pull requests and mentoring contributing engineers.
● Participated in a book club which discussed content from Destroy All Software, “Uncle” Bob Martin’s Clean
Code, and other books.
● Adopted BEM in order to bring stability and predictability to our CSS.
● Introduced unit testing to the javascript codebase.
2010 — 2012
Irvine, California, United States
● Converted synchronous solutions into messaging based solutions using NServiceBus.
● Developed single page applications using Backbone.js, jQuery and asp.net mvc.
● Participated in designing a REST APIi (implemented in NancyFx).
● Introduced inversion of control (dependency injection via Ninject) to an eight year old business logic layer to enable automated testing.
● Migrated mission critical portions of the company's public websites to asp.net mvc 3.
● Created deployment tools which exported the sites from a source control repository, built applications on a build server, moved the files to multiple web servers and recycled the iis application pools to achieve zero downtime deployments.
● Consumed the LivePerson.com REST API to provide live chat functionality on our website. This allowed potential customers to chat with sales representatives and existing customers to chat with support representatives.
● Consumed the SalesForce soap APIto create and manage lead, account, opportunity and support
case crm records.
Education
1997 — 2002
Rochester Institute of Technology
Bachelor of Science - BS
1997 — 2002