 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
-
Over 12 years of progressive experience in designing and writing software using C, C++, Python, Java, and assembler.
-
Extensive experience interfacing computers with various types of hardware including kernel development,
real-time and embedded systems, protocol development, device drivers,
data acquisition applications, electro-mechanical control,
metrology, and system monitoring. Electrical Engineering degree.
-
Designing and writing software for multiple platforms including kernel device drivers,
file system drivers and NAS/SAN technologies, networking protocols/applications,
cross platform GUI applications, and scripting.
-
Team player. Fits in very well with large groups, small teams, or even
working alone and ramps up quickly.
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
Kernel, embedded systems, RTOS, device drivers, file system drivers NAS/SAN,
data acquisition, network/protocol, reverse engineering, cross platform GUI.
C/C++, ASM, Python, Java, C#, Perl, Visual BASIC.
Linux, FreeBSD, NetBSD, Win XP/2K/NT, Solaris, OS X, QNX RTOS, Win 9x, MS-DOS
GCC, GDB, Windbg, kgdb, kdb, Subversion, CVS, Windows DDK, VMWare,
VC++/.NET, Softice, SourceSafe, ClearCase, ClearQuest, SWIG,
PVCS, BoundsChecker, DJGPP, Installshield.
Qt, wxWidgets/wxPython, GTK+, SDL, Swing/AWT, v2linux, OpenGL, MFC, DirectX,
VMIC IoWorks (NT/VME), Objective Grid/Toolkit, OS X IO Kit, OSR FSDK.
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
DMMs, A/D oscilloscopes, frequency counters, power supplies, function generators,
trackers, logic/serial/protocol/bus analyzers, ICE, JTAG, encoders, breadboarding.
x86 PCs, SPARCs, PowerPC, ARM9, MIPS, VME/PCI/PCI-X/ISA/PC-104 bus, serial (232, 422,485).
Data acquisition (DAQ), digital I/O (PIO), and timer/counter boards.
Embedded and SBC computers.
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
iSCSI, SCSI, Linux, OS X, file systems, FUSE, wxWidgets
-
Modified iSCSI Enterprise Target to interface with their Terrablock storage product. This included extensive application level and driver level changes and ran on SuSE Linux.
-
Ported their graphical client application to Linux using wxWidgets, also consolidated multiple source trees into one for all 3 supported platforms (Win32, OS X, Linux).
-
Wrote an application to remount read-only volumes on OS X utilizing undocumented Darwin/xnu features.
-
Implemented a pass-thru file system filter driver on OS X utilizing the FUSE library.
-
Wrote an application to hook arbitrary application binary functions on Windows.
-
Wrote an application to resize Apple Partition Map (APM) partitions on OS X.
Debian, Embedded Linux, IPSEC, kernel device drivers, Scratchbox, flexbackup, ARM 920t, AT91, JTAG
-
Wrote a suite of applications to test protocol encryption performance under high load on embedded ARM computer. Utilized IPSEC for encryption.
-
Fixed many bugs in the existing u-boot bootloader used on ARM9 target board.
-
Migrated all application developers to Scratchbox for cross-compile builds and target board testing.
-
Implemented a group-wide backup policy utilizing flexbackup.
Windows, Linux, Debian, kernel, DDK, rootkits, security, IDS/IPS, VMWare
-
Ported driver portion of existing Cylant Secure HIDS product to Windows XP from Windows 2000. Driver hooked all kernel APIs and monitored for rootkits/malware in real time. Part of a larger suite of host based intrusion detection tools.
-
Added many features and bug fixes to Reflex Security's intrusion prevention products on Debian.
Debian, Embedded Linux, busybox, u-boot, Scratchbox, kernel device drivers, ARM 920t, AT91, Serial 485, JTAG
-
Ported 2.6.16 kernel and u-boot to custom AT91 SoC based board used for security and automation systems.
-
Wrote a Linux kernel driver to handle 485 communications and utilize on chip DMA for on board USARTs.
-
Implemented use of Debian and Scratchbox for cross compiles for ARM9 and i386 hosts.
-
Added support for AT91RM9200 board to Open WinCE JTAG software.
-
Utilized Laika plug-in and scripts to integrate the Eclipse IDE and Scratchbox for developers.
-
Was in house Linux expert to group consisting of embedded system developers in US and Sweden.
Reverse engineering, IDA PRO disassembler, VMWare, FlexLM
-
Removed need for parallel port dongle for abandoned Visual BASIC application by reverse engineering and patching external DLL.
-
Moved application platform to VMWare to work around bugs in edit controls on Japanese Windows OS install. No access to source to fix, only Visual BASIC binary.
FreeBSD, OS X, HW interfacing, python, wxPython
-
Wrote a graphical application using wxPython for their SAMMA platform. This application ran on FreeBSD 6.0 and Apple OS X. Application communicated with a robotic tape archive machine and a separate monitoring application utilizing Twisted.
Montavista Linux PRO/CGE, BSP, embedded, kernel device drivers, PowerPC 440GX, u-boot, UML, I2C, pthreads
-
Wrote a Linux kernel mode driver for Siemens’ MRC FPGA which handled monitoring board's health status, also wrote related APIs and diagnostics.
-
Wrote a Linux I2C kernel mode driver to interface with GPIO circuitry, also wrote related diagnostics.
-
Wrote a Linux kernel mode driver for Siemens' ARC chip which handled card redundancy/failover.
The driver was responsible for handling interrupts and notifying user mode subscribers of changes using RT signals.
-
Worked on the port of the u-boot bootloader to Siemens’ next generation ATCA hardware platform which utilized the IBM PowerPC 440GX processor. Work involved bringing CPU up, POST tests, debugging HW issues, ETC Guardian-SE JTAG ICE issues, networking/PHYs, chip select init, bringing Linux PPC kernel up, startup scripts, diagnostic utilities, building filesystem images, GPL issues, and customization for Siemens.
-
Debugged and fixed many kernel level bugs in the Montavista PRO kernel patched with UML. All bug fixes were submitted back to Montavista.
-
Setup a simulation environment of Siemens’ hiG Media Gateway carrier grade products using “User Mode Linux”. The simulation was used to bootstrap porting to Linux from VxWorks until the hardware was finished. Work involved patching Montavista’s kernel, building and tuning the kernel, building and configuring file system images, writing scripts for running and controlling the simulation, and thoroughly documenting the process for Siemens employees new to Linux and groups overseas also using the simulation.
-
Debugged and fixed bugs in the VxWorks to Linux emulation library (v2linux) including numerous thread and semaphore related bugs and long present race conditions in the application code.
-
Worked on getting Montavista kernel up and running on IBM Ocotea 440GX reference board and their custom 440GX board.
-
Added features to Siemens’ Clock Control FPGA kernel mode driver.
-
Was in house Linux expert to over 40 VxWorks developers. This included setting up, troubleshooting, and using Linux, developing on Linux, and design direction for applications, device drivers, and the PPC Linux kernel.
-
Wrote scripts to automate building and populating file system images.
-
Wrote applications to test network connectivity between remote boxes and apps running within UML simulation.
-
Utilized iptables and port forwarding to limit the number of IP addresses used by the simulation.
Linux, python, wxWindows, serial RS-232, DAQ, CTB, pyserial
-
Wrote an application using wxWindows to interface with a custom data acquisition system. The application communicated over a serial port and displayed visual representations of probe locations, encoder position, and other indicators. Also used the cross platform CTB serial library.
-
Wrote a python script to interface to a custom data acquisition system. This was used as a prototype and for verifying integrity of acquired data. Utilized pyserial for data communications with unit.
Mac OS X, kernel, wxWindows, Xcode, SCSI, Linux, file systems, cross platform GUI, Win32, performance
-
Wrote an application and library for OS X (implemented as a mach-o bundle) to handle mounting volumes and other operations communicating with Facilis’ Terrablock device driver.
-
Wrote an application using wxWindows to migrate and import clients media files from other storage systems to a Terrablock system. Program was supported on OS X and Windows.
-
Added features to their Terrablock software on multiple platforms including Mac OS 9, OS X, and Windows.
-
Created a custom bootable recovery CD to restore Terrablock utilities and drive bootsector in the event of system failure. Utilized Linux for boot cd, bash shell scripts for menus, and standard tools like dd for recovery. Also supported full system restore over NFS.
-
Added support for more precise timing and other features to the file system benchmark program IOMeter.
-
Wrote an application using the Win32 API to generate very consistent loads on given file system. Application was made into a larger testing/benchmarking framework for Facilis’ storage products.
NetBSD, Linux, embedded system, kernel device drivers, UNIX, kgdb, MIPS, SATA, python, cross-compile
-
Coded new features for their iSCSI peer-storage array product. Work involved kernel disk drivers for NetBSD running on
MIPS (sibyte) and x86 targets including user/kernel coding, cross-compiling, and kernel debugging.
-
Wrote kernel code to detect and fix specific hard drive issues.
-
Debugged and fixed kernel panics and related bugs in pre-existing kernel code using kgdb.
-
Wrote an application that could induce specific hard drive errors.
-
Fully automated their drive qualification process using 'C' programs, shell and python scripts,
and an intranet site which allowed for managing entries, storing drive information,
history, and searching using HTML/CGI.
-
Wrote an application to search for arbitrary byte patterns on raw disks.
-
Wrote an application to monitor S.M.A.R.T. hard disk counter data.
-
Maintained and added new features to an application that searched for
bad blocks on a drive and repaired them if possible. Program also monitored throughput
and variance data for the drives.
-
Wrote an application to exercise raw disks simulating a mail server and pseudo file system.
QNX 4.25/6.X, RTOS, Linux, Java/Swing, DAQ, A/D boards, Digital I/O boards, Port I/O, DMA, Serial 232, ncurses
-
Coded new features and maintained their metrology software, GMS (geometry measurement system),
which interfaces with various boards/hardware (LVDT, encoders, motors) to compute the roundness and straightness
of multiple precision parts. This included both the GUI and low-level components.
-
Re-wrote their entire system software to work with their new custom ISA data acquisition (Orchid) boards.
Previous version used several "off the shelf" boards. Also root caused many hardware issues with boards.
-
Wrote software (GUI app and kernel module) to test their proprietary data acquisition boards.
Goal was to give field technicians a bootable floppy to test units. Written for Linux and used ncurses.
-
Proposed detailed design for migration from legacy platform to real-time/embedded Linux
to allow for interoperating with other technologies customers desired including networking and databases.
Built prototype GUI demonstrating these features using Java Swing.
VC++/NET, C#, Qt, MFC, COM/DCOM, Winsock, NT Services, FTP protocol, XML, SQL, VB, WMI, multithreading
-
Designed and wrote an FTP server and client following the FTP RFC. Server was implemented as an NT service.
Requirements were high performance, multi-threaded sessions, 64 bit REST support, encryption,
and site specific commands for various status and control operations including suspending/aborting/resuming
individual sessions. Used by CNN for interfacing with Pinnacle's Media Gateway software.
-
Added new features and maintained their broadcast archiving/storage product which was used to handle all file
operations with customer's media assets (video/audio) including copying, deleting, import/export,
and transcoding from DV25 to MPEG1 format. The software exposed a DCOM interface
that allowed 3rd party software from CNN, Time Warner, etc to submit jobs.
Fixed many synchronization/threading issues in the code,
including race conditions and deadlocks. Also added new features including PAL support,
file importing, failover, job re-ordering/priorities, and VB GUI enhancements.
-
Designed and wrote an application to gather information about a system's configuration
and verify the machine's state. Application was written using the Qt toolkit and utilized
XML for the "oracles" which held information about what to acquire from the system and
the allowable value(s) to find. Machines could be inquired over a network allowing
a technician to verify many machines at once and from a single location.
-
Wrote an application to interface with Adrienne time code boards using C# and .NET.
Allowed for synching system time with external clock via card. Also wrote configuration
GUI/systray applet in C#.
-
Designed and wrote an application to allow previewing MPEG1 clips,
and manipulating hi-res clips over multiple sites for CNN using SQL, C#, and .NET.
Linux/OS X/Solaris Kernel, Win32 DDK/Internals, File Systems, SAN, SCSI, Protocol, OSR, ClearCase, Perl, Python
-
Coded new features and bugfixes/maintenance in kernel mode drivers to support Unity
product. Unity is a networked file system that supports large amounts of high-speed storage used for
streaming audio and video. The application suite consisted of three parts.
-
The file-manager which was a dedicated computer running Windows NT Server handling requests from
clients, storing all file metadata, and containing administration software. The software to handle
requests was implemented as an NT service with threads running at 'real time' priority.
-
The client software that consisted of the kernel mode drivers and ran on WinNT, Win2K, Macintosh,
Solaris, and Linux.
-
Hardware - JBOD, SCSI Fibre channel cards, SAN products, Fibre channel switch, Server/Workstations.
Primary work was with file system drivers that interfaced with the operating system/Fibre-channel/SCSI driver.
Extensive kernel coding, testing, and debugging on multiple platforms, including SMP configurations.
-
Wrote and maintained Linux kernel file system driver (VFS) and associated device drivers.
-
Wrote a Linux char device driver and user mode daemon that allowed file
system to work over Ethernet while waiting for Fibre channel drivers to become available.
-
Modified SCSI layer on Linux to support SCSI processor device exposed by Emulex Fibre channel card.
-
Wrote a Linux library for file-manager to get SCSI drive info and other information via SCSI pass-thru.
-
Designed and created an embedded Linux 'distribution' from scratch that was built and staged by shell scripts.
Requirements were small footprint, CD bootable, and various networking components. Used initrd/ramdisk and busybox.
-
Wrote a kernel file system driver and associated device drivers for Solaris 8.0 ( SPARC and x86 ).
-
Wrote kernel device drivers, file system driver (VFS), and related user-mode tools for Macintosh OS X.
-
Maintenance coding/bug fixes for kernel file system driver and associated device drivers on Windows.
-
Wrote a Win2k kernel driver to probe PCI bus for configuration info used by system profile application.
-
Designed and wrote a reliable protocol on top of UDP that required running on multiple platforms and in varying environments,
including soft real-time, low memory, and kernel/user mode.
-
Reverse engineered the 3Ware IDE RAID/SAN JBOD user mode/kernel mode protocol for use with Avid products.
-
Designed and wrote a generic, extensible, and distributed testing
framework in Python used for smoke testing multiple machines over a network.
Currently used by the SQA department for testing many of Avid's products.
-
Maintenance coding and test harness for the Unity Windows Network
Provider DLL.
-
Debugged and fixed many BSODs found in the field. Also was BSOD/panic“triage”developer and
created a kernel debugging intranet site with Apache.
-
Implemented failover support ( redundant servers ) for NT product using sockets, Inet Helper API, and MFC.
-
Implemented build process (ksh scripts), testing procedures (Driver Verifier),
and installations (Installshield) for products.
-
Wrote a test harness and related programs for the Win32 File API and WNet API.
-
Implemented and documented use of Samba for access to Unity product from unsupported clients (SGI/HP-UX).
2K/NT DDK, Kernel, Port I/O, Serial 232/422-USB, Java, MFC, Perl, RPC, Obj Grid, PVCS, Installshield
-
(+ 9/02) Wrote a Win2K kernel driver to access IO boards on parallel ports. Also install and config utilities.
-
Coding for XYFlex application used to operate a 4 head semi-conductor dispensing machine used by
Intel, AMD, etc for chip manufacturing. Program consisted of three separate processes:
-
The Vision process that handled all communications with the Matrox MIL and Cognex vision libraries.
-
The GUI allowed the user to create and run patterns, configure various subsystems, and gave system
status of all components of the system. The GUI communicated to the server via RPC/mailslots.
-
The server (implemented as an NT Service) handled interfacing with hardware including motion cards,
I/O boards, network, conveyor, temperature controllers, and weight scales.
Implemented two major subsystems (both low-level and GUI components):
-
Temperature controllers: This allowed tracking and setting the temperature of various regions.
Server component communicated with controllers via serial port (422)
using Modbus protocol. GUI components handled configuration and status/feedback.
-
Weight scales: Allowed weighing of dispense samples and calibrating the characteristics of the
dispensing to meet specified requirements. Server component communicated with scales via USB 4 port
serial hub using Satorius xBPI protocol. Also helped debug and fix Edgeport's NT kernel serial driver
that shipped with their USB serial hub.
-
Also coded on other subsystems including conveyor, digital I/O, and motion control (Delta Tau/PMAC).
-
Wrote an NT Virtual Device Driver to allow running of DOS based GFX product within NT's
Virtual Dos Machine. Support for I/O ports, interrupts, and DMA transfers for apps running within the
command shell.
-
Wrote a configuration/installation utility for Galil motion cards.
The program allowed downloading and burning firmware to the on-board EEPROM via port I/O.
-
Wrote a Java applet used by customers which calculated product usage based on pattern calculations.
-
Co-designed and implemented proprietary protocol for communicating with 485 boards on older
machines. This allowed older hardware to be retrofitted to work with the Windows NT based software.
-
Created, wrote, and maintained Installshield installations for both NT products (XYFlex and Matrixx).
-
Configuration management admin using PVCS. This included setup, maintenance, and troubleshooting.
-
Wrote all build scripts and managed all builds using PVCS, Configuration Builder, Perl, and NT batch files.
-
Wrote many Perl and batch scripts to support SQA, software department, and customer installations.
-
Many utility programs including: A program that disallowed checking in files with 'locked' labels.
A utility to monitor changes to checked in files and logging changes.
MFC, COM, STL, Objective Grid-Toolkit, BoundsChecker, ClearCase, OpenGL, DirectX.
-
(+11/99-4/00) Provided new features, bugfixes and an installer for the Ritap product.
-
Win32 rewrite of COMIG, a CAD/mechanical design package for turbo machinery. Consisted of three parts:
-
The 'geometry server', implemented as a COM in-proc server, which took in data from formatted x-y-z
data files and converted the data to the representation desired (i.e. B-splines) to be displayed in GUI.
-
The 'flow solver' was a port of Fortran math routines to C.
-
The end-user (GUI) application. The GUI allowed relevant data to be imported and a graph of
desired quantities was displayed as well as tabular output via a grid control. The curves could be
edited in 'real time' and relevant data could be exported to an existing in-house OpenGL viewer.
-
Wrote a C++ class library (MFC extension DLL) wrapping the 'C' Quinn-Curtis charting
software. All NREC software programs use this graphics library. Started porting to DirectX for speed
increases in real-time updates.
-
Was ClearCase administrator, implemented TrackRecord usage for entire software group, nightly
builds of all projects using Cygwin UNIX tools, and procedures for department-wide style and testing
guidelines.
-
Implemented many new features in the Comig GUI. Workspaces, structured storage saving of data,
real time editing of curves, classes for registry access, and spreadsheet data viewing using Objective Grid.
NT DDK, Kernel, Port I/O, 8051, MFC, Borland C++, BoundsChecker, SourceSafe, IoWorks, Fastgraph.
Most applications centered on communication and navigational applications for the U.S. Navy for
placement on naval vessels. Building and testing various circuits and hardware. Also troubleshooting
computers, networking setup, configuration, prototyping, electronics testing, and wiring.
-
NT kernel-mode driver and related code for interfacing/data acquisition with
synchro cards and other hardware.
-
Raytheon Combined Navigational Units: Interfaced with Raytheon's Ecdus and Arpa computers and the
Navy's Wren 6. Implemented on several Navy carriers. The application (an NT Service) incorporates
reading various signals (serial[422], synchro, NTDS, and TCP/IP packets of internal protocol ) converting
them to NEMA strings and sending to Raytheon's equipment, and driving other hardware. Signals received
also sent via network to programs displaying custom GUI controls and displays simulating their analog
counterparts. Major considerations were interfacing NT with the VME bus, using threads for I/O, remote
configuration, and strict military security issues.
-
Wrote Henschel's Alarm Activation Panel used on Navy vessels. Talked over the parallel port using port I/O.
-
Maintained embedded throttle control project running on 8051. Developed using Archimedes environment.
-
Wrote a program to detect lights in manufacturing plant turning on/off via photodiode circuit over parallel port.
-
Wrote dimmer application that controlled a custom ISA/PC-104 card and ran on Windows NT. The card
controlled the dimmer of a LCD flat panel display's backlight. Also designed the protocol to interface w/ card.
-
Built portable PCCU flat panel display/embedded PC. Designed and built security/battery watchdog circuitry.
-
Mock up of DOS based IVUT program used to test touchscreen sensitivity using Borland C++ Builder.
-
Database/Front-end/HTML program for use with viewing ISO-9000 documents for entire company.
|
 |
 |
 |
 |
|