Worked at two different clients, one small and one very large. Worked in teams as small as 3 and as large as 20 developing and deploying web applications using an agile approach: pair programming, test driven development, iteration planning, refactoring, etc.
Role: Java developer, proponent of Extreme Programming.
Environment: Linux.
Java 1.5, IntelliJ IDEA 4 through 7, Guice, WebWork, JSPs, MySQL, Hibernate, JUnit, JSUnit, EasyMock, Ant, Perforce.
Implemented File Browser and Favorites, two new applications for the Tungsten T5. Designed library API and negotiated with PalmSource. § One of two in-house developers working with Meetinghouse on a LEAP client. § Lead engineer on a major security update outsourced to India. § One of a handful of in-house developers responsible for the Tungsten C, an ARM-based handheld with an 802.11b radio. Worked with the HI team to design the UI and implemented most of the UI. § Helped finish the Tungsten T. Made Note Pad and Voice Memo use a restricted subset of the PNG and WAV formats. Helped debug the IrDA driver.
Role: Application Engineer.
Environment: Windows 2000.
Metrowerks CodeWarrior for Palm OS R8 and R9 for 68K, ADS 1.2 for ARM, MSVC++ for Sim, Perforce, TeamTrack.
Responsible for the Palm OS 3.5.1 patch. Primary person responsible for the Exchange Manager. Worked with the original author of the Exchange Manager to spec the changes for Palm OS 4.0. This included support for multiple exchange libraries using URL schemes, support for mailto URLs, and a complete set of registry APIs. Implemented these changes and helped both internal and external developers use the new APIs. Found and fixed some Exchange Manager bugs introduced in Palm OS 5. Did some design work on Palm OS 6's Exchange Manager.
Role: OS Engineer, with primary responsibility for the Exchange Manager.
Environment: Mac OS.
Metrowerks CodeWarrior for Palm OS R6, Jam, Perforce, FileMaker.
One of two PalmSource engineers who worked with Astraware on Cambio, a utility for sharing applications via infrared or Bluetooth. Designed most of the UI and helped with IrDA issues.
Role: Designer (implementation outsourced) with primary responsibility for UI design.
Environment: Mac OS.
Constructor for Palm OS, ClarisWorks.
On a team of three that produced BeamBooks, a shareware application that uses the infrared capabilities of Palm devices to form a network for sharing documents. Each user can create and edit these documents, and their changes spread throughout the network when they sync via infrared. The product was conceived, designed, and implemented entirely in-house.
Role: Shareware designer and developer, with primary responsibility for database access and data integrity.
Environment: For Palm OS 3.0 and later, on Mac OS.
Metrowerks CodeWarrior for Palm OS R3, R5.
On a team of two that produced Flytrap, a shareware game for Palm OS. Flytrap is an action game based on a 2D physical simulation of one to four flies bouncing against one another and the walls around them. A discrete event simulation was used to model the physics. Sound effects and background music were produced by direct access to the hardware since Palm OS's sound support was insufficient at that time. Over an hour of classical music was compressed into 5K using custom compression techniques.
Role: Shareware designer and developer, with primary responsibility for music compression.
Environment: For Palm OS 1.0 and later, on Mac OS.
Metrowerks CodeWarrior for Palm OS DR1 - R3. Squeak 1.31 for music compression.
Part of a large team developing IRIS-2, a set of tools to support container shipping that replaced an older mainframe system. Primary responsibility was extending and supporting a UI framework for application developers. The framework included new widgets, enhancements to existing widgets, and reusable subcanvases. Examples include a hierarchical outline widget, an improved dataset widget, and a reusable object picker based on a combo box. The framework also included Objectsoft's VisualKit. Several applications have been completed using the framework.
Role: Contractor.
Environment: MS Windows NT.
ParcPlace VisualWorks 2.5. Gemstone 5.0. Runtime Packager.
On a team of five producing a new graphical user interface for Washington Alert, CQ's online database service. The system consisted of a Smalltalk image on the user's PC communicating over a PPP socket connection with a VAX. The image acted as a VT100 terminal from the VAX's point of view. Worked directly with two of the team-members so they could learn good design principles and programming style first-hand. This was also an effective way to learn about the project quickly. Switched to independent development towards the end of the project. Set up a build process. The product is now in production.
Role: Contractor.
Environment: MS Windows.
ParcPlace VisualWorks 2.0. Runtime Builder.
On a team of about ten producing a new dealer billing system for the newspaper. The new system was to replace several existing mainframe systems, but the project was canceled due to lack of funding. Used a methodology similar to Ivar Jacobson's use cases for requirements analysis. Helped implement a prototype based on these use cases. The prototype went through several iterations based on feedback from the user analysts. Helped extend VisualWorks in several areas to support the desired user interface; a new type of notebook widget was the largest extension. The prototype user interface was designed in the CUA (object-oriented) style and used icons throughout. Responsible for the analysis and prototyping of accounts, invoices, statements, and transactions. Co-developed a process for configuration control and integration suitable for small teams. Mentored other team members on good object-oriented design as well as Smalltalk-specific programming paradigms.
Role: Contractor.
Environment: MS Windows, X terminal emulation.
ParcPlace VisualWorks 2.0. Oracle.
Spent the first week converting an application from Smalltalk/V with WindowBuilder to VisualWorks with ENVY. A team of 3 worked on the project. The remainder of the contract was spent working on an order management system for Northern Telecom, a project involving about 50 people. Co-developed a prototype of the application. Extended VisualWorks to support various new features such as multi-selection tables and indented outlines. Defined a set of user interface standards for the application. Designed and implemented the invoice window. Helped the pricing group with their user interface and object design. Mentored the client on the use of VisualWorks, object-oriented design issues, and user interface issues.
Role: Contractor.
Environment: MS Windows, HP workstations and X terminals, Macs.
ParcPlace VisualWorks 1.0 and 2.0 beta. ENVY/Developer. Oracle.
A one-person contract to produce a new version of Station Plotter, an existing Smalltalk/V application which displays survey data used to make maps, allowing the user to verify this data. Designed, implemented, tested, and documented a new version of this application in ObjectWorks which provided host independence and a much improved user interface. Stations and observations between them were displayed graphically. Measured and computed values for GPS, distance, azimuth, and direction observations were displayed below. Window refresh was optimized to display only visible stations and observations when zoomed in. Stations and observations were organized into a grid data structure for efficient selection and display.
Role: Contractor.
Environment: Macintosh. ParcPlace ObjectWorks 4.1.
Worked on CODE, a knowledge-base designed to capture informal requirements knowledge marketed by the university. Designed and implemented a graphical user interface for editing graphs used to represent knowledge, as well as a text-based version of the same tool which showed the graphs in outline form. These tools provided precisely the same functionality and were API-compatible. Techniques such as double buffering were used to provide efficient and smooth animation. Mentored the other 3-4 team members on object-oriented design as well as Smalltalk-specific programming paradigms. Source code management was another responsibility. Also contributed to the design of major portions of CODE.
Role: Research Assistant.
Environment: SPARCstations and DECstations running Unix, X-windows. ParcPlace ObjectWorks 4.0, 4.1.
Worked on Telos, a real-time object-oriented CASE tool for designing telecommunications software. Contributed to the design and implementation of NT Signature, a stand-alone event-driven graphical window system. Designed, implemented, and documented a context-sensitive hypertext help system. Designed, implemented, documented, and maintained a new version of the structure editor, a central tool in the Telos toolset. Ensured the conceptual consistency of the entire toolset. Co-designed, implemented, and documented a language sensitive editor for DCL, a language used within Telos. This included implementing a parser and compiler for DCL. A team of about 15 people worked on the project, which has since spun off its own company: ObjecTime Ltd.
Role: Software Engineer.
Environment: Macintoshes, SUN SPARCstations running Unix, X-windows. ParcPlace ObjectWorks 2.3, 2.5.
Helped implement FAST, a discrete event simulator implemented in Ada. This included a text-based window system that allowed concurrent displays of various simulation data which was updated in real-time. Redesigned the system using Buhr's object-oriented design methodology. Contributed to the design and implementation of AGSD, a real-time simulation of the ground station which will communicate with the space station. The Buhr object-oriented design methodology was used. Many aspects of the communication links were modeled: framing, delay, compression, and error detection and correction. A team of 2 to 3 people worked on the project.
Role: Software Engineer.
Environment: DEC VAX and microVAX running VMS.
Telesoft Ada, DEC Ada. CMS code management system.
A one-person contract to provide a computerized tutorial to be sold along with a statistics textbook used in many major universities. Designed, implemented, and documented Socrates, a generic computerized tutorial system in Pascal. The system was based on the Socratic teaching method. The program was ported between several platforms running various versions of Pascal.
Role: Contractor.
Environment: CP/M, Apple II, IBM PC. Pascal/M, UCSD Pascal, Turbo Pascal.
Bachelor of Computer Science (honors hardware option), Carleton University, June 1988. Honor's Project: The Constraint Window System.
Published Paper: Danny Epstein and Wilf R. LaLonde A Smalltalk Window System Based on Constraints. Proceedings of OOPSLA '88, ACM Conference on Object-Oriented Programming Systems Languages and Applications, San Diego CA, September 25-30, 1988. Published as SIGPLAN Notices, Meyrowitz N. (ed.), ACM Press, pp. 83-94, vol. 23, no. 11, November 1988.

Version 27. September 25, 2007