Stephen R. Savitzky, Computer Curmudgeon <>
Highly experienced programmer looking for full- or part-time remote work.


Software toolmaker and craftsman, with decades of experience that includes Java microservices at Amazon, website and web infrastructure development with Java and Perl, embedded systems programming on Debian Linux, build management with git, GNU make and Bourne Shell, server monitoring with Nagios, class libraries in Java and C++, and small projects in Javascript, C, LISP, PHP, and Python. Masters degree in Computer Science from Stanford.

Experienced communicator, presenter, and mentor; introduced many leading-edge software concepts and methods to my employers: meta-assemblers and real-time kernels at Zilog; object-oriented programming and cross-platform development at Advansoft Research; application frameworks, open-source, Linux, CVS, git, XML, and web services at Ricoh Innovations. An IT person from India gave me the title of "guru". Helped two Amazon teams convert from Perforce to git. Currently writing a blog series called HTML for Poets.


Expert: Java, git, Perl, Bourne Shell, GNU make; Linux; web development: HTML, JSON, HTTP, ReST. Less recently, C, C++, assembler; XML.
Competent: PHP, Javascript, Python, Smalltalk, Lisp, Pascal, Fortran; Unix; LATEX, SIP; mentoring, tutoring; technology transfer; technical communication; audio recording and editing; dev/ops.


Apr 2017-present: Freeland, WA

Software Development Engineer
Mar 2013-Apr 2017: Amazon, Seattle, WA

ReSTful Engineer
Oct 2012-Mar 2013: Disney ID group, Seattle, WA (via KForce)

Sr. Software Architect
2011-2012: California Innovations, Cupertino, CA

Principal Software Engineer
2010-2011: E-Writer Systems, San Jose, CA
One of six researchers who went to help found a new subsidiary, Ricoh E-Writer Systems, turning what had been a research project into a product, the Ricoh eQuill electronic clipboard.

Chief Software Scientist
1992-2010: California Research Center, Menlo Park, CA:

Prior Experience

Scientist: Advansoft Research Corp., Santa Clara, CA
Principal Engineer: Zilog, Inc., Campbell, CA
Staff Engineer: Zilog, Inc., Cupertino, CA
Senior Engineering Programmer: American Microsystems, Inc., Santa Clara, CA


Education and Memberships

Stanford University: MS in Computer Science
Carleton College: BA in Mathematics

Memberships: ACM, Sigma Xi, Phi Beta Kappa, AAAS, EFF, SVLUG.

Addendum: Projects

(Team member, Amazon)

A small but complete internal web service, written in Java. Design, implementation, unit and integration testing, deployment, operations, maintenance.

(Team member, CIC)

Added automatic SIP-based audio conferencing to an interactive whiteboard project, greatly improving the user experience when sharing a whiteboard between two or more locations. Deployed and configured Nagios for monitoring the status and performance of both the 14 installed whiteboards and the associated web services.

(Team member, EWS)

An e-ink based tablet for business use, running Debian GNU/Linux internally and backed by a cloud service written in PHP. Built the prototype web service in Perl, designed the second version of the document transfer protocol (using git over SSH), and wrote the factory diagnostics in a combination of Bash and Python. Ported the routines that converted between PDF and the internal (image-based) document format from Python to PHP, and modified the dropbear ssh daemon to accept a large number (tens of thousands) of keys by replacing the flat authorized_keys file with a memcachedb ``no-SQL'' database.

(Implementor, CRC)

Co-invented (US patent 8,089,405: Applications for geographically coded access points) a way of encoding a geographic location, accurate to a couple of feet, in 9 alphanumeric (base-60) characters so that it can be incorporated into a WiFi SSID string for use as an indoor GPS replacement. Implemented the algorithm both in Perl as a module and CGI, and in JavaScript as a Google Maps mashup.

(Team lead, CRC)

Designed PIA, an experimental server-side scripting language with XML syntax and functional programming semantics. Initially implemented in Perl, re-implemented in Java, and eventually ported to C++. Convinced Ricoh to become the first Japanese company to release an open-source software project. Supervised the development of a C implementation (cPIA, available on SourceForge). Note that this project was actually started before XML, using an SGML syntax that was actually considerably simpler and more user-friendly. It was roughly contemporary with PHP.

PIA was used to implement a form-processing system that included such standard business forms as vacation requests, timecards, expense reports, and so on. It was written in 1998 and remained in use with only minimal maintenance for a decade, until a series of Java upgrades introduced incompatibilities that would have taken researchers away from other projects to fix. Administrative personnel were able to easily create new forms. It was eventually replaced by forms in the Metadot intranet portal, which most users agreed were less convenient.

Another unique (for its time) feature of the PIA is that it uses HTML elements as data structures, e.g. by treating DL elements and tables as associative arrays, and entities as variables. Unlike most such systems, it stores filled-out forms as digitally-signed documents rather than as database entries.

(Team lead, CRC)

Led a three-person team in developing a C++ programming framework for building an application that remotely monitors copiers and FAX machines. Introduced object-oriented programming and frameworks to Ricoh. Technology transfer included organizing and co-teaching a the equivalent of graduate-level 10-week class. Cross-platform on Windows NT and Linux, and included GUI front ends for web and X, generated from the same source code. Wrote a ``documentation generator'' (in Perl, predating JavaDoc by several years) to create the transparencies used in the course from the C++ header files. Later extended the documentation generator to include Perl, Python, and PHP.

(Sole developer, Advansoft)

A C++ class library that includes arrays, hash tables, run-time class descriptors, X-based graphics, Motif-based GUI wrapper objects, and a self-describing object-oriented file format. Used internally on three projects: a data analysis and display program, an IC-tester utility, and a test-case generator for a compiler.

RD3, RD7, RWi
(Consultant, HyperSpace Engineering)

A series of three MS-DOS operating system shells (similar to X-tree), each capable of reading (and in one case writing) disks written by another operating system as well as MS-DOS (Perkin Elmer 3500, Idris, and iRMX86 respectively). These were done as a spare-time consulting project; I received royalties on each copy sold. The implementation was in C and included an object-oriented, text-based user-interface toolkit; I also implemented a subset of the curses library and emulators for the three different filesystems. The menus, manual, and online help were all generated from the C source code.

Assemblers, linker
(Project leader, Zilog)

Sole developer of the linker and cross-assemblers for two of Zilog's three microprocessor families, and project leader for the third. The assemblers were written in C, portable between MS-DOS and Unix, and entirely table-driven; the third assembler was completed by a junior programmer in a matter of weeks. The linker was an early implementation of the IEEE standard for microprocessor object files, and was unique in allowing a mix of word lengths (up to 256 bits) and address ranges in a single project.

(Project leader, Zilog)

Designed ZRTS (Zilog Real-Time Software), a real-time operating system kernel for the Z8000 microprocessor. Implemented the task-switching and message-passing microkernel, logical I/O system, and terminal driver; other device drivers were done by team members. ZRTS was moderately successful both inside and outside of Zilog.

(Sole developer, AMI)

Wrote most of the software for AMI's 6800-based Microprocessor Development Center including the ROM monitor, bootstrap loader, debugger, and text editor, all in 6800 assembler. Added macros to the assembler. The text editor was written using object-oriented macros, and included variable length strings with garbage collection.

CD: Coffee, Computers, and Song!
(singer/songwriter, engineer, producer, publisher)

Did everything for this CD but the manufacturing and artwork, using open source tools: Makefiles, perl and shell scripts, LaTeX, and Audacity. The web page, track list, disk table of contents, and songbook are all made from the same set of source files.

Interesting Places

``Interesting Places for Kids on the Web'' was an early personal website that was listed as one of the top 100 websites in 1995, and widely referenced both online and in print. Part of the Ricoh website, it drew traffic to the corporate site in the early years of the commercial Web. Included ``Notes, Advice and Warnings for Kids on the Web''.

Steve Savitzky 2018-06-21