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.
US Citizen
India Business Visa, expires
26 Sep 2011
Education: BS in Computer Science at Penn State University,
1971.
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
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.
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 Ark—a 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)