Résumé of John Stracke

Contact Info

Current Status

I am employed as a Principal Software Engineer at Ocient. I am not looking for employment. When I do, I have the following constraints:

Technical Summary

Primary Languages
C/C++ (up through C++17), Java, Python, Common Lisp
Secondary Languages
Scala, Haskell, Standard ML, Erlang, Perl, many others
Operating Systems
Linux, Android, various commercial Unices
Software design, algorithm design, performance analysis, network programming, protocol design, object-oriented design, design patterns, compiler design, Web-based applications, Unix/Linux systems programming, unit testing
TCP/IP, sockets, ANTLR, Bison/Yacc, Flex/Lex, Apache, XML, HTML, CSS, SQL, pthreads, gcc, gdb, Android, Unix, Linux, JUnit, CPPUnit, gtest, Git, Mercurial, Perforce.


Employment history

Ocient, October 2022-present: Principal Software Engineer
Ocient produces a large-scale OLAP database. I have worked on various new features and performance improvements. Work is done in C++20.
Paradigm4, January-October 2022: Principal Software Developer
Paradigm4 produces an array-based database, targeted at life science applications. I worked on transaction improvements and a client for our REST API. Work was done in C++17.
Motional, November 2020 to January 2022: Principal Software Engineer
Motional develops software for self-driving cars. I started in the platform infrastructure team, working on middleware to let the various components communicate. Later, I helped design a new runtime framework, managing the various tasks that make up the software stack, and then moved to the team that was created to build that framework. Work was done in C++20, with some Python 3.
Smartsheet, April-November 2020: Senior SDE II
Designed and developed parts of a new product, called Datatables: a zero-management database that was designed to fit into the existing Smartsheet ecosystem. As a senior member of the team, I also participated in design reviews, guided less senior engineers, and helped management pick technical direction. Work was done in Java and SQL. The product, a multitenant SaaS service, is implemented with microservices, based on Micronaut, and runs on AWS Lambda (a serverless application framework). I applied compiler technologies to optimize execution of requests.
Google, April 2011 to April 2020: Senior Software Engineer
My last team at Google was working on a project called Longform, for writing and editing text with a stylus. The library was usable in various contexts; the first released product based on it is an enhancement to the ChromeOS virtual keyboard, to make ChromeOS tablets easier to use without a keyboard. Work was done in C++17, with some bits of C++20, and compiled to JavaScript Webassembly via emscripten.
Before that, I worked on QPX, which is the backend for Google Flights, as well as for many airline and third-party travel sites. QPX searches for flights and fares; it's a vast optimization problem. Some highlights of my work: Work was done in C++11/14 and Common Lisp.
ITA Software, 2008 to April 2011 (acquired by Google)
For a description of my work at ITA, see QPX, under Google, above.
Akamai, 2007: Senior Software Engineer
I worked on making one of Akamai's DNS servers multithreaded. Work was done in C++. I also ran an experiment with writing a DNS server in Erlang.
Endeca, 2004 to 2006: Principal Software Engineer
Endeca (since acquired by Oracle) sold an enterprise information access platform to help people search and analyze their information.
Centive, 2001 to 2004: Principal Software Engineer
Centive sold a platform for calculating complex commission plans for companies with millions of transactions per month.
eCal Corp., 1999 to 2001: Chief Scientist
eCal made Web-based calendaring software: a packaged server for the enterprise space, a hosted service for the consumer space.
Netscape, 1996 to 1999: Principal Software Engineer
I came to Netscape as part of the acquisition of InSoft (see below).
InSoft, 1993 to 1996: Senior Software Engineer
InSoft made enterprise videoconferencing and streaming media systems.
Analysis & Technology, Inc., 1992 to 1993: Software Engineer II
A&T was a naval contractor.
National Science Center Foundation, 1991 to 1992: Software Engineer
The NSCF sold computer-aided instruction software for algebra.


All Languages

I've used a lot of programming languages over the years. In chronological order, as best as I can remember, they are:

  1. BASIC
  2. 6809 machine language
  3. Logo
  4. Pascal
  5. 6502 machine language
  6. Prolog
  7. Shell script
  8. 68000 machine language
  9. 8086 machine language
  10. Forth
  11. HyperCard/HyperTalk
  12. Object Pascal
  13. Learning Logic Language
  14. Emacs Lisp
  15. C
  16. Common Lisp
  17. Fortran
  18. C++
  19. Java
  20. JavaScript
  21. PHP
  22. Perl
  23. PostScript
  24. SQL, PL/SQL
  25. Python
  26. Smalltalk
  27. Standard ML
  28. OCaml
  29. Scheme
  30. Haskell
  31. Erlang
  32. Ruby
  33. Go
  34. Scala
  35. Rust

Of course, I'm not listing things like HTML, only Turing-complete languages. SQL makes the list only because I used PL/SQL, too.