Nathan Keynes
Resumé

Topics

Experience

Shorthand Mar 2020 - Present R&DTypescript Web React C++ Computer Vision Machine Learning AWS 3D VP of Technology Jul 2021 - Present

Reporting to the CEO, leading R&D, technology strategy, and architecture for Shorthand's digital storytelling platform with a focus on time-to-market and product quality.

  • Content Extraction - Developed novel algorithms for document content extraction from HTML and PDF documents, enabling automatic conversion to Shorthand stories.
Senior Principal Engineer Mar 2020 - Jul 2021

General engineering and R&D across the Shorthand digital storytelling platform, initially focusing on improving platform stability and robustness, then developing new storytelling features.

  • 3D Image Generation - Developed a monocular 3D scene generation system, building on work from Virginia Tech et al, applying depth estimation and inpainting models to enable high-resolution browser-based rendering for immersive storytelling experiences.
  • Concurrent Editing - Introduced fully concurrent document editing capabilities, enabling real-time collaboration for multiple users using a CRDT-based approach.
Oracle Mar 2010 - Mar 2020 R&DC++ LLVM Static Analysis Compilers Java Web PL/SQL Build Sysadmin Consulting Research Engineer - Oracle Labs Feb 2019 - Mar 2020

Continued as project lead for the unified Web vulnerability detection project.

Principal Research Engineer - Oracle Labs Jan 2017 - Feb 2019

Led the PL/SQL and Web vulnerability detection projects, applying static analysis techniques and the Parfait/LLVM framework to precisely detect and report security vulnerabilities across the application stack from Java web tier to database to native C/C++.

  • Parfait-PL/SQL Integration - Developed and maintained the interface into the PL/SQL compiler, enabling static analysis of PL/SQL code for security vulnerabilities.
  • Taint Analysis FFI - Extended taint analysis support for foreign function interfaces, enabling full-stack vulnerability detection from Java to PL/SQL to C/C++.
Senior Development Manager - Oracle Labs Nov 2015 - Jan 2017

Managed Oracle Labs Australia engineering team (8 reports across 5 projects) and served as technical lead on 3 projects. Management responsibilities included people management, project management for engineering activities, and establishing and maintaining development processes and standards across all projects.

Senior Development Manager - Product Dev. Jul 2011 - Nov 2015

Managed and served as technical lead for the Parfait team (6 reports), reporting into the product development organization. Responsibilities included people management, overall project and product management for the Parfait static analysis suite, and interfacing with internal customer representatives and other stakeholders.

  • Symbolic Analysis Enhancements - Developed major improvements to symbolic analysis for buffer-overflow detection.
  • Custom Bug Analyses - Developed specialized custom bug detection analyses and transforms for internal customer groups, addressing product-specific security and quality requirements.
  • Team Growth - Successfully expanded the Parfait team from 3 to 6 members while expanding the project scope to include Java analysis.
Senior Member of Technical Staff - Oracle Labs Mar 2010 - Jul 2011

Continued design and implementation of the Parfait static code analysis tool under Oracle Labs.

  • Path-Sensitive Dataflow Framework - Developed a novel framework for path-sensitive dataflow analysis, successfully applied to detection of memory-leak and use-after-free issues, improving detection rates by 60%.
  • Interprocedural Analysis - Created a general framework for interprocedural summary generation and application, enabling more accurate cross-function analysis.
  • Infrastructure/System Administration - Deployed and maintained project support infrastructure including testing frameworks, bug tracking, wiki, and continuous integration across all supported platforms (Solaris, Linux, OS X, OpenBSD, FreeBSD, Windows).
Sun Microsystems Mar 2008 - Mar 2010 R&DC++ Python LLVM Static Analysis Compilers Build Sysadmin Postdoctoral Engineer - Sun Labs

Designed and implemented core features for the Parfait static code analysis tool, on top of the LLVM framework.

  • Buffer-Overflow Analysis - Implemented partial-evaluation based analysis for buffer-overflow detection, providing a precise and efficient security analysis.
  • Build Integration - Developed build integration tools capable of supporting real codebases such as Solaris, enabling static analysis of large-scale production systems with real-world results.
E-Health Research Center (CSIRO) May 2006 - Mar 2008 Java C++ 3D J2EE Swing Sysadmin Senior Software Engineer

Software architecture, design, and implementation focused on productizing and supporting ongoing research in e-Health, working with a small team of engineers and researchers. Additional responsibilities included software process development and Unix system administration.

Virgin Blue Jan 2003 - May 2006 Java J2EE Web PL/SQL Oracle RDBMS Reverse Engineering WebMacro Sysadmin Software Developer

Designed, developed, and implemented a wide range of software projects as part of a small development team, with a focus on system integration, web services, e-commerce, airline systems, and internal development and language support. Additional responsibilities included project deployments, system administration, and general IT troubleshooting.

Sun Microsystems Jan 2001 - Jun 2001 C++ Emulation Compilers Intern

Based for 3 months in Mountain View, CA, and extended for a further 3 months in Brisbane, Australia. As part of the Walkabout binary translation project, developed a system to produce generic emulators from existing machine specifications, as well as preparing the overall project source for release. Resulting emulators were successfully able to execute real (user-mode) programs.

Education

University of Queensland 1997 - 2000 Smalltalk C C++ JavaCompilers Bachelor of Information Technology (Honours I)

GPA 6.5. Honours project focused on lexical conflict resolution in an LALR(1) parser/scanner generator. The core insight was that evaluating the parser lookahead by one additional token (extending to LALR(2)) provides exactly the set of tokens needed to produce lexical start states.

Tutoring - Tutored first year Smalltalk and Java, second year C/Unix, and third year Compilers.

Open Source Projects

GitHub Fabr 2022- Build Typescript Javascript Compilers

Fabr is a build orchestration tool designed to provide fast, accurate builds, even in complex scenarios involving multiple languages, cross-compilation, and multi-pass builds, based on long experience with build integration.

Fabr development is currently focused on the JS/TS ecosystem, and supports a broad range of build scenarios.

GitHub Lxdream 2004- C Emulation Reverse Engineering SH4Compilers

A portable SEGA Dreamcast emulator for Linux and macOS. Lxdream was (to the best of my knowledge) the first open source Dreamcast emulator to support the full hardware platform, including dynamic translation of the SH4 CPU + 3D acceleration of the PVR2 engine.

GitHub ELR 2007- C++ Compilers

An enhanced LR parser implementation that resolves lexical ambiguities through integrated lexical and syntactic analysis. The main advantages of this approach are that it uses a single specification for both lexical and grammatical rules, and it can automatically resolve lexical ambiguities using the parser state (where otherwise you would need to define manual start states in the scanner along with callbacks from the parser rules).

As a side-benefit, the parser also supports full LR(1) parsing (not just LALR(1) ).

Selected Publications

Xiao, Y., Zhao, Y., Allen, N., Keynes, N., Yao, D. and Cifuentes, C., 2022, October. Industrial Strength Static Detection for Cryptographic API Misuses. In 2022 IEEE Secure Development Conference (SecDev) (pp. 61-62). IEEE.
Gauthier, F., Keynes, N., Allen, N., Corney, D. and Krishnan, P., 2018, September. Scalable static analysis to detect security vulnerabilities: Challenges and solutions. In 2018 IEEE Cybersecurity Development (SecDev) (pp. 134-134). IEEE.
Winter, K., Zhang, C., Hayes, I.J., Keynes, N., Cifuentes, C. and Li, L., 2013, October. Path-sensitive data flow analysis simplified. In International Conference on Formal Engineering Methods (pp. 415-430). Berlin, Heidelberg: Springer Berlin Heidelberg.
Cifuentes, C., Keynes, N., Li, L., Hawes, N., Valdiviezo, M., Browne, A., Zimmermann, J., Craik, A., Teoh, D. and Hoermann, C., 2011, September. Static deep error checking in large system applications using parfait. In Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering (pp. 432-435).
Cifuentes, C., Keynes, N., Li, L., Hawes, N. and Valdiviezo, M., 2012. Transitioning Parfait into a development tool. IEEE Security & Privacy, 10(3), pp.16-23.
Cifuentes, C., Hoermann, C., Keynes, N., Li, L., Long, S., Mealy, E., Mounteney, M. and Scholz, B., 2009, June. BegBunch: benchmarking for C bug detection tools. In Proceedings of the 2nd International Workshop on Defects in Large Software Systems, ISSTA 2009 (pp. 16-20).
Keynes, N., 2007. Better Parsing Through Lexical Conflict Resolution. Honours thesis, University of Queensland.