#+TITLE: Dr. Eric Schulte #+OPTIONS: toc:t num:nil ^:nil #+startup: hideblocks #+html_head: #+html: #+html: #+html:
#+html: #+html: I am a software engineer in [[https://landing.google.com/engprod/][/Engineering Productivity/]] at Google. I was previously the /Director of Automated Software Engineering/ at [[https://grammatech.github.io][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 [[https://www.cs.unm.edu/~eschulte/dissertation][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 :PROPERTIES: :CUSTOM_ID: software-projects :END: 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 [[https://grammatech.github.io/prj/gtirb/][GTIRB]] intermediate representation for binaries supports an [[https://grammatech.github.io/prj/gtirb/#gtirb-ecosystem][ecosystem of tools]] for binary analysis and rewriting. | Tool | Description | |---------------------+---------------------------------------------------------------| | [[https://github.com/grammatech/ddisasm][DDisasm]] | Fast and accurate disassembler which produces GTIRB | | [[https://github.com/grammatech/gtirb-pprinter][GTIRB-PPrinter]] | Pretty print GTIRB to assembler or a binary executable | | [[https://grammatech.github.io/prj/gtirb-vscode/][GTIRB-VSCode]] | VSCode extension to read, navigate, and (re)write GTIRB files | | [[https://github.com/grammatech/gtirb-rewriting][gtirb-rewriting]] | Python API for rewriting GTIRB files | | [[https://github.com/grammatech/gtirb-ghidra-plugin][gtirb-ghidra-plugin]] | Import/Export GTIRB files to/from Ghidra | - The [[https://grammatech.github.io/prj/sel/][Software Evolution Library]] (SEL) provides for the programmatic manipulation of programs. It builds on GitHub's [[https://tree-sitter.github.io/tree-sitter/][tree-sitter]] parsers to provide support for dozens of programming languages. SEL is available for [[https://github.com/grammatech/sel][Common Lisp]] and [[https://pypi.org/project/asts/][Python]]. - [[https://grammatech.gitlab.io/Mnemosyne/docs/][Mnemosyne]] is an automated software development assistant. It suggests code, tests, and types directly in your IDE. - [[https://github.com/grammatech/resolve][Resolve]] is a tool for AST tree difference calculation for accurate differencing and merging of software. [[https://mergeresolver.github.io][MergeResolver]] is a tool for automated merge conflict resolution that builds on Resolve. - [[http://eschulte.github.com/graph/][GRAPH]] is a Common Lisp library for graphs manipulation and analysis. - [[http://orgmode.org/worg/org-contrib/babel/index.html][Babel]] adds /literate programming/ and /reproducible research/ functionality to [[http://orgmode.org/][Org-mode]], a major mode of the [[http://www.gnu.org/software/emacs/][Emacs]] text editor. - [[https://github.com/eschulte/markdown-mime][Markdown-Mime]] provides WYSiWYG HTML email authoring for [[http://www.gnu.org/software/emacs/][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). - [[http://eschulte.github.io/curry-compose-reader-macros/][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 [[https://gist.github.com/eschulte/6167923][curry-compose.el]]. - [[http://rinari.rubyforge.org/][Rinari]] is a /Ruby on Rails/ minor mode for Emacs. - [[http://eschulte.github.io/oncs/README.html][ONCs]] is a prototype fully physically distributed lisp virtual machine. * Publications :PROPERTIES: :CUSTOM_ID: publications :END: - Eric Schulte and Vlad Folts and Michael Brown _A Broad Comparative Evaluation of x86-64 Binary Rewriters_ /Cyber Security Experimentation and Test Workshop 2022/ ([[https://arxiv.org/pdf/2203.13231][PDF]], [[file:data/lifter-eval.bib][Bibtex]], [[file:data/cset22-16-slides.pdf][Slides]], [[https://cset22.isi.edu/videos/session4/binaryrewriters.mp4][Video]], [[https://gitlab.com/GrammaTech/lifter-eval][Repo]], [[https://gitlab.com/GrammaTech/lifter-eval-artifacts][Data set]]) - Antonio Flores-Montoya, Eric Schulte _Datalog Disassembly_ /29th USENIX Security Symposium 2020 (*distinguished paper*)/ ([[https://www.usenix.org/system/files/sec20fall_flores-montoya_prepub_0.pdf][PDF]], [[file:data/ddisasm.bib][Bibtex]], [[https://github.com/grammatech/ddisasm][Software]]) - Eric Schulte, Antonio Flores-Montoya. _Systems and/or methods for generating reassemblable disassemblies of binaries using declarative logic_ /U.S. Patent US010705814B2 2020/ ([[file:data/US10705814.pdf][PDF]], [[file:data/datalog-disassembly-patent.bib][Bibtex]]) - Eric Schulte, Suan Yong, Dave Melski. _Inuring: Live Attacker-guided Repair_ /Workshop on Forming an Ecosystem Around Software Transformation 2019/ ([[file:data/feast-2019-inuring.pdf][PDF]], [[file:data/feast-2019-inuring.bib][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*)/ ([[https://arxiv.org/pdf/1901.02819.pdf][PDF]], [[file:data/bug-injector.bib][Bibtex]], [[https://zenodo.org/record/3341585#.XTCQinVKiV4][Data set]]) - Eric Schulte, Jonathan Dorn, Antonio Flores Montoya, Aaron Ballman, Tom Johnson _GTIRB: Intermediate Representation for Binaries_ /arXiv Pre-Print 2019/ ([[https://arxiv.org/pdf/1907.02859.pdf][PDF]], [[file:data/gtirb.bib][Bibtex]]) - Bill Langdon, /et. al./ _The State and Future of Genetic Improvement_ /ACM SIGSOFT Software Engineering Notes/ ([[https://arxiv.org/pdf/1907.03773][PDF]], [[file:data/gi-2019.bib][Bibtex]]) - Eric Schulte, Contributors _Software Evolution Library_ /Manual 2018/ ([[https://github.com/GrammaTech/sel][Library Source]], [[https://grammatech.github.io/sel/][Manual HTML]], [[file:data/sel-manual.bib][Bibtex]]) - Eric Schulte, Jason Ruchti, Matt Noonan, David Ciarletta, Alexey Loginov _Evolving Exact Decompilation_ /Workshop on Binary Analysis Research 2018/ ([[file:data/bed.pdf][PDF]], [[file:data/bed.bib][Bibtex]], [[http://storm-country.com/blog/evo-deco][Blog post]]) - Deborah Katz, Jason Ruchti, Eric Schulte _Using Recurrent Neural Networks for Decompilation_ /Software Analysis, Evolution and Reengineering (SANER) 2018/ ([[file:data/katz-saner-2018-preprint.pdf][PDF]], [[file:data/rnn-decomp.bib][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/ ([[file:data/devops-gi.pdf][PDF]], [[file:data/devops-gi.bib][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/ ([[https://arxiv.org/pdf/1803.03453][PDF]], [[file:data/surprising-creativity-of-digital-evolution.bib][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/ ([[file:data/musynth-ssbse-2017.pdf][PDF]], [[file:data/musynth-ssbse-2017.bib][Bibtex]]) - Eric Schulte, Michael McDougal, Dave Melski. _Software Transformation: Applications, Tools, Challenges, and Program Representation_ /Workshop on Forming an Ecosystem Around Software Transformation 2016/ ([[file:data/feast-2016-software-transformation.pdf][PDF]], [[file:data/feast-2016.bib][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*)/ ([[file:data/netgear-repair-preprint.pdf][PDF]], [[file:data/gi-netgear-2015.bib][Bibtex]]) - Eric Schulte. _Neutral Networks of Real-World Programs and their Application to Automated Software Evolution_ /Ph.D. Dissertation, University of New Mexico 2014/ ([[https://www.cs.unm.edu/~eschulte/dissertation/schulte-dissertation.pdf][PDF]], [[https://www.cs.unm.edu/~eschulte/dissertation/schulte-dissertation.html][HTML]], [[file:data/schulte-dissertation.bib][Bibtex]] [[https://www.cs.unm.edu/~eschulte/dissertation/schulte-dissertation-presentation.pdf][slides]], [[https://www.cs.unm.edu/~eschulte/dissertation][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/ ([[file:data/asplos265-schulte.pdf][PDF]], [[file:data/asplos-14-schulte.pdf][slides]], [[file:data/goa.bib][Bibtex]]) - Eric Schulte, Zachary P. Fry, Ethan Fast, Westley Weimer, Stephanie Forrest. _Software Mutational Robustness_ /Genetic Programming and Evolvable Machines 2013/ ([[http://arxiv.org/abs/1204.4224][arXiv]], [[http://link.springer.com/article/10.1007/s10710-013-9195-8][Springer]], [[http://arxiv.org/pdf/1204.4224v3][PDF]], [[file:data/schulte2013robust.bib][Bibtex]], [[https://arxiv.org/abs/1901.02533][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/ ([[file:data/schulte2013embedded.pdf][PDF]], [[file:data/embedded.bib][Bibtex]], [[file:data/asplos-13-schulte.pdf][slides]]) - Eric Schulte, Dan Davison, Tom Dye, Carsten Dominik. _A Multi-Language Computing Environment for Literate Programming and Reproducible Research_ /Journal of Statistical Software/ ([[http://www.jstatsoft.org/v46/i03][JSS site (supplemental materials)]], [[http://www.jstatsoft.org/v46/i03/paper][PDF]], [[http://www.jstatsoft.org/v46/i03/bibtex][Bibtex]]) - Eric Schulte, Dan Davison. _Active Documents with Org-Mode_ /Computing in Science & Engineering 2011/ ([[file:data/CISE-13-3-SciProg.pdf][PDF]], [[file:data/CISE-13-3-SciProg.bib][Bibtex]], [[https://github.com/eschulte/CiSE][source]]) - Eric Schulte, David Ackley. _Physical Evolutionary Computation_ /University of New Mexico TR-CS-2011-01/ ([[http://cs.unm.edu/~treport/tr/11-04/paper-2011-01.pdf][PDF]], [[file:data/tr-cs-2011-01.bib][Bibtex]]) - Eric Schulte, Stephanie Forrest, Westley Weimer. _Automated Program Repair through the Evolution of Assembly Code_ /Automated Software Engineering (ASE) Short Paper 2010/ ([[file:data/ase2010-asm-preprint.pdf][PDF]], [[file:data/ase2010-asm.bib][Bibtex]]). A summary is presented in the following [[file:data/asm-gp-presentation.pdf][presentation]] and [[file:data/asm-gp-poster.pdf][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/ ([[file:data/argus-pub.bib][Bibtex]]) * Botanical Drawing :PROPERTIES: :CUSTOM_ID: botanical-drawing :END: #+COMMENT: cd drawings/; mogrify -format gif -thumbnail 100x100 *.jpeg #+BEGIN_EXPORT html #+END_EXPORT * Curriculum Vitae :PROPERTIES: :CUSTOM_ID: cv :END: My CV is available at [[file:data/eric-schulte-cv.pdf][eric-schulte-cv.pdf]].