Dr. Eric Schulte
Table of Contents
I am a software engineer in Engineering Productivity at Google. I was previously the Director of Automated Software Engineering at GrammaTech.
I build tools for people who work with software; from helping developers write and maintain their own projects to helping reverse engineers understand third-party binaries. My graduate work was motivated by an understanding of software as an evolved system that displays many properties previously identified in biological systems. This complex systems view of the software ecosystem continues to inform my professional work.
Software Projects
I've written, managed, maintained, or significantly contributed to the following software which includes large open-source projects, projects currently under active development at GrammaTech, and small utilities (presented in order of significance and activity).
The GTIRB intermediate representation for binaries supports an ecosystem of tools for binary analysis and rewriting.
Tool Description DDisasm Fast and accurate disassembler which produces GTIRB GTIRB-PPrinter Pretty print GTIRB to assembler or a binary executable GTIRB-VSCode VSCode extension to read, navigate, and (re)write GTIRB files gtirb-rewriting Python API for rewriting GTIRB files gtirb-ghidra-plugin Import/Export GTIRB files to/from Ghidra - The Software Evolution Library (SEL) provides for the programmatic manipulation of programs. It builds on GitHub's tree-sitter parsers to provide support for dozens of programming languages. SEL is available for Common Lisp and Python.
- Mnemosyne is an automated software development assistant. It suggests code, tests, and types directly in your IDE.
- Resolve is a tool for AST tree difference calculation for accurate differencing and merging of software. MergeResolver is a tool for automated merge conflict resolution that builds on Resolve.
- GRAPH is a Common Lisp library for graphs manipulation and analysis.
- Babel adds literate programming and reproducible research functionality to Org-mode, a major mode of the Emacs text editor.
- Markdown-Mime provides WYSiWYG HTML email authoring for Emacs
message mode, making it easy to send the HTML emails that most
people seem to be expecting these days (while including a legible
text/plain
alternative for those with class). - CURRY-COMPOSE-READER-MACROS for concise expression of function partial application and composition in Common Lisp. I've also implemented something similar for Emacs Lisp in curry-compose.el.
- Rinari is a Ruby on Rails minor mode for Emacs.
- ONCs is a prototype fully physically distributed lisp virtual machine.
Publications
- Eric Schulte and Vlad Folts and Michael Brown A Broad Comparative Evaluation of x86-64 Binary Rewriters Cyber Security Experimentation and Test Workshop 2022 (PDF, Bibtex, Slides, Video, Repo, Data set)
- Antonio Flores-Montoya, Eric Schulte Datalog Disassembly 29th USENIX Security Symposium 2020 (distinguished paper) (PDF, Bibtex, Software)
- Eric Schulte, Antonio Flores-Montoya. Systems and/or methods for generating reassemblable disassemblies of binaries using declarative logic U.S. Patent US010705814B2 2020 (PDF, Bibtex)
- Eric Schulte, Suan Yong, Dave Melski. Inuring: Live Attacker-guided Repair Workshop on Forming an Ecosystem Around Software Transformation 2019 (PDF, Bibtex)
- Vineeth Kashyap, Jason Ruchti, Lucja Kot, Emma Turetsky, Rebecca Swords, Shih An Pan, Julien Henry, David Melski, Eric Schulte Automated Customized Bug-Benchmark Generation Source Code Analysis and Manipulation (SCAM) 2019 (distinguished paper) (PDF, Bibtex, Data set)
- Eric Schulte, Jonathan Dorn, Antonio Flores Montoya, Aaron Ballman, Tom Johnson GTIRB: Intermediate Representation for Binaries arXiv Pre-Print 2019 (PDF, Bibtex)
- Bill Langdon, et. al. The State and Future of Genetic Improvement ACM SIGSOFT Software Engineering Notes (PDF, Bibtex)
- Eric Schulte, Contributors Software Evolution Library Manual 2018 (Library Source, Manual HTML, Bibtex)
- Eric Schulte, Jason Ruchti, Matt Noonan, David Ciarletta, Alexey Loginov Evolving Exact Decompilation Workshop on Binary Analysis Research 2018 (PDF, Bibtex, Blog post)
- Deborah Katz, Jason Ruchti, Eric Schulte Using Recurrent Neural Networks for Decompilation Software Analysis, Evolution and Reengineering (SANER) 2018 (PDF, Bibtex)
- Benoit Baudry, Nicolas Harrand, Eric Schulte, Chris Timperley, Shin Hwei Tan, Marija Selakovic, Emamurho Ugherughe A spoonful of DevOps helps the GI go down Genetic Improvement Workshop 2018 (PDF, Bibtex)
- Joel Lehman, et. al. The Surprising Creativity of Digital Evolution: A Collection of Anecdotes from the Evolutionary Computation and Artificial Life Research Communities arXiv 2018 (PDF, Bibtex)
- Vineeth Kashyap, Rebecca Swords, Eric Schulte, David Melski. MuSynth: Program Synthesis via Code Reuse and Code Manipulation International Symposium on Search Based Software Engineering 2017 (PDF, Bibtex)
- Eric Schulte, Michael McDougal, Dave Melski. Software Transformation: Applications, Tools, Challenges, and Program Representation Workshop on Forming an Ecosystem Around Software Transformation 2016 (PDF, Bibtex)
- Eric Schulte, Westley Weimer, Stephanie Forrest. Repairing COTS router firmware without access to source code or test suites: A case study in evolutionary software repair Workshop on Genetic Improvement 2015 (best paper) (PDF, Bibtex)
- Eric Schulte. Neutral Networks of Real-World Programs and their Application to Automated Software Evolution Ph.D. Dissertation, University of New Mexico 2014 (PDF, HTML, Bibtex slides, more)
- Eric Schulte, Jonathan Dorn, Stephen Harding, Stephanie Forrest, Westley Weimer. Post-compiler Software Optimization for Reducing Energy Architectural Support for Programming Languages and Operating Systems (ASPLOS) 2014 (PDF, slides, Bibtex)
- Eric Schulte, Zachary P. Fry, Ethan Fast, Westley Weimer, Stephanie Forrest. Software Mutational Robustness Genetic Programming and Evolvable Machines 2013 (arXiv, Springer, PDF, Bibtex, followup work by Harrand et al.)
- Eric Schulte, Jonathan DiLorenzo, Westley Weimer, Stephanie Forrest. Automated Repair of Binary and Assembly Programs for Cooperating Embedded Devices Architectural Support for Programming Languages and Operating Systems (ASPLOS) 2013 (PDF, Bibtex, slides)
- Eric Schulte, Dan Davison, Tom Dye, Carsten Dominik. A Multi-Language Computing Environment for Literate Programming and Reproducible Research Journal of Statistical Software (JSS site (supplemental materials), PDF, Bibtex)
- Eric Schulte, Dan Davison. Active Documents with Org-Mode Computing in Science & Engineering 2011 (PDF, Bibtex, source)
- Eric Schulte, David Ackley. Physical Evolutionary Computation University of New Mexico TR-CS-2011-01 (PDF, Bibtex)
- Eric Schulte, Stephanie Forrest, Westley Weimer. Automated Program Repair through the Evolution of Assembly Code Automated Software Engineering (ASE) Short Paper 2010 (PDF, Bibtex). A summary is presented in the following presentation and poster.
- Paul Lehner, Charles Worrell, Chrissy Vu, Janet Mittel, Stephen Snyder, Eric Schulte, Warren Greiff, An Application of Document Filtering in an Operational System Information Processing & Management 2010 (Bibtex)
Botanical Drawing
Curriculum Vitae
My CV is available at eric-schulte-cv.pdf.