|Job Objective||Permanent position in Software design and development.|
|1/2014 - Present||Senior Software Engineer|
|Initial software member of the Roku Austin development team. Aided in hiring much of the current team of about 40 software and QA engineers. Initially worked on the Roku TV project doing mostly video picture quality related features such as the backend for the user controls (brightness, contrast, etc.), PQ tuning and new panel support. Currently working on new product development for next generation TV sets running the Roku interface, including initial boot loader integration and NAND device support. Have also worked on turning around partner requests for support of new panels, various software restrucuring projects and various production core report monitoring, crash analysis and general defect fixing. Developed several tools to aid in product development, both hardware (Raspberry Pi/Beaglebone) and software based. Roku software is primarily written in C++/14 but have worked on all parts of the system including Linux/u-boot, application specific processors and 8051 based features.|
|LifeSize Communications, a division of Logitech
|3/2006 - 12/2013||Principal Software Engineer|
|Worked in the video team researching new technologies for future products, added support for 3rd party pan-tilt-zoom cameras, device managers for various HDMI and VGA input and output chips, infrastructure to support various encoder and decoder implementations, device drivers to manage many different I/O devices, software bringup and debug for most of the 2xx and Icon series endpoints, an automation shell and software running on nearly every processor ever shipped by LifeSize. Have generated code at all levels from hand assembly opmtimization for performance to high level user space applications in C or C++. Brought many new employees up to speed on the internal workings of the software stack and was a resource for questions and assistance trouble shooting problems to both development, SQA, support and occasionally customers. Have designed or assisted in the design of much of the video processing software and worked on prototypes for the next generation encoder. Responsibilities included design, development, unit test, integration test, regression test and post-release support.|
|Newisys, A Sanmina-SCI Company
|2/2002 - 3/2006||Senior Software Engineer / Team Lead|
|Designed and implemented various features of the Newisys System Management software stack including the Monitor/Control Process, service processor autoconfiguration, service processor initialization and configuration processes, parts of the IPMI framework, enhancements to the GUI console interface and the Vital Product Data and hardware inventory functionality. Served as a knowledge resource for the rest of the team regarding design decisions and development of new features. Played a key role in the hardware design of new products with respect to the system management features and assisted the hardware team with system bringup activities for two platforms. Consulted in the design of the Newisys Enhanced BMC card. Aided in development of an IPMI based configurator and controller prototype for the Newisys Extendiscale architecture.|
|Times N Systems, Inc.
|12/2000 - 2/2002||Senior Software Engineer|
|Ported a Windows NT/2000 scsi disk driver to Linux 2.2 and Linux 2.4 while still sharing as much common code with the NT driver as possible (both the Linux and NT drivers are built from the same source, with relatively minor OS differences). Supported and enhanced the low level hardware driver on which the disk driver is based, including adding asynchronous DMA to a software model designed with synchronous copies in mind. Continued to tweak the disk driver to obtain the best possible performance from the underlying hardware. Wrote several test tools to measure the performance of the disk driver (including pgmeter, a linux "clone" of Intel's Iometer tool, which is available on SourceForge) along with hardware diagnostics used to track down various hardware errors. Reimplemented the underside of the disk driver to work over gigabit ethernet rather than the original proprietary hardware.|
|9/2000 - 11/2000||Senior Software Engineer|
|Wrote a Java based personalized bulk email
system which read personalization information from a database via JDBC,
used the JavaMail API to compose and send email, used Java RMI to communicate
status and take campaign requests from Java servlets and Java Server Pages
and included a web servlet to handle unsubscribe requests. The system also
included daemon processes to handle scheduling of campaigns and processing
of bounced email messages.
Begun work on an automated data load facility to allow nightly updates to the OneCard databases from retailer transaction, customer, product and location data. This project was comprised of mixed Java and Shell programming, but was not completed due to the demise of OneCard.
|Net Perceptions/Knowledge Discovery
|1998 - 8/2000||Senior Software Engineer|
|Worked on the Net Perceptions Knowledge Refinery
product, a mix of C++ and KSH scripts that provides analysis
of retail transaction and web click-stream data. Tasks included
automation of standard analytics runs, XML/XSL/perl scripting for automated
generation of web reports, investigations into web browser and VB client
initiated analytics runs and replacement of the entire analytics infrastructure
with python based class libraries.
Developed the KD1 Report Manager Server product. Written in Microsoft Visual C++ 5.0 on Windows NT, the Report Manager Server consists of approximately 100,000 lines of C++ code. The server provides queuing, scheduling, distribution, persistent storage and execution facilities for the KD1 Retail Discovery Suite product line. It utilizes the Standard Template Library, CORBA distributed object technology, ODBC database access and threading and parallelism features.
|Hewlett Packard (Formerly Convex
|1992 - 1998||Software Development Engineer|
|Team leader for the VM sections of the Apollo project. Apollo was a port of HP/UX to the V Class multi-node platform and is based on the existing single-node work. Ported sections of SPP-UX (Convex's HP/UX clone) to the HP Exemplar SPP 2000 architecture. Designed and implemented a replacement for the Mach External Memory Manager (XMM). The replacement, Remote Memory Manager (RMM) provides much of the same functionality as XMM, but is directed specifically at the strengths of the Convex Exemplar (SPP1) system. Implemented a secondary coherency protocol for the Mach XMM subsystem. Designed and implemented extensions to the Mach VM subsystem to support multiple pools of memory for the Exemplar project. Implemented the sysinfo subsystem in the SPP-UX server. Ported the Convex Integrated Test Environment to HP/UX and SPP-UX.|
|1990 - 1992||Software Test Engineer|
|Wrote test suites for variuos ConvexOS utilities. Designed and implemented a driver script for the test suites which unified them under the same interface, supported automatic resource configuration and parallel test suite execution. Co-designed the generic test execution rules for the Compiler test and the System Software test groups.|
|NEC America Inc.
|1987 - 1990||Member of Technical Staff|
|Designed, coded and debugged the Human Interface Handler and User Interface Handler sections of the NEC Generic 2 ISDN Attendant Console. Designed, coded and debugged a Chameleon-32 based simulator used to test the features of the Attendant Console prior to the console's integration with the Central Office switch. Designed, coded and debugged the NEC Generic 3 features; Trunk Busy Indication for Attendant, Call Waiting Indication for Attendant and Attendant ID of Incoming Calls. Worked with a team to code and debug the NEC G3 features; Attendant Three-Way Calling - Recursive and Attendant Six-Way Calling.|
|National Oceanic and Atmospheric
|1986 - 1987||Programmer|
|Responsible for writing, maintaining and documenting several FORTRAN programs, including Layer Composite, a program to convert a ground radar image of the weather from polar coordinates into Cartesian coordinates more suitable for display.|
|Job Related Skills||Proficiency in C/C++, Linux/Unix and parallel applications. Working knowledge of Java, Windows, OSX, HTML, XML/XSL/CSS and SQL.|
|Education||Graduated with a Bachelor of Science Degree in Electrical and Computer Engineering from the University of Colorado at Boulder in May, 1987.|
|Other Activities||Cycling, running, writing software and tinkering with electronic hardware.|