Creating a wall-mounted, decorative device that displays
real-time traffic conditions in the greater Los Angeles
area using over 400 SMD LEDs on an exposed PCB.
Leading firmware development for an ESP32 using Espressif's SDK, ESP-IDF.
Revising hardware using Kicad and exporting gerber files and BOMs for production.
Writing a HAL to synchronize and abstract I2C interaction to four LED matrix drivers.
Utilizing FreeRTOS tasks through the use of synchronization primitives such as mutexes.
Managing OTA updates and supporting multiple firmware and hardware versions.
Developing manual and unit tests to verify correct hardware and firmware behavior.
Implementing data structures such as a circular buffer,
which removed the need for dynamic memory allocation when parsing HTTPS responses.
University of California, Berkeley
Aug 2023 — Dec 2023
Academic Intern
Guided students through course projects covering C, GDB,
RISC-V assembly, CPU design in Logisim, and parallelism
with OpenMP and OpenMPI during office hours in CS61C.
Tutored a group of 10-20 students in Python, SQL, and
Scheme during lab in CS61A.
RRB Construction
Mar 2021 — Jun 2022
Office Assistant
Created software in Java to automate data entry and
analysis in Excel that saved tens of manhours each
week while working as an office assistant and on-site
in residential construction.
Santa Barbara City College
Jun 2021 — May 2022
Teaching Assistant
Tutored peers in small groups of 1-5 people in Python,
Java, and Data Structures & Algorithms.
Hosted office hours to individually advise students
and debug programs.
Led midterm review sessions to solidify student
understanding of course material.
SBCC Team Programming Club
Jan 2021 — May 2022
Club President
Organized club competitions, mock interviews, and
discussions of select topics including dynamic programming,
convex hulls, graphs, and applications of hashmaps.
Competed in the ICPC Southern California region, placing
first in junior colleges both years.
Created a device that displays the RISC assembly
instructions in the flash memory content of MSP430
microcontrollers through the use of a custom driver
for the JTAG debugging interface.
Used register-level C programming to create a UART
hardware abstraction layer.
Overcame design challenges while writing a disassembler
library to offer a convenient and efficient API for
converting machine code extracted via JTAG to assembly
instructions.
Implemented interrupt service routines to debounce
button input using the timer peripheral.
Minimized MCU power draw through the use of low power modes
while waiting for user input.
Routed a PCB in Kicad to ease development and create a
finished product, then soldered through-hole and surface
mount components using a soldering iron, heat gun, and flux.
Collaborated in a group of 4 students to design and
implement critical features of the Pintos operating
system including many system calls, scheduling,
multithreading, and a filesystem.
Researched, designed, and enabled use of the
floating-point unit in multi-process systems through
use of inline x86 assembly floating point state instructions.
Led the implementation of user multithreading from design
to component creation and programming of necessary changes
to previously created process control system calls.
Added support for filesystem subdirectories and designed
an efficient solution for path parsing.