1. Jonathan D. Lettvin
27 Valley Hill Drive Worcester, Massachusetts 01602-2023
Phone: 617-828-5491 E-Mail: jlettvin@gmail.com
http://www.linkedin.com/in/jonathanlettvin
Objective
I am at my best solving technical and scientific problems requiring new insights and algorithms. My employers and
clients have all profited from my inventions in their business space. I relentlessly research process and algorithmic value-
add propositions to achieve your goals. I hold five software patents, two in antivirus, and three in image processing. I
enjoy programming in Python, PHP, C++, javascript, and ASM where I use mathematical libraries like scipy, OpenCV,
and OpenCL. I learn languages and write new ones when needed by my employer. I have a particular knack for value
discovery in big data. Let me invent for you.
I have worked in data visualization, biometrics, language (both human and computer), operating systems, data storage,
backbone network, physics, market data, software security, medical devices, robotics, scientific satellites, consumer
applications, and more. I have produced solutions for MIT, Lotus/IBM, NASA, Navy, Bell Labs, Carbonite and Fidelity.
I have written many original commercial products including real-time operating systems, boot sectors, file systems,
device drivers, EEPROM code, glue layers, TCP/IP primitive operations, IDL compilers, image processing language
interpreters, programmers editors, web scrapers, automated code generators, language-to-language filters, software
license ticket generators, XML lexers, canonicalizers, automated traceability matrix generators, heterogeneous SQL table
column comparators, high speed market data ingesters, antivirus applications, and much more. I wrote a C++ program
to distribute charges within a sphere based on repulsion to illustrate Gauss's law and it was referenced in a recent book
(in my github repository). Some of these products have been delivered to over a million users. Many are still in use.
I spend my free time generating software utilities to support my personal investigation into neuron structure function,
and emergent behaviors. Some of these show up in my github repository (see links below). Others show up as web
pages (see http://rote.training). This keeps my language skills current including C++, ASM, Python, PHP, javascript...
My motto is "small fast correct complete tested". I like to make code solid, clear, documented, optimized, tested, and
maintainable. I have achieved zero-bugs, complete code, and 100% tested when my employers chose to allow a modest
investment of time. I focus down and "get the job done", but I also "spitball" and contribute ideas and implementation in
a group, I find pair programming in Agile "Extreme Programming" highly productive. My recent insights into
development processes have led to a publication combining Agile and Waterfall. I attack seemingly insoluble problems. I
learn my way into disciplines, technologies, and languages that enable me to generate new solutions for you.
Skills
A sample of my alphabet soup: linux, unix, Mac OS X, Windows, DOS, asm, C, C++, Python, PHP, MySQL, javascript,
node.js, socket.io, bash, gnuplot, graphviz, mediawiki, HTML/HTML5, XML, LaTeX, JSON, STL, IDL, scipy, itertools,
unittest, pytest, coverage, OpenGL, OpenCV, OpenCL, matplotlib, git, svn, virtualbox, gcov, valgrind, doxygen, pep8,
pylint, pychecker. I have deep experience in many additional languages, libraries, and platforms.
Experience
Deltek (through TPA) (Woburn, MA) Jun/2016-Aug/2016 consulting software engineer
Short term contract: Wrote VB.NET server code and javascript front-end code for major deadline.
Altman & Vilandrie (Boston, MA) May/2016-Jun/2016 consulting software engineer
Short term contract: Configured Vagrant to launch market data ingest server.
IVES, Inc (Sutton, MA) Oct/2014-Jun/2015 senior software engineer
Compared SQL columns with mismatched schemae finding commonalities/differences. A large customer was retained.
Spritz Inc. (Wakefield, MA) Apr/2014-Oct/2014 field scientist
Normalized/rendered non-European glyphs in a resized reticle. I explored/documented requirements for reticle fit and
justification. Spritz now operates in more languages (i.e. http://lettvin.com/Rendering.html).
2. JDL
Editshare (Allston, MA) Aug/2013-Mar/2014 senior software engineer
Wrote LTFS (Linear Tape File System) device drivers in Python. Tools for analyzing logs and SCSI stream state
transitions were developed to aid in maintenance and improvement.
Carbonite (Boston, MA) Apr/2012-Apr/2013 principal software engineer
Carbonite needed to choose between RAID6 storage and distributed storage products of Amplidata and Cleversafe based
on storage efficiency (bytes/dollar). No tools existed to perform the calculations, or to apply them over a variety of file
sizes. My tasks were to negotiate with the vendors, acquire the mathematical formulae, write the analysis code, and
apply the resulting tool over a sufficiently rich variety to enable Carbonite executives to make a choice of direction. I
performed all the tasks, wrote Python code on linux, generated a report, and closed the project in two weeks using TDD
methods, where the resulting code could be updated to include new vendors and new storage paradigms with ease.
Carbonite saved millions of dollars by choosing their new course based on the output of this program.
Carbonite needed to have "monkey testing" (see netflix "chaos monkey") of the new storage platform being developed.
Without a platform ready to test, the needed tool had to be developed pro-actively with reference to the design. I was
assigned the task, and produced a Python automated "traceability matrix" generator on linux to track the response of the
nascent platform to problems, and identify which versions implemented which features of the design. The matrix auto-
populated successfully, and the team was able to track when bugs were introduced, and repair them quickly.
Carbonite had a special coding project that required the expertise of a gifted sysadmin, front-end developer, and backend
developer, and the project was expected to take 3 weeks. I was tasked with the backend role. I threw together a shared-
screen session with linux tools and a skype voice session with the other two contributors, and we shared the development
for about 5 hours, passing the keyboard/mouse/screen responsibilities back-and-forth in remote "Extreme Programming"
style. The project was finished in less than a day with high quality, long before it was due.
Kyruus (Boston, MA) Jan/2012-Mar/2012 software consultant
Kyruus scrapes medical payments/insurance/legal results from public websites, and found that hospital names (amongst
other fields) needed to be converted from a variety of formats (with and without errors) into "canonical" or legal names;
where their existing methods were 18% effective and the remainder were shipped to India for hand canonicalization. I
was tasked with improving the conversion rate. I wrote a new Python canonicalizer which used a multi-algorithm voting
approach to enable voting between Levenshtein, Soundex, NYSSIS, metaphone, FatFinger, acronym, and other analysis
algorithms (new algorithms could be added with ease). After two weeks of development, I delivered the new
canonicalizer at a company meeting, demonstrating that it was already achieving 80% conversion rate.
Kyruus was using SQL to store data scraped from the web, but wanted to use HADOOP. I was tasked with providing a
duck-to-strict Python SQL translator to ingest the data that had already been stored to make it available for re-storage in
HADOOP. The Python I wrote enabled an SQL table schema to be modified for re-use as an ingester for data from the
existing database. In other words, the Python looked exactly like the table description. Kyruus was able to convert from
SQL to HADOOP quickly with this application.
AER (Lexington, MA) Mar/2011-Oct/2011 software consultant
Wrote regression tests for test suite and converted code to government specification for a new environmental satellite.
Zipix (Burlington, MA) Aug/2008-Mar/2009 CTO and architect
Zipix, a startup for which I was a founder, needed new algorithms for improving photographic images. As chief scientist,
it was my job to produce these algorithms. These algorithms were developed, tested, and published as patents. The
company raised $1.2M and launched.
Investment Technology Group (Boston, MA) Feb/2008-Aug/2008 consulting mentor
ITG had an algorithm for ingesting the BATS/Pitch market feed using pattern matching which took 36 hours to read in 24
hours worth of data and failed to handle many data corruption problems. I was tasked with improving this. I wrote an
LR1 lexer using computed GOTO in about two weeks, which matched the formal specifications and successfully
identified and ingested all valid records from the data source. When finished, the new ingester operated on the same 2TB
2
3. JDL
file in 90 minutes, where the limiting speed was reading the data off the disk.
Soapstone (Chelmsford, MA) 2007-2008 software consultant
Soapstone had many developers writing independent apps all of which were to communicate through network links
using IDL (Interface Definition Language). I was tasked with writing the IDL compiler to capture all the data types,
structures, serialization/deserializations of data to be passed between the apps. With my "Extreme Programming" pair
programmer, we produced and maintained a stable reliable, efficient IDL compiler using boost::spirit (C++ extension)
which was used until the company folded.
Bluefin Robotics (Cambridge, MA) 2006-2006 senior software engineer
Bluefin had a contract with the Navy to produce a new BPAUV (Autonomous Underwater Vehicle). I was tasked with
producing all the diagrams and reference manual for this vehicle. These were all produced and delivered on time.
AES (Boston, MA) 2005-2005 software consultant
Wrote BREP to voxel converter for NASA Manned Mission to Mars vehicle high-energy particle simulations.
Lotus/IBM (Cambridge, MA) 1987-2002 principal software engineer
Lotus needed to finish and deliver an update to its METRO/EXPRESS TSR product which had hundreds of documented
bugs. The 40 member team was disbanded but, as a contractor, I was not released and I was kept all by myself working
on the project. I approached a senior vice president and suggested that I could finish the delivery on-time all by myself.
He said "no", but said he would give me a product manager, a project manager, a documenter, and three testers and told
me to "go for it". After about 4 months, I delivered the finished project with zero bugs ready for delivery two weeks early.
The product sold millions of copies which were not marketed or advertised, but merely serviced to customers who
requested it. Although heavily used, no bugs were ever reported again.
Lotus wanted to port their 1-2-3 spreadsheet to UNIX. I was given the task. I had to rewrite the scheduling algorithm
from scratch since the scheduling rules for UNIX and Windows differed considerably. The new spreadsheet
outperformed the Windows native 1-2-3. I passed the project on when I had the opportunity to work on antivirus.
The "brain" virus showed up on a diskette in Lotus. I went, again, to a senior vice president and said Lotus needed an
antivirus department. Lotus assigned the job to an existing manager, and nothing was done for a couple of months. I
went back to ask what was going to be done, and they told me they were waiting for me to offer to do it. I accepted the
task. Over the next 10 years, I developed Lotus antivirus and performed all antivirus related activities for the entire
company. During my tenure, Lotus never shipped a virus to a customer (unlike all other major software companies).
Lotus needed a new "glue layer" to enable its new Lotus 1-2-3 release 3 Windows product to operate on DOS. I accepted
the task. I wrote the glue layer in about 1 week and 1-2-3 subsequently was introduced back into the DOS marketplace.
Lotus products consumed over 100 diskettes when delivered. I was given the task of reducing this count. I proposed and
implemented a new formatting which increased capacity from 1.44MBytes to 1.94MBytes per disk. I presented the result
and showed that it survived implementation in our manufacturing facility and gave a 40% diskette read speed boost. A
vice president chose to kill the project. A month later, Microsoft was delivering its products using this format.
Lotus also wanted to consider compression to reduce the diskette count. I was offered the chance to research this. I
reviewed the existing methods and discovered a new method, where the 7-field Intel instruction could be fragmented into
separate dictionaries based on field. I developed the method and proved that it offered better compression with Huffman
encoding than the best competitive technique did with arithmetic encoding. Although it had promise, it was simply a
research project and never got deployed.
Lotus products were coming back shrink-wrapped from customers, with viruses on them. I was tasked with figuring out
why. I used a signal analyzer to discover that the signal properties were inconsistent with our manufacturing machines.
We finally tracked the problem back to resellers who were re-shrink-wrapping returned disks and sending them back out.
Lotus was able to "appear" and actually be a good actor, proactively helping customers.
Because of the above problem, I developed an entirely new format for diskettes such that known viruses accounting for
99+% of all attacks could not damage Lotus data since those sectors were set aside. I also wrote a mini-operating-system
3
4. JDL
and antivirus that would undo all virus damage on customer machines which would occupy undocumented sectors on
the diskette. Subsequently, when customers accidentally infected a Lotus diskette and then rebooted their machine with
one of these diskettes, my antivirus would kick in and offer to fix their machine. Lotus's customers LOVED this.
IBM needed a faster/cleaner XML 1.0 Unicode 3.0 lexer ingest algorithm to handle all contemporaneous 13 stream types.
I was tasked with researching techniques. I developed a three-tier table-driven lexer and implemented it as a 21 Intel
instruction LR1 ingest routine. The ingest speed exceeded the disk file read/write speed.
Lotus needed a representative "face of antivirus". I wrote articles for the Virus Bulletin, was interviewed on NPR, and sent
white papers to Lotus executives so they could respond sensibly when confronted by questions at conferences.
Ecco Industries, Inc. (Danvers, MA) 1985-1987 Director of Software Engineering
Ecco developed an IBM PC (8088) card for multitasking speaker verification biometrics. They hired me to patch the
existing codebase which had been abandoned by a previous developer. I patched the code. Ecco was able to satisfy their
customers and investors that progress was being made.
Ecco needed the product to be multitasking. They tasked me with identifying how to accomplish this. I reviewed
existing operating systems and found that none could perform the desired functionality. I proposed, and then developed
over a period of several months, a Real-Time Operating-System which could perform as desired. Several extreme
reprogrammings of the IBM PC motherboard chip set were necessary, including bus-usage, DMA chip, interrupt chip and
the rarely-used absolute memory addressing mode to reduce process clock ticks. The company was again capable of
satisfying their customers and investors. I still have a running machine in my possession running this multitasking,
variable-time-slicing, cooperative and preemptive context-switching OS.
New EPROM code was needed to run the NEC DSP and Motorola 68000 chips on the Ecco card. I was tasked with
writing this embedded code, and finished it without subsequent problems arising.
MIT Plasma Fusion Center (Cambridge, MA) 1978-1981 Software Engineering
PFC needed to accelerate tokamak engineering software development. I wrote a LISP program that read FORTRAN style
equations, organized them, read the comments to extract variable documentation, prompted for missing documentation,
sorted the equations to minimize I/O requirements, wrote the I/O statements, compiled the program, ran the program
with data values from the comments, then wrote a TeX paper describing the problem and solution as given in the
comments. This program, the FORSE, decreased engineering development time from 40 weeks to 1½ weeks.
The FORSE ran on costly Multics Emacs (LISP). I wrote a complete compatible LISP Emacs on MIT ITS machine MC
which. This project took 7 days total. The FORSE ran correctly on this new Emacs.
A small sampling of personal pages
4
5. JDL
Independent Projects
My principal personal project is modeling neuron operations and neuron system operations. This project forces me to
learn new languages and new technologies in the pursuit of adequate technology for illustrating my ideas. Some of these
models are shown in the samples (above).
Agile, Extreme, Remote, Waterfall, and all that...
I have read the Agile manifesto (http://agilemanifesto.org/, and https://www.agilealliance.org/agile101/the-agile-
manifesto/) and think it a very well thought out piece. It is useful for many projects. I consider "waterfall" to produce
better software under certain circumstances (complete provable code by design to acquire a Common Criteria EAL7), but
it requires foresight, budget, and long-term commitment to produce. When code just has to provably work (correctness
more important than time-to-market), waterfall produces better code.
Many organizations call themselves "agile" while burdening themselves with "agile tools" to aid managers which end up
soaking up far more than 50% of developer time when a whiteboard with sticky notes would be better. IMHO a more
valuable approach is to assign one agile pair the role of converting whiteboard changes during scrum, to manager tool
content after the fact. Assist the developers to do what developers do. That's what the agile manifesto proposes.
In addition, I have solid experience in remote pair programming where I demonstrated that development quality and
efficiency can be increased by an order of magnitude, leading to higher client satisfaction and reduced maintenance.
I love using remote screen/keyboard/mouse sharing like tmux, join.me, google hangouts, and audio/video conferencing
to reduce the wasted time and stress of commuting and increase productivity by ready access to personal books and
devices.
Education
MIT BS Physics. 1971-1976
Developed novel parabolic mirror for thesis.
University of Texas Health Science Center at Dallas. 1976-1977
Unfinished degree in Medicine/Biophysics
5
http://jonathan.lettvin.com Web presence
http://www.linkedin.com/in/jonathanlettvin Web presence
https://github.com/jlettvin github repository
http://lettvin.com/Jonathan/wiki/index.php/Writing_Samples unorganized points of interest
https://github.com/jlettvin/code_quality Python illustration of quality techniques
https://github.com/jdl-mit-alum/code-quality C++ and Python: more code quality techniques
https://github.com/jlettvin/UnsignedLongLongLexer C++ for high-speed unit-tested atoi converter
https://github.com/jlettvin/RomanNumerals Python with exhaustive unit-testing
https://rawgit.com/jlettvin/JYL/master/seen.movement.html HTML5/javascript scientific paper annotation
http://rote.training Minimalistic web page dev with markdown
http://rawgit.com/jlettvin/Tubulin/master/bipolar.unique.path.html Three.js 3D model of retinal bipolar tubulin
https://rawgit.com/jlettvin/haiku/master/index.html Love for Unicode
6. JDL
Independent Projects
My principal personal project is modeling neuron operations and neuron system operations. This project forces me to
learn new languages and new technologies in the pursuit of adequate technology for illustrating my ideas. Some of these
models are shown in the samples (above).
Agile, Extreme, Remote, Waterfall, and all that...
I have read the Agile manifesto (http://agilemanifesto.org/, and https://www.agilealliance.org/agile101/the-agile-
manifesto/) and think it a very well thought out piece. It is useful for many projects. I consider "waterfall" to produce
better software under certain circumstances (complete provable code by design to acquire a Common Criteria EAL7), but
it requires foresight, budget, and long-term commitment to produce. When code just has to provably work (correctness
more important than time-to-market), waterfall produces better code.
Many organizations call themselves "agile" while burdening themselves with "agile tools" to aid managers which end up
soaking up far more than 50% of developer time when a whiteboard with sticky notes would be better. IMHO a more
valuable approach is to assign one agile pair the role of converting whiteboard changes during scrum, to manager tool
content after the fact. Assist the developers to do what developers do. That's what the agile manifesto proposes.
In addition, I have solid experience in remote pair programming where I demonstrated that development quality and
efficiency can be increased by an order of magnitude, leading to higher client satisfaction and reduced maintenance.
I love using remote screen/keyboard/mouse sharing like tmux, join.me, google hangouts, and audio/video conferencing
to reduce the wasted time and stress of commuting and increase productivity by ready access to personal books and
devices.
Education
MIT BS Physics. 1971-1976
Developed novel parabolic mirror for thesis.
University of Texas Health Science Center at Dallas. 1976-1977
Unfinished degree in Medicine/Biophysics
5
http://jonathan.lettvin.com Web presence
http://www.linkedin.com/in/jonathanlettvin Web presence
https://github.com/jlettvin github repository
http://lettvin.com/Jonathan/wiki/index.php/Writing_Samples unorganized points of interest
https://github.com/jlettvin/code_quality Python illustration of quality techniques
https://github.com/jdl-mit-alum/code-quality C++ and Python: more code quality techniques
https://github.com/jlettvin/UnsignedLongLongLexer C++ for high-speed unit-tested atoi converter
https://github.com/jlettvin/RomanNumerals Python with exhaustive unit-testing
https://rawgit.com/jlettvin/JYL/master/seen.movement.html HTML5/javascript scientific paper annotation
http://rote.training Minimalistic web page dev with markdown
http://rawgit.com/jlettvin/Tubulin/master/bipolar.unique.path.html Three.js 3D model of retinal bipolar tubulin
https://rawgit.com/jlettvin/haiku/master/index.html Love for Unicode