Post a Job Sign in

Jeffrey Spruiel

Software Engineer

Vancouver, WA


Seeking a position as a Software Engineer/Architect/Developer contributing to the, development, implementation, test and integration and deployment of software for embedded, non-embedded and Web systems.

Work Experience

Principal Software Engineer

Flashlight Engineering and Consulting
Portland, OR

November 2009 to January 2012

• Provided an implementation for Tru2Way APIs for HDMI CEC messages. This involved ramp up with the HDMI specification and then implementing event handling and dispatching of events received from the lower layer subsystem (written in C++) and dispatched through the JNI layer to JAVA listeners registered for events. 
Technologies used: Java, C/C++, MPE, MPEOS, and JNI 
• Evolved features of the Cablelabs AppCenter framework, which enables development of distributed applications with components running on an iPad, in the cloud and on the set top box. 
• Implemented a remote key handler to process events received from the cloud. 
• Implemented client-side VOD classes for the AppCenter framework. 
• Developed an application to display a grid of channels with image thumbnails which when selected invokes a VOD sessions to stream associated media. 
• Diagnosed difficult bugs. 
Technologies used: OCAP, Java, JSON, XML 
• Lead efforts for porting the Motorola EBIF User Agent to the CISCO STB platform. 
• Performed gap analysis; reverse engineered code; refactoring; defined and implemented C porting layer APIs; implemented code to parse MPEG sections carrying EISS and DII descriptors for application download and application signaling. 
Technologies used: JAVA, OCAP, EBIF, C++, MPEG, Perl, Tradcpp 
• Architected and provided the detailed design for the VOD portion of the DICE cable head-end simulator product sold to Cable operators. Designed the session and stream control components to manage and control VOD sessions. The session, stream control and media streamer are distributed components communicating via sockets. 
• Managed an engineer to implement the session component. 
Technologies used: C++/C, Boost C++ Libraries, CentOS, stream control and session protocols

Principle Software Engineer

Portland, OR

August 2008 to November 2009

• Technical lead for porting OCAP to the EchoStar Set Top Box. Clarified porting layer requirements imposed by the OCAP APIs and the platform dependent abstraction layer. 
Technologies used: Java, C, JNI, Broadcom SDK, and UML, Linux 
• Developed OCAP <tru2way> subsystems at all levels of the stack (JAVA, JNI and device dependent layers). Debunked functional requirements designed and implemented JAVA, JNI and native layer components to support new and revised APIs driven by the ECR (Engineering Change Request) process. 
Technologies used: Java, JNI, C++, Linux, and UML, PowerTV OS 
• Performed and delivered gap analysis and platform requirements documentation to Microsoft as they explored porting OCAP to Windows Media Center. 
Technologies used: OCAP Spec, Windows Media Center 
• Implemented a COM based service wrapper with Windows event logging. 
Technologies used: Broadcom platform level APIs; OCAP/Tru2Way; MPEG; Cablelabs specs; JAVA; JNI; C; C++; UML; COM.

Senior Software Engineer

Vidiom Systems
Portland, OR

August 2001 to August 2008

• Designed and developed components of the OCAP stack. Implemented functionality for JAVA, JNI, and hardware layer (C/C++). 
• Assisted in standards development by analyzing specifications, APIs and exploring use cases. 
• Assisted in the porting effort of the OCAP stack to the Scientific Atlanta STB variants and the Windows OS. 
• Performed gap analysis noting additional target platform deficiencies and generated requirements FRS (Functional Requirements) for porting efforts. 
• Designed and developed DSM-CC User to Network client and server components for the Vidiom head-end simulator based on ISO/IEC 13818-6 DSM-CC UN standard. 
• Designed fully factored APIs for Comcast VOD extension library, as VOD is not defined by OCAP. 
• Assisted in the design and development of non-OCAP middleware software for Set Top Boxes. 
• Designed a Head-end simulator for Session and Resource Management using C++ and the ACE (ADAPTIVE Communication Environment); a C++ library for distributed communications. 
• Designed and implemented JUnit tests using mocked objects. 
Technologies used: Windows OS; JUnit; PowerTV OS; C++; ISO/IEC 13818-6; Sockets; JAVA; Visual C++; UML; Cygnus GNU for Windows.


nCUBE Corp
Beaverton, OR

July 2001 to August 2001

• Contracted to work with ITS TV in Seoul, Korea to develop an ActiveX control for their WinCE 3.0 based Set Top Box. ITS TV is a company located in Korea providing interactive television services over DSL. 
Technologies used: Embedded Visual C++ 3.0; ATL; JavaScript and RTSP (Real-Time Streaming Protocol).

Software Enginner

nCUBE Corp
Beaverton, OR

July 1998 to April 2001

Title: Software Engineer 
• Ported an SNMP monitoring agent to the nCUBE media server. nCUBE is a leading supplier of highly scalable video servers designed to stream high quality video over QAM, ASI and Ethernet. 
Technologies used: C; MIBs; GNU tools; Plan9 OS; Solaris; SNMP; HP-OpenView Network Node Manager. 
• Developed an interactive VCR control interface for Set Top Boxes (STB) deployed in the United Kingdom. 
Technologies used: C; VxWorks embedded real-time OS; Tornado; Pace STB; GNU tools; Real-Time Streaming Protocol (RTSP); QAM and RF hardware. 
• Developed a stream control library for system integrators requiring a Windows RTSP client. 
Technologies used: Visual C++; ATL; and RTSP 
• Developed a Video on Demand application demoed it at the National Cable Television Association (NCTA) convention. The STB app ran on a Motorola/GI DCT5000 Set Top Box, which communicated with the Video Server and database to provide movie selection for playback and stream control. RF modulation hardware and RF Combiners were used in the setup. 
Technologies used: C++; COM/ATL; WinCE/MSTV SDK; RTSP; Windows 2000 server; HTML and JavaScript. 
• Designed and developed software to control the CyberPro 50XX multimedia card for advanced Set Top Box applications. The program provides advanced TV features such as Channel Selection; Alpha blending; Picture in Picture; On Screen Display (OSD) with scrolling text; selective source input and audio control. Authored the functional test suite for the multimedia card. 
Technologies used: C++; Win32 API; MFC; x86 ASM; SDK supplied with the Multimedia card. 
• Conducted performance analysis identifying audio/video bottlenecks that limit audio and video streaming on Windows 2000 Server running Oracle Video Server. 
Technologies used: Windows 2000 Server; PerfMon and Oracle Video Server.

Software Engineer

Intel Corp., Intel Architecture Labs
Hillsboro, OR

June 1991 to July 1998

• Implemented a Windows kernel tool used to measure Deferred Procedure Calls (DPC) and kernel mode thread latency under heavy load. The tool was used to generate data for the white paper entitled: "A Comparison of Windows Driver Model Latency and Performance on Windows NT and Windows98". 
Technologies used: C; C++; Win32; MFC; and Windows Driver Model device drivers (WDM); and Soft-Ice debugger. 
• Developed Windows kernel streaming filter drivers for user mode code to utilize the WDM Connection Streaming Architecture (CSA) enabling kernel mode audio streaming. The WDM filter drivers were shipped in Intel Conferencing products. 
Technologies used: C++, C, and WDM-CSA. 
• Developed in-house tools for the Indeo Video codec family. 
Technologies used: C, Win32 and Visual Basic. 
• Sustaining support engineer to application developers who built conferencing applications utilizing IA-SPOX and Native Audio. IA-SPOX was a low latency operating system that ran along side Windows 9x. Native Audio was an audio streaming framework that utilized IA-SPOX and Windows services for real-time streaming. Debugged and implemented IA-SPOX and Native Audio functions; generating binary release of the operating system. 
• Implemented an image enhancement filter (block-edge 1-2-1 filters) and implemented color space conversion (16-bit and 24-bit RGB-YUV) for Intel's Indeo Video family of software decoders for the R&D group. Authored a tool to extract and display motion vectors within in a grid. The tool was used for tuning compression algorithms. 
Technologies used: C and x86 Assembly.


BSEE in Electrical Engineering

New Jersey Institute of Technology -
Newark, NJ



JAVA; JavaTV; JNI; RMI; JUnit; C; C++; Boost C++ library; ACE (The ADAPTIVE Communication Environment); JavaScript; JSON; Eclipse; ANT; Maven; XML; Enterprise Architect (UML); Rational Rose (UML); Togethersoft (UML); Perl; COM/ATL/ActiveX; MFC; Win32; DirectShow; WDM Drivers and Kernel Streaming; VxWorks; GIT, Subversion, Maven; GNU tools; Visual Studio; and DNCS; MQAM.

Additional Information

Created Software Functional Requirement and Software Design Specifications; experienced with SDLC phases; used OOAD; comfortable in both Waterfall and AGILE environments; architected and designed distributed applications and systems components; UML expertise; JAVA and C++ systems and embedded experience. Porting experience to various STB platforms; extensive experience with <tru2way>/OCAP; Digital TV; STB and Motorola and CISCO/SA Head-End systems; expertise with VOD (Video On Demand) protocols and hardware; MPEG systems info; Video/Audio; experienced working directly from specifications (Cablelabs, MHP, DAVIC; DVB, ISO/IEC 13818; SCTE-65; DAVIC; MHP and referenced specifications) to code. Work well in a team; alone; locally or remotely. 
Willing to relocate.