Resume of William Edward la Forge Jr.

11/30/2004

 

I am a strong developer, accomplished at creating new technologies and building on technologies that are new to me. I've worked as a research engineer and an application programmer, with a background in web services, email clients and distributed application management. As a project lead and sometimes manager, I've always worked for high sustainable productivity and crisis avoidance, with a lot of attention to details. My greatest strength is in breaking a complex project into a series of easy steps.

 

I enjoy working with programmers, building a development team and leading a development effort. And while I’ve enjoyed the opportunity to do basic research, my greater interest is in building products.

 

laforge49@yahoo.co.in

 

 

US Citizen

India Business Visa, expires 26 Sep 2011

 

Education: BS in Computer Science at Penn State University, 1971.

 

Blogs and Books:

 

Author of The CompStrm Blog (http://laforge49.blogspot.com)

Co-author, Enterprise Application Integration with XML and Java, Prentice Hall PTR, 2000

Contributing author, JavaBeans Developer’s Reference, New Riders, 1997

Contributing author, Special Edition Using JavaBeans, QUE, 1997

 

Languages and Libraries:

 

Python: Twisted, Email, Tkinter, bsddb

 

Java: Mobile Agents, XML Data Binding, Swing, Email, light crypto,

         MySQL, Jakarta, ANT

 

C++: CORBA internals, thread-safe components

 

Also COBOL, Assembler, Pascal, Fortran, Basic, TeX

 

Work History

 

The Anything Box (unfunded R&D) (Raipur, India//Bellefonte, PA)—May, 2004 to present

This is a new kind of database. You can put anything into it, and make any kind of query to access its contents. It works with structures and complexes of structures using very scalable technology. And you can view current state, past state, and changes over time. It is an extensible system that begins with a rich set of metadata for describing data and operations, with operations and data properties grouped into capabilities, which in turn are used to construct data types.

The database is implemented over BSDDB, a transactional store that is also used by MySQL, using 14 b-tree files to support a wide range of queries. The basic storage element is (time, fileid, propertyid, oldValue, newValue), but with additional support for document storage. The property/value pairs assigned to a file for a given time are then computed based on a reverse-chronological extraction process.

This Anything Box is fully integrated with Twisted, a fast asynchronous server that supports both a web server and a very wide range of additional protocols. The Anything Box itself is implemented using coroutines, making the code more readable/maintainable than most asynchronous styles. It is this coroutine technology, implemented as a computational stream, that the CompStrm project name came from.

The CompStrm Wiki

Anyone, once they login, can modify the contents of a Wiki. It is a bit like the Wild West sometimes, as pages can get renamed or deleted. Links can easily be broken and valuable content lost. That is because only the latest content can be accessed. 
 
The CompStrm Wiki can help. All content, once entered, remains accessible. Users can view all changes made to a page, and can even go back in time and navigate links to pages that no longer exist. (This applies to the topics list and page citations as well.) You can even create links on a Wiki page which specify the time at which a page is to be viewed. 
 
By adding the dimension of time, site management is made a lot easier. And for more dynamic subjects (e.g. documentation for a new project), users can now get a historical perspective. 

The CompStrm Wiki builds on The Anything Box to demonstrate the advantages of having a time dimension.

See http://compstrm.sourceforge.net/wiki/index.html

Self Employed (State College, PA//Raipur, India)—July, 2002 to April, 2004

 

The client was a startup company in Boston (USA). I contracted with two developers in India, and was responsible for the design and overall implementation. Access to the client was generally limited to one phone call a week, plus email. (Python)

 

    The Arka General Information Management Tool

 

The ark serves as a repository for all types of documents, maintaining information about each document as well as a complete history of prior versions. Documents are grouped into roles, and roles are grouped into realms.

 

The ark also supports one native document type, wiki text, which can reference other documents, roles, realms, web pages and external files. A citation index is maintained, for tracking where a document has been referenced within the ark.

 

The heart of the ark dealt with making related material easily accessible, as well as algorithms for resolving ambiguous references. The user could also identify the documents which should be visible within a given role or realm.

 

The first draft of the ark was a stand-alone program, using tk to implement a GUI interface and a collection of command-specific dialogs. Internal structures persisted as XML files, with documents stored in native format. The GUI was also generated from XML files. The ark supported the publishing of wiki text a flat text, TeX, or HTML. Sharing of roles and realms between users was also supported using email as a transport.

 

The second draft of the ark was implemented as a form of client/server, but using an asynchronous socket approach, supporting the asynchronous update of client displays. Display generation was implemented using streaming, providing a rapid initial response to any query, the display being generated while the user paged through the response. The second draft also included an integrated file browser and mail client, giving the user a single tool for managing all types of information.

 

JXML, Inc. (Boston, MA//Raipur, India)—1999 through June 2002

 

Chief Technology Officer, responsible for project funding and development. Principal researcher on a joint DARPA SBIR with The Open Group to develop Quick. Subsequent funding for Quick was through BBN. Worked on the manageability group for The Open Group.

 

Quick is a data mapping technology for two-way conversion between Java object trees and XML documents. Like XSL it can be used to transform XML documents, but as it is more data centric it handles complex structures more easily. It can also be used as a safe way to transport objects, being schema based. (Object serialization, in contrast, is simply too risky to be used as a transport except under constrained condtions.) For more information, see http://qare.sourceforge.net/web/2001-12/products/quick/index.html, the summary page at http://sourceforge.net/projects/jxquick or Java and XML Data Binding by Brett McLaughlin.

 

Quick is my most successful Open Source project. With a final release in June 2001, Quick remains an active project, having more than 100 downloads each month for a total of over 9200 downloads since that final release.

 

While Quick was largely my own work, the JXUnit, JXWeb and QARE projects were developed under my direction by a team of programmers in India. This was an Extreme Programming group that I built under the name Sarjena.

 

JXUnit combines the Quick technology with JUnit, a testing facility often used in Extreme Programming. The advantage of JXUnit is that XML documents are used to create the object trees used for testing, rather than having to write a lot of test code for each test case. Third party development of JXUnit continues to date. For more information, see http://qare.sourceforge.net/web/2001-12/products/jxunit/index.html or the project page at http://sourceforge.net/projects/jxunit/.

 

JXWeb in turn, builds on JXUnit. JXWeb is a facility for testing web services, driven entirely by XML documents. It exercises a web service by simulating a browser, accessing web pages, analyzing those pages and then sending responses. For more information, see http://qare.sourceforge.net/web/2001-12/products/jxweb/index.html or the project page at http://sourceforge.net/projects/jxweb/.

 

The QARE project explores the use of a delegation trust model for managing access to an n-tier network. It uses Quick for both a safe data transport and for generating web pages. Interaction between servers used both http and email. Messages between servers were both signed and encrypted. QARE used MySQL for data storage. For more information, see http://qare.sourceforge.net/web/2001-12/products/qare/index.html or the project page at http://sourceforge.net/projects/qare.

 

One project building on Quick generated object trees from Swing classes. A wide range of Swing components were supported. This project was developed in parallel with Quick, but was dropped from later releases as efforts were shifted to HTML generation in QARE. Unlike other projects, I was not able to assign this work to another developer—one of the reasons why it was dropped.

 

The Open Group (Boston, MA)—May, 1996 through 1998

 

Reviewed Intel's secure computing platform.

 

Served on a Presidential Commission (6 months) to access risk factors of various security technologies for the US Banking Community.

 

Developed and released as open source a GUI for managing JAR files. Extensions were included for serialized JavaBeans. (Java, Swing)

 

A second open source project was a reliable, transactional protocol based on UDP. This integrated TCP’s reliable transport into the application layer, thereby avoiding the integrity issues dealing of a failed connection. (Swing)

 

Project lead for MOA (MObile Agents). This project, developed on sub-contract for the Japanese Military, included the ability to monitor and control mobile agents launched into a community of cooperating hosts. Agents were implemented as serializable JavaBeans and passed as JAR files. Agents were executed within a sandbox. (Java)

 

Explored the implementation of a CORBA-like interface for a micro kernel. (C++)

 

ATT (NJ)—December, 1994 through May, 1996

 

Worked on the monthly market analysis of ATT consumer billing data (2 terabytes). Production environment was two Solaris 2000 systems with 20 processors each. In addition to handling large volumes of data, marketing analysis requirements remained fluid. Developed and deployed a thread-safe component programming system, significantly improving our ability to respond to changing requirements while taking full advantage of the multi-processor environment. (C++, Solaris)

 

Timenet (VA)—July, 1986 through May, 1994

 

Developed reconciliation software for debit card processing. (C, Solaris)

 

Project lead in a network and application management system for credit card authorization data routing, running on over 300 nodes across the US. Monitoring and control of all nodes, event logging, and historical queries were supported. (C, Solaris)

 

Designed and implemented a system for aggregating billing information from our network of credit card authorization routing nodes. (C, Solaris)

 

Designed and implemented the credit card authorization system for Hertz. (Assembler)

 

Maintenance of application-specific routers in a nation-wide X.25 network (Assembler)

 

Data Systems Analysts (MD)—November, 1983 through June, 1986

 

Maintenance of the US Army's satellite communication system. (Assembler, Fortran)

 

Implemented levels 3 & 4 (of a 7 layer ISO model) for a communication system for Western Union. (COBOL!)

 

Monitored the development of a replacement telegram system by Univac for Western Union.

 

Penn State University Library (PA)—1978-1982

 

Developed the compression routines for the bibliographic database. (PL/I)

 

Project lead for generating a microfiche replacement of the card catalog. This was a 3-man, 4-year effort requiring extensive knowledge of bibliographic data structures. Design constraints were speed (it took a week to execute) and the size of the intermediate sort files (limited to 1 gigabyte). Eleven catalogs were produced in a single pass (one for each campus). Limited natural language processing was needed, as the bibliographic text was tagged, the exception being date fields. Data mining was used to determine the 50+ date formats used since the 1020’s, and routines were developed to recognize and process them. (COBOL, CODASYL, PL/I)

 

Designed the interaction scenarios for the online catalog.

 

Micro Computer Products (PA)—1976-1978

 

Opened a computer store in State College, PA. Responsible for marketing, purchasing and managing a repair bench. Also developed and marketed a component-based micro-OS, SysKit. (8080 Assembler)

 

Southern Savings and Loan (New Orleans)—1974-1975

 

Maintained the online environment, customized consumer loans package, and shared responsibility for daily operations. (Assembler, RPG)

 

Univac (PA)—1974

 

Responsible for the loans portion of Profits, a package for Savings and Loans. Worked with the System
Analysts in the field who provided customer requirements. (Assembler)

 

Commonwealth National Bank (PA)—1973

 

Wrote a b-tree database for the personal trust project. (COBOL)

 

1