Michael David Crawford

P.O. Box 373
Owl's Head, ME 04854-0373
+1 (831) 401-3790 voice/fax


Be Master's Award Be Master's Award
Member of Independent Computer Consultants Association Member of Independent Computer Consultants Association

Note: GoingWare's Michael Crawford will be giving a talk on Subclassing an I/O Kit Device Driver [ http://www.machack.com/content.php#Subclassing.IOKit ] (on Mac OS X) at MacHack [ http://www.machack.com/ ], which will be held in Dearborn, Michigan from June 19th to the 21st. MacHack is a great conference - please attend if you can.


GoingWare, Inc. seeks direct consulting clients who require custom software development. Services are provided for clients worldwide.


I strive to achieve quality, correctness, performance and maintainability in the products I write.

I believe a sound understanding and application of software engineering principles is more valuable than knowledge of APIs or toolsets. In particular, this makes one flexible enough to handle any sort of programming task.


President - GoingWare, Inc. [ http://www.goingware.com:80/ ] - Expert Software Development and Consulting (formerly Crawford Software Consulting) 1990 - present
I do independent software consulting for clients worldwide.

Recent projects I have worked on for my clients are:

Past clients also include MacEurope Information Systems, Medior, and Geonex Verde.

Senior Software Engineer - WebCom [ http://www.webcom.com/ ] - 12/97 - 3/98
Modifying the Apache [ http://www.apache.org/ ] web server source code for use by a web hosting service. TCP/IP sockets programming on Solaris and Linux using the Gnu C compiler. Also installing Microsoft Frontpage server extensions.
Software Engineer - Live Picture, Inc. (since acquired by Roxio [ http://www.roxio.com/ ]) - 1/97 - 11/97
writing an object-oriented photorealistic image editing and compositing application in C++ on the Macintosh with Metrowerks PowerPlant. Also debugging a Netscape Navigator plug-in for viewing images in the FlashPix file format [ http://www.kodak.com/US/en/digital/dlc/book2/chapter4/flashp1.shtml ].
Senior Software Engineer - KnowMed Systems Inc. [ http://www.knowmed.com/ ] - 9/96 - 12/96
writing an object-oriented electronic medical records application in SmallTalk for Windows 95. Implementing user interface, writing client code for Gemstone object-oriented database engine.
Senior Engineer - Apple Computer, Inc. [ http://www.apple.com/ ] - 3/95 - 8/96
(a.k.a. "Debug Meister") Macintosh Operating System debugging and performance tuning. I identified the problem component for bugs that were not yet understood, and either assigned them to the proper engineer or fixed them myself. I also determined whether third party application crashes and malfunctions were caused by bugs in our new OS software or by a programming error in the application, with the aid of disassemblers and low-level debuggers. Extensive use of 68k and PowerPC assembly code. Work included diagnosing kernel code such as PCI and network device drivers, virtual memory, process scheduling, and the dynamic recompilation emulator (for running 68k code on PowerPC) as well as such toolbox components as QuickDraw graphics, QuickTime multimedia, memory management, printing and localization. Analyzed the performance of system software code, wrote new performance tools and used the scientific method and proper statistical analysis to understand peculiar performance problems. Rewrote a small portion of the OS to improve its use of the processor cache, and wrote papers to aid other engineers in tuning their own code. Wrote user interface to infrared networking software for PowerBook laptop computers
Software Engineer - Medior, Inc. - 6/94-3/95
Writing Interactive Multimedia CD-ROM applications for the Mac. Invented and implemented a new bitmapped graphics compression algorithm and file format. (Medior has since acquired by America Online [ http://www.aol.com/ ].)
Research and Teaching Assistant - UC Santa Cruz [ http://physics.ucsc.edu/ ] - 7/93-4/94
Wrote Monte Carlo simulation software for a particle physics experiment that is searching for non-conservation of lepton number. Worked at the experiment at CERN [ http://physics.ucsc.edu/ ] in Geneva, Switzerland. Taught introductory physics lab (Physics 7a [ http://reg.ucsc.edu/catalog/phys/index.html#courses ]).
Product Development Manager - Working Software, Inc. [ http://www.working.com/ ] - 11/90-6/94
Wrote Macintosh software for retail sale in Think and MPW C, and 68000 assembly. Extensive debugging of existing programs. Products include Control Panels, Desk Accessories, Device Drivers, Extensions, Applications, 4D Externals and Installer scripts. This includes experience with printing code (including Postscript programming), patching the operating system, debugging CoreEdit word processing engine in assembler. Ported DOS dictionary and thesaurus application to Macintosh. Did consulting on debugging. Led collaboration with other companies to develop the Word Services Apple Event Suite [ http://www.wordservices.org/ ], the standard for linking spellers, grammar checkers and other text services to applications. Spoke on Word Services at the 1992 Worldwide Developers Conference, the March 1993 Software Entrepreneurs Forum Mac SIG, and the 1994 MacHack Conference [ http://www.machack.com/ ]. Demonstrated products at user groups and trade shows. Hired, trained and managed our tech support, assisted with tech support, sales, marketing and production.
Macintosh Software Tester - Apple Computer [ http://www.apple.com/ ] - 11/89-10/90
Contract job testing the MacTCP 1.0.1 and 1.1 TCP/IP network driver. Ran test suites, ported test tool from Macintosh Programmer's Workshop 2.0.2 C to 3.1, including debugging asynchronous I/O, using the Macsbug and SADE debuggers. Use of protocol analyzers. Assisted the A/UX group in testing the MacTCP implementation on Apple's UNIX port. Studied the security of A/UX - reported several serious security holes to the A/UX team. Wrote test plan to ensure compatibility of MacTCP with future operating systems and hardware (System 7, virtual memory). Compiled BSD Vax sources into Sun kernel to enable network testing. Designed and wrote new test tool in C++.
UNIX System Administrator - Octel Communications [ http://www.octel.com/ ] - 4/89-11/89
Contract job on a network of four Sun 3 servers, eight workstations, and about 90 AT's and 386's running DOS with PC-NFS or SCO Xenix. Maintenance and development of software tools, evaluation and administration of source code control systems, installation of GNU Emacs, GNU C compiler, X Windows, TEX and the Usenet News. Troubleshooting and building serial and Ethernet cables. Installation of SunOS, disk controllers Sun workstations and file servers, formatting SMD disks, configuring modems.
Programmer - Verde Technologies - 11/87-4/89
Wrote image processing software in C for an agricultural remote sensing company, on a Sun 3/160. Programs written include calibration for CCD camera response (field flattening), geometric distortion, and sun shading, and color printer drivers with dithering for the Tektronix 4696 and Howtek Pixelmaster. Wrote documentation in UNIX "man" format. Developed a useful set of procedures for rapidly debugging code. Maintained local source code hierarchy with SCCS and Make. System administration, including networking two Suns and a Compaq 386 with Sun NFS, UUCP mail, maintaining backups, fixing cables, modems, and color inkjet printers, and programming GNU Emacs Lisp. Fixed device driver for compatibility with new SunOS. Sent to Denver, Colorado for two weeks to debug an InterGraph CAD system on VAX/VMS: VMS system tuning, wrote command procedures for plotting.
UNIX Technical Support - Microport [ http://www.mport.com/ ] - 11/86-4/87
Telephone support on Microport UNIX for the IBM AT.
Programmer and Manager - Sapiens Software - 6/86-8/86
Managed programmers writing Star Sapphire Common Lisp [ http://www.webweasel.com/brujo/lisp.htm ], a virtual memory Lisp compiler in C for the IBM XT. Coding and debugging a very complex program. PC system administration.
Teaching Assistant - California Institute of Technology [ http://www.caltech.edu/ ] - 9/84-12/84
Taught physical numerical analysis in C, Pascal and FORTRAN to students using the IBM XT.
Summer Undergraduate Research Fellow - California Institute of Technology [ http://www.caltech.edu/ ] - 6/84-9/84
Research in astronomy: observed with the Palomar 60" telescope CCD camera [ http://www.astro.caltech.edu/observatories/palomar/60inch/instruments.html ], reduced data on a VAX with FORTRAN.
Research Assistant - California Institute of Technology [ http://www.caltech.edu/ ] - 6/83-9/83
Prepared Color-Magnitude diagrams from CCD photos of globular clusters. Collected spectra with the double spectrograph on the Palomar 200" [ http://www.astro.caltech.edu/observatories/palomar/200inch/instruments.html ] and took CCD images with the 60" telescope [ http://astro.caltech.edu/observatories/palomar/60inch/instruments.html ].


Briefly enrolled as a graduate student in Physics at UC Santa Cruz [ http://www.ucsc.edu/ ], Santa Cruz, CA. 9/93 - 4/94.

B.A in physics at UC Santa Cruz [ http://www.ucsc.edu/ ]: classical and quantum mechanics, optics, digital electronics, electromagnetism, psychology, social psychology, drawing and painting. 4/85-12/87

Two years studying physics at the California Institute of Technology [ http://www.caltech.edu/ ], Pasadena, CA. Also math (calculus, differential equations, linear algebra, vector calculus, probability), astronomy, computer science (languages, data structures, algorithms, graphics and numerical analysis), chemistry. GPA is 3.1. 9/82-12/84.

Professional training classes (typically three day seminar classes)


For a complete list of publications, see http://www.goingware.com/resume/publications.html

Commercial Products I Have Shipped

For a list of the products I have written, see http://www.goingware.com/resume/products.html

Copyright 2003 http://www.goingware.com/resume/