I was hired into Palm to lead the design and implementation of an enterprise-class multi-user synchronization server. After several months of analysis and design, the company elected to license third-party technology for the product.
I then switched to Product Management, and was responsible for requirements gathering, analysis, and business case definition for several major components of the Palm Operating System, including the expansion system (e.g. SD, CompactFlash, and MemoryStick cards), and USB. In adition to product management, I participated in the engineering specification and design of these systems.
For Palm's next-generation operating system, I was responsible for strategic product direction and definition for the core operating system components (including kernel, memory management, database, data synchronization, and network services).
In addition to my product management responsibilities, I lead the internal drive to produce a Web Services strategy. For this task, I did basic market analysis, competitive research, potential partner discussions and negotiations, internal evangelism, and business plan development. My work in this and other areas involved regular interaction with executive management and negotiation with partner companies.
For PalmSource (the Palm OS platform spin-off of Palm), I am currently Director of Product Marketing, reporting to the CTO. Our organization is responsible for ongoing research and definition of the Palm Operating System Platform (Palm OS) and related products. We have recently completed the bulk of the transition to our new platform, Palm OS 5.
For a major web applications company, I designed and implemented a system for integrating their financial services application with the CheckFree financial transaction clearing system. This involved building a client / server application pair, designing database schemas, and working with existing teams to design appropriate APIs.
For a start-up packaged enterprise application company, I participated in the design and ongoing development of a multi-tier, web frontend etnerprise application. Duties include the design and implementation of HTML/JavaScript UI's and design and implementation of server-side Java application and DB access logic.
For a start-up web-destination site, I lead the design and implementation of a web-based interactive consumer application. Responsibilities included application architecture and technology selection, schema design, Java Servlet design and implementation and technology integration.
At Vitria, I contributed to the design and development of a package sorting hub tracking sytstem. I primarily focused on the real-time graphing display of data received via Vitria's CORBA-based event broadcast software. This system was succesfully deployed at the customer's site -- the premier overnight delivery company.
At Claris I created Claris OfficeMail, an Internet mail server designed for small business. I developed the concept for the product from close association with several small organizations which were having a great deal of difficulty in establishing an email presence on the Internet. Small companies, especially those outside of the computer industry, are generally not capable of selecting, installing, and configuring an email server, Internet gateway, and service provider account. OfficeMail is designed to solve this problem.
Over the course of a few months I devloped a business case, and then got the product approved for development. Next, I assembled a small team of development engineers, test engineers, etc., and designed and built the product (in about a year). In addition, I helped to structure the agreement to provide pre-configured Internet service for OfficeMail (ClarisLink). OfficeMail is fully threaded, standards based (POP3, SMTP) objected-oritented, multi-protocol, and fully extensible. The implementation was designed for ease of use and scalability.
While Claris OfficeMail is no long sold, its code forms the basis of the mail server included with AppleShare IP.
Subsequently, I managed the development of future versions of OfficeMail and Claris Emailer.
A more complete description of OfficeMail is also available.
Other than meeting many wonderful people, this job proved to be a waste of time. GO laid off half of the staff withing three weeks of my arrival, and then was purchased by Eo. The downward spiral continued, and I left the company a few months before the doors were closed for good. I was hired to develop a PenPoint OS native integrated development environment (IDE). This idea was abandoned as too ambitious after the layoffs, and I spent the remaining time working on various aspects of the PenPoint debugger, and the PenPointOS file browser.
I joined CMSI as a founding employee. There, I designed CM/1 (later sold as QuestMap), a groupware decision support and tracking tool. The project was inspired by research done by my associates at MCC (see below). In CM/1, teams of people work together to "map" out design discussion. When used sucessfully, discussions become more focused, and are always saved for future use. I was responsible for the design and lead the implementation of CM/1 by three engineers (including myself). The product was built with a C++ application framework, and is fully object-oriented. CMSI released CM/1 for MS-Windows and X Windows.
As CMSI was a small startup, I was also expected to (and did) contribute in many other areas, including product definition, sales visits, customer training, network installation and management, and schmoozing for money.
MCC is a research consortium consisting of many of the US's largest hi-tech companies. These companies pool together money for long-range, industrial research. As a member of the technical staff of MCC's Software Technology Program (STP), I worked on projects whose broad goal was to improve the software development process. My projects at MCC included maintaining and enhancing a Entity-Relationship (ER) design tool, and implementing an object-oriented Scheme interpreter.
The graphical ER modeler (GERM) is an tool for designing any sort of ER diagrams. These range from flow charts and org charts to family trees and OO design diagrams. I developed a heirachical schema definition language for the product (using lex and yacc), and implemented an RPC based API for adding additional (possibly netowork based) functionality. This work was all done in C on Sun workstations.
My most challenging project was the design and implementation of an object-oriented, multi-threaded Scheme interpreter (Scheme is a dialect of LISP). The interpreter is implemented in C++ in an object-oriented manner. The core of the product is a virtual machine which can handle multiple execution contexts, and implements a multi-level thread scheduler. The Scheme language was extended to include an multiple-inheritence object model, and the compiler (which was borrowed from an ealier project) was enhanced to understand the language extensions and generate approprate VM code. The interpreter had several novel features, included a threaded garbage collecter, distributed execution capability, and a built-in, extensible database.
In addition to development work, I also participated in customer site visits, served on MCC committees and wrote or co-wrote four research reports.
I worked at National Instruments part time while finishing my undergraduate degree. I worked on two projects in LabVIEW: basic improvements to the icon editor, and a software emulator for the 68881 math coprocessor. The latter project involved implementing in 680x0 machine language translator for 68881 instructions and parameters. The translator retargets the math coprocessor instruction to a software math library, and then retranslates the results into a form compatible with the 68881. The net result is that 680x0 based machines (early Macintoshes, in this case), are fooled into thinking that they have a 68881 coprocessor. This simplified the design of the higher level application.