William N. Halchin
#***
Houston, TX 77058
abnuu5@r.postjobfree.com
EXPERTISE
C, C++(including C++ templates), Visual C++, STL, design patterns, OOD via UML, VB(Visual Basic), POSIX API, Win32 API, Windows NT System Service, UNIX (AIX, UnixWare, Solaris, HP-UX,
Linux), Windows, RTOS’s (LynxOS, QNX, ThreadX), 2000/2003, Unix/Linux & Windows 2000 device
drivers, multithreaded applications (pthreads, Win32 API threads), debuggers (Crash, gdb, dbx, kdb,
WinDBG), internationalization, TCP/IP socket programming, servers, Multicast IP, MFC, XML (XML
DOM API), IPMI, ISA and PCI buses, Haskell.
RESUME SYNOPSIS
1) Device drivers:
- Wang Labs => LynxOS ( a real-time POSIX-compliant OS for an embedded product)
- Intecom => LynxOS
- Harris Computer => System V4 (basically Unixware)
- Boston Technology => UnixWare and Windows NT
- Brooktrout => Unixware
- Pillar Data => QNX (a real-time OS for an embedded product)
- OSA Technologies => Linux and Windows 2000/2003
-- both drivers are shipping on AMD's new 64-bit server boxes
-- the Windows 2000 driver that passed Microsoft's WHQL certification test suite
- Syracuse Research Corp. => QNX (RTOS)
2) Real-time/Embedded
- Wang Labs => LynxOS ( a real-time POSIX-compliant OS for an embedded product)
- Intecom => LynxOS
- Brooktrout => Unixware
- PillarData => QNX
- Syracuse Research => QNX
3) Driver libraries:
- Brooktrout (UnixWare)
- OSA Technologies (POSIX API on Linux and Win32 API on Windows 2000)
4) Socket programming (server development)
- Hotmail
- Radiant
- HPSS (IBM)
5) Mulithreaded applications/libraries
- Hotmail (POSIX threads and Win32 threads)
- Brooktrout
- Radiant (POSIX threads)
- OSA Technologies (Win32 threads and POSIX threads)
- HPSS (IBM)
6) XML
- Radiant Software (used XML as a wire protocol)
7) C++
- Boston Technology
- OSA
- Ford
- Syracuse Research
8) Porting/reverse engineering
- Infiniband stack (Pillar)
- node health server(Hotmail)
- Proprietary comm stack internals document (Nortel)
9) Security/cryptography
- Ford Motors, HPSS
10) fluent Mandarin Chinese speaker
11) I also have deep interest and knowledge in areas other that low-level development: mathematical logic,
category theory, functional programming languages. I have some writing proficiency in FPL Haskell.
A reviewer of the forthcoming O'Reilly book "Real World Haskell" (
http://www.realworldhaskell.org/blog/)
wrote Haskell FFI (foreign function interface) bindings for the Posix real-time extension
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/posix-realtime
CAREER GOALS
I am looking for a small and dynamic work environment where I can leverage my kernel and low-level
application development skills while breaking into new technology areas. I would also like to be able to use
my ability to speak Chinese.
WORK EXPERIENCE
Weatherford (http://www.weatherford.com) 2/2009-Present
- using device driver writing skills to validate the correctness of firmware running in down hole
sensors (oil/gas drilling) using Microsoft VB. Internally the sensors mostly used SPI to talk
between multiple processors within a sensor. After hours I am working on getting
http://www.ninebynine.org/RDFNotes/Swish/Intro.html to build in http://www.haskell.org new
environment.
Bio Informatics Project 12/2008-2/2009
Implemented a 2Bit library in functional language Haskell(http://www.haskell.org)
–
Dell Computer 9/2008-10/2008
Working on library written in C++ for the Change Management team
–
Interfacing with IPMI
Hewlett Packard 12/2007-3/2008
- Member of disk array firmware validation team.
- Software written in C++
Linux 2.6 and C++
IBM HPSS Collaboration 3/2006-8/2007
- HPSS developer (http://www.hpss-collaboration.org/hpss/index.jsp)
- Was member of a team writing a Linux file system (implemented similar to NFS client/server model).
This file system provides a POSIX I/O API client to the HPSS storage system. Implemented as a
Linux loadable kernel module and a application space daemon.
- currently member of a team writing a “glue layer” between IBM’s GPFS and HPSS. HPSS will used as
a storage backup/restore for GPFS.
- Linux 2.6 and AIX
Radisys Inc. (Des Moines, IA) 11/2005-3/2006
Software Contractor
- wrote boot-time OpenIPMI (http://www.openipmi.org) bash scripts for an ATCA chassis
- worked on Linux watchdog daemon
IBM Austin 6/2005-9/2005
Software Contractor
Chief product: IBM containers project
- Added new functionality(commands) to kdb (the kernel debugger)
- Added new functionality to snap (a customer diagnostic tool)
Syracuse Research Corp. (Syracuse, NY) 2/2005-6/2005
http://www.syracuseresearch.com
Software Contractor
Chief product: embedded and real-time software running on a portable radar
- trouble shooting real-time thread starvation problems in current radar software. Advocated tighter
coupling between two cooperating processes to make solution more event driven and hence
reducing starvation.
- analyzing and documenting the design of the current radar software (for a future implementation)
- the dynamic behavior of cooperating processes constituting the radar software was not well
understood. I advocated using the QNX instrumented microkernel, tracelogger and the System
Profiler editor. I succeeded in building a boot image containing procnto-instr and using the
System Profiler editor to provide empirical data to analyze the radar system’s dynamics.
Technologies used: C++
Platforms: QNX 6.2/6.3
Ford Motor Co. (Dearborn, MI) 9/2004 – 2/2005
Software Contractor
Chief product: Ford-internal single login software product for various Web servers (IIS, Apache, iPlanet)
- Designing and implementing (in C++ ) components of a Web server agent using doxygen and
UML, e.g. cryptography subsystem, command line utilities, etc.
- Designed and implemented a subsystem in C++ to provide crypto services (implemented using
RSA's CyptoC and CertC libraries)
- Designed and implemented a Microsoft IIS ISAPI extension to do security authentication via
RSA's ACE library.
- Designed a set of C++ classes for generic command line utilities
Technologies used: C++, STL, UML, design patterns, RSA cryptography libraries (CryptoC 5.1 and CertC
1.0.2)
Platforms: Win2000/XP, Linux, Solaris, AIX, HP-UX.
OSA Technologies, Inc. (San Jose, CA) 7/2002 -8/2003
http://www.osatechnologies.com
Software Architect
- Chief product: IPMI software
- Personally designed all software in a “clean room” environment from IPMI 1.5 spec.
- Personally designed and wrote a Linux driver and a Windows WDM device driver for inband
IPMI supporting the KCS System Interface (also implemented ~70% of BT System Interface)
- Implemented parts of the BMC-side of the KCS System Inferface in ThreadX.
- Wrote a shim loadable module for the IPMI Linux driver so that Linux driver binary could be
distributed with aribitrary Linux kernel configurations.
- Personally designed and wrote an IPMI PCI driver for Linux and Windows.
- Used WinDBG when necessary to debug the Windows driver.
- WDM IPMI driver passed WHQL HCT tests
- Personally designed and implemented two multi-threaded IPMI libraries (implemented against the
POSIX API and the Win32 API) in C++.
- Important note: most of the driver code and all of the library code was written in an OS-
independent (for Linux and Windows) fashion to keep maintaince cost low and to aid in future
extensibilty.
- Delivered 3 IPMI drivers to customer (all 3 accepted by the customer - AMD).
- Wrote a DOS “driver” for IPMI utilities to use.
- As fluent Chinese speaker, worked in Taipei, Taiwan with our IPMI firmware team to resolve
firmware problems.
- Linux kernel usage: kernel_thread, memory management, synchronization primitives, timers
Pillar Data Systems, Inc. (San Jose, CA) 10/2001-7/2002
Principal Software Engineer
- Leading champion for QNX OS which was the ultimately adopted company OS.
- Designed and wrote an hardware sensor API (i2c, gpio, etc.) for a series of QNX resource
managers (device drivers)
- Read through a hypercube interconnect driver (hypercube was considered as a possible
interconnect technology)
- After extensive reading of the Mellanox Infiniband Gamla SDK, wrote a Reimplementation
Specification detailing how to reimplement the Inifiniband protocol stack on QNX (a microkernel
OS) from Linux
- Ported the Gamla SDK to QNX from Linux which included designing and implementing a QNX
Neutrino resource manager (device driver)
RADIANT SOFTWARE 6/2000-6/20001 (Employee)
Senior Software Engineer
- One of two principal software engineers in the company
- Sole architect and implementer of a server that supports
failover and advertisement of presence.
- Project leader for this project with one junior engineer
.
- SAN Management Server characteristics:
- One master and several slave instances
- Designed the server/client applications layer protocol and documented using BNF grammar.
- Chose XML to represent messages sent between server instances and client software (I choose XML
because the servers talk to device driver's via ioctl and receives back very structured data
that needs to be marshalled and sent over the wire and thus, XML's ability to represent
structured/nested data is critical).
- Wrote a marshall/unmarshall library in order to send primitive data types and structured types (data
from device ioctl) over the wire in XML, i.e. the marshalling routines build XML elements and
the unmarshalling routines walk a DOM tree on the receiving end). This library also had the
effect of hiding DOM tree walking.
- Designed and implemented a watchdog timer object.
- Designed and implemented the notion of leasible resources on server side.
- Uses multicast to advertise the presence of server instances and also to allow a client
to discover the Master server.
- Multicast is also used to provide failover if the Master server dies and slaves must
unambiguously pick a new Master amongst themselves
- A "distributed" finite state machine that is used to handle arbitration
- Used Xerces XML DOM API.
- Wrote C++ class to hide some parts of XML DOM API and also provided methods to extract
important nodes in a DOM tree.
- Current status - our client GUI program is running in a distributed manner with my server cloud.
- Targets: Linux, Solaris, IRIX
NOTE: From 5/98 backwards, I was a software contractor.
MICROSOFT/HOTMAIL CORP., San Jose, CA 2/99- 6/2000 (Employee)
5/98-2/99 (Contractor)
キ Personally designed and implemented a multi-threaded Win32 API server (a node health server)
using MFC in the Visual C++ IDE. I captured the Server/client protocol as a BNF grammar rules
and put as a comment in the code for future maintainers. Wrote this server as an NT System
Service that interfaced with SCM (Service Control Manager).
As a member of the Microsoft Messenger development team, personally designed and
キ
implemented a multi-threaded (pthreads) TCP client/server that also supports multicast IP. This
Client/server is responsible for providing load-balancing Services.
MCI, Richardson, TX 8/98-10/98
- Redesigned and implemented a server to make it a multithreaded server (using Pthreads).
- Some exposure to SNMP (agents, MIBs).
NORTEL, Richardson, TX 8/97-1/98
キ Wrote detailed internals document describing a proprietary communications protocol implemented
as a Solaris Streams driver stack (e.g. packet fragmentation, packet re-assembly, connection-
based, connectionless, etc.)
- Fixed Streams bugs
BROOKTROUT TECHNOLOGIES, Needham, Massachusetts 5/97-8/97
- Designed and wrote functional spec for a platform-independent device driver API
- Implemented device driver multi-threaded API for UnixWare
- Designed and implemented an SMP UnixWare driver for voice board
BOSTON TECHNOLOGY, INC., Wakefield, Massachusetts 11/95-4/97
-Design, implemented and tested COM/OLE component to provide High Availability RS232 services
on NT platform (Win32 API)
-Designed and implemented an NT kernel device driver to control hardware watchdog timer
-Added new functionality to a Unix voice driver controlling a Dialogic voice board
-Wrote Winsock client-server for testing Ethernet card performance
-Chinese-speaking R&D liason to Chinese customer in Shi Jia Zhuang, China
HARRIS COMPUTER SYSTEMS, Ft. Lauderdale, Florida 3/95-9/95
-Ported single-processor floppy driver (that controlled National Semiconductor Super IO controller) to
an SMP platform (PowerPC)
-Ported DMA controller software
-Fixed NFS (kernel) bugs
SAS, Inc., Chicago, IL 1/95-3/95
- Worked on 4GL-to-C translator
WANG LABORATORIES, INC. 7/93-12/94
Product: Optical Disk File System (residing outside the kernel)
-Project Leader in charge of internationalizing file system
-Designed and wrote a path parser that parsed based on locale
-Wrote wrappers for multi-byte functionality missing from the standard C run-time library on two
Unix platforms
IBM 10/91-6/93
Dallas Software Vendor Porting Center, Dallas/Austin, Texas
Responsibilities: As member of AIX Internals consulting team, assisted vendors in their efforts to port
system software, e.g., device drivers, file systems, etc. to AIX.
Areas of the kernel conversant in:
-Logical Volume Manager (specifically Logical Volume Device Driver)
-Logical File System
-Journalled File System
-CD ROM File System
-Virtual Memory Manager
-Various production device drivers, e.g., CD ROM driver, tape driver
-Various configuration and change methods
-Analyzed system dumps with the Crash utility
-Wrote TCP/IP socket client/server
INTECOM, INC., Dallas, Texas 3/91-9/91
-Developed a Unix device driver (Lynx OS) for a TTY device, providing virtual windows
WANG LABORATORIES, INC. 7/90-2/91
-Developed Unix device driver to control Jukebox robotics
-Converted a DOS application into a Unix curses application
INTECOM, INC. 4/90-6/90
-Ported GNU GDB debugger to Wang VS running Lynx OS (a real-time Unix)
-Modified Lynx OS kernel (memory management) to support debugger (trace system call)
WANG LABORATIORIES, INC. 7/89-3/90
-Designed, implemented and tested Unix device drivers for
disk (supporting async i/o via ioctl) and
streaming cartridge tape
-Ported Unix tools, e.g., fsck, mkfs, etc.
-Participated in planning of porting process
EDUCATION
Master of Science (Physical Chemistry)
University of Wisconsin (many graduate math courses, e.g. topology, measure theory,etc.)
M.S. resaerch done in http://www.chem.wisc.edu/tci/pchemtci.html
Bachelor of Science (Chemistry)
Kent State University
AREAS OF ADDITIONAL INTEREST
- Category and Topos theory (in particular applications to computer science)
- Constructive mathematics
- Functional languages (Scheme, Haskell, Erlang) & rewriting systems
- Grid computing
- A reviewer of forthcoming O'Reilly book "Real World Haskell"
(http://www.realworldhaskell.org/blog/)
SPECIAL SKILLS
Speak and read Chinese fluently
Basic knowledge of Russian
PROFESSIONAL ORGANIZATIONS MEMBERSHIP
European Association of Theoretical Computer Science (EATCS)