Résumé
Skill Summary
· 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: 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.
Professional Experience
Associate Software Engineer – Schweitzer Engineering Labs, Pullman, WA ▪ August, 2008 – Present
· 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.
· Helped design and implement a modular component system. Designed around testing, reuse, and portability.
· Design and implement a portable driver architecture to aid in accessing board specific status information.
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 tradeshows 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.
Education
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
· Pre-engineering
Personal Experience:
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.
Awards and Certifications
· Eagle Scout. (2001)
· Cisco Certified Network Associate course completion. (2001)
· PADI Rescue Diver (2001)
· Extra Class Ham Radio Operator, AG7FO (2010)