Brian Sprouse
************@*******.***
Senior Software Engineer
Experienced software engineer with a dedication to improving software development processes and continuous code improvement. Considerable experience in C++, Object Oriented Development, and Redhat Linux. Bachelor's degree in Computer Science from the University of Minnesota, Twin Cities.
Libraries: C++ Standard Template Library, Boost Libraries
Languages: C, C++, Java, SQL, Python, Bash, Groovy
Virtualization: Linux KVM, VirtualBox, VMWare
Operating Systems: Redhat Linux, Ubuntu, Windows
General Software Tools: Gnu Debugger, Valgrind, Subversion, Jenkins
Development Methodologies: Inter-process Communication, POSIX Threads, Code Review, Agile, Object-Oriented Design, Test Driven Development
EXPERIENCE
Linux Virtualization Engineer Austin, TX Feb 2014 – Nov 2015
Nimboxx, Inc.
I worked on a small team of 2-4 developers touching every aspect of the Virtual Desktop Infrastructure (VDI) product, Verde. This product was essentially an integration effort of multiple open source and third party software packages. Verde was already being used by customers worldwide when I joined the team. My role was to fix outstanding issues while enhancing the product to meet new customer driven requirements. Two of our largest customers were the US DoD and customers in the Southeast Asia market. As such, our most important enhancements included security requirements and internationalization of the product.
oFixed outstanding issues for the company's flagship VDI product, Verde, in a mixed Redhat Linux and Windows environment.
oHardened the security of the Grails based web application by providing data validation on the front end and on the server back end.
oFixed a critical defect within the LDAP query caching mechanism, saving an account and months of frustration.
oLearned the Win32 C++ API to create and update registry keys of Windows guest sessions.
oImproved the user experience of the python, curses based configuration menu.
oEnhanced internationalization in the server, client, and guest applications of the product.
oAdded support for newer versions of xFreeRDP on the Linux C++ Client.
oHid the password when passed to the Connection Broker so it would not be visible in a ps command or via strace.
Senior Software Engineer II Linthicum Heights, MD July 2010 – Oct 2013
Raytheon, AST
I worked on the software team of 6-7 developers within a larger group of about 25 engineers. The three groups included the FPGA team, the Cavium processor team, and the software team. The software team wrote controllers in C++ which were object models for controlling different FPGA configurations as well as the Cavium processor. These controllers were responsible for configuration of the hardware based on input files, collecting metrics from the hardware, passing messages back and forth between different hardware components, and sending data on to follow-on systems. A MySQL database was used to store metric information for health and monitoring of the system.
oFixed outstanding issues in a multi-threaded C++ application in a Redhat Linux environment.
oMapped human readable configuration files to FPGA configuration through register bit manipulation. Basically, flipping bits on the FPGA modules so they would behave as the user intended.
oDoubled the processing capability by developing a C++ solution to controlling a new hardware platform consisting of three FPGA controllers and four Cavium processors.
oRecompiled the Boost libraries using a custom cross compiler supplied by the vendor. This greatly increased our productivity because we were restricted to use an outdated compiler.
oMaintained a MySQL database used to store metrics for system monitoring.
oAdded unit tests using the CppUnit framework and achieved 80% code coverage.
oAttached Valgrind to the unit testing framework to track down and fix memory leaks.
oTook ownership of the coding standards documentation to enforce best coding practices.
Computer Engineer Columbia, MD Feb 2009 – July 2010
Sparta, Inc.
At Sparta I worked in a group of about 5 other engineers and we each had our own customers to support. This role was a classic systems engineer role. In the morning we would meet for our daily stand up and then dispatch our separate ways to our respective customer sites or test lab. The work could be summarized into four main categories: feasibility testing of new features, regression and integration testing new releases, reproducing customer issues, and responding to issues found on the live systems.
oDebugged C++ code to give better information to developers on bugs I reported.
oWrote a small C++ application that accepted Akamai database input files and returned the country of origin based on an IP address. This was used to filter out IP addresses based on legal criteria from the Department of Defense.
oCreated reproducible test cases for known software bugs.
oImproved bash scripts to automate system tasking and convert files to customer formats.
oOverhauled and documented the software release process to increase reliability, reproducibility, and simplicity of the release process.
Computer Scientist Lexington Park, MD Sep 2007 – Feb 2009
NAVAIR
I worked in several different groups on various applications including financial reporting, warfare analysis, and combat pilot training.
oWorked on a web based ColdFusion application to track financial, programmatic, and technical data of all Navy aircraft.
oMade enhancements and bug fixes for a C++ application used for combat pilot training.
oLearned basics about radars to better understand warfare analysis situations.
EDUCATION
University of Minnesota – Minneapolis, MN
Bachelor of Science in Computer Science, August 2007