# -*- org-export-html-auto-postamble:nil -*-
#+TITLE:   Eric Schulte
#+OPTIONS: toc:t num:nil ^:nil
#+STARTUP: hideblocks
#+HTML_HEAD: <link rel="stylesheet" href="data/stylesheet.css" type="text/css">
#+HTML_HEAD: <script type="text/javascript" src="data/homepage.js">

# font
#+HTML: <link href='http://fonts.googleapis.com/css?family=Ubuntu' rel='stylesheet' type='text/css'/>

# me
#+HTML: <a href="http://eschulte.github.io/gpolygon/?image=http://cs.unm.edu/~eschulte/data/eric-schulte.jpg" title="right click to see evolved approximation"><canvas id="me" width="300" height="300"></div></a>

# contact
#+HTML: <div id="contact"><tt>eschulte-at-cs.unm.edu</tt></div>

# PGP key
#+HTML: <div id="pgp"><a href="data/eschulte-key.txt" title="PGP Key"><tt>FA8D C2C3 E8A0 A749 34CD  9DCF 3C1B 8581 614C A05D</tt></a></div>

# Add the following to the <body> tag after export.
#   onload="setup();" 

** Research
   :CUSTOM_ID: research

My work treats software as an evolved system and yields novel
solutions to difficult software engineering problems.  In my
dissertation, I have developed systems that automatically fix bugs in
off-the-shelf software, patch exploits in closed source binaries,
generate diverse implementations of a software specification, and
reduce the energy consumption of benchmark programs by 20% as compared
to the best available compiler optimizations.

See my Research Statement for more information.

** Publications
   :CUSTOM_ID: publications

- 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, Westley Weimer, Stephanie Forrest. _Repairing Security
  Vulnerabilities in the NETGEAR Router Binary_ /Submitted December
  2013/ (HTML)

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

- Eric Schulte, Zachary P. Fry, Ethan Fast, Westley Weimer, Stephanie
  Forrest.  _Software Mutational Robustness_ /Genetic Programming and
  Evolvable Machines 2013/ (arXiv, Springer, PDF, Bibtex)

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

** Background
   :CUSTOM_ID: background

- As of July 2014 I have completed my degree at the University of New
  Mexico and accepted a position at GrammaTech.
- From August 2009 through July 2014 I was enrolled as a doctoral
  student at the University of New Mexico as a member of Stephanie
  Forrest's Adaptive Computation Group.
- For the five years previous to graduate school, I was employed by
  Mitre, a Federally Funded Research and Development Center.  During
  that time I was promoted to the position of /Senior AI Engineer/ and
  played a key technical role supporting project Argus(PDF).
- I completed my undergraduate studies at Kenyon College with a
  semester at the Budapest semester in Mathematics.  I graduated with
  a BA in mathematics and a minor in philosophy.

** Software
   :CUSTOM_ID: software

I've written, maintained or significantly contributed to the following
software which ranges from large open-source projects to small

- Babel adds /literate programming/ and /reproducible research/
  functionality to Org-mode, a major mode of the Emacs text editor.
- Emacs Starter Kit is a structured extensible default configuration
  for Emacs implemented using literate Org-mode files.
- Rinari is a /Ruby on Rails/ minor mode for Emacs.
- Manipulation of ELF files:
  - elf a CLOS based API for Elf file manipulation in Common Lisp
  - rw-elf a simpler C library for ELF file manipulation
- Manipulation of C-language (and other) Abstract Syntax Trees:
  - clang-mutate manipulates C-family ASTs with Clang
  - cil-mutate manipulates C Intermediate Language ASTs with CIL
  - llvm-mutate manipulates LLVM IR with an LLVM compiler pass
- DELTA-DEBUG is a Common Lisp delta debugging implementation.
- GRAPH is a Common Lisp library for graphs manipulation and analysis.
- 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.
- tracer is a simple =ptrace= based utility for tracing the execution
  of x86 assembly code.
- ONCs is a prototype fully distributed lisp virtual machine.
- gpolygon is a toy steady state genetic algorithm which matches
  polygons to images.  It runs entirely in the browser making heavy
  use of the HTML5 canvas element.

# - el-go is an Emacs mode for playing the game of Go.
# - data-wrapper wraps text data in a portable shell script enable
#   sharing of both data and analysis
# - ixm-collector allows IXM's to report back to central collector
# - ixm-repl allows interaction with a tribe of IXM from within a
#   Clojure repl

** Course Notes
   :CUSTOM_ID: course-notes

- Spring 2013
  - =biol517= Basic Graduate Evolution (notes)
- Spring 2011
  - =cs591= Cognitive and Comp Neuroscience (notes)
    - final ego-machine.pdf (code, video)
- Fall 2010
  - =cs547= Neural Networks (notes)
    - final paper cs547.schulte.final-project.pdf
- Comprehensive Exam (notes)
- Spring 2010
  - =cs500= Theory of Computation (notes)
  - =cs550= Programming Languages & Systems (notes)
    - final presentation schulte.non-von-neumann-computation.pdf
    - a concurrent propagator system implemented in Clojure
  - =cs691= Robust Physical Computation Seminar (notes)
  - =cs691= Adaptive Reading Group (notes)
- Fall 2009
  - =cs558= Software Foundations (notes)
  - =cs587= Advanced Operating Systems (notes)
    - final paper bfs-v-cfs_groves-knockel-schulte.pdf
  - =cs591= Robust Physical Computation (notes)
  - =cs691= Adaptive Reading Group (notes)

** Curriculum Vitae
   :CUSTOM_ID: curriculum-vitae

My CV (as of the summer of 2014) is available at eric-schulte-cv.pdf.

** COMMENT publishing

This code is used to publish this page to the cs.unm.edu webserver.
For more information on publishing Org-mode pages see the Publishing
section of the Org-mode manual.

#+begin_src emacs-lisp :results silent
  (setq homepage-dir (file-name-directory (or load-file-name buffer-file-name)))
  (unless (boundp 'org-publish-project-alist)
    (setq org-publish-project-alist nil))
  ;; the main html page
  (add-to-list 'org-publish-project-alist
                  :base-directory ,homepage-dir
                  :base-extension "org"
                  :publishing-directory "/ssh:eschulte@moons.cs.unm.edu:~/public_html/"
                  :index-filename "eric-schulte.org"
                  :html-postamble ; replaces the auto-generated postamble
                  "<div class=\"clear-fix\"></div>
  <div id=\"doc-info\">
    This document is created
    using <a href=\"http://orgmode.org/\">Org-mode</a>
    and <a href=\"http://orgmode.org/worg/org-contrib/babel/\">Org-babel</a>.
    The original plain-text document is available
    at <a href=\"eric-schulte.org\">eric-schulte.org</a>
    (<a href=\"eric-schulte.org.html\" title=\"how this document looks from inside Emacs\">preview</a>).
                  :style "<link rel=\"stylesheet\"href=\"data/stylesheet.css\"type=\"text/css\">"
                  :publishing-function (org-html-publish-to-html org-org-publish-to-org)
                  :plain-source t
                  :htmlized-source t))
  ;; the contents of the data/ directory, css, images, etc...
  (add-to-list 'org-publish-project-alist
                 :base-directory ,(expand-file-name "data" homepage-dir)
                 :base-extension "jpg\\|gif\\|png\\|pdf\\|css\\|bib\\|txt\\|js"
                  :publishing-directory "/ssh:eschulte@moons.cs.unm.edu:~/public_html/data/"
                  :publishing-function org-publish-attachment))
  ;; a single combined project to publish both html and supporting materials
  (add-to-list 'org-publish-project-alist
               '("homepage" :components
                 ("homepage-html" "homepage-data")))