David C. Morrill Phone: (512) 536-0790 901 Morning View Place E-mail: david.morrill@gmail.com Round Rock, Texas 78665 Web site: http://dmorrill.com Objective: ---------- Software developer on cutting edge applications or projects. Experience: ----------- ENTHOUGHT, INC. AUSTIN, TX Senior Software Developer Dec 2001 to Aug 2008 * Second technical employee of a small consulting start-up that focuses on creating advanced scientific applications using Python. Hired the day following the initial interview after the founding partners had already reviewed over 400 applicants. * Created several open source Python projects which are now the foundation for all applications produced by Enthought: * Traits: A powerful reactive programming and user interface package. * Chaco: A 2D plotting package oriented toward scientists and engineers. * Enable: A 2D graphics component model and library. * Worked on the development of: * Two seismic and geophysical simulation applications (ProAVA2 and Converge). * A computational fluid dynamics modeling/simulation application (VMS). * A ground penetrating radar simulation system (Tempo). PSIONIC SOFTWARE AUSTIN, TX Senior Software Developer Jun 2000 to Aug 2001 * Responsible for the design and implementation of a secure, cross-platform mobile agent system for agent-based network intrusion detection, auditing and forensic information gathering. * Responsible for the complete design, implementation and testing of a browser-based user interface to a cross-platform intrusion detection security system. IBM CORPORATION POUGHKEEPSIE, NY, KINGSTON, NY, Senior Software Engineer YORKTOWN HEIGHTS, NY, ROCHESTER MN, BOCA RATON, FL, AUSTIN, TX until Feb, 1999 * Designed and implemented Jester, an introspection based test tool for Enterprise Java Beans. * Created sample Java Servlet and JSP (Java Server Pages) based Enterprise Java Bean applications for Websphere Application Server. * Designed and implemented major portions of the IBM's Java Bean component assembly tool and distributed catalog for Java Bean components. * Technical lead for the SOM kernel, IBM's cross-platform, language neutral system object model. * Developed Avid compatible video import function for broadcast quality non-linear video editing system on IBM PVS supercomputer. * Created/developed DrDialog, a Visual Basic-like programming environment for OS/2 REXX. * Created/developed HOPE, an Oberon language programming environment for OS/2. * Created/developed ME/2, an OS/2 environment for building programming environments. * Created/developed WINK and EGAD, fast windowing libraries for PC DOS. * Created/developed DCEMM, an EMM (Extended Memory Manager) emulator for PC DOS. * Created/developed QikCache, a disk caching program for PC DOS. * Co-created/developed ACE, a C programming environment for PC DOS. * Lead team that developed TopView, a window-based, multi-tasking extension to PC DOS. * Worked in advanced office systems technology group. Created/developed prototypes of object-oriented, window-based systems for System/370 VM, Apple II and original IBM PC. * Lead team that developed System/34 BASIC language product. * Lead team that developed System/34 MRJE remote job entry product. * Lead team that developed System/32 1255 MICR (check reader) attachment product. Key Technical Accomplishments: ------------------------------ * At Enthought, created many of the open source Python projects which are now critical components of the company’s software infrastructure: * Traits: A type and user interface package. Quoting the Enthought web site: “Traits are a "big deal." The traits package is at the center of all development we do at Enthought and has changed the mental model we use for programming in the already-extremely-efficient Python programming language.” (http://code.enthought.com/traits, http://dmorrill.com/david/projects/traits). * DockWindows: A wxPython-based window docking component used extensively by both the Traits UI package and the open source Envisage Workbench plugin. * Chaco: A 2D plotting package oriented toward scientists and engineers (http://code.enthought.com/chaco, http://dmorrill.com/projects/chaco). * Enable: A 2D graphics component model and library. * Features: A unique, extensible, metadata and event driven extension to DockWindows that allows visual components and tools to be dynamically configured to create new tools by the end user with no programming involved. * While at Enthought, gave several presentations on Traits, DockWindows, Features and Chaco at various PyCon and SciPy Python conferences. * In a six month period at Psionic Software completed the research, design and preliminary implementation of a cross-platform, mobile agent system for enabling autonomous agents to roam an enterprise network performing tasks such as: * Security audits * Intrusion detection * Forensic evidence gathering. The design was based on digitally signed agents sent over encrypted network connections along with tamper-resistant data gathered at the various systems visited by an agent on its itinerary. One of the more interesting aspects of the system design was its inclusion of smart proxies for agents. The initial design included support for more than a half-dozen types of smart proxies, which transparently supply the agent developer with different kinds of quality of service and network management capabilities. For example, one type of smart proxy provides automatic load-balancing capabilities to its clients, while another type provides automatic fail-over to clients in the event of an agent system crash or failure. The type of proxy used with a particular agent is a design decision made by the agent developer based on the characteristics and intended use of the agent. * A secondary result of the mobile agent development was the creation of dtrace, a Python and PyQT-based dynamic trace tool useful for monitoring and probing the behavior of long-running server type applications, such as the mobile agent execution environment. The dtrace tool allows a developer to interactively and selectively trace control flow and dynamically monitor objects within a server while it runs, with minimal performance impact. Complete tracing profile configurations can be easily saved and loaded without stopping/restarting the server, allowing a developer to quickly reconfigure the tool as needed. * In another six month period at Psionic, created a completely customizable browser based user interface to a host based intrusion detection system. The system is completely database driven and consists of 360+ web and database back-end processing pages, containing more than 87,000 lines of DTML (an HTML extension language) and SQL (nearly 5 MB of source code). The system, based on Zope (an Open Source web application server using a powerful OO database) and the MySQL database, was developed in the following stages: * Created a tool that enables standard tools like CVS, EMACS, Fireworks and Dreamweaver to seamlessly integrate with the Zope OO database using an XML-RPC network interface. * Created a UI "scripting language" which allows a developer to describe a database driven web page in terms of SQL queries, updates, fields and high-level presentation styles (e.g. Report, Update, View, Query, and so on). The script interpreter then automatically generates all necessary HTML, DTML, Javascript, and server-side SQL processing code needed to implement each web page. The generated pages are then transparently uploaded to the Zope server using the tool previously described. The generated pages also have the side benefit of allowing each user to modify the page's appearance through fully customizable "themes". * Defined a security system database schema that models the capabilities of each component in the intrusion detection system, and used the UI scripting language to implement a user interface that allows each security expert to fully describe his or her components. * Created higher-level scripts which extract "meta-data" from the security database and automatically build and run the UI scripts needed to create the web pages that allow end users to configure the intrusion detection system. * Used the UI scripting language to create all remaining web pages for the system (e.g. intrusion detection reports, new user registration, etc). * At IBM, conceived, designed and implemented Jester, an introspection based Java test tool that allows developers to interactively "unit test" Java classes without having to write Java test cases. Results can be saved as "scripts" which can be combined and played back in later sessions for regression testing or test environment setup. * Also at IBM, conceived, designed and developed DrDialog, a "Visual REXX" programming environment that allows programmers to quickly and easily build GUI-based OS/2 applications using REXX. DrDialog was used by thousands of programmers within IBM, including the team that developed the TV broadcaster support system for both the Atlanta and Nagano Olympics. DrDialog was also made available to IBM customers as part of the OS/2 Developer Connection and the OS/2 Warp operating system product (Japanese version). * While at IBM, conceived, designed and developed HOPE, an Oberon language based programming environment. Oberon is the successor to Modula-2 developed by Niklaus Wirth, and is a simple, high-level object oriented language comparable in many ways to Java. HOPE embodied many advanced programming tools and concepts, including: a fast compiler engine capable of generating 16 and 32-bit code for DOS, Windows and OS/2, automatic module import, automatic dependency management (i.e. automatic "make"), automatic structural and control flow graphing, source and object hierarchy browsers, cross project symbol usage and definition tools, and a virtual memory based persistent object storage system. * At IBM, conceived, designed and developed GLUE, a fast, powerful, high-level, object oriented cross-platform scripting language that preceded Python and Java by several years. * At IBM, conceived, designed and implemented ME/2, a meta-programming environment for developing programming environments. Developed in 1987, ME/2 was based on the use of software components and a high-level scripting language (GLUE). These same notions were two of the cornerstones of Microsoft's software strategy in the 90's (i.e. components and scripting). * While at IBM Research, conceived, designed and later lead the development team that implemented TopView, IBM's first multi-tasking, window based, object oriented operating system for the PC. The release of TopView was a major event in the early history of the PC, preceding Microsoft Windows by a significant margin. The October 26, 1998 issue of Info World cited TopView as one of computing's milestones in their 20th anniversary issue looking back at the history of the computing industry. Awards: ------- * IBM Corporate Outstanding Innovation Award as TopView Lead Architect * IBM Corporate Outstanding Innovation Award for GLASS Programming System * IBM Corporate Outstanding Innovation Award for System/34 BASIC * IBM Research Division Award for EGAD graphics library Major Skills: ------------- * Object oriented analysis and design * Tool building * Keen insight into how to structure and layer systems for maximum efficiency and productivity * Python, Ruby * C, C++, C#, Java * SQL * Javascript, (D/X)HTML, CSS, DOM * x86 Assembler Minor Skills: ------------- * Image (Photoshop, Illustrator) * Video (After Effects, Combustion, Vegas) * 3D Graphics (Softimage XSI, Lightwave, Cinema 4D, Modo, Silo) Technology Interests: --------------------- * AIR, Flex, Flash * .Net * Dynamic languages (ActionScript 3.0, (Iron)Python, (Iron)Ruby, Boo, Groovy, Lua) * Maximizing developer productivity and code quality * Synthesizing designer and developer workflows * Improving end user experiences Education: ---------- PRATT INSTITUTE BROOKLYN, NY B.S., Mathematics