_________________________________________________________________ Resume for Mark Whitis Senior Computer Engineer _________________________________________________________________ * Device Driver Development * Real Time Systems * Internet Software Development * Information Security * Network Engineering * Online Financial Transaction System Development * Systems Engineering * Electronic Design * System & Network Administration * World Wide Web (WWW) Development * Scientific Programming * Reverse Engineering * Data Acquisition * Image Processing * Signal Processing * Infrared Astronomy * Lasers * Cryogenics * Biosecurity and Anti-terrorism * Facility Security * Stage Lighting, Sound, & Carpentry [Linux Programming Unleashed Cover Image] Coauthor, Linux Programming Unleashed ISBN: 0-672-31607-2 _________________________________________________________________ Contact Info Address: 107-A Piedmont Ave SOUTH Charlottesville, VA 22903 Phone: +1-434-409-3210 (Cell) WWW: http://www.freelabs.com/~whitis/resume/ Email: whitis@freelabs.com Be sure to include "[JOB]" in the subject line of email; anything vaguely resembling SPAM is ruthlessly deleted. Permission to add this email to any mailing lists, job opportunity related or not, is denied. _________________________________________________________________ Experience Software Development Platforms Designed and implemented software in a variety of languages on embedded systems, microcomputer (MS-DOS, CP/M, HDOS, Apple DOS), and multi-user minicomputers, workstations, mainframes, and supercomputers (VAX VMS, IBM VM/CMS, and UNIX). High Level Languages "C" and "C++" Designed and implemented many "C" programs, most of which made use of powerful object-oriented features although written in a language which was not object-oriented. Motor control software Wrote embedded software to control large DC motors (for hoists, trolley cars, buses, locomotives, shuttle cars, and compressors) in a mixture of C language and 8051 assembler. Featured real-time software PID servos, regenerative braking with boost converter, built in data capture, and cryptographic controlled access to parameter settings. Motor control communications protocol Developed communications protocol for communications between motor controllers and protocol simulator. PCB Isolation Wrote C language software for PCB isolation (mechanical etching) which can read Gerber files from PCB layout software and produce G-Code to drive CNC milling equipment to cut away unwanted copper. Stepper Motor Device Driver Three-axis stepper motor device driver implemented as a loadable kernel module for Linux. Linux Device Driver for Data Acquisition Card Developed a loadable kernel module device driver for a CIO-DAS1600 data acquisition card. Unlike most such device drivers, this one was capable of simultaneous synchronized input and output on all digital and analog channels at rates of at least 1Khz as well as generating a synchronized pulse width modulated output. Online Mutual Fund system Developed a WWW based online trading system for one of the largest mutual fund companies with three quarters of a trillion dollars in assets under management. Developed on Solaris and AIX platforms. Developed a communications protocols for communicating trade data with mainframe applications. Used ODBC based access to Oracle DBMS. Proxy Server Developed a general purpose TCP/HTTP proxy server to provide secure fault-tolerant access to over two hundred financial web servers. Online Store Developed online store software in "C". Molecular Kinetics Simulation Designed and implemented a real time simulation of the behavior of ideal gas particles in an arbitrarily shaped confined or partially confined space with visual displays and audible feedback. This simulation was written in "C", ran on Sun Workstations under SunOS and OpenWindows or the X Window System. This was a double precision floating point accurate numerical model with special algorithms to achieve real time performance. Terminal Multiplexor Software Developed Berkeley Sockets based TCP/IP software to permit more than one terminal to share a process under UNIX (SunOS). Concentrator Developed Berkeley Sockets based TCP/IP software to consolidate financial transactions. HP3-C Orion Update IV sonar buoy Acoustic Interface Unit: Designed and implemented 20,000 lines of mixed C and 68020 Assembly Language diagnostics for the P3-C Orion Update IV sonar buoy Acoustic Interface Unit using the Tektronix "C" cross compiler and 68000 cross assembler on a VAX/VMS platform. Designed and implemented test executive software which integrated these diagnostics and those written by others and adapted "C" run time environment for diagnostics and operational code. Designed and Implemented 68020 mid-instruction exception handling code to provide for fault tolerance in the event of bus errors. Autoguider Designed and implemented Telescope Autoguider software in a mixture of "C", 80286 real mode, and 80286 protected mode assembly language. This was a computationally intensive real time control application which pushed a 10Mhz AT computer to its limits and would not have been possible without hand-optimized assembly routines. Data Acquisition and Image Processing Designed and implemented software to acquire images from an infrared detector array into an IBM PC AT compatible computer and to process this data. Implemented in a mixture of Zortech "C" and DSP56001 Assembly language. Software included device independent hierarchical window based graphics routines to draw points, lines, text, and images on display and hardcopy devices and the device dependent (CGA, EGA, VGA, etc) drivers; these routines, written in a mixture of "C"and 80286 Assembly Language were designed in a modular fashion to permit require device dependent routines to provide as few routines as possible but allowed additional routines to be supplied to optimize for a particular devices. Although largely object oriented, this application was written mostly in "C" to facilitate portability, efficiency, and to provide greater control of the implementation of the object oriented data structures. Designed "C++" interface to image processing routines to simplify end-user programming. Menu System Designed and implemented a menu system in "C" to integrate applications and memory-resident utilities (such as keyboard enhancers) in a Novell Netware based network of IBM PC and compatible computers with a wide variety of hardware configurations. Network tools Designed and implemented a wide variety of network tools on Corvus Omninet/Constellation II (Apple and IBM PC), Novell Netware (IBM PC), and UNIX (Sun and Alliant) platforms. Data Conversion Designed and implemented numerous "C" language utilities to process binary data on 9 track magnetic tapes on VAX/VMS and Unix platforms. Misc. Utilities Designed and implemented a wide variety of utilities to handle misc. data-conversion, calculation, and data-recovery applications. Web based Email system Involved in the design of a secure web based email system with cryptography. Morse Code Tutor Wrote C language morse code tutor program for Linux. ADA Member of the validation and verification team for the Telesoft ADA Compiler implementations for the UYK-44, 68000, and IBM 370 processors. One of the first ADA compilers ever developed, this compiler has since been marketed as IBM ADA 370 and Sun ADA. BASIC Wrote countless programs in various BASIC implementations on HP-3000, MS-DOS, CP/M, Apple II, Zenith Z-100, AIM-65, ELF-II, H-89, Osborne I, and TRS-80 computers. Included absence tracking, survey processing, and Direct Labor Accounting Programs. FORTH * Implemented a FORTH kernel in hand-assembled 1802 machine language. * Wrote software to control stepper motors for an automated vertical milling machine. * Wrote program to simulate images from an infrared detector array system to test data acquisition hardware and software. * Modified existing IR Imager software at Kitt Peak National Observatory through reverse engineering. PASCAL * Wrote a variety of programs in various dialects of Pascal, particularly Turbo Pascal and UCSD Pascal. * Designed and implemented an 8000 line Turbo Pascal program to control an imaging infrared Fabry-Perot spectrophotometer. * Implemented a graphics display system for RAMCAD (Reliability And Maintainability Computer Aided Design) a thermal analysis program for electronic equipment. APL Wrote a wide variety of small programs in APL, on IBM 370 APL SV and IBM 5100 platforms, primarily as learning and teaching exercises. FORTRAN Wrote a variety of small Fortran programs, in WATFIV and VAX Fortran environments. LISP Implemented an expert system in a expert system environment based on an IBM PC lisp interpreter. Wrote misc. programs in lisp. Scripts/Operating System Command Languages Wrote command procedures in UNIX (PERL, sh, csh, and BASH), VMS (DCL), IBM VM/CMS (Exec2, REXX), and MS-DOS (batch file) environments. Including non-trivial routines to provide UNIX "make" style automation of program compilation under VMS DCL, read incompatible magnetic tapes in REXX, and automatically create user accounts under UNIX. Application Scripts Experience with application specific script languages includes macros to link many spreadsheets together, process images, create three dimensional wire frame models, and complete automation of communications sessions. Relational Databases ASTEP Designed and implemented a 3000 line application in DBASE III to perform testability analysis on complex military systems (such as the PATRIOT Missile System). Typical execution time was 72 hours. Purchase Orders Designed and implemented a system for automating purchase orders in DBASE III. Misc. Wrote a variety of misc. database applications using a variety of microcomputer based database systems. Assembly Languages 8088/V20/80286 16 Bit Microprocessors Autoguider, protected mode. (Described under "C" language). 68000/68020 32 Bit Microprocessor P3-C Orion Sonar Buoy Acoustic Interface Unit (Described under "C" language). DSP56001 Digital Signal Processor Infrared Detector Array data acquisition (Described under "C" language). TMS32010 Digital Signal Processor Speech Processing/Special Effects. 8080/8085/Z80 - 8 Bit Microprocessors Implemented an asynchronous communications file transfer program in 8080 assembly language. 1802 - 8 Bit Microprocessor Wrote a wide variety of programs in 1802 hand assembled machine language. Included many games, graphical simulations, sound effects and real time system level code, such as bit-banging asynchronous serial I/O, cassette modulation/demodulation, FORTH kernel, and printer driver. Many projects included Hardware interfacing. 6502 - 8 Bit Microprocessor Designed and implemented code to control DC and stepper motors for an automated milling machine and several robots in AIM 65 and Single board environments. Designed and implemented a neural network for character recognition. Have also written small programs in Apple II environment and have disassembled many 6502 programs. 6800/6801 - 8 Bit Micro and Single Chip Micros Wrote benchmark programs for 6801 family single chip micros. Have hand assembled programs for a 6800 based trainer. 6805 Single Chip Micro Have written a program to drive an alphanumeric fluorescent display. 8051/80C552 Single chip Micro Wrote optimized 8051 assembly code routines to accellerate C language motor control software, including special multiply and scale routines. UYK-44 Military Computer Inspected ADA compiler generated code for code generator errors as part of the validation and verification of one of the first ADA compilers. IBM 370 family processors Inspected ADA compiler generated code for code generator errors as part of the validation and verification of one of the first ADA compilers. Freely available (open source) software The following software packages, written in C under Linux, are available for download from web site. In addition, there are some miscellaneous example programs developed for the book Linux Programming Unleashed. * Symbol Table Library * Child Process Library * manyterm * Stepper Motor Driver * Label Printer Driver * Data Acquisition Card Driver _________________________________________________________________ Internet/World Wide Web (WWW) Development * Functioned as a system manager for Monticello-AVV, a community internet project. * Served on the Monticello-AVV Information Providers Advisory Council. * Developed patches to the NCSA httpd daemon to close a security hole. * Managed the LISTPROC listserver for Monticello-AVV. * Managed the httpd server for Monticello-AVV. * Provided advice to Monticello-AVV, a financial services client, and several prospective Internet Service Providers (ISPs) on appropriate hardware and software to use to establish a Point of Presence. * Developed WWW pages and taught others how to. * Participated in the development of WWW authoring guidelines. * Developed and installed CGI-bin scripts * Setup and operated a web farm with IP based virtual hosts. * See also: online transaction systems under "C" development. * Personal web site has over 500 page loads per day from 96 different countries and is accessible to the handicapped and virtually all browsers on all operating systems as well as language translators and anonymizers. * Administered web servers including Apache, NCSA, Stronghold, and Netscape Commerce Server. _________________________________________________________________ Scientific Programming Covered under Software Development, Astronomy, and Image Processing section headings. _________________________________________________________________ Electronic Design Test Equipment Designed Printed Circuit Board for a Fault Insertion Device, a hand-held, battery powered piece of test equipment which is used to induce faults in digital equipment in order to measure the performance of diagnostic software in complex systems. Data Acquisition and Control Isolated Half Bridge 1GBT driver circuit Designed half bridge driver circuit for 1600V 1000A IGBTs (Insulated Gate Bipolar Transistors) which can be cascaded to drive multiple transitors in parallel and included differential inputs and outputs and temperature monitoring. Analog to Digital Conversion Designed electronics, in conjunction with a junior engineer, for preamplification, subtracted double sampling and analog to digital conversion of signals from infrared detector arrays. Stepper Motor Drivers Designed and built a number of stepper motor drivers. RAM-based word/stimulus generator Designed, in conjunction with a junior engineer, a computer controlled RAM-based word generator with individually variable word dwell time to significantly reduce RAM size needed. Telescope Interface for Autoguider Designed interface between an IBM AT based autoguider and the NASA 1.5M Telescope on Mt. Lemon. Temperature Stabilization System Designed and built a temperature stabilization system for a Fabry-Perot Interferometer which used a heating jacket and a heated air supply, both servo controlled with redundant circuitry to protect delicate equipment from malfunctions. Motor Control Interface board Redesigned an interface board for a motor control system to incorporate differential inputs and outputs on digital and analog signals for improved noise immunity, programable window comparators, flexible PWM steering, and improved isolation on serial RS-422 I/O and parallel operator inputs to 1500V. ATE Pin Driver Designed analog pin driver circuit for ATE (Automated Test Equipment). Programmable Logic Verilog FPGA code Wrote Verilog code for FPGA (Field Programmable Gate Array) based motor control circuit. Microcomputer/Microcontroller Disk Controller Aided in the design of a floppy disk controller board for the AIM 65, a 6502 based laboratory computer. 6502 Microcontroller Designed an I/O intensive 6502 based controller board. Microprocessor Designed a microprocessor as an independent learning exercise. High Voltage Hazardous Voltage Indicator Designed Hazardous voltage indicator capable of operating over an unusually wide supply voltage range of 10V to 1500V, including PCB layout with proper clearances between all traces. Armature Voltage Measurement Circuit Designed a differential amplifier circuit for measuring motor armature voltage which is capable of operating with up to 2000V common mode voltage. DC-DC converter Designed DC-DC converter circuit with 1000V overvoltage protection on input. Misc Game Show Lockout Circuit Designed and built an expandable 12 channel circuit to identify which contestant had pushed their button first. Computer Aided Design Experienced not only in the use of CAD systems such as Printed Circuit Board Layout, Schematic Capture, Thermal CAD, and general purpose 2D and 3D CADD but also in their design and implementation. _________________________________________________________________ Electronic (and mechanical) Troubleshooting and Repair Diagnosed and repaired radios, televisions, transceivers, stereos, theatrical equipment, computers, computer peripherals, video cameras, video monitors, lasers and laser power supplies, test equipment, sewing machines, electrical wiring, plumbing, and more, often without schematics or other essential information. _________________________________________________________________ Information Security * Performed security audits for stock brokerages, mutual fund companies, and other online sites. * Developed secure internet applications * Security Administrator for company network. * Wrote the Secure Programming chapter for Linux Programming Unleashed * Experience with Cryptographic software and protocols including SSL, PGP, and SSH. _________________________________________________________________ Diagnostics and Test Engineering Mapped fault coverage of diagnostics. Wrote diagnostic software (P3-C Orion AIU). Designed and implemented software to analyze test coverage (ASTEP). Aided in the design and implementation of software for fault selection and to determine test execution order. Designed and implemented an expert system to aid in diagnosing faults in a piece of test equipment. _________________________________________________________________ Computer System and Network Administration and Maintenance Corvus Omninet/Constellation (APPLE/IBM) * Managed network of APPLE II and IBM PC microcomputers using Corvus Omninet Hardware and Corvus Constellation Software. * Wrote network utilities after disassembling Network BIOS. Novell NETWARE (IBM PC) Managed a network of 50 IBM PC compatible computers, two repeaters, 900 feet of cable, and spanning two buildings based on Novel Netware and Corvus Omninet. Designed special circuits to protect against lightning damage (which had been a common occurrence). Wrote network utilities and discovered a major security flaw in Novel Netware. NFS (UNIX/IBM PC) Managed a network of NFS nodes including Sun Workstations and IBM PC Compatible computers based on ETHERNET, TCP/IP, and NFS protocols which was part of The TCP/IP Internet (ARPANET, DDN, MILNET, NSFNET, etc.) DECNET and UUCP protocols were used to communicate with non-TCP nodes including the SPAN network (DECNET based Space Physics Analysis Network). Replaced sendmail with IDA sendmail to streamline communication with many other networks in the USA and overseas. Managed graphic workstations with X-WINDOWS, NEWS, and SUNVIEW. Installed many public domain UNIX programs, including KERMIT, GNU Emacs, IRAF, Patch, Unshar, IDA Sendmail, and VMS-Backup. Setup Domain Name Server. Service Provider Setup and managed a network with dedicated downstream connections and web farm. Configured Cisco routers and Linux based routers/firewalls, switches, DSLAMs. Installed leased line WAN connections using DDS(DS0), T1, MVL/DSL, and modems over analog lines for upstream and downstream circuits. Used Multiport ethernet cards and WAN cards under Linux. Developed a Linux based firewall. Data Center Design Specified hardware and network architecture for a multi-site redundant fault tolerant data center with hundreds of terabytes of RAID storage. Linux System Administration Installed and maintained Linux (Slackware and Redhat distributions) on a variety of hardware including servers, desktops, laptops, and router/firewalls. _________________________________________________________________ Reverse Engineering Software Disassembled many programs, or portions thereof, to overcome poor documentation or to develop patches. A few examples of programs that were completely disassembled: * Lotus Device Driver (8088 Machine Code) * Corvus Network Adapter BIOS (8088 Machine Code) * Nixie Tube Display System firmware (6502 Machine Code) Hardware Reverse engineered many pieces of hardware, usually to make repairs or connect to undocumented systems. Just a few examples: * Ariel Laser Power Supply (switching supply) * Laboratory High Voltage Power Supply * Incremental Optical Rotary Position Encoder * ISA Serial/Parallel/Joystick Adapter and Disk Controller (partial) * Computer Power supplies * Camera Pan and Tilt Mount _________________________________________________________________ Astronomy Large Telescope Use and Operation Used the 3 meter aperture IRTF on Mauna Kea, the 2 meter telescope at Kitt Peak National Observatory (KPNO), the 1.5 meter telescope at CTIO (Chile), the 2.3 meter telescope at the Wyoming Infrared Observatory (WIRO) and operated the 1.3 meter telescope at KPNO, the NASA 1.5 Meter telescope on Mount Lemmon, and the FLWO 1 meter telescope on Mount Hopkins. Total of at least two dozen observing runs. Infrared Detector Arrays * Acquired and reduced astronomical data from BIBIB and Indium Antimonide Infrared detector arrays. * Designed and implemented software to acquire data from infrared detector arrays. Fabry Perot Interferometer Wrote software to control the optical feedback, voice coil driven NRL Fabry-Perot Spectrometer Etalon Servo System. This software was subsequently modified to control a piezoelectrically driven Queensgate Etalon with capacitance micrometer feedback and to test meshes using the voice coil driven, capacitance micrometer feedback Infrared Satellite Observatory Long Wave Spectrometer etalon. This program was gradually modified to deal with six different detectors. Communicated with data acquisition equipment via RS-232 and IEEE-488. Telescope Autoguider Designed and implemented telescope autoguiding (star tracking) software for an AT class computer in a mixture of C and 80286 Assembly Language (real and protected mode) which used a centroid based algorithm to provide more accurate control and information useful for later data reduction that is unavailable from the less computationally intensive four quadrant algorithm. _________________________________________________________________ Image Processing * Experience with existing image processing packages on workstations and supercomputers. * Designed and implemented image processing functions in a microcomputer based infrared detector array data acquisition program. * Designed and implemented a number of conversion utilities which converted images to or from the FITS format, a standard in the field of astronomical image processing. * Determined that tools conceived earlier for computer aided design applications were sufficiently general to apply to image processing. _________________________________________________________________ Lasers Experience with gas and solid state lasers, including nitrogen (ultraviolet), helium neon (red, yellow, orange, green), argon (visible, multiple wavelength), and carbon dioxide (infrared) lasers. Repaired laser tubes and power supplies. _________________________________________________________________ Cryogenics Cryogenic experience includes safe handling of Liquid Nitrogen, Liquid Helium, Dry Ice. Have had the opportunity to become familiar with construction practices used inside a variety of instrument dewars in astronomical applications. _________________________________________________________________ Biosecurity Wrote a 60+ page document on combatting bioterrorism through the mail and by other means. _________________________________________________________________ Facility Security Experience with ultrasonic, microwave, and Far Looking Infrared (FLIR) motion detectors, code entry systems, electronic strikes and electric gates, telephone dialers, audible alarms, and magnetic perimeter sensors. Experience with vidicon, nuvicon, silicon target, warm CCD, SIT, and ISIT type cameras and metascope and image intensifier based night vision equipment. Experience with infrared detector arrays. _________________________________________________________________ Theatrical Experience Stage Lighting Experience with resistance, autotransformer, and manually and computer controlled SCR dimmers. Regularly wired into three phase 100 to 800 amp per phase 110/208V circuits. Experience with ellipsoidal reflector and Fresnel spotlights, floodlights, color bars, and specials. Operated Super-Troopers and other follow spots. Maintained all of this equipment. Sound Setup and operated a wide variety of sound equipment for live shows. Video Operated video cameras, special effects generators, computer video sources, and video tape recorders to tape live performances. Equipment Repair Performed extensive repairs on lighting instruments, dimmers, follow spots, mixers, cables, tape decks and microphones. Stage Carpentry Constructed sets for a variety of main stage and experimental productions. Movie Projectionist Setup and operated 16mm equipment with manual and semi-automatic changeover. _________________________________________________________________ Examination Design Developed test questions for a Linux pre-qualification exam used by recruiters. _________________________________________________________________ Employers * 1991 - Present: Free Electron Labs, Charlottesville, VA * 2002 - 2003 Senior Engineer, Cableform, Inc, Troy, VA * 1995 - 2000 Chief Information Security Officer, Digital By Design, Charlottesville, VA * 1987 - 1991: Senior Systems Engineer, Center for Advanced Space Sensing, Naval Research Lab, Washington, DC through Applied Research Corp, Landover, MD. * 1982 - 1987: BITE, Inc., Manassas, VA * 1983: VPI & SU, Blacksburg, VA * 1982: CAS, Inc., Manassas, VA * 1978 - 1982: Stonewall Jackson Sr. High, Manassas, VA. * 1977 - 1978: Stonewall Jackson Middle School, Manassas, VA. _________________________________________________________________ Clients Past clients, direct and indirect, have included: * Automated Financial Systems * Digitrade * T. Rowe Price. * Motley Fool * Testengine.com * University of Virginia * Macmillan Computer Publishing * National Air and Space Museum, Smithsonian Institution * Smithsonian Laboratory for Astrophysics * Naval Research Lab * Magnavox * IBM * Raytheon * Logistics Management Institute * Mercer Management Consulting Listing does not imply endorsement by, or of, these organizations. _________________________________________________________________ Publications Coauthor,Linux Programming Unleashed The following chapters were written by Mark Whitis (237 pages): * Chapter 2: Setting up a Development System (26 pages) * Chapter 9: File Descriptor I/O (24 pages) * Chapter 10: File Pointer I/O (stdio) (12 pages) * Chapter 11: Process Control (42 pages) * Chapter 12: Accessing System Information (/proc filesystem) (15 pages) * Chapter 25: Writing Device Drivers (50 pages) * Chapter 35: Secure Programming (48 pages) * Appendix A: A Symbol Table Library (20 pages) _________________________________________________________________ Education Self Educated Security Clearance Held government confidential and secret clearances as required during past employment. Licenses and Certifications * Amateur Radio Operator License: KI4BSZ * AHA CPR Certification Personal Data Birth date: 4/6/64, U.S. Citizen by Birth. _________________________________________________________________ This file is maintained by Mark Whitis (whitis@freelabs.com).