Dan Knight
*******@**********.***
EDUCATION
B.S. Computer Engineering - University of the Pacific - Stockton, CA
SUMMARY
* Excels at writing high-quality software that exceeds expectations
* Extensive experience writing robust software from device drivers to
the GUI
* Quickly productive in new software development environments
* Debugs complex system problems with proficiency
* Handles multiple projects simultaneously
* Self motivated problem solver
* Works with integrity
TECHNICAL EXPERIENCE
Languages C++, C, Visual C++, LabVIEW, C#, Cocoa Objective-C, JavaScript,
Visual Basic, Ada, Pascal, FORTRAN
Systems Windows (2000, NT, XP, Vista, 7, XP Embedded), Linux, Mac OS X,
iOS, VxWorks, pSOS, RTOS, DOS, OS-9, OS-9000, LynxOS, UNIX,
Solaris, VAX/VMS, Micro/RSX
Other Skills Visual Studio, Qt, Eclipse, software engineering, real-
time systems, embedded systems, data acquisition (DAQ), closed
loop control systems, PID control, image processing, drivers,
GUI, multithreading, multiprocessing, client/server, TCP/IP
sockets, XML, GCC, wxWidgets, .NET, MFC, USB, I2C, SCSI,
Modbus, DeviceNet, RS-232, RS-485, DLL, X Windows, iPad, digital
I/O, analog I/O, National Instruments DAQ, GPS, Matrox Imaging
Library, Standard Template Library (STL), image acquisition,
network camera, ARM, PowerPC, 8051, 68000, PC/104, DSP, VME, PCI
WORK EXPERIENCE
Embedded Software Engineer
SequoiaTek Corporation - Bakersfield, CA
(July 1999 - Present)
Designed and developed software for many different complex systems. See the
individual SequoiaTek project listings below for detailed information.
SequoiaTek Project with Sandia National Laboratory
Developed a cross-platform data acquisition and control software
application. The multithreaded software was highly configurable which
allowed the same software to control completely different systems.
JavaScript was used to allow the control logic to be modified without
modifying the C++ source code. The software used a client/server
architecture to allow for remote control from a PC and/or iPad. The
software controlled and monitored stepper motors, valves, analog I/O,
digital I/O, thermocouples, pressure transducers, syringe pumps, high
voltage power supplies, and various instruments. The remote GUI client
displayed system status and allowed the operator to control the system. The
software included real-time data logging and graphing. The software was
deployed on different digital microfluidics systems and a high pressure
hydrogen test system. Developed an application to decimate extremely large
data files into smaller data files.
Programming Languages: C++, JavaScript, and C#
Operating Systems: Windows XP, Windows 7, Mac OS X, Linux, and iOS
SequoiaTek Project with Setaram Instrumentation
Maintained existing LabVIEW software for a high performance gas sorption
instrument. Added PID control for new heater hardware. Fixed many pre-
existing software bugs. The software controlled and monitored valves,
regulators, analog I/O, and digital I/O.
Programming Language: LabVIEW
Operating System: Windows XP
SequoiaTek Project with ProSoft Technology
Developed software for inter-process communication (IPC) based on TCP/IP.
Developed software for event logging for a multiprocess system. Ported
software for an Allen-Bradley ControlLogix general serial communications
module from a DOS platform to a Linux platform. Ported software for an
Allen-Bradley ControlLogix DF1 communication module from a DOS platform to
a Linux platform.
Programming Languages: C and C++
Operating System: Linux
SequoiaTek Project with General Motors and Sandia National Laboratory
Developed a multithreaded software application to control multiple hydrogen
fuel cells. The software interfaced with valves, flow controllers, flow
meters, regulators, pressure sensors, thermocouples, RTDs, analog input
devices, pumps, heaters, Modbus devices, DeviceNet devices, a PLC, and a
Kepware OPC Server. The GUI displayed system status and allowed the
operator to perform manual and automated control of the system. The
software performed automated hydrogen absorptions and desorptions using
automated control loops. The software included real-time data logging and
graphing.
Programming Languages: C++ and LabVIEW
Operating System: Windows XP
SequoiaTek Project with Lawrence Livermore National Laboratory
Developed software for an airborne high resolution image acquisition and
display system. The multithreaded software interfaced with GigE network
cameras and Camera Link cameras. The cross-platform image display GUI
software was written using wxWidgets to allow for easy porting to different
operating systems. The software generated a real-time camera trigger signal
to multiple cameras simultaneously. The software gathered GPS/INS data from
an external system via a serial port and then transmitted the information
via TCP/IP to multiple camera servers that embedded the GPS/INS data into
camera image data. The software stored image tracking data in XML files.
The software also had a TCP/IP socket server that allowed multiple GUI
client connections. The GUI client application used TCP/IP sockets to
connect to the camera trigger system. The client software allowed for
remote control of the system using Mac OS X and Windows systems. I also
ported a large application written for Mac OS X to run on the Linux
platform.
Programming Languages: C++ and C
Operating Systems: Windows XP, Mac OS X, and Linux
SequoiaTek Project with Sandia National Laboratory
Developed software for local and remote control of an embedded bio-
briefcase device. The multithreaded software was very flexible and could be
configured to match the hardware setup. The software was able to read and
run script files that allowed the control algorithm to change dynamically.
The embedded software interfaced with analog I/O, digital I/O, and stepper
motor hardware. The embedded software had a TCP/IP socket server that
allowed multiple GUI client connections. The client application used TCP/IP
sockets to connect to the system. The client software allowed for remote
control and display of various system parameters and dynamic loading of new
script routines.
Programming Languages: C++ and C
Operating Systems: Windows XP and Windows XP Embedded
SequoiaTek Project with Sandia National Laboratory
Developed software to calculate the position of a reticle for a
semiconductor equipment system. The system consisted of a VME based image
processing board and a PC. The PC communicated with the VME board using a
PCI bus to VME bus converter. The embedded software running on the VME
board performed image processing on video camera images and calculated the
position of the reticle using a complex algorithm. The PC allowed the
operator to control the system and communicated with the VME system using
shared memory.
Programming Languages: C++, C, and Visual Basic
Operating Systems: Windows 2000, Windows NT, and pSOS
SequoiaTek Project with Intel Corporation and Extreme Ultraviolet
Lithography LLC
Developed software to run on an embedded USB sensor device. The sensor
performed analog I/O and communicated with a PC using USB. The sensor
streamed real-time analog input data to the PC. Designed and developed a
system to capture and display multiple video images on one PC monitor. This
image display system also received data from several other server systems
using reflective shared memory. Designed and developed image processing
software to find blobs of laser light in an image and then calculate the
centroid of the blobs that were found. Designed and developed software for
an embedded DSP processor to gather and process real-time analog input
data. Designed and developed LabVIEW drivers to allow control of several
different motorized devices. Designed and developed DLLs to control a CCIR
integration camera. Designed and developed DLLs to communicate with Windows
NT drivers to control an RS-170 integration camera. Designed and developed
LabVIEW drivers to interface to DLLs to allow control of cameras through
LabVIEW. Designed and developed LabVIEW drivers to communicate with a laser
energy meter.
Programming Languages: C++, C, LabVIEW, and Visual Basic
Operating Systems: Windows 2000, Windows NT, pSOS, and VxWorks
Software Engineer
Lawrence Livermore National Laboratory - Livermore, CA
(June 1996 - June 1999)
Developed a laser control system using video frame grabbers, stepper motor
controllers, and a PC. A client/server architecture was used to allow
remote access to the control system using a GUI client. A multithreaded
application performed image processing at frame rates on two video inputs
and then applied control to mirrors using stepper motors. Team leader for a
group of 7 engineers and technicians during the deployment of adaptive
optics real-time laser control systems in a plant environment. A
multiprocessor architecture was used with Power PC and 68K processors on a
VME bus. The systems included image analysis, analog I/O, digital I/O, and
stepper motor control. Designed and developed a stepper motor software
driver. Designed and developed prototype systems for future plant systems.
Designed and developed benchmark algorithms to compare different CPU and
operating system platforms.
Programming Languages: C++, Visual Basic, and C
Operating Systems: Windows NT, OS-9, OS-9000, VxWorks, UNIX, Solaris, and
Windows 95
Embedded Software Engineer
NASA / HyperSpectral Sciences Inc. - Livermore, CA
(January 1997 - June 1998)
Developed software to interface an embedded PC/104 system to a high
resolution digital camera. The camera and embedded system were part of the
payload of an unmanned-solar-powered aircraft. Designed and developed a
ground station GUI to allow control of the airborne embedded system from a
remote ground station using TCP/IP sockets.
Programming Languages: C++ and Visual Basic
Operating Systems: Windows 95 and Windows NT
Software Engineer
Lightspeed Software - Bakersfield, CA
(September 1993 - May 1996)
Developed a software driver for a SCSI board to allow high speed
communication over a SCSI bus between a PC and a Wang computer. Designed
and developed e-mail gateway software products to connect various e-mail
systems (Microsoft Mail, Microsoft Exchange, cc:Mail, GroupWise, Banyan
VINES, and Wang Office). The gateways provided automatic directory
synchronization and transparent e-mail exchange. Wrote documentation for
each e-mail gateway product. Worked with customers to troubleshoot network
and system problems. Taught internet classes.
Programming Languages: C++ and C
Operating Systems: DOS, Windows 95, and Windows NT
Computer Consultant
Bakersfield, CA
(October 1992 - September 1993)
Designed and developed a database application to keep track of test results
for medical patients. Provided hardware and software support for PC and
UNIX systems. Designed and developed a database application to track
donations for a non-profit organization.
Programming Languages: Paradox and Microsoft Access
Operating Systems: DOS, UNIX, and Windows
Programmer Analyst
Chevron - Bakersfield, CA
(April 1991 - September 1993)
Developed an application for CAD file management. Designed and developed an
automatic network backup system. Designed and developed several custom
applications. Maintained VAX/VMS and UNIX systems. Solved system hardware
and software problems. Maintained TCP/IP and DECnet networks.
Programming Languages: C, FORTRAN, UNIX Shell Scripts, and Digital Command
Language
Operating Systems: UNIX, VAX/VMS, and DOS
Computer Consultant
Shell Oil - Bakersfield, CA
(September 1990 - April 1991)
Maintained VAX/VMS and UNIX Systems. Developed several custom software
applications. Solved system hardware and software problems. Maintained
computer networks.
Programming Languages: FORTRAN and Digital Command Language
Operating Systems: VAX/VMS and UNIX
Software Engineer
Lawrence Livermore National Laboratory - Livermore, CA
(August 1988 - August 1990)
Developed software for a laser control and data acquisition system. Control
and data acquisition was accomplished using stepper motors, digital I/O,
analog I/O, and custom I/O devices. Assisted in hardware debugging during
software and electronic hardware integration. Designed and developed an X
Windows user interface. Wrote software drivers for analog I/O, digital I/O,
stepper motors, and custom devices. Wrote network communication software
for remote control of systems from a supervisory control system.
Programming Languages: Ada and C
Operating Systems: VAX/VMS, VAXELN, and DOS
Software Engineer
Varian Associates - Palo Alto, CA
(June 1987 - August 1988)
Developed software for control of automated semiconductor manufacturing
equipment. The equipment was controlled via serial and digital I/O.
Involved with software and hardware integration. A touch-screen terminal
was used for the user interface. Wrote distributed system communication
software following the Semiconductor Equipment Communications Standard
(SECS).
Programming Language: C
Operating Systems: Micro/RSX, VAX/VMS, and DOS