Software Engineering

I am a results-driven software engineer with three years of professional experience in full stack web development and digital signal processing. In December 2022, I earned a Bachelor of Arts in Computer Science with a minor in Mathematics from the University of Alabama at Birmingham (UAB). I am currently employed at Amazon as a Business Analyst where I design and develop software utilized in Fulfillment Center Operations. My professional journey also includes a role as a Digital Signal Processing Engineer at Tricorder Array Technologies from January 2023 to August 2023, where I developed software for spectral analysis using advanced digital signal processing techniques.
As I embark on the journey toward a Masters in Music Technology, I am eager to leverage my diverse experiences and technical proficiency to contribute meaningfully to the academic community and the audio engineering industry. I am confident that my unique blend of academic achievements and real-world application of technology will not only enrich my own academic pursuits, but also bring a valuable perspective to the vibrant learning environment at Georgia Institute of Technology.

PenPal

...

Tricorder Array Technologies LLC. is organized around developing a device that is targeted for use by research facilities personnel and is designed to assist with care of research animals. The device continuously listens for mouse vocalizations, performs spectral analysis in the 20,000 to 70,000 Hz range, and uses machine learning to classify the vocalizations in Azure. In my role, I developed programs which performed filtering on an input signal and produced a discrete spectrogram which was sent to hub devices using Bluetooth Low Energy (BLE) broadcast packets.
The programs were flashed to STM32 microprocessor boards which had limited RAM and compute speeds, and which needed to be battery powered for 6 months at a time between charges. This was a particular challenge as the device had to be constantly listening, processing data, and sending it to hubs via BLE packets. Another challenge arose because of the frequency range we were analyzing. Mice vocalizations are ultrasonic so our microphone had to be designed to pick up this range with low noise floor. Following the Nyquist Theorem, we sampled at 200K Hz to capture our highest frequency content at 100K Hz. *** Talk about the PCM microphone we had to use and how it was a sigma-delta capusule***. Due to the proprietary nature of this project, I cannot share the code directly, but I can present some logic used in the algorithm.

When the device first powered on, we ran an initialization algorithm which computed a statistical noise floor. The way we achieved this was by filtering the incoming audio buffer and storing the value computed when convoling the input signal with the filter and finding the RMS value of the resultant convolved buffer. We did this 2,000 times and then computed the average value and the volatility of the RMS values for each filter. Ultimately, this gave us a detection threshold for each filter.

Initialization Diagram

After this initialization phase, we went into normal operation mode. In normal operation, we would continue to filter the input signal and compare the RMS value against the detection threshold. If the convolved value was above the detection threshold, we would store that data in an output buffer. After 150 iterations, we would have a full output buffer to send over BLE (we found that 150 * the number of filters we used would fill the space av available in the BLE packet). We called the output buffer a discrete-spectrogram because it only contained 1s and 0s - 1s where there was a detection, and 0s where there was no detection.

Normal Operation Diagram

Lastly, we would rerun our initialization phase every hour in order to adapt the detection thresholds to changes in the environment.

SimpleEQ

...

SimpleEQ is a 3-band filter plugin made with JUCE which consists of a low cut, high cut, and peak filter.

  • The low cut filter attenuates frequencies from 20 to 1,000 Hz and has a controllable rolloff of 12, 24, 36, or 48 dB/Octave.
  • The high cut filter attenuates frequencies in the range of 1,000 to 20,000 Hz and has controllable roll off as well.
  • Lastly, the peak filter is capable of boosting or attenuating frequencies from 20 to 20,000 Hz. The peak filter also has a controllable quality parameter which gives the user the ability to dial in the bandwidth of the filter.
  • Each filter has an associated bypass button which allows the user to toggle the filter on and off to better understand how the filter is manipulating the source signal.

Watch the video above for a presentation of the filter in action!

Github Repository: SimpleEQ Github

Nole

Nole is the main project I've worked on at Amazon over the last two years. Nole is a labor planner, staffing service, and performance auditor. Put simply, Nole tells you how many people you need in certain roles at certain times. It does so by utilizing labor models which take plan inputs and puts them through an equation which calculates the headcount. I'm currently leading the design and development of this project, and also support users when issues arise. I utilized my skills in mathematics and my knowledge of our processes to create the labor models. Nole is a full-stack website deployed on AWS. The front end is built in React, using the Cloudscape Design System, which is the same design system used by AWS teams for the AWS console. The backend follows a Serverless Application Model which consists of API Gateway endpoints, Python Lambdas, and DynamoDB. I cannot share the code for this project directly but I can share some snips of the UI which have been sanitized of sensitive data.

Plan Inputs

Nole Plan Inputs

Labor Plan

Nole Labor Plan

Performance Audit

Nole Performance Audit