Write control and data analysis software for the South Pole Telescope (SPT), a 10-m diameter sub millimeter telescope that will be deployed at the Amundsen-Scott South Pole Station in November 2006 with a goal to perform a deep survey of the Sunyaev-Zeldovich effect from galaxy clusters, by taking measurements of the angular power spectrum and polarization of the cosmic microwave background radiation. Oversee the telescope control and monitoring software, and interfaces to receiver computers, building on software for existing telescopes, and on the extensive experience of the SPT group. Work as part of a design team, maintaining collegial and collaborative working relationships with scientists and engineers at several institutions. Design, write, document, test, and maintain C and C++ programs for instrument control, data acquisition, and data analysis. Participate in SPT design meetings and reviews and laboratory and field testing of the major subsystems of the SPT.
WMS Gaming Inc., Chicago, IL 2002 - 5/11/2005
Principal Engineer - Gaming Machines
- Lead team in design, coding and test of object oriented system
software for slot machines. System is written in C++ for an embedded system
based on a Linux kernel modified for stringent reliability, security
and authentication requirements of the highly regulated gaming industry.
Design interfaces between subsystems. Ensure conformance to customer and
regulatory requirements. Manage schedule for development and quality
assurance process. Communicate with internal customers, including documentation,
system test and program management.
Portal Software, Cupertino, CA 2000 - 2002
Technical Consultant - Internet Service Provider Billing System
Installed and customized Infranet IP based billing system at customer site.
- Investigated customer requirements and provided product knowledge
during project initiation workshop.
- Customized Infranet to handle custom events from client's
in-house usage collection system.
- Wrote Unix (Solaris 2.6) shell scripts using ksh, awk, join etc.
and C programs to automate integration of customizations and parallel
testing with historical billing data.
- Modified C programs to generate custom invoices in XML.
- Trained consultant on Java API used to create data import interface.
- Designed complex price plans to handle highly customized contracts.
- Designed, coded and executed test plan for rating customers primary service.
- Maintained all source code in CVS source code control system.
- Authored and gave user training using PowerPoint and MS Word.
- On loan to Portal QA team, performed system testing of the 6.2
release of Infranet on Solaris, HPUX, AIX and Windows 2000, including
tests of customer center, price plans, sponsorship, remittance, branding
and multi-database features.
Despite knowing nothing about billing when I joined Portal, my C
programming experience and two weeks of intensive training was enough to
bill my time at an outrageous hourly rate that I have promised not to
divulge. While my knowledge of the product was important, what really
sold the customer was my initiative in studying and understanding their
business before the first meeting. When the initial contract expired,
the customer was so happy with me that they agreed to an even more
outrageous rate to keep me on the project. The glowing letter they
wrote to my manager got me through the first round of layoffs when the
telecom crash hit, despite my being on the bench at the time.
Unfortunately when the layoffs reached 50% in the second round, very few
people with one year of seniority survived.
Hewlett-Packard Company, Boise, ID and Vancouver, WA 1992 - 1999
Development Engineer - Printer Firmware
Developed ROM based printer firmware for LaserJet and DeskJet printers.
- Designed the image-processing module for HP 2000 color inkjet
printer. Coded in C for VxWorks real time operating system using HPUX
cross development platform. Used object oriented style to emulate C++
in the absence of an acceptable C++ tool set. Resulting code was burned
into masked ROM in a high volume product based on an Intel i960 core and
a custom ASIC which my module used to accelerate image processing.
Eliminated errors in implementation of print modes by creating program
to translate print mode specifications into C code.
- Debugged real time code using in-circuit emulators and prototype
target hardware.
- Identified performance bottlenecks in the printer image processing
firmware using VxWorks Tornado profiling tools and code instrumentation,
enabling the team to concentrate on critical areas and meet performance
objectives on time.
- Rewrote 1284 parallel port driver in C for Coldfire processor to
integrate with object oriented, multi-divisional common I/O protocol
stack architecture. Modified driver to use new ASIC features, improving
I/O performance and reliability.
- Created data capture hardware/software tool that enabled early
testing of the printer data path, minimizing the number of ASIC turns
required. Made modifications to the VHDL for the test tool FPGA when
the designer was unavailable. Configured HP 16500 logic analyzer to
capture data and transfer to a workstation. Wrote C program to
efficiently reformat color page images for viewing.
- Maintained all project source code in ClearCase source code control
system including common code shared by multiple divisions and product
teams worldwide.
- Created an innovative solution to a software defect in laser printer
masked ROMs that saved HP $500,000 in potential scrap material costs.
- Redesigned the control panel state machine for the HP LaserJet 5Si
networked printer. Reduced code size by 30% and increased
maintainability. Implemented new message localization module allowing
more flexible message formatting. Wrote code in C for proprietary real
time operating system. Debugged on target Intel i960 hardware using in-
circuit emulators and custom real time trace capture hardware.
- Designed and coded extended diagnostics for HP LaserJet 4Si printer
in C. Target system used AMD 29000 32 bit RISC processor and custom
ASIC. Tests included ROM and RAM pattern tests and functional tests of
ASIC image pipeline.
- Integrated parts of extended diagnostics into manufacturing
functional tests in cooperation with manufacturing engineers.
- Visited HP LaserJet major accounts in London over 5 days and wrote a
report that was used to help determine future product features.
I went to the printer divisions of HP because I enjoy working on
successful products that make money. I was not disappointed. HP sells
ink, which is mostly water, for over $4000 a gallon (you can do the
math). They still have one of the best corporate cultures in the world
and I feel truly privileged to have been able to work there for 15
years. While HP policy was not generous with stock options, those that
I was awarded on two occasions for outstanding performance were actually
worth something when I left.
Solbourne Computer, Longmont, CO 1991
Performance Engineer - Symmetric Multi-Processor Database Server
- Instrumented multiprocessor UNIX system to help kernel team tune for
maximum performance on TPC benchmarks using Oracle, Informix and Sybase
databases.
- Used principles of SMP cache coherency and granular locking of
shared resources.
On my return from France, the recession had hit and I took the
opportunity and my savings from two years as a foreign service employee
to take a year off and learn to fly. When I decided not to pursue
flying as a career, Solbourne was nearby and offered the lure of pre-IPO
options. They ran into yield problems on the gallium arsenide chips
needed for the translation look-aside buffers on their SMP processors
plus competition from Sun and HP. When they posted a $4 million loss
and high level executives started jumping ship, I took the hint and
went back to HP.
Hewlett-Packard Company, Ft. Collins, CO and Grenoble, France 1982 - 1990
Development Engineer - Unix Kernel Networking and Network Management
- Designed and coded sockets interface for HP 9000/300 HPUX kernel in
C.
- Based on the protocol specification, designed and
coded the OSI level 4 transport protocol (ISO equivalent of TCP) in HP
Modular Pascal for the HP 9000/500 HPUX kernel and showed it at the
first inter-vendor OSI protocol LAN networking demonstration at the
National Computer Conference. First of ten vendors to pass conformance
testing at the National Institute of Standards and Technology.
- Provided HPUX and compiler expertise to the team porting a large
(800 source files) distributed, fault tolerant, network management
system based on an Ingres relational database from VMS to HPUX.
- Implemented part of a VMS emulation layer, including the event
facility, in C.
- Modified a custom Pascal-to-Pascal compiler to automatically
generate format conversions between the structure allocations of
different target compilers.
- Wrote a tool in C and Excel to measure and optimize disk and memory
utilization by modifying the packaging of HPUX executables in the
absence of shared library support.
- Wrote X.25 performance tests in C for HPUX using Unix socket
programming.
- Added features to a 3270 emulator written in HP Modular Pascal.
- Wrote automated test cases for TCP and ftp protocols for HP 9000/300
HPUX.
This was the opportunity of a lifetime. After doing several kernel
networking projects for Colorado Networks Division on HP's first
implementations of Unix, I was asked to provide phone support on HPUX to
Grenoble Networks Division, which was planning to sell an X.25 network
product developed by M/A-COM (now Hughes Network Systems). I quickly
solved a few difficult problems and they were so happy they asked me to
take a temporary assignment at HNS in Gaithersburg as an on-site HP
liaison. I spent a year and a half there and did some of the best work
of my career, including becoming an expert at Unix shell scripting and
learning about the HPUX kernel implementation of virtual memory. I also
broadened my understanding of operating systems in the process of
helping implement a VMS emulation layer on top of HPUX. My optimization
work and estimates I made of the effort and time required to complete
the QA testing were instrumental in negotiations between HP and HNS. I
took a 9 week intensive course in French, and was asked if I would move
to France to help transfer my product knowledge to the HP team at
Grenoble Networks Division. With the help of my French fiancee, I
became fluent enough that all team meetings were held in French. Part
way through the assignment I was given the title of technical lead and
did some planning for integration with the next release of HPUX.
Systems Research Inc., Okemos, MI 1978 - 1981
Development Engineer - Data Communications Concentrator
- Implemented point to point and polled multi-point asynchronous
terminal protocols for a terminal concentrator in HP 1000 macro
assembler.
- Created custom micro-coded instructions for stack addressing, linked
list buffer management, task switching and I/O interrupt handling.
- Modified the address calculation microcode for the base instruction
set to enable trapping of null pointer references.
- Designed and built a hardware device to detect instances where
interrupts were held off for too long.
- Provided telephone and on site customer support to 100 end users.
Diagnosed problems using custom task level debugger and serial protocol
analyzer.
- Coded terminal protocols using 6809 microprocessor based intelligent
I/O card.
This was my first "real" job after graduation, which I found through a
manager I had worked for on one of my internships. I started out doing
systems software, or "bit fiddling" as one of my managers once called
it, and have been doing it ever since. Like Portal Software, this was a
15 year old start up that had started as a consulting company and grew
rapidly when they started selling software products in addition to
professional services. I was a bit naïve and did not really understand
the business aspects, but I got a lot of good customer contact
supporting the code I had written. I also learned a lot about datacom,
operating systems and processor architecture since I worked on microcode
support for multitasking and I/O interrupt handling.
Intermetrics Inc., Cambridge, MA
Student Intern - Compiler and Device Driver
- Modified the BNF syntax for a Jovial compiler to be LALR(1)
- Coded a double buffered tape I/O driver for an oil well logging
program in Data General assembler
- Wrote a WYSIWYG text editor in 8080 assembler
- Built a parallel interface to an IBM Selectric typewriter with paper
tape reader and wrote a device driver in 8080 assembler. Wrote an
article about the project which was published in Kilobaud magazine. The
editor told me his red pen barely touched the manuscript.
Intermetrics was one of four contenders to design the ADA language for
the DOD. They had lots of MIT graduates.
Illinois Law Enforcement Commission Criminal Justice Information Systems
Division
Student Intern - System Utilities
- Wrote date conversion library in HP 3000 SPL for jail management
system.
- Wrote COBOL source merge program in HP 3000 SPL
- Built Processor Technology SOL 8080 based microcomputer from a TTL
component level kit, including hand soldering 2000 connections.
Thanks to my boss, J. David Coldren, Chicago probably has one of the
most high tech criminal justice systems in the country. I got my first
exposure to HP computers here, which was the seed of my long career with
HP. By the way, the HP 3000 was a stack architecture based on the
Burroughs 5000. Its MPE operating system could run COBOL business
applications nicely in 256K of RAM. Show me a modern computer that can
match that.
Intermetrics Inc., Long Beach, CA
Student Intern - Data Extraction and Assembler
- Wrote a telemetry data extraction program in HAL (a structured
language invented by Intermetrics for avionics software) for Space
Shuttle ground support.
- Wrote a 6809 assembler in FORTRAN as an independent study project,
which Intermetrics subsequently turned into a product.
I got a great lesson on the brute force approach to redundancy for
mission critical control systems while working on the Space Shuttle
software. Fortunately my code was not critical to flight operations (I
think). It was also my first exposure to a structured programming
language, having started with BASIC, PDP-8 assembler, FORTRAN and COBOL.
GWU Medical Center, Dept. of Clinical Engineering, Washington, DC
Student Intern - Medical Systems
- Debugged a large FORTRAN EKG analysis program that had been broken
due to partitioning into overlays for execution on a Varian
minicomputer.
- Wrote a program to plot EKG data from magnetic tape on a pen plotter
in Control Data assembly language.
- Built a 6809 based Altair 680B microcomputer from a component level
kit.
This was my lesson in the politics of academia. My boss, Dr. Yamamoto,
told me his management was complaining that he didn't spend enough,
since he did with $50,000 minicomputers what most people wanted million
dollar mainframes to do.
EDUCATION
B.A. in Computer Science and Mathematics, Antioch University, Yellow Springs, OH
INTERESTS
- Raja Yoga Meditation -
See http://www.srcm.org
- TCP/IP Networking – It has been a few years since I helped write
some of HP's first TCP/IP protocol software for HPUX. I am reading the
fourth
edition of Douglas Comer's
classic book and it is all coming back to me like a long lost
friend. Now that I can afford enough computers to build my own network
and have the Linux source code, I plan to start doing some network
coding again.
- Personal Computing – I have owned 12 personal computers from an
Altair 680B with 1K of static RAM to a 2GHz Dell Dimesion 4500 with 512 Megabytes of RAM and 70 Gigabytes of
disk storage. I currently own five, four of which are networked through a 100MB
LAN switch and a cable modem internet connection.
- Digital photography and Digital Video. My interest in photography
started with a darkroom I built in my basement when I was 14. Computers
make it much easier, especially in color. HP is counting on this trend
to help fuel sales of $4000 a gallon water. Digital video is one place
I might try my hand at open source software development. It is right up
my alley, being basically bit fiddling.
- Free Software – OK I'm cheap. It comes from my Scottish heritage.
Seriously I think it's a great idea and a movement that will change the
world for the better. I hope to be able to contribute great free
software equal to at least 0.000000001% of what I have downloaded.
- Linux - Yes I still run Windows for some esoteric applications like
video editing, but Linux doesn't crash, it's free, and I'm a Unix hacker
at heart.
- Real Estate – I have bought 7 houses, rented two and sold 6 ? The
business is finally making it into the internet age, although most
agents are still technophobes. There has to be a good new business
model here somewhere, although all my great ideas have already been done
(eg.
Virtual Walkthroughs. Honest, I thought of it first)
- House remodeling - In my last 70 year old house I sanded and
finished the hardwood floors, tore down a chimney, installed a new
furnace and water heater including plumbing and electrical, installed a
skylight, installed drywall and insulation in a 15 by 34 foot attic and
hung two doors.
- Downhill and cross country skiing – I haven't done much since moving
to Georgia.
- Flying - I have a private pilots license and instrument rating, but
haven't flown much since I decided to stay private and realized it isn't
safe to fly a plane I can afford in clouds or over mountains. On the
other hand I earned over 100,000 SkyMiles on Delta while working for Portal Software, giving me
the right to cool my heels in the Crown Room and fly first class for
coach fare for one more year.
- French. I speak it fluently and enjoy getting a different
perspective on world events by reading Le Monde
- French food. There is not much I can eat since becoming a
vegetarian and swearing off alchohol. I still enjoy a baguette with
brie. I'm acquiring a taste for Indian food.
FAQ
- Why did you leave Hewlett-Packard?
I wanted to live near the US headquarters of SRCM. HP does not do much
R&D in Atlanta, so I took a job as a travelling consultant.
This allowed me to commute only once a week, albeit a very long commute
- Why did you attend an obscure liberal arts college for a degree in Computer
Science? (People don't really ask this, but I'm sure some of them think it)
When I chose a college, I had not chosen my career. I liked that fact
that Antioch had a work study program that provided an opportunity to
work full time for six months of every year, which I believe is still
unique. When I graduated, I had 15 months of real world programming
experience and contacts that got me my first job. Most of what I would
have learned at MIT or Stanford is obsolete by now. I did take some
graduate networking courses from Stanford and UC Santa Cruz while
working at HP.
- What is the most challenging/important/interesting/difficult project you have done?
In my professional work it would have to be the swath manager for the HP
2000 printer. The challenge was not so much technical as
organizational, being in the middle of the mechanical engineers, the
electrical engineers, the other firmware engineers and the writing
systems team, all of whom depended on my code for their testing.
A close second would be learning French and working at a site where I
was one of two Americans out of 2000 employees. It was less technically
challenging than the printer project, but it had a more lasting impact
on my life.
Truly the most challenging thing is to sit for an hour with only the
thought of divine light in my heart. I'm not sure I have done it yet
after trying for many years. I will keep trying.