Experience
Spearheaded the design and development of Podium, a desktop application built with Electron and Node.js that parses incoming telemetry from the F1 video game into formats based on the user’s active modules.
Developed several different modules, including:
A stream overlay built with React, which includes a real-time leaderboard, league standings & projections, driver vs. driver comparisons, and weather.
A race analytics logger, which uses Node streams to write processed UDP data to CSV files for multiple drivers, filterable by lap. This CSV file is used to convert to a file format used by a popular race engineer analytics tool.
A setup archiver, which stores metrics from a driver’s best lap of a race and automatically uploads it to a database for review/sharing among a team.
A 3D Track, which uses React Three Fiber to generate a dynamic 3D visualization of an ongoing race in near real-time.
Transitioned application from a REST API to a WebSocket API, establishing bi-directional communication between the Node executable and Electron frontend, eliminating the need for persistent API fetches of high refresh rate data.
Established CI/CD pipeline, utilizing GitHub Actions to automate deployment and created Jest test suites at multiple different layers of the application to ensure adequate code coverage
Set up and managed AWS infrastructure, including EC2 instances and S3 buckets, to support deployment and storage needs
Utilized Node worker threads to decrease the filtering and conversion time of CSV data by 50%.
Modified the UDP telemetry client to include a toggleable test mode, which stores the raw UDP output from the video game. This was used for stability testing and identifying differences of UDP output between F1 ‘23 and F1 ‘24.
Refactored the codebase by establishing global and module states, and migrated parser functionality into separate utility functions.
2022 — 2023
Implemented Electron and Electron-Forge to package and deploy a desktop application, providing developers managing Kubernetes clusters a visual schedule of Jobs/CronJobs in their cluster, an archive of past Jobs with key metrics, and an ability to deploy Jobs/CronJobs within the application.
Utilized AWS EKS and EC2 to deploy and orchestrate Kubernetes clusters, allowing for focused application development and reliable scaling/stability of containerized applications.
Employed React in order to leverage hooks for state-based dependency fetching to ensure a readable and efficient codebase, integrating React Router to create a scalable and declarative application structure with minimal network requests.
Implemented TypeScript to enforce static typing of React components and a Date object format for time-based metrics, supporting code consistency and ensuring optimal application stability via type annotations and compile-time type checking.
Deployed Prometheus inside Kubernetes clusters to scrape cluster health related metrics, enabling reliable monitoring and time-based querying accessible through Prometheus’ HTTP endpoint via fetches from the database and desktop application.
Integrated Kube State Metrics with Prometheus to expose additional metrics on the Prometheus HTTP endpoint, allowing for targeted scraping and subsequent analysis of Job/CronJob related metrics.
Utilized Docker to deploy a containerized channel between Prometheus deployments and NoSQL databases, optimizing user load times and easing front-end development by migrating the Prometheus metric parsing and database writing to the cloud.
Integrated React and React Router to create a modular single-page application with optimal load times and network requests, utilizing React’s reconciliation process and unidirectional data flow to ensure efficient and readable state management.
Created a SQL database to store user information and overall rating information for individual coffee shops, guaranteeing data integrity through ACID compliance while maintaining potential for future application stability.
Designed a NoSQL database to create a concentrated and easily accessible store of user reviews, ensuring efficient review queries and leveraging the inherent flexibility of NoSQL to create a dynamic and expandable review schema.
Implemented Express to handle the routing of RESTful API calls between the client and databases, utilizing its modular architecture and native routing templates to facilitate a unified and readable server framework with opportunity for expansion.
Utilized React Drag and Drop to allow easy movement between task status, creating an intuitive and dynamic user experience while keeping React components decoupled and allowing for seamless expansion to mobile devices.
Incorporated Tailwind CSS to create a modern and intuitive user interface, utilizing Tailwind’s predefined classes and declarative inline styles to enable rapid development while maintaining design coherence, responsiveness, and flexibility.
Employed Node.js as the main backend runtime environment to develop a scalable web application, leveraging its event-driven, non-blocking I/O model to optimize handling of database requests and ensure task status consistency among different users.
2022 — 2022
Utilized the Web MIDI API to create an interactive Circle of Fifths for experimenting with and building chord progressions, to be used in tandem with a Digital Audio Workstation or standalone virtual instrument.
Implemented NoSQL via MongoDB and Mongoose to create a user store of saved chord progressions with related qualitative descriptors.
Education
University of California, Davis