Resume

Andrew Thomas

Introduction

Andrew is a software engineer with a B.S. in Computer Science from Northwestern University. He has significant experience building web applications across all layers of the stack and working on dynamic, high-velocity teams.

Githubgithub.com/andrewmthomas87
Emailandrewmthomas87@gmail.com
LocationBoulder, Colorado

Skills

Programming languagesTypeScript, JavaScript, Go, SQL, Java, Python, C++, Dart, HTML, CSS
WebReact, Remix, Svelte, SvelteKit, MobX, RxJS, Zustand, Zod, Immer, Chart.js, deck.gl, TailwindCSS
BackendExpress, Prisma, Gin, ent, Pion, gqlgen
TestingVitest, Testing Library, Playwright, Storybook
MobileFlutter, React Native, Apache Cordova
StoragePostgreSQL, MySQL, SQLite, PostGIS, Redis
ToolsVite, webpack, git, Docker, Prometheus, caddy
AWSEC2, Lambda, Kinesis, S3, Cognito, DynamoDB

Education

Northwestern University

DegreeB.S. Computer Science
SchoolRobert R. McCormick School of Engineering
Dates2017-2020, 2023-2024
Notable CoursesData Structures, Algorithms, Networking, Programming Languages, Compiler Construction, Code Analysis & Transformation, Cryptography, Artificial Intelligence, Machine Learning, Knowledge Representation & Reasoning, Game Development, Scalable Software Architectures, Cyber-Physical Systems

Professional Experience

Note: I left Viget in Aug. 2023 to return to Northwestern, having previously withdrawn during the pandemic.

Viget

TitleMid-Level JavaScript Developer
DatesFeb. 2022-Aug. 2023
  • Developed backend service to receive and record live video over WebRTC with API endpoints for querying and retrieval of recorded video using Go, Pion WebRTC, GStreamer, AWS Kinesis Video, Prometheus, and Grafana.
  • Built and integrated frontend features for live video streaming via WebRTC and live playback; built a timeline screen for playback of recorded video synchronized with user-recorded events using TypeScript and React; contributed to backend API development and integration with video service using Python, Django, and Redis.
  • Upgraded sophisticated event-recording screen to use TypeScript, React, and Zustand; developed component and state-management system to simplify management and creation of event-recording widgets; rewrote event-recording API to use WebSockets and support real-time synchronization using Python and Django.
  • Built complex charts to visualize multidimensional historical data with numerous controls to select datasets, simplify data by various methods and granularities, filter by various methods, etc. using TypeScript, React, and Chart.js; communicated extensively with client to iteratively refine behavior and improve user understandability.
  • Developed scenario modeling MVP; built a tree-based graphical editor integrated with a custom computation engine using TypeScript, React, RxJS, and Immer; worked closely with client to refine product concept and MVP priorities.
  • Co-led internal hackathon; motivated participation from half the company resulting in a record number of projects.

The Toro Company (by acquisition)

TitleSoftware Engineer
DatesMarch 2021-Feb. 2022
  • Researched and implemented AAA (authentication, authorization, and accounting) prototype to provide SSO (single sign-on) and consolidate AAA across company applications using Go, Java, AWS Cognito, OAuth, Casbin, and Redis.
  • Built MVP data ingestion and visualization application for company hardware product, integrating with data warehouse service using TypeScript, React, and deck.gl; coordinated with hardware team and customer to validate.
  • Developed web boilerplate, common packages, and documentation using TypeScript, React, RxJS, MUI, Vite, Jest, Testing Library, and Storybook.

Left Hand Robotics (startup)

TitleSoftware Engineer
DatesAug. 2020-March 2021
  • Built single-page application to ingest and visualize streams of sensor data, including interactive visualization builder screens for spatial-temporal data using React, deck.gl, React-vis, styled-components, mapbox, and RxJS.
  • Developed API microservices to manage and query enriched sensor data using Go, Auth0, PostgreSQL, and PostGIS.
  • Built pipeline to stream robot multi-camera feeds to a web dashboard using C++, AWS Kinesis Video, and GStreamer.

CBOE Global Markets

TitleSoftware Engineer Summer Intern
DatesJune 2020-Aug. 2020
  • Coordinated with research team to learn methodology of Cboe S&P 500 Covered Combo (CMBO) Index.
  • Implemented daily and roll day calculation for CMBO using Java, Apache Kafka, Hazelcast, and internal frameworks.
  • Developed unit tests (JUnit) to verify calculation correctness and behavior tests (Cucumber) to verify integration.

Left Hand Robotics (startup)

TitleSoftware Engineer Intern
DatesJune 2019-Sept. 2019
  • Developed storage mechanism, API, models, and data migration tooling for enhanced object storage and mutation system to solve major server and network bottleneck using Google Protocol Buffers and Java.
  • Built frontend library for reactive consumption, in-place mutation, and upload of Google Protocol Buffer objects.
  • Developed GPS path editing tools to compute mutations on client using React, MobX, Turf.js, and Google Maps API.
DatesJune 2018-Sept. 2018
  • Redesigned two primary frontends to meet new customer needs; integrated the Ant Design framework for React.
  • Researched area coverage and cell decomposition techniques; built PoC planning algorithm using Go and Python.
  • Developed GPS path editing frontend screens and server API for persistence and advanced geometric mutation.
  • Created robot monitoring page to remotely control robots and visualize real-time status and geospatial data using React, TypeScript, MQTT over WebSocket, Google Maps API, and MobX.
DatesMay 2017-March 2018
  • Built complex robot operations center web application to manage inventory and collect GPS path data, robot tasks, and reports for use by customers and internal support using TypeScript, React, MobX, LESS, and webpack.
  • Developed registration, token-based authentication, and RBAC authorization systems using Java, bcrypt, and JWT.
  • Implemented message consumption and routing system on top of RabbitMQ using custom messaging protocol for HTTP and WebSocket requests to automate communication between microservices using Java and Grizzly NIO.
  • Built API to retrieve object model descriptors, object data, and links between objects using the Java Reflection API.

Workday

TitleGW Software Engineering Intern
DatesJune 2016-Aug. 2016
  • Developed real-time collaborative document editing MVP frontend using JavaScript, React, MobX, and Quill.
  • Implemented operational transformation algorithm to correctly and efficiently reconcile concurrent edits without additional coordination from the server using JavaScript.
  • Demoed MVP to development team and company executives; documented codebase and future work opportunities.
DatesJune 2015-Aug. 2015
  • Rewrote frontend library to transition from CoffeeScript to JavaScript using modern ES2015 features; developed unit tests to verify correctness using Mocha and Chai.
  • Worked with a senior developer to refactor modal wizard components to transition away from Angular.
  • Debugged and implemented fixes for bugs in spreadsheet web application using JavaScript and Angular.

Extracurricular

FRC Team 1619 Up-A-Creek Robotics

team1619.org • a FIRST Robotics Competition team; 2022 World Champions.

RoleMentor
Dates2018-2022
  • Mentored the robot software team; taught students Java programming, basic control theory, path planning algorithms, motion profiling, computer vision, and object-oriented design including S.O.L.I.D. principles.
  • Mentored the app software team; taught students basic development skills like git and bash as well as full stack development using React, React Native, Node.js, and relational databases.

Projects

newscast

An AI-powered news broadcast; gathers articles for trending topics, scrapes article text and images, summarizes articles from several sources, merges summaries, generates a news broadcast including summary and relevant guest take sections, integrates with an AI avatar to deliver broadcast, provides web application to run, monitor, and customize each step; using TypeScript, SvelteKit, Bulma, Prisma, and OpenAI GPT LLMs.

arcade

A collection of multiplayer web games inspired by Jackbox Games and NYT Games using TypeScript, SvelteKit, Bulma, Prisma, and OpenAI GPT LLMs.

frcbrackets

A web application for predicting outcomes for FIRST Robotics Competition events integrated with The Blue Alliance API and implementing automated scoring using TypeScript, Remix, MUI, Prisma, and nodemailer.

News search engine

Ingests articles from the Common Crawl project datasets and implements a simple search engine using Java, EC2, Lambda, SQS, Elasticsearch, and Tomcat.