STaRs
From Jonathan D. Lettvin
STaRs (Situation, Tactics, Results)
3-4 sentence mini-stories from my professional career.
A frequent theme underlies these stories. I am assigned to a problem identified by my employer. While succeeding at my tasks, I identify high-value problems and opportunities. I propose solutions and demonstrate prototypes. My employer evaluates my value proposition and re-assigns me to the new problem. I implement a high-value solution completely. My employer is praised for proactive thinking.
Overview of Format
- Situation - the problem that needed solving
- Tactics - what you did to solve the problem
- Results - the bottom line benefit to the company
Government Specification Code Development
NOAA needed to convert messy code for measuring dust and smoke into highly regular maintainable code. I wrote scripts to automate conversion, but found that the majority required per-instance transform confirmation. After combing through approximately 1 Million lines of code a day for many days, the code finally passed review.
DeNoising Boundary-Sharpening Algorithm
Noisy images may appear to have sharp boundaries that commercial image processors fail to extract. I designed an algorithm that restores these boundaries while reducing noise. I plan to publish this algorithm in a journal (perhaps The Insight Journal).
Hyperacuity Sub-Pixel Discrimination Algorithm
Recovering sub-pixel information from single-frame oversampled superimposed diffraction patterns is generally thought impossible (Nyquist limit). I designed an algorithm that extracts point sources from a shared blur to better than one tenth the blur radius. I have a patent pending on this method and I plan to publish this algorithm in a journal (perhaps The Insight Journal).
Neurigen/Zipix (Entrepreneur/Image Processing)
I was issued Imaging System patent 7796173 with promising image processing algorithms. With a partner I assembled a management, development, and marketing team. We launched a $1.2M iphone application company.
ITG/Investment Technology Group (Data Movement)
I was hired to mentor a team of quants in the C++ programming language. The existing software to move data from a 2TeraByte/day market feed (BATS/Pitch) to an SQL database took 36 hours.I proposed to rewrite the lexer software as a table-driven state machine with error-detection and correction as a demonstration of C++ to the quants. Data movement from BATS/Pitch to SQL now takes 1.5 hours (2,400% faster).
The many existing machines for all market feeds were reviewed manually for interruption. I wrote a bash script to automate server health-checking to be run from cron. Identification of service interruption was reduced from days or hours to minutes and all responsible parties were notified. This included notification of health-checking script malfunctions.
SoapStone (IDL Compiler for CORBA Inter-Process Communication)
A rudimentary and error-prone IDL compiler was written before I was hired. I was given lead responsibility for rewriting, expanding, and refining it using boost::spirit. Under Extreme Programming methodology, it was incrementally improved to implement all desired features, 100% unit-testing, 100% code-coverage, and with no known errors.
Bluefin Robotics (Submarine Control Software Documentation and Diagrams)
The software documentation demanded by the U.S. Navy for a proposed AUV (Autonomous Underwater Vehicle) did not exist. Along with developing device drivers with the team, I wrote the complete module-by-module documentation on the software, the devices controlled by the software, and all the system and state-transition diagrams for one entire submarine. Bluefin was awarded that Navy contract.
AES (Manned Mission to Mars/Scientific Modeling)
The proposers of the NASA Manned Mission to Mars are concerned with high energy particles from the sun focusing within the spacecraft creating dangerous hot spots. NASA models their spacecraft as panels and lacks software for converting panels to volumes for modeling particle pathways using the physics programs available from CERN. I proposed to write a program that fragmented the panels into miniature cubes that were output in a format suitable for CERN programs. The results were presented to and accepted by NASA.
Lotus/IBM (Metro/Antivirus)
METRO 1.1
Lotus's first email product was Express running under METRO 1.0. This product was killed suddenly by upper management. A team of 45 engineers, testers, documenters, and managers were told to find and join other projects within Lotus. I was a contractor, and wasn't given any instructions. I approached upper management and offered to finish METRO 1.1 on my own. They assigned me 3 testers, a documenter, two managers, and told to do it. Together, we turned out the last 0-bug product Lotus ever produced on-time and under budget. For the next 5 years, customers bought millions of dollars worth of METRO 1.1 without Lotus spending any money on marketing or sales. During that time, there were no customer complaints.
1-2-3 Unix
Lotus wanted to port 1-2-3 onto Unix. I had experience from porting Safe C (Catalytix) and Supercomp 20 (Access Technology). I was given the position of lead developer. I developed the first prototype of 1-2-3U and this became the cornerstone of a growing team.
Lotus antivirus
Lotus received a large volume of customer complaints that could be traced to virus infected diskettes. Boot sector viruses were responsible for a large portion of customer returns. In addition, Lotus employees were experiencing virus infections.
I proposed an antivirus team to my management chain, and they asked me to lead it. I developed and published antivirus methods to detect, identify, disable, remove, as well as restoring memory, along with methods for hardening disks against virus damage.
These methods not only eliminated customer complaints and returns and reduced internal virus attacks to single machine events, they also won Lotus great praise for pro-actively eliminating the most common viruses on customer's computers without having to call for support or purchase separate antivirus products.
During my 10 year tenure in this position Lotus never had a documented case of shipping a virus to a customer and I had developed the measurements to prove it.
Algorithms
The initial virus detection program was a slow O(N^2) search. I proposed to architect a new specialty algorithm, and my manager accepted. The new 3 layer search algorithm reduced the problem to between O(N) and O(NlogN). Virus searches on machines of that era went from about 30 minutes to a few seconds. Because it became possible, Lotus integrated this antivirus into all their products. This algorithm remained the fastest in the antivirus industry during my tenure.
A similar algorithm was developed for integrity-checking Lotus products so the running program could assess itself for changes and report to the customer that the product had been modified from original, enabling them to detect unknown virus activity. Lotus enjoyed much praise from customers for this forward-thinking.
Patents
I patented methods for virus-infected diskettes to perform antivirus functions during boot-time (Software Antivirus Facility patent and Boot-Time Anti-Virus and Maintenance Facility patent). These patents were used to support Lotus's stand on viruses.
Signal Analysis
Lotus customers would occasionally complain that we had sent them virus-infected product. Lotus manufacturing used special diskette production machines and techniques that left a signature. By experiment I discovered that it was possible to detect when a diskette had been written-to after manufacturing. Using this information, Lotus tracked down external software sales organizations who would take customer returns, repackage them, and ship them to new customers. We put a stop to that practice, and modified quality assurance during assembly to assure that Lotus would never ship a virus to a customer. During my 10 year tenure as antivirus lead, Lotus never shipped a virus to a customer; a claim no other major software company could make.
Quality Control
Lotus practiced strong Quality Controls in manufacturing. They would extract sample product diskettes on the assembly line and search for physical defects and viruses. Initially, the practice was to return these sample diskettes to the finished bin. I determined this practice to be risky since the testing machines could be infected. Lotus changed to a policy of discarding tested diskettes because a non-original diskette had a different signal characteristic than an original, and Lotus wanted to offer customers a high-confidence good product. This practice made it possible for customer support to offer a greater level of care.
Public Relations
While developing antivirus methods, Lotus was approached by journals and mass media to discuss virus problems and our responses. I helped Lotus Public Relations develop a stance, wrote numerous articles in The Virus Journal out of the U.K., and was the voice of Lotus antivirus on National Public Radio.
Executive Communications
Computer viruses were few in number when Lotus organized my team. There were brain, stoned, and a few others. A huge upsurge in virus types began shortly after we were formed. I was responsible for all things virus. One responsibility was to keep upper management aware so when the press asked questions they looked informed. I sent emails to key vice presidents whenever the playing field changed. No Lotus executive was ever blind-sided with a virus question during my tenure.
Compression
Lotus suite products required over 120 diskettes to ship. We needed to reduce the number of diskettes required. Along with formatting methods I developed, we also explored compression and automatic decompression. We purchased rights to use the ARJ/UNARJ methods. Nevertheless, I researched compression methods and determined that Intel instruction based programs had an intrinsic character that enabled significantly better compression and high-speed decompression by breaking each instruction into its domains (prefix, opcode, modregRM, etc...). The number of diskettes needed was reduced a further 10% from around 90 to around 80, using my algorithm. This saved Lotus a significant cost in raw diskette purchases and product weight.
Glue Layer
When Lotus 1-2-3 release 3.0 was developed for Windows, a DOS version was determined to have value. Having no Intel assembly experts in the 1-2-3 team, they asked me to write a glue layer. I wrote a complete API implementation that enabled 1-2-3 to operate under DOS by translating all Windows calls into equivalent DOS and BIOS calls. The DOS version of Lotus 1-2-3 release 3.0 sold well.
XML Lexing
Knowing my Intel assembly language experience, an IBM researcher challenged me to a coding duel. He had authored hundreds of lexers, and I had written one for FORTRAN77. I accepted the challenge. He wrote his lexer in the MDL language, I wrote mine in C. My Unicode 1.0 branch-free table-driven translation unit was so fast (21 Intel instructions for all encodings: ASCII, UTF8, UTF16, UTF32) that he conceded that my XML lexer was the fastest within IBM; faster than all the existing DOM and SAX implementations.
Diskette Formatting
Lotus shipped software products on as many as 120 diskettes at a time. This was burdensome to customers who wanted to install the products, in terms of both diskette changes and time to load. I proposed to develop a new diskette format that increased diskette capacity by over 30% and increased load speed by over 40%, and my manager accepted the proposal. When completed, Lotus used the extra 30% to store a mini operating system along with two loadable programs: an integrity checker and antivirus all of which I architected and developed. Customers experienced faster load times and security protection and called customer service to praise Lotus.
Ecco (RealTime/Biometrics)
Ecco produced PC bus cards for performing voice biometrics.
The software developer who wrote Ecco's prototype software left the company without leaving any source code. The software did not work with their latest card. I was hired to patch the existing software and redevelop the source. The new source was produced within weeks.
Ecco had a single-threaded program running under DOS on an IBM XT. Their PC card had the capability of supporting 4 simultaneous speaker verifications per card and wanted to us 4 cards in one computer enabling 16 simultaneous verifications. There were no existing operating systems for the IBM XT capable of supporting the disk and speech token throughput demands. I wrote a Real-Time Multi-Threaded Operating System that enabled all 16 channels to be operated simultaneously. It required rewriting all the device drivers, including the DMA and clock chips to achieve demand task-switching and time-slice yielding. The product was marketed successfully as VoiceKey™ and the methods for maximizing PC bus performance were presented to the Boston Computer Society as an invited presentation.
Catalytix (C Interpreter Migrations)
Alan Feuer, author of the C Puzzle Book, wrote Safe C, a C language interpreter. At the time there were over 40 different brands of UNIX. I was hired to port this interpreter to all these different machines. Despite non-compliant compilers and variant operating system behaviors I succeeded in making Safe C ran on all brands of UNIX.
Access (Spreadsheet Development and Migrations)
Before Lotus 1-2-3, but after Visicalc, there was the spreadsheet program Supercomp 20. Initially I was hired to complete its development. As more developers were hired, the major problem to solve was that there were over 40 different brands of UNIX. I was asked to port Supercomp 20 to all these different machines. Despite non-compliant compilers and variant operating system behaviors I succeeded in making Supercomp 20 run on all brands of UNIX.
Bell Laboratories (Ada Compiler Dictionary)
MIT Plasma Fusion Center/Magnet Lab (Scientific Modeling/Automated Code Generation)
The Alcator C tokamak had no energy injection port. The engineering team needed to determine how much distortion to the magnetic field would occur if they modified the main windings to open the port. I was hired to discover a method for calculating the distortion. I modeled the solid copper windings as a rectilinear 3D mesh and solved for Kirchoff's Voltage and current laws using a relaxation method and plotting the distortion. After studying the distortion, the engineering team determined that the port distortion was tolerable and the port was opened. This allowed the team to inject energy to heat up the plasma to ignition temperature.
I convinced the PFC engineering team that they needed an automated FORTRAN 77 code generator and automated TeX paper generator to enable engineers to generate publications more quickly. I wrote a LISP emacs extension that enabled FORTRAN statements to be input. These were sorted to minimize the program inputs, and the variables (if they weren't commented) were offered for comments by prompt. The program was automatically given appropriate headers and tails, input and output statements, compiled, and run and output collected. Then the FORTRAN statements, inputs, and outputs were converted to English text and the formulae turned into TeX format. The scientific papers was then output. I published the method and was told by the engineers that it reduced the time-to-publication from 40 weeks to 1 and a half weeks.
Multics had a text-oriented debugger called probe. I felt that a multi-window video debugger would be valuable. I wrote a LISP emacs extension that interfaced to probe. The PFC engineering team used this video debugger extensively and became far more productive.
LISP emacs was only available on the very expensive Multics system. My extensions were costing the engineering team a lot of money. I convinced my manager that rewriting LISP emacs on a free platform would save money. I wrote a new LISP emacs on the MIT Artificial Intelligence machines that accepted the same extension language. The budget for running engineering programs went from hundreds of thousands of dollars to effectively zero.
SUNY Stonybrook (Scientific Modeling)
UTHSCD (Magnetic Resonance Image Enhancement)
Before MRI was used for medical imaging Dean Sherry and I noted valuable changes in magnetic resonance chemistry when Gadolinium was in the solution. Because Gd is poisonous, we chelated it with various agents and found that TTHA (Triethylene-Tetramine hexaacetate, a potential decadentate) made Gd physiologically inert from a pH of around 2 to around 14 making it suitable for use in living tissue. We published our results: Lettvin J, Sherry AD. Gd(TTHA): An aqueous carbon-13 relaxation reagent. J Magn Reson. 1977;28:459–61 which has been referenced in the MRI and NMR literature, and Gd (TTHA) and the related Gd (DTHA) are now broadly used standard contrast reagents in MRI (Magnetic Resonance Imaging).
