Nathan Keynes
Resumé
Topics
Experience
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.
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.
Continued as project lead for the unified Web vulnerability detection project.
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++.
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.
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.
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).
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.
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.
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.
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
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
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.
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.
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) ).
