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.
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.
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!
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.