Emily C. Crutcher
Senior Software Engineer
Education:1999: MS, Computer Science, New York University, New York, NY
1997: BS, Computer Science, Wesleyan University, Middletown, CT
Highlights:
Architected and created an enterprise framework for UI creation using the GWT framework
Created UI for Equities Lab, a next generation stock analysis program
Designed and developed the 1.6 event system and the original internationalization system for the Google Web Toolkit (GWT)
Contributed many core GWT widgets, such as the Grid, SuggestBox, PushButton, and DatePicker widgets.
Created core GWT libraries in wide use throughout Google.
Created, guided and encouraged the GWT incubator, an online community to create widgets and test new ideas for with the Google Web Toolkit
Developed an Industrial Strength Optimization module for optimizing Java Code Compilation.
Developed state of the art ontological system for CDC
Created a PDF form generator for use in public health forms and surveys
Developed state-of-the-art generational module extending a multi-threaded hybrid garbage collector
Designed a novel software pipelining technique to improve performance on Intel’s Itanium chip
Developed a new Object-Oriented language MULTI, with features such as a novel-function dispatch mechanism and type inference
Experience:
2011-: Equities Lab, LLC, CTO
Emily created the UI for Equities Lab, entirely in Java Swing. Equities Lab is a next generation stock screener, backtester, and trading model generator that lets portfolio managers do analyses in minutes that would take hours before.
2009-2011: Intelligent Systems Development, SAP contract
Emily was the UI architect for a multi-million dollar GWT project at SAP. She got the project back on track, advised them on the best way to use GWT, and created a UI architecture that was extensible, flexible, and ready for enterprise deployment. This architecture was used for three related GWT projects, where each project was staffed with a different mix of team members. Each project was delivered on time, with all features the users requested, and a very low error rate.
2006-2009: Google
Emily worked on the Google Web Toolkit (GWT), a Java-to-JavaScript compiler and UI framework that takes the compatibility headaches out of programming AJAX, and allows the user to program and debug web applications entirely in Java. She created the internationalization system for GWT, allowing GWT to be used in applications which have to serve users in multiple languages. Emily also developed and supported many of the core user widgets available in GWT. She also designed the 1.6 GWT event system, and developed the up-coming GWT logging system. She was responsible for the gwt-incubator project, and tended the open source community that drove the creation of new widgets therein. She also supported and guided the AdWords team at Google in their use of GWT. This involved helping them make the right decisions in adapting their (large) codebase to use GWT rather than the HTML based UI they were using, as well as gathering requirements and then designing and implementing the widgets needed.
2003-2006: STC
As a Senior Software Engineer, Emily worked as the Technical lead of the PHIN VADS project for CDC, where PHIN VS is a versioned, provisioning, browsable ontological system for use by the CDC and other state health organizations. Previously at STC, she worked as the PDF Form Generator Technical Lead, where the PDF Form Generator translates xml representations of public health forms into fully web-enabled PDF forms. Emily also developed the Form Business Objects and Rules Engine for the CDC’s PHIN project.
2000-2002: TowerJ, Atlanta, GA
Previously, as a Software Engineer, Emily implemented a Just-In-Time Java compiler module targeted to Linux assembly (4-person team.) She implemented a parallel generational copy-collector loosely based on Bartlett’s mostly conservative garbage collector and she was solely responsible for the generation system, large-object handling, and memory defragmentation strategies and implementation (4-person team.) Emily also designed and implemented a new automated system to capture, process, and compile custom-loaded Java classes, which is an integral part of Java Ahead-Of-Time processing. She also designed and implemented a new optimization system for Java with an SSA-based (static single assignment) internal representation. This included a modular, flexible, visitor-based system that allows each optimization to be run and tested separately, with a variety of high-level optimizations, for a significant performance gain over previous implementation (2-person team.) She modified current complier and runtime to allow it to be certified as JCK compliant. This involved significant upgrades of the previous system, as well as integration of Sun Java libraries, edge-case handling, and byte-code verification (7-person team.) Emily also successfully created a new text-based test-suite analysis tool to better process regression failures (2-person team.)
1997-2000: Courant Institute, NYU, New York, NY
While a PhD Research Assistant, Emily designed an innovative alias-analysis technique to enhance software pipelining for EPIC class machines. She designed and implemented a recursive indexing system to index a collection of remote Web pages, searching for product pages. For each product page, an entry in a database is generated, after analyzing the page for attributes. When combined with a database and Web interface, it allows product searches/filters that are more sophisticated than anything offered today by e-commerce sites. Emily also designed and implemented MIRROR, an entirely reflective language that provides maximum power and flexibility to the user. MIRROR is functional and object-oriented, with multi-dispatch and dynamic typing. She designed and implemented MULTI, an object-oriented language with clean semantics, easy C linkage, and efficient multi-dispatch, as well as or-types, the compiler for MULTI generated efficient x86 assembly code. She designed a parallel server for Plinda. Plinda is a parallel variant of Yale Linda (a tuple-space system) augmented with transactions and distributed processing. The transactions allowed rollback in the event of client failure, but the server was not parallel or redundant. The task was to design a parallel-redundant server with good performance and no-single-point-of-failure.
June 1999-August 1999
June 1998-August 1998: Bellcore, Morristown, NJ
During these summers, Emily was a contract Programmer where she designed new-rules semantics for LAURE 5 (a high-level language for approximating solutions for NP-complete problems), which is simpler and more powerful than the current semantics. She proposed a new implementation for multi-methods based on the work with MULTI. Emily also implemented Java-like IO classes for use in the new release of LAURE, a hybrid of LAURE 4 and Java. She developed an experimental release of the RATER system, an Internet goods pricing program developed at Bellcore. In the experimental version, the iterative drive of RATER was replaced by a set of triggered axioms. She created a Larn-like game with an emphasis on the game system’s intelligence, as opposed to graphics for use as a demonstration of LAURE’s advanced features.
June 1997-August 1997: Video Kitchen, Louisville, KY
As a Programmer, Emily designed a scheduling program and customer database for use at the Video Kitchen. The system was designed for efficient employee management of customer data and to schedule equipment usage. Features included advanced search, automatic scheduling, and a direct manipulation user interface for scheduling.
June 1996-August 1996: Dr. David Changaris, MD, Louisville, KY
As a Programmer, Emily designed a full-service medical database program that tracks and cross-references patient information, insurance companies, and diagnosis and procedure codes for the purpose of tracking patients, automatically generating bills, and accounting.