A little about me
I’m a software developer with over six years of experience developing frontend and backend applications. The majority of my experience is in React and Node.js, but I have a sprinkling of knowledge in both Ruby and Python backend applications. Besides developing and maintaining features and applications, I’ve also lead initiatives from the initial discovery and research to implementation and release, and I’ve helped identify and introduce new processes with the teams I’ve worked on, such as application state/flow diagrams, as well as iterate on those processes in a collaborative way.
High level overview of skills
- React: high level of proficiency
- Python and Ruby: medium level of proficiency
- SQL: medium level of proficiency
- Clojure (+Script): just starting!
Detailed professional experience
Senior software developer
May 2021 — current
Currently helping make the next generation presentation platform 😎
Senior software developer
December 2017 — April 2021
- Led the delivery of multiple customer facing features, such as an SSO setup portal and a redesigned purchase flow, from initial implementation to release, working with product managers, designers, and fellow engineers on the team to estimate the complexity of the work and to deliver a great customer experience, as well as analyze analytics data post-release.
- Worked with engineering managers to estimate and prioritize technical improvements not directly user facing, such as refactoring parts of the application the team owns and fixing security vulnerabilities.
- Worked across multiple teams to deliver features such as 2FA, GDPR cookie consent (in the web application and marketing website).
- Introduced multiple new processes within the team, such as code pairing/mobbing, group-based QA, and UI/UX flow diagrams in Miro.
- Aided the internal AngularJS to React migration effort, including rearchitecting the way the web application interfaces with AngularJS so that the app can fully utilize Webpack’s features such as smart chunking, lazy loading, and asset handling.
- Helped improve the reliability of the web appliation by making integrations with third party services such as LaunchDarkly more robust and resilient to intermittent failures, and by improving our bug tracking tooling to get better insight into user facing bugs.
- Led the discovery and implementation of the smoke tests for the web app. Specifically, defining the critical paths and relevant test plans that are monitored, the development of the tests using Cypress and Github Actions, and the monitoring setup using Librato.
Univ. of South Florida, Lee Woodcock group
CHARMMing, lead developer
July 2016 — November 2017
I worked with Lee and other stakeholders from NIH, Q-Chem, and other universities to discuss and prioritize the migration of the legacy CHARMMing application. I focused the transition of the main Django application from a backend-only setup, meaning that the user-facing views all lived in the Django app, to an API and SPA based setup. Specifically I migrated the application from Python 2 to 3 and introduced some helpers, such as API response middleware, to ease some of the more tricky parts of the migration (for context, the application is quite old, being started in the mid-2000s and at the time of the migration the Django API project was still in its infancy). I also began the development of the React SPA, migrating a few views and introducing a high level async-only Redux-like state management system.
- Architected and began a rewrite of the Django backend, specifically transitioning the application from Python 2 to 3, creating a Rails-like class loading mechanism for database models and controllers that dramatically simplified the migration, and creating a simplified API response middleware.
- Created the initial implementation of a new single page application using React, Babel, and Rollup, and created a simplified async Redux-like state management system.
- Simplified the messaging system for the existing job notification daemon and rearchitected it to use
asyncio and Websockets, with custom authentication code, to replace the original polling mechanism for scheduled job statuses.
- Integrated Docker into development and deployment, including the creation of images for all job executables such as CHARMM, Q-Chem, and AmberTools.
Full stack software developer
October 2014 — March 2016
I primarily worked on features and improvements in the Designer (the website creation tool), such as a custom context menu and an FAQ video section, as well as features on the main backend service, such as an oAuth middleware. I also created the initial version of the Node.js rendering server that was used to transform the dynamic CMS content to static, cacheable pages.
- Created a Node.js rendering application that handled transforming all dynamic CMS content into static HTML pages, and helped design an HTML attribute-like syntax for determining how to generate rendered pages from the dynamic data.
- Created a custom Oauth middleware for the main Node.js backend to allow customers to connect Webflow with Zapier.
- Helped with the transition from Knockout.js to React within the Designer.
- Created a custom right-click context menu for the Designer with shortcuts that contained logic from both Knockout and React, and partially rewrote element placement logic from Knockout.js to simpler framework agnostic utility functions.