Post Job Free
Sign in

Windows and Discrete Firmware go-to guy ...

Location:
Belmont, CA
Salary:
205K
Posted:
July 25, 2018

Contact this candidate

Resume:

Craig Howard

“ ... the Windows and small devices go-to guy

*******@**.******.*** 650-***-****

http://www.linkedin.com/pub/craig-howard/6/21a/3a1/ Employment Objectives: I am looking for a role where I can apply my array of experiences and skills to help to bring a Windows or embedded product to market in a reliable and efficient manner. I have worked on delivering a wide range of products to market, from PCI board bring ups to device drivers to complete customer solutions. I enjoy bringing together disparate technologies into a working solution and have worked from hardware to cloud doing just that.

Specifics: Full time salary of at least $205K base (negotiable). I specialize in Windows primarily with a focus on USB system interfaces but have also worked extensively with specific embedded architectures and firmware as needed

Skills

OS: (Proficient) Win10, Win7, Win 2008

(Familiar) Ubuntu, CentOS, Win10 IOT, Win7 Embedded, Android (Lollipop+), Embedded Linux (BuildRoot), Cesanta MOS

Applications: (Proficient) Win7 and 10 kernel network, video, audio, USB and PCI drivers Type 0 and 1 hypervisors, HPC computing

(Familiar) Linux kernel, MySQL, Wix, Joomla CMS

Languages: (Proficient) C++, ANSI C, C#

(Familiar) PhP, 80x86 Assembly, WiX 3.11, HTMLHelp 1.3, Python 2.7 and 3.4 Protocols: (Proficient) TCP layer 3 and 4, USB 2.0

(Familiar) TCP, FiberChannel and InfiniBand layer 2, PCIe 2.0, USB 3.0, CAN Hardware: (Proficient) Microchip PIC using MPLAB-X, Cypress FX2 and FX3 discrete embedded

(Familiar) Xilinx Spartan, Aptix FPGA, PLX PCI 9656, local bus digital integrations Embedded: (Proficient): Win10 IoT (Minnowboard Max, Raspberry Pi 3)

(Familiar): Rasbian (Raspberry Pi 3) Xilinx Zynq, ESP32 (MOS) Hobbies/ Memberships: Technical trimix scuba diving, Astrophotography Member of MENSA

Patents: 6975395

Pending Patents: 201********, 201********, 201********, 201******** Craig Howard 1 of 9 *******@**.******.***

Contract Work History

6/06 – Present: Systems Architect/ Contractor/ Owner, NIH Holding LLC 8/17 – 1/18: Fortitude Systems, Chicago IL Primary contributor to an effort by a major smartphone vendor to port existing Win7 and WinXP drivers to Win10 as well as add additional functionality and capabilities; driver communicated to a variety of handset PID’s and exposed a CDC serial, WPD and custom tools interfaces. This driver was based upon various revisions of drivers dating back almost 10 years and rolled up all of those changes into a single unified driver framework

9/17 – 3/18: Robert Half, Salt Lake City UT Worked with a portable battery bank manufacturer to help develop firmware to provide an internet “remote control” for the product. This solution used a PIC16F controlling a front panel display and battery functions communicating via RS232 to an ESP32 which would then establish an MQTT connection to an AWS “thing” account which the user could interact with. The ESP32 firmware was written using Cesanta MOS

8/17 – 7/18: Designed and implemented a hardware/ software system on the Raspberry Pi3 using Raspbian to allow a remote telescope “farm” to control observatory silo doors both automatically, upon specific events and upon remote access. This functionality was further enhanced by using an ESP32 to establish an MQTT connection to an AWS “thing” account from which a user could monitor and control via the AWS account a specific user silo. Additional functionality connecting the Raspberry Pi3 to a SkyAlert metorological station via a distributed communications mesh enhanced the remote capabilities. 4/17 – 5/18: Matrix Technologies, Phoenix AZ Wrote a file minifilter driver and support services to monitor and automatically back up specific files from local media (hard and USB) to an AWS cloud repository, including a GUI and controlling service and WiX installer. This filter driver runs under Win10 and communicates with a service which actually “does the work”, the service in turn communicating both with a simple UI for end user control and information as well as the AWS server via REST API’s 3/17 – 10/17: Robert Half, Salt Lake City UT Rewrite of a WinUSB implementation of a medical device running ThreadX UsbX to a KMDF driver as well as provide a Csharp DLL interface, installed using WiX. This also entailed an implementation of an AES256 key exchange authentication with the ThreadX firmware on the device. This project also needed me to write an interface DLL for a Csharp based client provided UI, accomplished using native DLL interface DLL’s

2/13 – 10/13: Rewrite of an existing medical device using a Cypress FX2 to a new design using a Cypress FX3 USB chipset. This entailed a partial redesign of the local bus attached to the FX3 as well as to the connected processor to handle the increased demands of the FX3 as well as a rewrite of the FX2 firmware. A new USB 3 driver for Win 10 was also needed for the FX3 that also needed to be a drop-in replacement for the existing FX2 driver, without any disruption to an end user or changes in the end user applications. In addition the protocol between the driver and the hardware needed to comply with HIPAA medical information standards. 11/12 – 10/13: Design and development of a feedback sensor for an ROV using the PIC18F452 and inertial sensors to compensate for pitch, yaw and roll movements as well as record this information to flash memory. This device uses an IrDa device to interface with a Windows control application and needs multiple redundancies as well as protection from a hostile environment

10/12 – 4/13: Collaboration with an existing project team to upgrade an existing product from USB 1.1 to 2.0. This device needed to be able to use USB to load DSP and FPGA firmware into boot flash, retrieve logged information and dynamically modify FPGA values from the Windows control application as well as handle a 3MB/sec datastream from the device to the control application. This entailed developing new USB 2.0 firmware, an NT2K device driver to drive the firmware, DSP and FPGA programming to drive the datastream and helping to develop and test all of the glue and support circuitry and devices and was challenging due to the sheer scope of the project Craig Howard 2 of 9 *******@**.******.***

11/10 – 6/11: Development of a programmable logic analyzer trigger capable of on-the-wire recognition of bus patterns and events and either triggering an external event or storing RTC information on the event for later download. This device uses the Cypress FX2 for USB access to the Windows control application 11/9 – 3/10: Rewrite of an existing USB driver from WDM to KMDF to comply with the MS Connect- 0124 WHQL directive and to increase performance. Duties included development of driver for Win7 32 and 64bit as well as helping implement an FPGA design for the embedded side. The device needed to be able to send 100MB+/sec using USB 2.0 interfaces to a Cypress FX2 chip talking via a Virtex-3 FPGA to the customer CPU. A sustained rate of 45-55 MB/sec per USB connection was achieved and by using two multiplexed USB streams the desired throughput was reached

6/9 – 4/10: Development of a multiplexed USB solution capable of moving 100+MB/sec using 4 USB 2.0 connections. The device head is a 100MB/sec local bus which then split into four USB 2.0 streams at 30MB/sec by a Virtex4 FPGA onto four FIFO’s, each of which supplies a Cypress FX2 USB chip. These FX2 chips then send data at 25-30MB/sec to a PC where it is recombined by the device driver back into the 100MB/sec datastream. The implementation uses a limited Reed-Solomon error correction and adaptive balancing to maintain the data integrity, and is scalable for up to 8 USB 2.0 streams

Craig Howard 3 of 9 *******@**.******.***

Employer Work History

11/14 – 12/16: Developer, Lynx Software

Lynx Software was a company which primarily offered to customers a secure isolation hypervisor kernel which presented a “glass motherboard” to subject OS’s to run on. As the defacto standard for clients for which isolation as security were paramount it’s clients were primarily governmental, defense and three letter agencies as well as vendors for control systems for avionics, transportation and power system. My role at Lynx Software was to be the “Windows Resource” for all things related with the Windows OS as it related to those customers and eventually included:

- Continuous analysis of emerging APT threats such as Duku 2, Alureon, Red October and Equation Group as well as determining methods for the detection and interdiction of those threats for Win7 and Win10 subjects running on the hypervisor

- Design and implementation of a secure display transport mechanism similar in functionality to VNC but offering no attack surface from within a displayed subject OS

- Integration of Windows 10 IoT as a subject under the hypervisor

- Design and implementation of a method to secure a Windows subject from intrusion from a hostile adversary with full physical access and nation state capabilities During this time I worked closely with sales and marketing as well as in conjunction with two Linux developers and one dedicated QA resource

1/13 – 11/14: Contractor, ZealTech/ LynuxWorks

Prior to working at Lynx Software as a full member of staff I was retained to design and implement a product to monitor Win 7 operating system API calls from outside of the OS and report those to a browser based client. This product, announced as a product at RSA 2013, was capable of detecting and reporting suspicious API calls within a Win7 OS without requiring any modification to the OS and without a significant loss of performance. The product also utilized a Joomla-based CMS backend to aggregate, display and control the operations from an arbitrary browser. In addition to working with a designated product manager I worked with one other Linux developer and one shared QA resource

10/12 – 12/13: Contractor, AsicSoft/ LitePoint

LitePoint was a company whose role was to provide Windows 7 Embedded “smart boxes” which ran specific testing hardware such as logic analyzers and network traffic monitors. My role at LitePoint was to analyze new versions of Windows 7 Embedded for any irregularities with the controlled hardware and determine fixes as needed as well as prepare the existing Win 7 Embedded images for an eventual migration to Win 10 Embedded.

8/10 – 10/12: Senior Developer, Panologic Corporation Panologic was a company which provided a “head” for an x86 Windows XP or Windows 7 virtual machine, consisting of a small box containing an FPGA with a variety of peripheral connectors and an ethernet connection. A collection of device drivers running inside of a VM subject under VMWare or HyperV would collect device interactions such as video, USB, audio and mouse and transmit them via a TCP protocol to the “head” where the FPGA would decode the interactions and display the video, play the audio, etc. as needed. User interaction with the mouse, keyboard and USB devices attached to the “head” would similarly be sent to the VM drivers where they would interact with the subject OS.

Craig Howard 4 of 9 *******@**.******.***

My role at Panologic was initially to port the Windows XP device drivers from x86 to x64 but developed over time to encompass responsibility for a larger set of the functionality including:

- Develop a virtual DMA audio transport mechanism between a subject and the FPGA, including the firmware to decode the audio stream on the FPGA

- Help to port the Windows XP device drivers to Windows 7 and Server 2008

- Help develop a WDDM display driver analogue on Windows 7 as well as optimize the encoding and decoding of the video stream both in the driver and on the FPGA

- Manage hardware detection mechanisms on the FPGA for monitors and USB devices

- Collaborated with the hardware designer for modifications to the FPGA and USB local bus to better handle USB microframes and timings

As well as working individually on these projects I worked closely with several Windows developers and one firmware engineer as well as two dedicated QA resources and intermittently with the hardware board designer. 4/08 – 6/10: Developer, QLogic Corporation

QLogic was an ethernet networking company which had just completed the merger with a company specializing in InfiniBand network adapters (PathScale). Qlogic acquired PathScale to gain an entry into the InfiniBand, which offered a way into the HPC marketplace due to the characteristics of InfiniBand networks but now needed to offer a product based on Windows in addition to the existing Linux implementations. My role at Qlogic, based on my experience with InfiniBand layer 2 protocol and Windows drivers, was to develop an x64 Windows 7 and Server 2008 driver capable of matching the performance and functionality of the existing Linux InfiniBand driver as well as developing and implementing the infrastructure at Qlogic to compete in the Windows ecosystem. The design goal was for 4GB/sec burst, 3GB/sec sustained using no more than 50% of the CPU time for an 8 core system. During my time I accomplished these directives, including:

- Designed and implemented a device driver capable of 4GB/sec sustained datarate handing 12.5M interrupts/ sec using less than 40% of the CPU of an 8 core 2.5Ghz Opteron system

- Collaborated with the hardware developers and PCIe IP vendor for modifications to the PCIe protocol to be more “windows friendly” as well as changes to the board circuitry to allow for more extensive TLP introspection

- Worked with the FPGA and later ASIC board bring up team for proper interaction of the InfiniBand board(s) with the Windows 7 kernel

- Established a WHQL testing and qualification infrastructure for automatic submission of daily build test results to MicroSoft

- Implemented an AGILE development and testing methodology for the Windows product line

- Designed and implemented a range of auxiliary programs for the installation and monitoring of the driver ecosystem

- Based on the distributed compute engine experience from Adaptive Media I was able to integrate HPC functionality into the driver, allowing for support of an InfiniBand zero copy “mesh” which was introduced at the InfiniBand conference at Sandia Labs

During this time I worked under the Director of Engineering and in conjunction with the InfiniBand product manager in addition to my own development I oversaw a team of two junior Windows developers and three dedicated QA resources as well as interacted with the Linux InfiniBand development team, FPGA and ASIC development team, PCIe vendor liason team and the MicroSoft HPC engineering team in RedMond 6/05 - 4/06: Developer, Telairity Semiconductor

Telairity was a company that had developed a proprietary video decoding chip designed to encode a video stream into an h.264 stream at 60fps, but needed a way to supply the source video stream from a Windows OS file. They were literally starting almost at scratch with a chip and a desire to use Windows XP as a source and nothing Craig Howard 5 of 9 *******@**.******.***

more.

My role at Telairity, based on my work at Finisar with the OSA product and analyzers, was to design an interface mechanism capable to delivering up to three video streams simultaneously to eight encoding engines synchronized via a single FPGA “gateway” running on a computer with four cores and a PCI-X bus architecture. My task was to select and design the underlaying PCI-X chipset as well as the gateway FPGA and interface these with the encoding engines as well as write the supporting device drivers with a design goal of a sustained 100MB/sec single stream datarate, 32MB/sec for up to three streams datarate using less than 50% of the CPU for a four core system. I completed these goals, including:

- Designed and implemented the physical layout for a PLX 9565 PCI-X chipset communicating with a Xilinx Spartus FPGA, capable of pulling a sustained 128MB/sec datarate video stream (or three streams of 48MB/sec) from the PCI bus and distributing it to the eight encoding engines

- Designed and implemented the firmware on the FPGA responsible for command and control as well as decompressing and distributing the video stream(s) across eight independent FPGA to encoder local buses

- Collaborated with the board layout engineer to put in additional logic analyzer test points and firmware to allow for precise monitoring the PCI traffic as well as for each local encoder bus

- Designed and implemented the device driver responsible for controlling and for compressing the traffic, which was capable of 140MB/sec sustained, 160MB/sec burst

- Designed a RAID array front end for the Windows machine capable of delivering the 180MB/sec sustained datarate required for the application

- Implemented an AGILE based testing methodology for the device driver, FPGA firmware and Windows support applications

I worked under the Director of Engineering and in addition to my own contribution I worked closely with the encoder engineer, board layout engineer and two dedicated QA resources as well as a documentation resource 7/02 - 4/05: Contract work

During this period I collaborated with several former co-workers from Finisar working on various “pet” projects and provided firmware, board layout and design, device drivers and GUI’s as needed for ideas such as:

- A “smart toaster” with allowed a device equipped with a scanning infrared sensor and FPGA to monitor the toasting process using the PIC16F877 and control individual wires as needed

- An industrial datalogger impervious to hostile environments (heat, cold, water, shock, magnetics, radiation) which could gather sensor data onto a CF card for later review and display on a PC

- A solar powered “roof drainer” which autonomously drained excess water from a flat roof as needed, using a magnetohydrodynamic pump, a storage cell and a PIC16F452 enclosed in a lucite cube

- An “anomaly sniffer” project which required a PIC16F877 to monitor signal lines on either a PCMCIA or PCI bus and trigger an external logic analyzer or storage oscilloscope when appropriate During these projects I interacted extensively with various marketing, sales and packaging resources as well as various hardware and firmware contractors. In each of these projects I implemented AGILE processes and encouraged others to use that methodology as much as possible 11/98 - 7/02: Senior Developer, Finisar Corporation Finisar was a company primarily producing FiberChannel GBIC adapters which had recently moved into the FiberChannel analysis business and which needed hardware and software engineers to accomplish this. Based on my work at MTI with the Gladiator RAID GUI, my role initially was to write a similar control and data display application for the FiberChannel analyzer product but quickly grew to include writing the underlying data processing functionality, the analyzer board device drivers and the portions of the analyzer firmware. Ultimately I Craig Howard 6 of 9 *******@**.******.***

would be placed as technical lead for the analyzer project and later lead architect for the “special projects” division under the direction of the founder Frank Levinson. While at Finisar I was able to:

- Design and implement the controlling GUI’s and underlying data collection and analysis for FiberChannel layer 2 traffic as well as for the InfiniBand analyzer

- Design and implement the device drivers for the FiberChannel and InfiniBand analyzers as well as for the FiberChannel protocol packet inspection and replacement device

- Collaborate with the FPGA firmware engineers to implement various layer 2 and layer 1 data collection and retrieval mechanisms

- Collaborate with hardware and FPGA engineers on a handheld Optical Spectrum Analyzer, for which I shared a patent

During this time, in addition to my own work, I managed a team of six Windows engineers and worked with two firmware engineers and one hardware engineer as well as six dedicated QA resources, a documentation resource and a build resource. It was during this period that I developed an appreciation for AGILE methods and procedures

5/97 - 8/98: Member of Technical Staff, Adaptive Media Adaptive Media was a company primarily working on transcoding complex video streams (1080p) down to smaller video streams (640x480) without losing quality as well as streaming CAD VRML files to a standalone viewing application.

Building on my experience with distributed compute engines from PureAtria, my task at Adaptive Media was to develop a method by which the transcoding process could be distributed to multiple machines, with the design goal of a design which would at least scale linearly but no worse than 75% efficiency by machine and which could ultimately support up to 128 machines in a distributed “net”. While at Adaptive Media I was able to:

- Design and implement a mechanism using DCOM and a 100bT switched network which could break a video stream into wavelets, distribute them to individual machines and reassemble them with an 80% efficiency per machine

- Collaborate with the engineer working on the VRML streaming, improving the efficiency of that engine by 40%

While at Adaptive Media I worked with several Windows engineers and several shared QA resources under the direction of both the video encoder and VRML product managers 11/96 - 5/97: Lead Programmer, PureAtria (Rational) Software Pure Atria was a company which was a development tool company (Pure) which merged with a source control company (Atria) and which desired to move more into the testing space of the marketplace. This was the dawn of the Internet age, and websites were just beginning to become available to the public. Pure Atria had a product which was able to load test websites but which was based on Linux and which they needed to be brought into the Windows environment.

As an engineer familiar with TCP level 3 and 4 protocols from my time at TGV, I was tasked initially with developing a way to port the Linux TCP load testing code to windows, but my role quickly expanded to being responsible for the design of the first windows website testing application. The development of the product was canceled due to the merger of PureAtria with Rational Software, but prior that point I had:

- Designed the underlying mechanism, using distributed threads running discrete tasks controlled by a master thread, to simulate a “user” communicating with an arbitrary website and accomplishing a series of tasks

- Designed a GUI which would allow the user to specify for each thread the task(s), steps in each task, Craig Howard 7 of 9 *******@**.******.***

intervals as well as a simple program flow for tasks and steps based on received data from the website In my role as product architect I was assigned a junior developer as well as a marketing resource and reported to the Director of Engineering

11/95 - 11/96: Senior Programmer, MTI

MTI was a company which built large RAID storage units for end users, and which needed a way for users to remotely manage those units from Windows.

While at MTI I was tasked with developing a central application which could connect to a given RAID unit, display status and performance metrics and have it execute various functions. This GUI needed to be lightweight, easy to understand for the novice yet full featured for the technicians and run under both Windows but also (using Bristol WindU) under UNIX and OpenVMS. During my time there I:

- Designed and implemented the GUI per specifications as well as offering graphical charting functionality not originally considered

- Collaborated with contract programmers and firmware engineers working on the RAID boxes

- Worked with marketing and sales as well as specific customers As GUI developer I was assigned a shared QA resource 8/94 - 11/95: Senior Programmer, TGV Software

TGV was a company originally offering the ability for Windows 3.1 users to communicate with VAX computers using TCP/IP, at the time a novel protocol. At the time Windows did not offer the ability for users to communicate with TCP/IP networks such as the “internet”, so they desired to develop a suite of products for Windows 3.1 that had a TCP/IP stack. The product was successfully developed and shipped, but released a few weeks prior to Windows 95 which had a built-in TCP/IP stack which was incompatible with the TGV TCP/IP stack. While at TGV I was responsible initially for the GUI’s for the FTP client and SLIP/PPP clients but later for the underlying transport mechanism for the PPP driver. Also while at TGV I:

- Partially designed and implemented the FTP and SLIP/ PPP connection clients

- Implemented an adaptive compression protocol for the layer 2 TCP and UDP traffic During that time I collaborated with the UNIX engineers and the device driver engineer as well as with a team of six windows engineers under the Director of Engineering 7/94 - 11/94: Healthcare Software Engineer and Lead Programmer, WiSE Communications WiSE Communications was a company which had developed a handheld distributed tablet technology which was intended to allow doctors to “roam” around a hospital and have the tablet hand off from site to site as the moved. They needed an individual familiar with the heathcare data industry as well as with Windows GUI expertise to help to bring this technology to market. This effort was cut short due to the loss of venture funding soon after I arrived, resulting in a dramatic reduction in force.

While at WiSE I was responsible for the Windows 3.1 GUI which would show the healthcare record information as provided by a database backend. During my time I:

- Designed the initial layout for the tablet and developed a proof of concept sample application

- Expanded upon the database fields required for medical records Craig Howard 8 of 9 *******@**.******.***

I worked with the backend database engineer and the hardware engineer during that time, under the direction of the product manager

6/90 - 7/94: PC Systems Senior Programmer and Project Lead, Cerner Corporation Cerner Corporation was a company offering computerization services to large hospitals, using large IBM hardware and massive distributed terminal networks. This was the dawn of the PC era, when VT-100’s and dedicated display terminals were being supplanted by PC’s and Cerner wanted to be able to participate in that trend. My role at Cerner was twofold; first, I provided technical support for PC issues during system installations at hospitals and second I was responsible for writing the scripts on the PC which would communicate to the mainframes. While there I:

- Provided technical support as needed to installation engineers on site

- Designed and implemented a series of scripts running on the PC which emulated a VT-100 terminal and allowed a seamless replacement of a dedicated terminal with a PC which could open multiple mainframe sessions I worked with a large number of installation technicians, sales and marketing people, customers and hardware vendors during that time and reported to the PC manager Hobbies

An avid astrophotographer, I utilize several C14 and C11 SCT’s to take guided CCD long duration photographs of deep space objects over several weeks as well as shorter duration larger field objects with HyperStar optics. Images are then stacked and image adjusted using PixInsight and other utilities for final presentation. Education History

7/81 - 6/86: Rockhurst College and University of Missouri/ Kansas City 5 years toward B.S. degrees in Math, Physics, Biology and Chemistry with minor in Accounting. Elective emphasis on philosophy, logic, history and business References

Available upon request, and I encourage interested parties to contact my prior coworkers listed on my LinkedIn profile as desired

Craig Howard 9 of 9 *******@**.******.***



Contact this candidate