Nathan Keynes

Software Engineering

About

Nathan is a seasoned software engineering leader with a passion for accelerating software development through superior tooling, infrastructure, and a focus on system simplicity and developer experience.

He's currently employed at Shorthand, working on creating the next generation of innovative digital storytelling tools.

Research interests include: Programming language design and implementation, Software engineering tools, Computer vision, and Static analysis.

Open Source

GitHub

Fabr
Active development

2022-

Fabr

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
Maintenance

2004-

Lxdream

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
Maintenance

2007-

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) ).

GitHub

Dedex
Needs work

2010-

A simple tool to convert Android .dex files back into Java classfiles.

Note this is currently broken with the latest Android versions and needs some work to update.

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.