Languages and Ecosystems
Contributor to the Rust compiler.
Proficient and competent C++ programmer, primarily C++11. I know about and use smart pointers.
Intermediate audio DSP knowledge, including implementing a audio synthesis library with basic HRTF and environmental audio support.
basic working knowledge of the SSE intrinsics and how to use them to optimize mathematical code.
Able to implement basic threadsafe data structures and primitives including a thread pool and a queue suitable for use in audio callbacks.
Proficient Python 2 and/or 3 programmer, including experience with Ctypes.
Rudimentary Numpy and Scipy knowledge.
Familiar with WaveOut and Wasapi, audio APIs for Windows.
Basic familiarity with OpenAL.
Basic familiarity with SQL.
Proficient with Windows development, including use of the command prompt and Cdb (the Microsoft command line debugger).
Basic proficiency with Linux.
Rust Compiler Development
I have implemented an optimization to struct layout that reorders fields to make structs smaller in many common cases. This required me to refactor and clean up large parts of the compiler, including adding a system for debugging future optimizations and removing large amounts of duplicate code. Said refactors have also allowed other features of Rust to move forward. This is by far my most complicated project. It is fully documented here.
Libaudioverse is a library for audio synthesis with 3D and environmental audio support. The target audience is anyone doing realtime synthesis. It also has applications to synthesis research.
Libaudioverse most strongly demonstrates my experience with C++, digital signal processing, mathematics, and multicore programming. It includes a variety of filters, an implementation of HRTf, a custom environmental reverb, and a number of other DSP-related components. In structure, the public API has many similarities to WebAudio. I have used SSE2 intrinsics to optimize it, and will be rolling out other processor-specific optimizations in future.
Libaudioverse resulted in the implementation of many smaller but notable supporting libraries, listed here for completeness with a brief description of each. Links are to GitHub pages:
Audio_io: A library for low-latency audio output.
Powercores: A number of portable helper components for multithreading. Most notably includes a threadsafe queue and a thread pool with support for barriers.
Logger_singleton: A library providing a threadsafe logger singleton object.
Speex_resampler_cpp: A C++ class wrapping the Speex resampler behind a convenient interface for streaming applications.
Libaudioverse uses continuous integration, as do all subprojects.
Unspoken is an add-on for the NVDA screen reader which replaces control type announcements with audio, played in 3D space on a virtual screen in front of the listener. This results in a faster experience because the audio files frequently take less time than the syllables they replace. It also provides information that is normally unavailable to blind people, save through advanced screen reader interfaces: with Unspoken, the screen reader user can obtain information on the vertical and horizontal position of controls on the screen. While I cannot take credit for the original idea, I am currently the primary and only developer.
Graduated Florida Atlantic University Summa Cum Laude with a BS of Computer Science in Spring 2015, with a cumulative GPA of 3.936. I was one of two students recognized by the president at graduation.
Selected to join Florida Atlantic University's team for the Southeast Regional ACM Competition in Fall 2012.
Awarded an associate in arts from Indian River State College, fall 2011.