John E. Darrow
Details of Experience


Corporate Writing and Programming | Personal Java Programming | Personal Perl Programming

Corporate Writing and Programming


(Writer) Overhauled engineering documentation to deliver an Installation Guide and Programmer's Guide on time and under budget. Revised and enhanced API javadoc comments directly in the Java code to present members and parameters in a consistent style, added cross-references to other members where appropriate, and added command line documentation for main() in some classes. Refined the XML documentation by correctly indented non-indented samples and by presenting element and attribute definitions in a consistent style. Discovered and corrected some minor oversights in their Java code. Wrote Unix scripts for converting the FrameMaker source to PDF so that they could include them in their nightly code builds. Proposed and delivered web pages and a hierarchy for the customer to access documentation and code samples online.

Savi Technologies

(Advisor) Helped the documentation team plan wisely for an upcoming API documentation project. Identified skills needed by the documentation team. Proposed and delivered follow-on training in Java documentation, core concepts of Java programming (to increase their ability to read code) and effective use of javadoc.

(Writer) Provided a new style and structure for their API documentation (consistent with the style I teach), a style with which Development was far more pleased (compared to the problematic style left by a prior writer).

(Technologist) Generated 1200 pages of API skeleton documentation (conforming to Savi's FrameMaker templates) in less than 3 days by using my custom javadoc software. Assuming it would take a skilled writer 10 to 15 minutes to create each page manually, that would have saved Savi 2 to 3 weeks in documentation formatting tasks alone.

Sun Microsystems

(Writer) Developed installation and user's guides, API reference, a tutorial and courseware for JavaLoad (a load testing tool written in Java) in FrameMaker, delivering in HTML, postscript and PDF.

(Technologist) Repaired various documentation build scripts left behind by an ex-employee. Provided documentation so that the regular employees could resume the build process and take over future modification of the build scripts.

(Technologist) Developed a master cross-book index solution for online books. Used this for my product's documentation set and helped a coworker use it for another product's documentation set.

(Technologist) Developed a library of Unix scripts to enable the Doc team to do more documentation build tasks from a command-line (e.g. not require that FrameMaker or WebWorks GUIs be started). This enabled the nightly conversion of FrameMaker documentation to HTML, postscript and PDF.

(Technologist) Developed scripts to bulk-convert from one FrameMaker template to another.

(Programmer) Repaired the import, package and Class statements for all classes of several packages of the JavaLoad product, enabling Engineering to make a major shift in directory locations of such classes.

(Programmer) Improved the GUI and backend code for a small portion of JavaLoad which had been put together in haste by a developer.


(Writer) Led two contract writers from an Engineering product plan to 400 pages of user's and reference guides for Oracle Internet Commerce Server 1.0 (an electronic commerce tool written in Java) in FrameMaker, delivering in HTML, postscript and PDF.

(Technologist) Wrote a C++ program to generate FrameMaker documentation from a header file built from the developers' object model. This enabled regeneration of 80 pages of documentation with proper heading styles and tables in about 8 minutes whenever the object model was updated.

(Technologist) Created various FrameMaker macros to automate book-level tasks, such as renumbering chapters, choosing style of page numbering, and setting and clearing change bars.

(Technologist) Created many UNIX scripts to facilitate using FrameMaker from a command line.


(Project leader) Led a corporate committee in developing benchmark tests for selection among competitive CAD programs. Leveraged our limited resources to present a completed, highly detailed proposal in one week, beating the deadline by one week.

(Writer) Evaluated three competing corporate training manuals of similar content. Proposed and was awarded the task of combining three competing corporate tutorials on 3D graphics to eliminate duplication and implement consistent style. Generated the documentation in HTML via the GML-to-HTML converter I had written in 1994. Completed the project on schedule, a schedule which several had slammed as too aggressive.

(Writer) Overhauled a 100-page 3D graphics (CATIA) tutorial, originally written by five authors in varying style. Repaired or eliminated confusing sections and corrected to address the target audience. Reduced student training requirements by 1 week by eliminating the dependency on prerequisite courses. Observed a significant reduction in student questions.

(Writer) Led the overhaul of a 200 page 3D graphics (CATIA) corporate training manual. Completed the project on schedule, including all topics slated for inclusion "if time allowed".

(Writer) Proposed and completed the "Reference Manual for Basic CATIA" which was soon adopted by several IBM sites as one of the key handouts for training.

(Writer) Contributed the majority of content of and managed the creation of an 85-page training manual for the corporation, "Advanced CATIA Techniques".

(Writer) Wrote and directed an 18 minute video for presenting the new features of the next release of CATIA to the mechanical design community of IBM worldwide.

(Technologist) Wrote a GML to HTML conversion programs in REXX (an IBM scripting language) and converted our training material (normally print only) to HTML (1994!).

(Programmer) Created various UNIX scripts to help automate the UNIX administrators' setup of new users on new workstations.

Personal Java Programming

Created a complete GUI- and command-line-driven application for developing and maintaining the ten thousand web pages on See

  • Multithreaded and event-driven for background processing during data entry.
  • Organized via CardLayout by picture entry, category creation, renaming and reparenting, and picture review.
  • Internationalized for rapid introduction of new languages.
  • Based on flat file database for picture and category relationships and supported by properties files for internationalization of category names, descriptions and selected texts.
  • Commented for effective javadoc documentation

Subclassed Sun's javadoc Doclet classes for custom javadoc output:

  • consistent with the high quality style I teach in my Documenting API courses
  • corrects various deficiencies in the default javadoc output, such as non-alphabetical member detail listings and missing argument types in method headings
  • customizable for a company's HTML or FrameMaker paragraph style requirements

Created a "Washers and Dryers" applet/animation to illustrate proper use of wait() and notifyAll() for multi-threading. See

Created multithreaded stock price trend software that downloads and parses historical financial data from the internet for thousands of stocks, identifies the best according to specified criteria and creates a web page of references to the corresponding internet stock charts.

Created the "Square9" card game applet. See

  • Multithread animation.
  • Multiple key listeners, selected based on the point in game play.
  • Artificial intelligence (used when the player chooses to play against the computer instead of a person).
  • Calibrated charts of player scores and game progress.
  • Keyboard-scrollable help text.

Personal Perl Programming

Perl CGI plus Javascript script around Google's Maps API to aid geocachers who wish to search without a GPS device.

Form-based search engine for Generates thumbnail page of images for matches.

Form-based photo file upload program for

Form-based postcard program on Try the "Send postcard" button on this page:

Form- and email-based word games.

Extensive statistics, utility and maintenance Perl programs for