Emily Crutcher

advertisement
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 AheadOf-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 testsuite 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 objectoriented, 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 tuplespace 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 Larnlike 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.
Download