About me
Hello! I'm Andrew and this is my site. Right now, it is primarily used as a portfolio site,
but I plan to build out functionality for my notes, code snippets, and whatever else comes to mind.
For my professional experience, I'm adept at (and enjoy!) building out features from database schema all the way to user interaction.
My main areas of focus are real-time applications (WebSockets <3), responsive and accessible front-ends, and performant back-end APIs
and services.
Some technologies I've been working with recently (in no particluar order):
- Node.js
- ASP.NET Core
- C#
- TypeScript
- React
- Vue
- Docker
- PostgreSQL
- Redis
Work experience
Software Engineer @ United Network for Organ Sharing
September 2023 - October 2024
- Maintenance and development of the DonorNet and DonorNet Mobile applications.
- Contributed to a modernization effort to move a legacy web app from ASP.NET forms to Angular.
- Setup Storybook for ongoing work to standardize the design system, and helped establish CI/CD for publishing new component libraries and SDKs.
Tech stack: ASP.NET Core, TypeScript, Angular
Worker Owner & Engineer @ Unfrl
January 2019 - Present
- Interfacing with local activists to develop a community-moderated, police and incident database tool.
- Built a client their MVP for a process builder and editor to standardize complex work instructions.
- Developed and open sourced our carpool web app for users to coordinate carpools to events.
Tech stack: Node.js, TypeScript, Next.js, .NET Core, React, PostgreSQL, Redis
Senior Software Engineer @ Wisely
March 2021 - November 2021
- Part of the sentiment team responsible for guest review aggregation, sentiment and trend analysis, and automated summary reports.
- Implemented the review context service for associating guest visit data with their online reviews.
- Worked closely with design to rebuild and ship the front-end for viewing, filtering, and responding to reviews.
Tech stack: Node.js, TypeScript, Vue, PostgreSQL, Redis
Senior Software Engineer @ PDQ.com
October 2016 - January 2019
- Created the live webcast app and real-time API that supported chat, Q/A feed, and YouTube live integration.
- Led a small team to develop the custom forums and knowledge base that supported rich-text editing, version tracking and diff rendering, and an extensive commenting system.
- Re-built the payments API that handled all customer transactions for product purchases.
- Collaborated with end-users to determine product requirements and prioritization of features.
Tech stack: .NET Core, Node.js, TypeScript, React, Angular, MySQL, Elasticsearch
Lead Software Developer @ CivicMinder
January 2016 - October 2016
- Built our Android and iOS apps for political engagement and news aggregation in React Native.
- Developed the backend services for user management, voter registration, link unfurling, and the news feed.
Tech stack: Node.js, React, React Native, MongoDB
Software Engineer @ ASEC Engineers
October 2014 - January 2016
- Built an asset management system for linking PLS-CADD projects with manufacture drawings, GIS, 3D model rendering, and more.
- Gave a presentation on PLS integration and demoed the asset management system at the PLS user group meeting.
- Made a tool to parse and dynamically filter very large PLS XML project files.
Tech stack: .NET, WPF, MySQL
Projects
Cop DB
Community-moderated police and incident database. It tracks police officers, their departments, and incidents or misconduct they're involved in.
React, MobX, Emotion
.NET Core, SignalR, PostgreSQL, Redis
.NET Core, SignalR, PostgreSQL, Redis
Lively
Web app for task management and project collaboration. Its API is based on the concept of 'blocks', allowing them to be rendered in a variety of views like kanban boards, tables, checklists, and more. Each project is associated with a channel for team chat and other rich content embeds.
React, Fluent UI, Styled Components
Node.js, NestJS, Socket.io, PostgreSQL
Node.js, NestJS, Socket.io, PostgreSQL
StepWise
Block-based process editor for creating dynamic, step-by-step work instructions and training programs. Processes can be marked as 'controlled' to ensure each step is completed and signed off on.
React, MobX, MUI
Node.js, NestJS, PostgresSQL, Redis
Node.js, NestJS, PostgresSQL, Redis
Carpool
App for event organizers to create and list carpools that users can then sign up to be drivers or passengers for.
React, MobX, MUI
Node.js, NestJS, Socket.io, PostgreSQL
Node.js, NestJS, Socket.io, PostgreSQL