- Software Development: Experience with C/C++, C#, Java, VHDL, Design Patterns, various assembly languages.The use of UML for describing and creating efficient software architectures. Also familiar with Windows, Linux, OpenBSD. Familiar with porting low level functions for uC/OS, uCLinux, velOSity, ThreadX and their use in hard real-time environments. Experience with hardware abstraction and the creation of device drivers as well as the creation of BSPs. DSP filter implementation in both assembly and C/C++. Familiar with automated unit-testing and functional testing tools such as Bullseye and NCover.
- Device Familiarity: Familiar with ARM, Coldfire, PowerPC, Atmel, TMS570, and Sharc families of parts.Also with the Spartan 2,3, and 4, as well as the Virtex 2 and 4 families of FPGAs from Xilinx, along with the use of the Microblaze soft processor and the PLB bus interface.
- Tools Experience: IDAPro, Use of Visual Studio, GNU compilers, Xilinx ISE and EDK, Greenhills Multi, VisualDSP for development. Modelsim and Symphony EDA for VHDL simulation. Familiar with ClearCase, ClearQuest, Perforce, and Team Foundation SCM tools and processes. National Instruments LabView and Matlab for simulation and development purposes.
- Interfaces: Familiar with SPI, I2C, RS232, RS485, USB, JTAG, SONET and TDM, IP, TCP/UDP, 802.11x, Common Flash Interface.
- Standards and Methodologies:FIPS-140-2, MIL-STD 498. Agile, SCRUM, and Test-Driven development processes.
Software Engineer – Synapse Product Development, Seattle, WA ▪ September, 2013 – June, 2014
- Selected to work on high volume consumer devices with limited user and debug interface.
- Credited for recreating odd behavior effectively debugging consumer devices.
- Single handedly prototyped an embedded wireless device using socket server and client communications.
- Corrected vendor code in device specific TCP/IP stack.
- Recognized for suggesting architecture changes to solve complex issues.
- Delighted customers providing timely demonstration of requested features.
Software Engineer – Schweitzer Engineering Labs, Pullman, WA ▪ August, 2008 – August, 2013
- Performed maintenance on a current product increasing functionality and ease of use.
- Designed software components as specified, create automated test and validation suites.
- Assisted with FIPS validation including documentation and providing automated vector testing.
- Developed an SDK with an easy API to aid in the implementation of custom hardware.
- Designed and implement parts of a modular component system. Centered on testing, reuse, and portability.
- Designed and implement portable driver architecture to aid in accessing board specific information generically.
- Created the SCM process and layout to meet internal and customer requirements.
- Performed code maintenance and debugging on pre-existing products including the creation of an effective development environment after the loss of the previous one.
- Wrote process documents detailing the steps and actions necessary to meet additional customer requirements above the internal standard.
- Wrote customer reports detailing project status, developments, and potential risks.
- Assisted with model simulations to quickly analyze system response for a non-standard application.
Embedded Systems Intern – Schweitzer Engineering Labs, Pullman, WA ▪ May, 2006 – July, 2008
- Recommended hardware changes for an embedded prototype to meet the system requirements.
- Designed and wrote firmware for a proof of concept system.The proof of concept was well received and became a production product.
- Wrote firmware and recommended design options for solving a complex signals analysis using minimal resources in a microcontroller.
- Performed relay hardware and firmware upgrades configuring them to spec when needed.
- Performed a market study for a possible future hardware enhancement.This compared costs of in house versus outside production.
- Maintained a backend network of communication devices at remote locations.In the event of failure I communicated with people onsite to fix the issue.
Computer Engineer – Engineering Teaching and Research Labs, Pullman, WA ▪ January, 2006 – April, 2006
- Modified the existing controller hardware to work with the new hardware being installed. Resolution and control was improved as a result.
- Modified the existing LabView application to match the hardware change.
- Implemented safety measures into the program including an emergency stop as well as limits to stop unsafe operation.
- Using VHDL and MicroBlaze a control system was developed to simplify the use of the stepper motors.
- Documented the configuration of the system, and the procedures for its use.
FPGA Development Intern – Digilent, Pullman, WA ▪ June, 2004 – April, 2006
- Created demonstration materials for trade shows as well as reference designs to be used by other engineers and students.The ranged from VHDL hardware drivers to robots.
- Wrote VHDL cores and software drivers for hardware so that it would work with Xilinx’s EDK.
Software Intern – Sharp SMA, Vancouver, WA ▪ July, 2002 – August, 2002
- Did final offsite code review to assure conformance to Sharp standards.Wrote utilities to perform more of the basic code standards.
- Performed a unit test to assure quality.
Network Administrator – Auburn Senior High, Auburn, WA, ▪ September, 1999 – June, 2001
- Maintained a Windows NT domain, and provided technical support to clients running Windows 98.This included email configuration, hardware troubleshooting, as well as network configuration and maintenance.
Washington State University – B.S. Electrical Engineering : 2004-2008
- Relevant Course Work: Embedded Systems, Microprocessor Design, Advanced Digital Logic Circuits, Control Systems, Advanced Microprocessor Design, ASIC Design, Digital Communications
Senior Design Project: Digital image processing. August 2006 – December 2006
- Tasked with creating a VHDL convolution engine for images, and create a utility framework for MicroBlaze.
- Project leader responsible organization and project goals; responsible for keeping the project on track.
- Core responsibility was writing the firmware drivers for MicroBlaze and creating the tests for our logic engine.
University of Washington: 2002-2004
Logic Analyzer and Oscilloscope: December 2005
- Wrote a VHDL ram, parallel communications, and ADC controllers, as well as a state machine to link all the components.
- Wrote a simple program in Visual C# to get the data from the board using the Digilent communication library.It provided a sample rate, and specifies the channel for trigger. After the data is collected the FPGA sends it back to the PC in a single large chunk.
Linux Projects: January 1998 – Present
- Built a custom firewalls and created a script to easily duplicate the IPTables rules and allow for modifications to customize the firewall to its end use.
- Created a central file storage solution.Implemented RAID 5 to provided redundancy as well as massive storage. Serves NFS, NIS, and Samba shares to the rest of my network.
- Implemented Asterisk on extra computer to provide VoIP.Tied together two different VoIP networks and provide a single access point for family. Currently working on implementing IAX for a direct dial to family friends running Asterisk.
Website Administrator – 2003 – Present
- Administer numerous different websites for myself, including my blog, as well as donate time and hosting to various non-profits.
- Update content, backup, and maintain the website including the base website software.
- Implement methods to combat spam and malware.
- Eagle Scout. (2001)
- Cisco Certified Network Associate course completion. (2001)
- PADI Rescue Diver (2001)
- Extra Class Ham Radio Operator, AG7FO (2010)