The professional software development experience ranges from necessary drudgury all the way up to opportunities for creating fundamental change in a project. I've felt great satisfaction when exceptional inspiration has happened to line up with critical business needs.

Here are some cases where my vision and innovation made a particular difference:

  • Aimed high and brought the rest of the team along
    Design Tool, Intentional Team, Microsoft, 2017-8

    ISC logoOver a series of design meetings I encouraged the group to create increasingly detailed examples of our customers' common use cases. With concrete scenarios I guided the team's consensus towards a more ambitious and more abstract approach. After gaining this consensus I quickly created an implementation that became the kernel for the team's work going forward.

  • Gave NASA power subsystem engineers a way to directly express their intentions
    SHRIMP Project, Intentional Software, 2013

    A ten-centimeter cubesat sitting on a workbenchA cubesat is a ten centimeter cube
    Image from NASA.
    JPL's spacecraft engineers wanted a powerful but clear way to control their power subsystems for cubesats. Using Intentional's software pipeline, I modeled JPL's plain-English descriptions of power failure conditions using a bespoke domain-specific language, which was as clear as the plain text but completely precise.Then I mapped JPL's language into an abstract hierarchical state machine which, in turn, the team and I mapped into C language code running in real time on a microcontroller that streamed telemetry to a USB port to be graphed in real time. I mapped JPL's language into Intentional's UX layout language, which automaticaolly created a language editor. I also mapped the language into a graph layout language for easy visualization.  I was told that this was the most sophisticated Intentional Developer Workbench solution built up to that time.

  • Agily responded to customer needs with a custom Ajax architecture
    Custom web application development architecture, Schilling Horticulture, 2007-12

    After teaching a class in website creation I got interested in PHP and, as a hobby, developed a custom client-server application archicture and then deployed it for a landscape company's internal crew management database where it's been running on a hosted server continuously for the past eight years.

    Notably, this LAMP architecture:
    • generates its entire UI using XSLT transformations
    • the XSLT transformations are layered such that there is almost no repeated XSLT code
    • the schema editor is an instance of the architecture
    • schema changes automatically generate schema update instructions, allowing automatic up-conversion
  • Full automated test lab imaging
    Automated ROM BIOS boot device changer, Microsoft, 2001-3

    In my OASys testMicrosoft Logo.jpgImage from Google Images lab, the 200 client computers could only be reimaged by hand with a boot floppy, which then had to be removed in order to run tests. I overcame scepticism and drove the research (no stack overflow back then) to figure out how to change the boot device from software. This let us assign any image to any machine at any time, eliminating most of the need for a human operator. This feature, along additional custom infrastructure, got us closer to 100% up time than any other satellite OASys lab.

One slice of the greeked (obfuscated) diagram of the Visio merge code
  • Made a complex architectural change possible by comprehensively describing the problem
    Visio's merge subsystem, Visio Corp., 1999-2000

    VisioMicrosoft Visio 2002 Standard retail boxImage from seeklogo's users desperately needed their shape formulas to be able to reference shapes on other pages. This enhancement changed assumptions that were baked into nearly every aspect of the product, especially the merge code, which, although very stable, was very complex and hadn't been touched in many years. In order to understand and communicate the problem, I made the diagram shown on the right. It may look only moderately complicated, but at the top center there are two lists of settings that controled the type of the source and destination objects. Changing these settings reconfigured the drawing to follow the new scenario.This drawing allowed me to be sure of what I was doing and to surprise the team with how stably I maintained functionality during these changes (having a great test suite helped too - Hi Mark!)


  • Helped bring multimedia technology to the masses by unifying contrasting approaches

    Media Control Interface (MCI), Microsoft, 1989-1992
    My group was just starting to work on the new Multimedia PC (MPC) hardware and software specification. I worked

    Just Grandma and Me used MCI to play audio tracks and was one of the first MPC titles.

    with our external partners to outline an English-like language for controlling media devices like Audio CD's and Videodisc players. We needed non-programmers to be able to play audio and video clips. We also needed the same control using a traditional API, but I was only allowed a couple of function entry-points. I created a simple resource table-driven binding of syntax to the API that became MCI.

    MCI is the only code I've ever written that's been reviewed in the trade press (that I know of). See this review in Byte Magazine from 1992, where the author praised MCI as "a well thought-out, high-level function-call interface to a command interpreter." The review goes onto say "If you're not a programmer, the fact that MCi is so easy to write helps you as well. MPC-compatible software will become available rapidly because MCI is such a cinch to learn and use."

    MCI also got me my only professional standing ovation when I presented it at the 1992 Multimedia Developers Conference in San Jose. After introducing MCI and opening its test interface, I entered "play c:\files\kirkhere.wav" and the audience heard "Beep Beep.. (communicator) Kirk here." Well into the 21st century this doesn't seem like much but back then, computer audio was the latest thing and there were no standard formats or apis. Such a simple way to do something cool brought hundreds of attendees to their feet! MCI was soon indispensable for titles such as Just Grandma and Me and Microsoft Musical Instruments.

    MCI also let non-programmers create their own multimedia content using applications like Asymetrix Multimedia ToolBook to embed easily-understood MCI command strings such as "play videodisc from frame 1000 to frame 2718 fast repeat".

    Thirty years later this code is obsolete but it's still on your Microsoft Windows computer in %SystemRoot%\system32\winmm.dll, with drivers at mci*.dll

  • Revolutionized Ithaca Software's product distribution
    Dynamic Link Library (DLL) feature, Ithaca Software, 1988-9

    Ithaca Software logo.jpgImage from Ahn Look via Scott Sheppard's blog
  • Ithaca Software released it's 3D application development kit, a single executable, on three 3.5" floppies. In these days before Windows standardized graphics cards, we released new device drivers much more frequently than the base software. We couldn't ship just the driver but always had to create new three-disc sets by hand and mail them to customers. There were no CDROMs and almost nobody had Internet access. The World Wide Web wouldn't light up until the following year and 3 Mb was impractical to download through a 1200 baud modem. If we could ship just the 20K driver then it could go on our BBS, but there was no DLL capability for the PharLap 386|DOS-Extender that we used, no way to dynamically load the driver at run time.

    One day I realized that PharLap provided enough API  for us to hack our own DLL infrastructure. My boss thought it was too risky to waste time on. I disagreed and coded it up in two hours, blowing his mind and making Ithaca Software's media distribution far more agile and efficient because a driver update was now 20 Kb instead of 3 Mb. We shared this innovation with PharLap, which, I was told, incorporated it into their own offerings.

  • Gave admins a nearly-modern word processing workflow on a PC  before the Apple Macintosh became available
    JetFont, an integration of Word Perfect, HP LaserJet+, and Microsoft Mouse, Jet Propulsion Laboratory (JPL), 1984-7

    Our new state-of-the-art PC-based word processing at JPL in 1984 was network of IBM AT microcomputers with 80x25 character monochrome monitors, Word Perfect, and HP LaserJet+'s The Apple Macintosh wouldn't be out for several months, although I had been chosen the previous year to test-drive our lab's Apple Lisa, the Mac's precursor.

    We still had a secretarial pool, who wereJPL logo.pngImage from Wikimedia Commons at the front lines wrestling with this raw technology. They quickly realized their biggest problem: fonts. The LaserJet+ could only store a portion of the available "soft fonts", which had to be downloaded and managed using the DOS command line with no easy way to judge the printer's capacity. Font changes in Word Perfect required going into escape mode and entering an integer code for each font.300px-First_MS-Mouse (cropped).jpgImage from Wikimedia Commons

    Each computer had a Microsoft Mouse, which was not used by any application. The mouse did come with a DOS extension that could set the cursor location and activate a popup menu with one click. I harnessed this feature to send Word Perfect keystrokes that choose fonts by their family, pitch, styles, and other characteristics instead by code number. Additional menu picks invoked common WordPerfect functions. I also wrote back-end software that smoothly managed font downloads to the printer so that secretaries never had to deal with it.

    This custom setup completely fixed the administrative assistants' workflow and gave them access to a nearly-modern mouse-driven point-and-click interface. I left JPL before I completed the paperwork to get JetFont (as it was called) included in JPL's publicly available COSMIC catalog but it did have a complete manual.
    Tektronix graphics console with green vector graphics screenTektronics terminal image from Wikimedia Commons
  • Substantially reduced modelling errors with graphical model visualization
    Spacecraft Model Visualizer, Jet Propulsion Laboratory, 1981-3

    My fellow radiation analysis engineers created and used 3D models of spacecraft components to calculate the dose to sensitive electronics exposed to Jupiter's radiation field. The models were on punch cards and we walked up the hill to submit decks of code and data to the mainframe. There was no way to visuaize these complex models and we were constantly worried about errors in the data.

    There was a Tektronix 4014 graphics terminal in my office. Nobody knew why it was there. After hours, I wrote software using the very good mainframe BASIC interpreter, and was soon turrning the punch cards into pictures. It wasn't perfect - there was no hidden line elimination so there were a lot of lines.

    One day in particular the visualizer proved its worth. My colleages were stymied by the Galileo's Despun Bay model, which is basically a rectangular box made up of many panels. As they added ridiculous amounts of shielding the dose basely changed. Somewhere in the model was an error and they'd been looking for a few days. I cranked up the new software and the problem was instantly apparent: one panel was hanging out in the breeze. This revelation swiftly led to a misplaced negative sign and saved that particular day.

  • Five-times more efficient business accounting workflow
    Coin-op Machine Accounting Interface, Mohigan Management, 1976-9

    I600px-IBM_5100_-_MfK_Bern.jpgIBM 5100 image from Wikimedia Commons was a sophomore in high school when I was presented with a chance to learn how to use the BASIC on an IBM 5100 business computer.

    Mohigan Managment managed coin-operated machines and needed to keep track of how much money each machine generated. The customer had previously paid $75/hour for custom professional software that was unacceptably slow and cumbersome, requiring endess menu picks and repeated reading of the magnetic tape drive.

    I'd already mastered the HP-65 programmable calculator and learned BASIC and was asked to give this problem a try. Within a few weeks I had a solution that let the operator enter data at full typing speed and produced crisp reports that proved very valuable. The customer used my software for the next six years until the technology was obsolete.

Note: Logos and images are included on this page under Fair User provisions. No association with any of the associated entities is implied.