September 2001 Java News

Saturday, September 29, 2001

I'm flying to San Jose tomorrow for the XMLOne conference so updates are likely to be sporadic until Friday. However, San Jose isn't nearly as interesting a town as Amsterdam so unlike last week I should find some time to check my e-mail and update my sites. :-)

Sun's posted the proposed final draft of the Java Preferences API Specification in the Java Community Process.

Sun's released the Java Advanced Imaging API 1.1.1 for Linux, Windows, and Solaris.

Friday, September 28, 2001

Sun's posted the first public release of the JAIN Mobile Application Part (MAP) Specification 1.0 in the Java Community Process. Sun's also released the first public review draft of the JAIN ISUP Specification. If you don't already know what JAIN is, chances are good you don't need to know.

Sun's posted the proposed final draft of the Java Generic Security Services API 1.0. The GSS-API provides a layer of abstraction over security mechanisms that perform authentication, message integrity protection, and message privacy protection. Internet Engineering Task Force (IETF) RFC 2743 defines this API in a language independent format. The IETF has also defined a Java language binding for it in RFC 2853.

Sun's released the Java2 Enterprise Edition (J2EE) Software Developemnet Kit (SDK) Japanese Supplement 1.3. This is a "set of resource bundles containing localized Japanese messages for the J2EE SDK." This localizes the deploytool, packager, verifier , j2eeadmin programs into Japanese, as well as providing translated versions of various documents. You must install the J2EE SDK before installing the Japanese Supplement bundle.

Thursday, September 27, 2001

Joerg Pleumann has contributed the open source Mail4Me to the Enhydra Project. Mail4ME is a lightweight implementation of the POP3 and SMTP protocols for Java2 Micro Edition/MIDP devices.

Wednesday, September 26, 2001

IBM's submitted Java Specification Request (JSR) 149, Work Area Service for J2EE to the Java Community Process. This "specification will describe a mechanism to allow developers of Java 2 Enterprise Edition applications to define properties as application context; that context will implicitly flow across remote requests and allow downstream components to work in the context of a specific invoking client. This specification will leverage the functionality of the proposed Activity Service for Extended Transactions ( to define a system of programmatically demarcated contextual boundaries that will define the availability of properties significant to the application." Comments are due by October 8.

IBM's also submitted JSR-150 Internationalization Service for J2EE to the Java Community Process. "The Internationalization Service enables distributed localization within Enterprise Java applications by transparently propagating and managing localization information within relevant J2EE application components." Comments are due by October 8.

Sun's posted the final release of the JSR-16 J2EE Connector Architecture specification. This defines a standard architecture for connecting the Java 2 Enterprise Edition to "heterogeneous enterprise information systems, such as ERP, mainframe transaction processing and database systems. The architecture defines a set of scalable, secure, and transactional mechanisms that describe the integration of enterprise information systems to an application server and enterprise applications. This architecture enables an enterprise information system (EIS) vendor to provide a standard connector for its EIS - the connector is plugged in to an application server and provides connectivity between the EIS, application server and enterprise application. An application server vendor extends its system once to support this connector architecture and is then assured of a seamless connectivity to multiple EISes. Likewise, an EIS vendor provides one standard connector and it has the capability to plug in to any application server that supports the connector architecture."

Tuesday, September 25, 2001

The Apache Jakarta Project's posted the first release candidate of Tomcat 3.3. This is a servlet and Java Server Pages engine for Apache that implements version 2.2 of the Java Servlet API and version 1.1 of the Java Server Pages API. For servlets 2.3 and JSP 1.2 you'll need to use Tomcat 4.0.

According to Larry Isaacs, "With this release, the core code for Tomcat 3.3 is considered finished and only minor bug fixes, simple usability enhancements, and documentation updates will occur up until the second Release Candidate. For who are using a 3.2.x version, you should find this release more stable that the 3.2.x releases, as well as more configurable. It also addresses some issues still present in 3.2.x".

Sun's posted the proposed final draft of the Java Logging API Specification.

The Apache Avalon team has posted the fifth beta of LogKit 1.0, a logging toolkit designed for secure, high-performance logging. Changes in beta 5 include:

Sun's released the J2EE IDE Toolkit Software 2.0. This product integrates Forte for Java, Community Edition 2.0 (not 3.0!) with the J2EE 1.3 Application Deployment Tool. It runs on Solaris/SPARC, Windows NT, Windows 2000, and Linux. New features in this release include:

Sun's posted the proposed final draft (version 0.94) of the Java API for XML Messaging Specification. As usual, it's PDF format only. JAXM implements the Simple Object Access Protocol (SOAP) 1.1 with Attachments.

Monday, September 24, 2001

I've returned from XMLOne Amsterdam. News from the trip is on Cafe con Leche. I'm happy to report that my DSL connection was finally back up when I returned. I had over 3,000 messages in my various inboxes. I'll be catching up on news and email throughout the day today. I hate not having good Internet access at shows and hotels. In this case the best I could do was dial-out to the U.S. at about at 14,400 bps and three euros a minute. Given that connection, it shouldn't be a big surprise that I spent most of my free time exploring Amsterdam's attractions rather than updating my web pages. Unfortunantely I didn't learn until late in my trip that some of the best free Internet access in Amsterdam could be found in the "coffee shops".

Sun's published the final version of the Enterprise Javabeans 2.0 specification. PDF or PostScript only.

The Java Financial Library 1.0 can convert between currencies and retrieve stock quotes. It uses external data sources (mainly Yahoo) for the quotes and currency operations. This is an open source project released under the Gnu Lesser General Public License (LGPL).

Sun's posted the final versions of the Java Servlet API 2.3 specification and the Java Server Pages 1.2 specification. As usual these are in PDF and PostScript format only. Sun still hasn't convinced itself that this HTML-fad is going to stick.

The Jakarta Apache Project has released Tomcat 4.0, a servlet and JSP engine for Apache that implements the new features of these specifications plus a host of other functionality improvements over the current production release (Tomcat 3.2.3).

Sun's posted a beta version of the JDK 1.3.1_a for Windows that enables applets running in Internet Explorer to use Sun's Virtual Machine instead of Microsoft's. Unlike previouus versions of the Java plug-in, this release allows you to use the APPLET tag rather than special tags.

LimeWire, a Gnutella client written in Java, has been released as open source under the Gnu General Public License (GPL). Even before it went open source LimeWire was my preferred file-sharing client. Now it can only get better.

Sunday, September 16, 2001

Metrowerks has released CodeWarrior 7.0, a $599 payware integrated development environment (IDE) for the Mac that supports C, C++ and Java. Upgrades are $299. New features include the ability to build a single binary for MacOS Classic and MacOSX and an Aqua user interface.

Andrew Thompson's relased the open source (LGPL) JSpeechLib implements the synthesis portion of the Java Speech API 1.0 on MacOS 8 and 9 (not MacOS X though) using the Speech Manager (aka MacInTalk).

Saturday, September 15, 2001

I've posted Reading XML, Chapter 5 of Processing XML with Java. This chapter is a broad overview of the various parsers and APIs available for processing XML documents. It provides example of DOM, SAX, JDOM, dom4j, and ElectricXML and discusses the relative advantages and disadvantages of each.

JRTF 1.1 is a Java component for generating Word RTF Documents dynamically from servlets. It allows you to specify text formatting, tables, page orientation, etc.

Saturday, September 15, 2001

The Internet Virtual Machine is a GPL'd VM that supports C, C++, Java and ObjectiveC. It runs on Windows and Linux.

Friday, September 14, 2001

My Speakeasy DSL went down yesterday afternoon as a side effect of Tuesday's attacks. Several other ISPs in the area are affected as well. For the moment I'm on a dialup connection. To complicate matters, I'm scheduled to leave Sunday for the XMLOne conference in Amsterdam. I don't know if I'm going to be able to get out or not; but whether I do or not updates are likely to be a little sporadic here for the next week or so.

The Jakarta Apache Project has posted the second Release Candidate for Tomcat 4.0, a servlet and Java Server Pages engine for Apache. Barring major problems, final release of Tomcat 4.0 is currently scheduled for September 17, 2001. All "must deal with" bugs (other than those related to the mod_webapp connector) have been fixed, although a few remaining bug reports are currently being reviewed.

Thursday, September 13, 2001

Thanks to everybody who wrote in over the last couple of days, and not just to the ones who were nice. All the comments are appreciated. I'm afraid I don't have the time or the emotional energy to respond to everyone personally. I've also learned that there are times when it's best not to argue with people, even if they disagree with you violently.

A few final thoughts:

Lutris has released EnhydraME, an umbrella project focused on application servers and web service for wireless and micro-Java environments. This includes:

Future components are currently planned to include:

These are joined by kHttp (, a micro http server and Locumi (, a http proxy compatible with kHttp. Both these projects are from the heart and soul of John Beatty, a veteran programmer and now Juxta visionary.

I've never paid much attention to J2ME, mostly because I believe that technology inevitably makes tomorrow's micro environments as or more powerful than today's standard environments. To me, that people are seriously considering putting a web server, a proxy server, and a relational database inside cell phones just seems to prove this point.

Wednesday, September 12, 2001

I'm still feeling a little shocked from the bombings yesterday. The magnitude of this is still seeping in. Personally, I feel quite fortunate. So far all my friends, family, and colleagues seem to have come through OK. There's still one person I need to check on. (Update: I got in touch with her this afternoon and she's fine.) For those of you who aren't New Yorkers, just know that a lot of people worked in the towers at all levels from CEO to janitor. Everyone in New York knows someone who worked there, often many people. This attack really cuts across all levels of the city. As somebody (I forget who. It might have been Giuliani.) said on the news last night, this attack did not single out whites or blacks or Jews or Arabs or Christians or Muslims or Chinese or police officers or civilians or citizens or foreign nationals or immigrants or any other group. This was an attack on all of us.

This has been the main topic of discussion on many of the mailing lists I participate in, with topics ranging from XML to Unicode to computer book publishing. None of these are political lists. Mostly the list moms seem to be willing to let the discussion flow without worrying too much about how off-topic it is. That's important in times like this. Sentiment seems to be divided about 50-50 between the "Let's get revenge and bomb somebody, even if we aren't sure exactly who" and "Let's focus on catching the criminals, and try to understand why this happened." Private e-mail about my comments yesterday is about equally divided.

I wish I could say that the television media showed an equal diversity of opinion, but I'm afraid that's not true. CNN, CBS, and the local stations would only interview the same white war mongers and law enforcement agents who kept insisting that we needed to start bombing people before we even knew who was responsible, that we needed to repeal the restriction against assassination (James Baker), and that we were going to have to give up our civil liberties. Dissenting voices like Noam Chomsky, Howard Zinn, or Norman Siegel were even more absent from the air waves than they normally are.

I finally found some intelligent rational discussion on Channel 54, BET. They were interviewing Al Sharpton, Jesse Jackson Sr., and others who had a much more cautious view. It was the only place in the mass media where I saw any recognition that in all likelihood there were reasons this attack occurred, and that we needed to address the root causes as much as the symptoms. It was one of the few places on TV I saw any concern for avoiding civilian casualties in the inevitable retaliation for this attack. The white mass media likes to portray people like Sharpton and Jackson as fringe nutcases. What was apparent last night was that the fringe is a lot more reasoned, informed, and honest than the mainstream. If either of them runs for anything again, they've got my vote. We need more people like this.

I promise I'll get back to Java and XML tomorrow. Right now I'm just having a little trouble focussing on such things.

Tuesday, September 11, 2001

I'm continuing to watch the spin about the attacks today. The level of racism and Anti-Arab hysteria seems to be rising slowly through the day, though there's still no evidence of the race or nationality of the criminals. And of course even if it does turn out that the terrorists were in fact Arabs, that's no justification for retaliatory attacks against Arab countries and civilians.

Many people are calling this an act of war and comparing it to Pearl Harbor. In reality, this isn't even close. Pearl Harbor was a deliberate attack by the military forces of a hostile nation. In all likelihood, no nation and no government was behind this assault. That of course, is what terrorism means: a violent assault by non-government individuals and groups for political purposes. When nations commit violent assaults against civilian populations, it's not called terrorism even though the effects are much worse.

I'm also hearing a lot of talking heads from the FBI and other law enforcement agencies blaming this attack on the openness of our society, our rights, and our civil liberties. Of course the obvious implication is that we need to reduce these and unleash law enforcement to combat attacks like today's. In truth, of course, a police state would have done nothing to prevent today's attacks or one in the future.

I've also watched pictures on the news of Palestinians celebrating in the street. A few people have expressed concern that Americans are hated around the world, and that consequently we need to beef up our defenses. Nobody seems willing to ask the question of why we're so hated that school children are celebrating the violent murder of thousands of people. The answer, of course, is that while what happened today is completely new to the American experience it's not at all new in many other places around the globe. In Palestine, in particular, the people have been brutally assaulted and murdered by terrorist planes for decades. Many of those planes are American made and/or paid for with American dollars. The attacks today may or may not have been retribution for the decades of oppression of Palestinian people, but we should not be particularly surprised that the oppressed take a little glee in a successful attack on a previously invulnerable oppressor.

The real solution cannot be found in retaliation. Violence only begets more violence. While I hope that any living collaborators in this attack are captured and severely punished, I see no point in going to war against Palestine, Afghanistan, or anyone else. Terrorist actions of this nature are inevitable as long as the United States persists in its decades long suppression of legitimate aspirations for self-rule around the world. This is nothing new. The U.S. actively backed repressive client states in Greece, in Italy, in Guatemala, in Nicaragua, in El Salvador, in Vietnam, in the Philippines, in Iraq, in Iran, in Palestine, and many other places. The only thing that surprises me is that it's taken this long for responses on our home soil to reach this magnitude. Until the U.S. is willing to honestly address why we're hated, no security measures will be sufficient.

Update: after a few hours of watching the coverage on the news and listening to people on various mailing lists, mostly New York local, it seems increasingly probable that we're going to go to war with somebody even if the country we're attacking had nothing to do with the attack. The most likely target of opportunity seems to be Afghanistan. Based on past experience, there probably won't be any real war, just a bunch of planes dropping bombs from a couple of miles up. This would solve nothing. That a few idiots without government support killed possibly hundreds of American civilians is not an excuse for us to retaliate by killing several hundred civilians in their country who had equally little to do with this.

I'm sitting here in New York switching between CNN and local channels. I just saw the second tower of the World Trade Center go down. This is truly horrible. I know many people who work there. I'm hoping they're alright. I think there was a Sun office there, although I don't remember off the top of my head whether it was in one of the towers or one of the three smaller buildings. It might even have been a local Sun reseller. One of the local user groups had meetings there, though I stopped attending after the security screening refused me admission one night because I wasn't on the list of attendees. Either way, I hope everyone got out. The attack happened relatively early in the morning on an election day here in New York so maybe the buildings weren't as full as they might have been. We can only hope. (I just heard the election has been postponed.)

So far the coverage I've seen has been relatively restrained. Oklahoma City taught most networks that they couldn't automatically blame the Arabs for every terrorist attack. Maybe some politicians learned their lessons too and we won't hear the calls for immediate retaliation against some target before we even know whose responsible for this horror.

Longer term there are going to be a lot of calls for higher security measures at airports, restricting travel from unfriendly nations, more surveillance cameras, and various other Big Brother measures. It's important to remember that none of these did any good today. After the last bombing, the World Trade Center had some of the tightest security of any general office building in New York; and it didn't help. We don't know yet what happened at the airports where the planes left, but all the requirements that people show ID and go through various security checkpoints didn't stop this either.

Whoever was immediately responsible for this atrocity is undoubtedly dead along with any passengers who may have been on the planes. We may never know their names, and we certainly won't be able to exact vengeance on them. I'm also afraid though that somebody's going to be brought to trials for this, whether they're actually responsible or not. If we can indeed find the murderers responsible for this act, then they deserve to be put in prison for the rest of their natural lives. However, I'm very worried that the government can't find the people responsible, then they'll find somebody anyway, no matter how tangential their connection to the actual bombers. We have to be wary of show trials designed to do nothing more than assuage our desire to make someone pay.

Chris Stevenson confirmed my suspicions about Tomcat's failure to load JARs from jre/lib/ext:

I feel your pain! I've been through the Tomcat classloader road trip a few times now. IMHO the current implementation is a good thing however. (If you think anyone else would benefit from this information, please feel free to copy all or part).

I thought a bit of history might help in understanding how and why Tomcat loads classes as it does.

When JAXP first shipped, the jars were 'sealed', meaning that packages contained in the JAXP jars could not be replaced by other newer classes in the classpath (for example SAX2 which wasn't then supported by JAXP).

Since Tomcat required JAXP for its own parsing (of web.xml, server.xml etc) this meant that xml applications like apache Cocoon2 broke, because Cocoon2 used apache Xerces, and the JAXP classes in Xerces failed with 'Package Sealing Violation' Exceptions.

A solution for this was to drop Xerces into the Tomcat lib directory and rename the JAXP parser.jar to zparser.jar so it was loaded last in the classpath. Ugh. Particularly nasty ugh if you don't have access to the server, or if you want to load two different webapps with different parser requirements.

For this reason, and to maintain true independece of tomcat webapps, the newer implementations use a separate classpath that doesn't expose the jars used by Tomcat itself, or in the JRE/lib/ext directory. This means you really can just drop a webapp into tomcat and expect it to work - even if you're using an old incompatible xml parser, or a new ultra funky one.

You can make jar files visible to all webapps by putting them in one of the various 'common' directories off TOMCAT_HOME described below (from Tomcat4 rc1 README.txt)

Classes available to both Catalina internal classes and web applications:
Unpacked common classes
Common classes in JAR files
JAR files visible only in the Jasper classloader
Classes in JAR files global to web applications

There is a much improved discussion of classloaders in the new Tomcat-rc1 documentation.

Monday, September 10, 2001

The Jakarta Apache Project has posted the first release candidate of Tomcat 4.0, a reengineered servlet and Java Server Pages engine for Apache.

And to answer yesterday's question about why Tomcat 3.2.3 doesn't look for classes installed in jre/lib/ext, my current working hypothesis is that Tomcat uses its own class loader rather than the system class loader. However, more research and testing is needed to confirm this. Thanks to Laurent Bihanic for suggesting this.

Sunday, September 9, 2001

For the last couple of days. I've been working on bringing my Linux Qube server back online. I've had it turned off since the Northpoint shutdown in the Spring. The proximate cause for this was to allow me to run and test servlets for chapters 3 and 5 of Processing XML with Java. I've now upgraded it to Apache 1.3.20, Tomcat 3.2.3, and JDK 1.3.1_01. Soon I hope to have it running all my non-IBiblio domains (,,,, and

The servlets are now all running correctly (which is more than I could say when they were hosted on IBiblio). However, I did have some trouble getting them set up, a lot of which seems to reduce to the very strange cause that Tomcat does not load JAR archives placed in jre/lib/ext.. Can this possibly be correct? If so, how does it avoid using those JARs? Is there a way to tell it that you want them to be loaded? My first impression was simply that I needed to stop and restart Tomcat, but that did not change anything. Right now this is a minor inconvenience. A simple workaround is merely to place all relevant JARs in Tomcat's lib directory, and add them to my own CLASSPATH manually. However, this is very starnge behavior, and I find it hard to believe that's what's really going on. I thought everything in jre/lib/exxt was automatically loaded. Has Tomcat squirreled away its own VM somewhere? A detailed look at the Tomcat shell scripts doesn't show anything suggestive going on. If anyone knows what's going on please drop a line to me at I'm baffled.

Slava Pestov's released version 3.2.2 of jEdit, an open source programmer's editor written in Java. This version adds JHTML and RelationalView syntax highlighting as well as fixing various bugs..

Saturday, September 8, 2001

Version 31.114 of the open source Jacob is now available. Jacob, the Java Commando Base, is a Java browser and project manager for Emacs. This version fixes some minor bugs including ones in Ant build.xml file creation.

Friday, September 7, 2001 has released the Development Kit, or ODK. The ODK is a set of tools, libraries, JAR files, header files, and IDL files for developing components for the OpenOffice open source offiuce suite based on Sun's StarOffice. Supported platforms include Linux, Solaris/Sparc, and Windows. Examples are provided in Java, C++, and Basic. Anyone want to start a pool on how long before Sun renames this the "OpenOfficeTM 2 Standard Edition Software Development Kit"? :-)

The Jakarta Apache Project has released version 1.4 of Ant, their popular open source build tool for Java systems. I really need to learn to use this thing. Make just isn't cutting it for Java.

Thursday, September 6, 2001

The Jakarta Apache Project has posted the second beta of Tomcat 3.3, a Java servlet and Java Server Page (JSP) engine for Apache. This release fixes many bugs and adds some documentation.

Sun's posted the public review draft of the Java Metadata Interface Specification 1.0. According to the original Java Specification Request:

There has been substantial standards-based work done through the OMG to define the interfaces necessary to implement a metadata repository. These interfaces (the Meta-Object Facility, or MOF) are specified in IDL, and although the OMG has defined an IDL-to-Java mapping, the resulting Java code produced is neither intuitive or stable. Such a mapping introduces ORB-specific features, and it does not take advantage of any advanced features of the language. In addition to addressing these problems, the specification will insure that the API integrates with the Java 2 Platform, Enterprise Edition with respect to security, transactions, and resource management.

We are anticipating that an implementation of the specification will connect to the J2EE platform via the Connector Achitecture (JSR-000016).

Implementing the Java Metadata API using the MOF as a building block also allows for the use of XMI (XML Metadata Interchange, a MOF to XML mapping) as a mechanism to serialize metadata using W3C XML. This will allow metadata interoperability between Java, CORBA and legacy environments. We anticipate aligning our work with both JSR-000026 (UML/EJB Mapping) and JSR-000031 (XML Data Binding) to insure compatibility and prevent duplication of work carried out in those efforts.

Wednesday, September 5, 2001

Sun's posted a bug-fix release of the Java 2 Platform, Standard Edition 1.3, i.e. JDK 1.3.1_01.

Sun's posted the second beta of the Java API for XML Messaging (JAXM). JAXM implements the Simple Object Access Protocol (SOAP) 1.1 with Attachments. This version of the JAXM specification adds messaging Profiles "to establish a foundation for supporting a family of higher level standards-based messaging protocols. An example of a Profile would be an implementation of ebXML Transportation, Routing, and Packaging Message Handling Service or the W3C's XMLP layered on JAXM."

Sun's released version 3.0 of their Forte for Java Integrated Development Environment (IDE). The community edition is free-beer (and based on the allegedly opne source NetBeans IDE). The enterprise edition adds an application server and some EJB features. It costs $1995 (and no, I didn't leave out a decimal point.) Forte runs with Java 1.3 on Solaris, Linux, and Windows.

Tuesday, September 4, 2001

Sun's released minor updates to JavaHelp 1.1.2_01 and Java 3D 1.2.1_03.

Sun's posted the Proposed Final Draft Specification for JSR-89 OSS Service Activation API in the Java Community Process. This describes "an API that allows telecom management applications to be developed and integrated with Java-enabled Service Activation systems."

Sun's also posted the Proposed Final Draft Specification JSR-24 Service Provider API on the Java Community Process site. "JAIN SPA 2.1 is the Java specification of the Parlay API Version 2.1 interface. The API is intended to allow software developers to rapidly develop external Service Provider type applications using abstract primitives that hide the heterogeneity of underlying networks."

Monday, September 3, 2001

Slava Pestov's released version 3.2.1 of jEdit, an open source programmer's editor written in Java. This version adds a Color Picker macro and Objective-C syntax highlighting. It also fixes some important bugs.

Sunday, September 2, 2001

IBM's alphaWorks has updated their EJBMaker tool for Enetrprise JavaBeans developers writing applications for the WebSphere application server environment. EJBMaker generates source for CMP entity beans from a bean descriptor file written in XML, plus scripts used to create the required bean persistence tables in DB2. Features include specifying relationships between beans, and extracting data from a bean using XML. This release is allegedly "Standards-compliant; supports any J2EE-certified application server; supports common EJB design patterns; sensitive fields can be encrypted using JCE."

Saturday, September 1, 2001

Sun's posted a beta of the Java 2 Platform Micro Edition (J2ME) Wireless Toolkit 1.0.3 on the Java Developer Connection (registration required). This is a set of tools that provides developers with the emulation environment, documentation and examples needed to develop CLDC/MIDP compliant applications. New features and enhancements in 1.0.3 include:

REAL Software, Inc. has released version 3.5 of their $180 payware REALbasic development environment for the Mac. New features include regular expressions, 3-D graphics tools, and an RBScript expression parser. Mac OS 7.6.1 or later is required. The $300 professional version can also cross-compile to Windows.

Older news:

JanuaryJanuary, 2001January, 2000January, 1999January, 1998
FebruaryFebruary, 2001February, 2000February, 1999February, 1998
MarchMarch, 2001March, 2000March, 1999March, 1998
AprilApril, 2001April, 2000April, 1999April, 1998
MayMay, 2001May, 2000May, 1999May, 1998
JuneJune, 2001June, 2000June, 1999June, 1998
JulyJuly, 2001July, 2000July, 1999July, 1998
AugustAugust, 2001August, 2000August, 1999August, 1998
SeptemberSeptember, 2001September, 2000September, 1999September, 1998
OctoberOctober, 2001October, 2000October, 1999October, 1998
NovemberNovember, 2001November, 2000November, 1999November, 1998
DecemberDecember, 2001December, 2000December, 1999December, 1998

[ Cafe au Lait | Books | Trade Shows | FAQ | Tutorial | User Groups ]

Copyright 2001 Elliotte Rusty Harold
Last Modified September 13, 2001