Annandale, VA *****
*****.*********@*****.***
TS/SCI CI Poly
DR. SHAUN BLOOM
OBJECTIVE To grow as a software developer by writing scientific or otherwise interesting applications. I am particularly interested in functional programming techniques and new C++ language features because of the benefits of provability and parallelization through statelessness. SKILLS &
ABILITIES
C++, C, C#, Python, Java, JavaScript, Jquery, Fortran, Haskell, Lisp, Matlab, Bash
& all Linux shells, git, svn, cvs, MS Office, Windows, Linux, Boost Libraries, STL, multiple unit testing frameworks, Qt, .NET, CUDA, CUDA Thrust, OpenGL, GLSL, OpenSceneGraph, OpenMP, OpenNN, SQL, Rest API. Computer vision, machine learning/AI, thermal analysis, physics-based codes, orbital dynamics
EXPERIENCE SOFTWARE DEVELOPER, FULL VISIBILITY, STAFFORD, VA 2018-Present
Wrote a multi-threaded internet packet collection tool for the FBI. The code is written in modern C++, makes good use of data structures, and is efficient. It leverages several Boost libraries, the range-v3 library, and Qt. The code is significantly faster than the previous tool it replaced and it supports a full suite of unit tests. I gained a thorough understanding of TCP/IP and many related protocols in the OSI model.
Refactored a tool designed to do internet packet analysis from C to C++. The original program is a C program wrapped in a C++ shell. The refactored code is object-oriented, makes use of functional programming design practices, follows a coding standard, is faster by something like a factor of 10 than the original, is more resistant to code bugs by relying on unit tests. Several improvements to the code were made such as converting raw pointers to smart pointers and reworking the parallelization scheme to use fewer mutexes. One such refactoring removed a serialization bottleneck caused by a mutex that nearly had the effect of unintentionally unparallelizing the code. Low-level bit twiddling logic was moved behind function calls and into classes that hide the logic behind an interface with descriptive names. All of these changes made the code more robust and easier to understand. SOFTWARE DEVELOPER, STELLAR SCIENCE LTD., ALBUQUERQUE, NM 2000-2018
Continued the development of a combinatorial solid geometry CAD tool (eSMT) for the Air Force Research Laboratory. Developed features in various thermal and optical assessment tools that consumed models created in eSMT. Developed OpenGL and GLSL algorithms to create realistic MLI blanket texture maps on the exteriors of satellite models. Developed a radiometrically accurate ray-trace rendering code to generate images of satellite models, emulating point source and extended source illumination, such as the Sun or Earth, and generating soft shadows. This code was parallelized by OpenMP on the CPU and by CUDA on nVidia graphicas cards.
Became the primary developer of the SatVAC (Satellite Vulnerability Assessment Code) thermal assessment code. This work included porting the original Fortran code to C++ and creating a graphical user interface.
Ported Fortran and Matlab codes to C++. Wrote a documentation tool that interfaced with a satellite assessment database.
Working with these codes gave me a good understanding of orbital mechanics, thermal solvers, the physics of light modeling, OpenGL scene graphs, and parallelization on a GPU. SOFTWARE DEVELOPER/ANALYST, METATECH CORPORATION, ALBUQUERQUE, NM 1995-2000
Developed a combinatorial solid geometry CAD tool (SMT) for the Air Force Research Laboratory. Performed thermal analysis using SatVAC, SINDA, and auto-SINDA. Wrote sophisticated bash scripts to automate many assessment tasks, create animations, perform optimizations, and so forth.
EDUCATION UNIVERSITY OF NEW MEXICO, ALBUQUERQUE, PH.D. COMPUTER SCIENCE UNIVERSITY OF NEW MEXICO, ALBUQUERQUE, B.S. PHYSICS Dissertation: "Geometric Algorithms and Data Structures for Simulating Diffusion Limited Reactions." (2015). http://digitalrepository.unm.edu/cs_etds/45 Developed a novel approach to parallelize radio-chemical reactions in an efficient manner in the context of regions of dynamically changing particle densities using a parallelized priority queue.
Machine learning work: Used the Matlab Spider library to implement a KNN clustering algorithm used to associate facial height fields with ethnicity to assist in anthropological research.
I implemented a perceptron-based neural network code from scratch in Matlab. I implemented an image segmentation technique based on the minimum cut graph theoretic algorithm useful in the field of computer vision. Although this was just a class project, there was a research aspect to it, and I learned a lot.
REFERENCES AVAILABLE UPON REQUEST.
Page 2