Seek Contract Programming Work - 17 Years Experience

From: Michael D. Crawford (crawford_at_goingware.com)
Date: 02/23/05


Date: Tue, 22 Feb 2005 23:42:06 GMT

Dear Sir or Madam

I'm looking for software consulting work. If you can't hire me, you could still
help me out by forwarding this message to your colleagues.

I have seventeen years experience as a developer, with the last seven years
spent full-time running my own business, GoingWare Inc., as a consultant. I have
been a Senior Software Engineer at three companies, and Product Development
Manager at another.

I earn my living serving the software development needs of software publishers,
financial firms, website operators, and device manufacturers.

You can discover what my business has to offer at http://www.goingware.com/ and
find my resume at http://www.goingware.com/resume/

I have my own office equipped with phone, fax and cable modem. I have computers
and software for most development tasks (Mac, Windows or Linux).

My business number is (831) 401-3790, or you can email crawford@goingware.com

Here are some of the things I know I can do for you, because I have experience
doing them for previous clients:

* I can write custom web application, financial, graphical user interface, or
embedded software.

* I can write applications for Windows, Mac OS X, Linux and embedded systems.

* I can write device drivers for Linux or Mac OS X.

* I can develop software in Java, Perl, C, C++, Python, Postscript, and the
assembly codes for PowerPC, ARM, Thumb, and 68000.

* I am exceptionally skilled at debugging and performance tuning for any sort of
application. I once held a position as a Senior Software Engineer at Apple
Computer, where I did nothing but debugging and optimization. I only left that
work because I didn't have many opportunies to write new code, work I enjoy. I
diagnosed and fixed hundreds of bugs in the Mac OS, many of them very subtle and
difficult to reproduce.

* I can implement communications protocols in operating systems or embedded
devices. I have particulary strong experience in SCSI, Serial Bus Protocol 2
(SBP2), FireWire (IEEE1394), HTTP, and TCP.

* I have extensive experience in graphics and multimedia applications. I have
played piano for twenty years, and own a Fatar MIDI controller (a type of
electric keyboard), so I enjoy writing MIDI, audio and music applications.

* I have a B.A. degree in Physics from the University of California Santa Cruz,
with extensive work in scientific data analysis and modeling, both academically
and on the job.

* I've been making telescopes as a hobby since I was twelve years old, grinding
and polishing mirrors by hand, and from my University studies I have a solid
background in ray and wave optics.

* I like to write, and feel I write well. A manager at Apple once remarked that
a hundred page test plan I wrote when I was a QA engineer for the MacTCP network
stack was the best test plan he had ever read.

* I can slice, dice, julienne and puree.

I'm also interested in learning new skills on the job. I am able to do all the
different things I can because I have always placed a high priority on learning
new things. Because of the importance I place on this, I'm willing to cut a deal
with anyone willing to hire me for work I am not yet expert in.

I can do small and large jobs. The longest contract I've had required a year and
a half of work, writing a specialized database from scratch (from the low-level
file format to the C++ API) for a financial firm in the Bahamas, while the
shortest was a couple of hours, helping someone decide whether his company
should purchase a certain software package.

Thank you for your attention.

Michael D. Crawford
GoingWare Inc. - Expert Software Development and Consulting
http://www.goingware.com/
crawford@goingware.com

     Tilting at Windmills for a Better Tomorrow.

---
Michael D. Crawford
P.O. Box  164
Truro, NS B2N 5C1
Canada
+1 (831) 401-3790
crawford@goingware.com
http://www.goingware.com/resume/
http://www.goingware.com/resume.txt
Objective
GoingWare Inc. seeks direct consulting clients who require custom software
development.  Services are provided for clients worldwide.
Skills
      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.
- Embedded systems development, including microcontrollers, DSP/BIOS
   and embedded Linux
- Fluent in ARM, Thumb, x86, 68000 and PowerPC assembly, Forth, C, C++, Fortran,
   Pascal, SmallTalk, Postscript, Python and Java
- Adept at using the C++ Standard Template Library (STL), as well as writing
   new templates and exception-safe code
- Knowledgeable about algorithm analysis and algorithm design
- Able to implement cryptographic algorithms efficiently
- Experienced with XML, Document Object Model (DOM) and the Xerces  and
   PyXML libraries
- Expert with file formats
-- Designing new file formats
-- Implementing format codecs and parsers as well as porting libraries to
    new platforms
-- Reverse-engineering formats
-- Formats I have worked with include XML, HTML, JPEG, TIFF, FlashPix, various
    word processor document and database formats and a lossless compressed
    graphics format I invented
- Proficient at designing and coding multithreaded programs
- Very strong low-level debugging skills
- Macintosh (Classic and OS X), Unix and Linux operating system internals and
   device driver programming
- Unix System Administration, network, utilities and kernel programming
- Self motivated. I taught myself Mac programming, and wrote many large
   programs mainly on my own.
- Shipped several new or updated commercial products, including applications
   MacOS extensions, Windows DLLs and embedded firmware.
- Porting experience - ported large programs from DOS to Mac, UNIX to DOS,
   and Mac to BeOS
- Cross-Platform, including working with ZooLib, a multithreaded C++
   cross-platform application framework, which can build native executables
   for Mac OS, Windows, BeOS and POSIX flavors with XWindows (such as Linux)
   from a single sourcebase.
- Experience in network programming and testing (TCP/IP, AppleTalk, including
   DDP, NPB, and PAP)
- Multiplatform experience: Macintosh, BeOS, Unix and X11, DOS, VMS and Windows
- Strong architectural skills (led industry-wide effort to develop Apple
   Event protocol for spellchecking - see http://www.wordservices.org )
- SCSI scanner drivers on Mac OS and BeOS using the SCSI-2 Common
   Access Method (CAM)
- Other connectivity protocols I have experience with are IEEE 1394 (FireWire,
   i.Link), Serial Bus Protocol 2 (SBP-2), the SCSI architectural model and IDE.
Employment
Consultant - GoingWare, Inc. - 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:
        Writing a Mac OS X SCSI pass through device driver for Indigita
        corporation, consisting of a kernel extension with driver subclass and
        user client, Core Foundation plugin and test harness.  The device
        driver allows sending arbitrary SCSI commands to Indigita's USB and
        FireWire storage bridge chips from a user application for diagnostic
        purposes.  6/2003
        Implementing Serial Bus Protocol 2 (SBP2) initiator support in an
        embedded system for Zaxcom.
        2/2003 - 9/2003
        Embedded systems development and Mac OS X device driver (IOKit)
        programming for WiebeTech.  Customizing the firmware of the Oxford
        Semiconductor OXFW911 high performance IEEE 1394 to IDE/ATAPI bridge
        to enable WiebeTech to produce some unique FireWire products such as
        the Forensic Drive Dock and FireWire Encrypt.  The development was
        hosted in Windows 2000, targeting an integrated ARM7TDMI core.
        Programming SBP-2, RBC, IDE and SCSI device drivers and implementing
        the Advanced Encryption Standard (the Rijndael block cipher) in ARM
        and Thumb assembly code.  Developing the firmware for an unannounced
        FireWire product using the uCLinux embedded Linux distribution.
        5/2002 - 1/2003
        Financial application programming for Win32 on Windows NT and
        Windows 2000 using Microsoft Visual C++ and the Standard Template
        Library (STL). Architecting and implementing a special-purpose
        database API and file format.  Writing file import and export code.
        Creating a complex DLL.  Writing test software, example code
        and documentation.  Extending the capabilities of the database
        beyond its initial specification. Performance tuning, including the
        use of Intel VTune Performance Analyzer.  6/2001 - 8/2002
        Designing and implementing a fault tolerant database file format
        for use with ZooLib for Learning in Motion. 4/2001 - 5/2001
        Working on a Mac OS graphics product written in C++ and MetroWerks
        PowerPlant for MGI Software to resolve quality issues and prepare
        the product for final release. 2/2001 - 3/2001
        Collaborating with CommerceFlow's team to develop a
        business-to-business eCommerce protocol based on XML messages.
        Protocol design, writing Document Type Definitions (DTDs) and sample
        documents for the protocol messages, and writing a parser in Python
        with the PyXML library to do custom processing of the DTDs.
        Development was done on a Debian GNU/Linux system.  11/2000 - 1/2001
        Writing BeautyRiot's Instant Makeover, a Windows and Macintosh GUI
        consumer application in C++ that includes image editing and interaction
        with a web server.  The GUI was written with ZooLib, a cross-platform
        library developed by the Electric Magic Company.  Includes the use of
        the Standard Template Library (STL), the XML file format using Xerces-C
        from the Apache Software Foundation and JPEG format code from the
        Independent JPEG Group's LibJPEG library.  12/99 - 10/2000
        Writing a server-side Java 1.1 web application with the Enhydra
        application server, MySQL, JServ, and Apache on Linux for
        ClickRebates.  Used the AnyJ Java source debugger from Net Computing
        to debug the Enhydra application.  Database programming in SQL.
        11/99 - 12/99
        Converting a scientific instrumentation control application written
        in C++ for the MacOS (MacApp) to Java 2 with Swing (to be run on
        Windows NT) for Coastal Software Group. The instrument was controlled
        via a serial protocol that used the javax.comm package. 9/99 - 11/99
        Writing a gesturing application in C++, C and 68000 assembler on the
        MacOS in Metrowerks PowerPlant and the Standard Template Library (STL)
        for Sensiva, Inc.  The application catches the drawing of user-defined
        symbols on the desktop and reacts by running hot keys and menu
        selections, text typing, Apple Scripts, and other actions.  3/99 - 9/99
        Writing an Adobe Photoshop Import plugin to drive a Konica RX-1
        SCSI film and slide scanner for Image Software. The SCSI code
        uses both  MacOS SCSI Manager 4.3 (an implementation of CAM).
        The user interface is written in Metrowerks PowerPlant. 8/98 - 9/98
        Providing an expert evaluation of a Windows and Unix Web development
        program which may be purchased in source code form by my client. This
        has involved judging the suitability of the program for my client's
        purposes and will involve an inspection of the source code. 9/98
        Designing and coding the core technology of the MacOS version of Comet
        Systems' Comet Cursor Netscape plug-in, which allows a web page author
        to change and animate the cursor on the reader's computer. 8/98
        Porting Cycling '74's MAX MIDI application from MacOS to BeOS.
        7/98 - 2/99
        Reverse engineering  a project scheduling file format for Graphical
        Planet. By making many small example files, studying them with a hex
        editor, and observing the effect of small changes, I was able to deduce
        and document the file format, and write a program to dump out an
        interpretation of arbitrarily complex files.  4/98
        Writing scanner software on theBe operating system for BeatWare.  I
        wrote three layers: a device driver that uses the SCSI-2 Common Access
        Method (CAM) to communicate with the scanner, scanner add-ons or
        drivers  for the HP ScanJet, Umax Astra, and Apple Color OneScanner,
        and a  C++ application to allow the user to operate the scanner and
        create TIFF files. 4/98 - 7/98
        Porting Working Software's Spellswell from the MacOS to the Be
        operating system, and from BeOS for PowerPC to BeOS for Intel Pentium.
        This  included implementing the Word Services Suite on BeOS to allow
        word  processors to communicate with spellcheckers.  Spellswell
        received an Honorable Mention in the BeOS Master's Awards. 2/97 - 4/98
        Past clients include MacEurope Information Systems, Medior,
        and Geonex Verde.
Senior Software Engineer - WebCom - 12/97 - 3/98
        Modifying the Apache 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. - 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.
Senior Software Engineer - KnowMed Systems Inc. - 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. - 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.)
Research and Teaching Assistant - UC Santa Cruz - 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 in Geneva, Switzerland. Taught introductory physics
        lab (Physics 7a).
Product Development Manager - Working Software, Inc. - 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, 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. 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 - 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 - 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 - 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, 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 - 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
       - 6/84-9/84
        Research in astronomy: observed with the Palomar 60" telescope CCD
        camera, reduced data on a VAX with FORTRAN.
Research Assistant - California Institute of Technology - 6/83-9/83
        Prepared Color-Magnitude diagrams from CCD photos of globular clusters.
        Collected spectra with the double spectrograph on the Palomar 200" and
        took CCD images with the 60" telescope.
Education
Briefly enrolled as a graduate student in Physics at UC Santa Cruz,
Santa Cruz, CA.  9/93 - 4/94.
B.A in physics at UC Santa Cruz: 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,
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)
- Interop '89 tutorial on Network Administration and Security, 10/89
- Apple Developer University Debugging class. 1992
- Apple Developer University PowerPC Bootcamp. 8/95
- Apple Developer University PowerPC Debugging class. 8/95
Publications
- For a complete list of my publications, see
   http://www.goingware.com/resume/publications.html
Commercial Products I Have Shipped
- For a list of the programs I have written, see
   http://www.goingware.com/resume/products.html


Relevant Pages

  • Seek Contract Programming Work - 17 Years Experience
    ... where I did nothing but debugging and optimization. ... electric keyboard), so I enjoy writing MIDI, audio and music applications. ... file format to the C++ API) for a financial firm in the Bahamas, ... to handle any sort of programming task. ...
    (comp.lang.java.programmer)
  • segmentation fault - code attached
    ... segmentation fault when executing calloc. ... The program is to parse a file format called ... It is used in VLSI for debugging and waveform dump in ... I was writing a library for the format. ...
    (comp.lang.c)
  • Re: recursion
    ... was heavily involved in C programming and found the people helpful and ... "Debugging is twice as hard as writing the code in the first place. ...
    (comp.lang.c)
  • Intro to Writing "Good" Code
    ... Intro to Writing "Good" Code ... The first rule of programming is "take ... Readability: Eventually somebody is going to have to ... The reason for this is that the ...
    (comp.programming)
  • Re: Whats the name for this?
    ... you're the only one mentioning it in connection to programming. ... > is no connection between the philosphy of Plato and Computer Science. ... French philosopher, who pointed out that at the dawn of writing, Plato ...
    (comp.programming)