Henry Crutcher

advertisement
HENRY C. CRUTCHER
CONTACT:
EDUCATION:
Email: henry@isystemsdev.com
Home Phone: 404 584 8041
Work Phone: 404 556 4974
1999: MS, Computer Science, New York University, New York, NY
1997: BS, Computer Science, Wesleyan University, Middletown, CT
EXPERIENCE:
 Currently working on financial startup Market Eyes.
 Designed Moodle-based e-learning system for Oglethorpe and Puget Sound Universities.
 Lead developer for SAP’s Steamboat project
 Replaced core JDK libraries used by the Google Web Toolkit (GWT) platform to improve speed and algorithmic
characteristics and optimized GWT’s hybrid developer mode.
 Responsible for the backend of CDC’s PHINVADS which is a medical ontology system to store and manage
medical vocabularies nationwide.
 Responsible for CDC’s Public Health Information Network (PHIN) security system
 Created code generator and linker for an industrial strength Java ahead-of-time compiler for large server-side appserver applications
2010-Present
Work on a new financial startup Market Eyes. This will give investors unprecedented ability to understand the market
and react more intelligently via sophisticated interactive analytics.
2007-2010: Intelligent Systems Development
Henry founded Intelligent Systems Development. The firm is focused on providing software solutions to customers for
difficult and unique software problems. Below are some selected projects the firm consulted for
HANA project (SAP)
Henry was the development lead for a multi-million dollar (multiple time zone) GWT project at SAP. He helped get the
project back on track, advised them on the best way to use GWT, and helped create 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 finished on time, with all features
requested, and a very low error rate. Unsurprisingly, SAP’s executive team liked what they saw.
Created a system to help rail car owners reconcile their payments for car hire versus the miles an
Moodle E-learning (Oglethorpe and Puget Sound)
Henry propelled Oglethorpe into the e-learning age by showing how it could help and then making it happen. This
involved getting the faculty on board, and ensuring they use it effectively, and customizing it ruthlessly. When the CIO
moved to Puget Sound, he was so happy with the Moodle support Oglethorpe enjoyed that he had Intelligent Systems
Development take over the Moodle installation at Puget Sound.
Railwatch (Railwatch, Inc)
The task here was to create a system that tracked the hours the cars were used by each railroad, and find missing or
wrong payments.
2006-2007: Google
Henry 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. He has created modules allowing the use of XML and JSON in GWT. He also optimized “GWT Hosted
mode” (the Java development environment). Reloads became 5 times faster, markedly improving the user experience.
Henry also optimized and improved the GWT JRE libraries (Such as String and ArrayList), removing bottlenecks and
improving overall speed by using more sophisticated algorithms. He has created a rich text widget, a prototype
SVG/VML module for GWT to explore the issues encountered in adding such functionality to GWT and various small
samples, including a dynamic layout generator for GWT and an asynchronous XBRL viewing widget to exercise the
XML functionality.
GWT is written in Java, and improving it requires the ability to understand complex code quickly and make changes that will be robust and
effective. Creating the XML and JSON wrappers required browser understanding, as well as good insight into how the GWT
compilation/rebinding process works. Optimizing the “Hosted mode” or Java web development environment required an ability to find and
understand bottlenecks, and make extensive modifications without breaking the overall architecture. Prototyping SVG/VML bindings
usefully required the ability to rapidly understand those technologies, and the ability to predict their pain points, and to find the areas that
needed especially careful API design: such as incompatibilities..
2003-2006: STC
Henry worked on the SRT Services module, which manages updates of public health vocabularies and codes between
the states and the CDC. He also worked on a small team to create the PDF rendering engine for the form builder tool,
which allows states to create and manage forms, with automatic layout to transform a list of questions into a professional
PDF document with data entry features and subsequent releases. Henry subsequently worked as one of the core
creators of the PHIN VADS system, from inception and design, through presenting it to the CDC and getting CDC
stakeholders interested, to its current stable, deployed status. PHIN VADS is a sophisticated public health vocabulary
management system complete with fully versioned data store, HL7 RIM conformant model, powerful and easy to use
API, web services, and a federation/provisioning model to make sending and receiving updates easy. It also includes a
web-based browser and editor of vocabulary data, a forms model, and powerful import facilities. PHIN VADS was
demonstrated at the PHIN conference, and is being used by the PAM platform (PDP) project, as well as NHSN. Henry
retooled the form builder module to make the user interface more intuitive, and replace the backend with a VADS
backend, giving it versioning, federation, and integrated access to standard vocabularies. He also oversaw the rework of
the VADS import facility to ensure that it will serve as a smooth pipeline for Apelon subscriptions (such as LOINC,
SNOMED) into PHIN VADS, as well as an automatic pipeline other data, with the configurability and manageability to
respond to stakeholder change requests. He also created the build process used by the team, did all systems
administration for the Atlanta office, and coordinated the data to go in the recent releases of VADS. Other duties at
STC include writing proposals, preparing estimates, budgets and schedules, design of software and requirements, and
managing the release and deployment process.
VADS is written in Java, using either a SQL Server or Oracle database backend. Development was done with Eclipse, using a Struts
Servlet paradigm, with an enhanced MVC framework to fit the needs of the application. Sophisticated database design and optimization
was required to store 1.1 million concepts and access them efficiently. Careful object oriented design was required to make the framework
robust enough to support the multi-million dollar development effort, and to support the extreme flexibility that the ever-changing requirements
demanded. Finally, as it has seen several complete releases, including a 2.0 release, so full lifecycle project experience was part of the package,
as with Tower Technologies. He developed a Python custom build system, which was used here, and was the Atlanta systems administrator,
administering Windows and Linux machines. He also created and managed an automatic import server, built in Python and Java.
Work with the CDC also required very strong communication skills, both written and verbal, as well as organization and an ability to deal
with the politics of federal government contracting. It required the ability to create appealing proposals, vision documents, presentations,
schedules, budgets, and make these appealing via email, voice and presentation delivery, often in front of tens of people.
2000- 2003: Tower Technology, Atlanta, GA
Previously, Henry was a Software Engineer where he worked on a small team to create a new just-in-time compiler for
TowerJ 4.0. This allows on-the-fly compilation from Java bytecode to Intel x86 machine code (4-person team.) He also
worked on a small team to implement a new copying multi-heap Bartlett style garbage collector. This collector allowed
multiple threads to allocate objects in parallel and worked efficiently despite the presence of pinned objects. He was also
solely responsible for the finalization and weak reference support in the garbage collector. Henry improved the linking
system to make it possible to use large precompiled libraries that include commonly used code, including core Java
libraries. This also enabled in-lining of functions and direct dispatch across libraries when the target of a dispatch could
be statically determined. He modified current compiler and runtime to allow it to be certified as JCK compliant (7person team.) This involved significant integration efforts, as well as changes to conform to Sun’s policies. Henry also
co-architected and co-authored an object-oriented code generator and optimizer for an ahead-of-time Java compiler,
interfacing with an existing runtime. The new SSA code generator and optimization system produced a significant
performance gain over the old technology. Its multi-stage, modular design allows the addition of new optimizations to
be done easily, and with minimal likelihood of conflict with interacting optimizations.
Tower Technologies used a Java-to-C compiler to compile Java bytecodes to native code on a variety of platforms, including Windows, Linux,
Itanium, SGI and HP-UX. Working on a highly optimizing Java compiler required an intimate expertise with Java, thorough
understanding of classloaders and threading, as well as how the x86 (and Itanium) processors worked. Compiler writing/debugging requires a
fanatical devotion to unit testing, intense debugging skills, and the ability to handle enormously complex code.
1998- 1999: Courant Institute, NYU, New York, NY
Henry was a PhD student where he co-designed and implemented a recursive indexing system to index a collection of
remote web pages, searching for product pages. He also co-designed and wrote an entirely reflective language that is
flexible, easy to use, and extremely powerful. For example, exceptions were easily and efficiently implemented using
user code. The language is an emphasizing power and expressiveness over static-type checking and safety, as it was later
used to implement a non-trivial compiler in a very short time. Henry created a Web product that, using Improv, allowed
children to create simple VRML animations with emotionally expressive characters, and write stories about their
animations. He 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. Our task was to design a parallel redundant server with good performance
and no single-point-of-failure.
Ph.D. Programs require one to absorb complex systems, and present them cogently. It also requires an ability to innovate, which has proven
useful ever since.
Summers of 1998 and 1999: Bellcore, Morristown, NJ
As a contract employee, Henry created a toolkit using Java3D to visualize networks in 3 dimensions, and a demo
network editor with his toolkit. The toolkit allowed the user to cogently manage and visualize dozens of nodes with
many links, as opposed to the handful that are practical with 2D. Based on the demo, the NCON team determined that
the use of a 3D visualization engine to visualize networks was a valid approach. Henry also implemented Java IO classes
for use in the new release of Laure, a superset of Java, and he created a graphics toolkit for Laure that interfaced with
X11 under Unix, using many of Laure’s desirable features to make programming GUI interfaces much easier.
Success on the Java3D project required not only the ability to learn and use Java3D over a two month period, but also the ability to work in a
self motivated fashion, and juggle priorities given a very limited timeframe. Presentation skills, as well as the ability to make a technology
appealing, and to rapidly understand customer needs were essential.
Download