May, 2005 Java News

Tuesday, May 31, 2005

Mark Doliner has released Cobertura 1.4, a free-as-in-speech (GPL) code coverage tool for Java. Version 1.4 fixes a couple of bugs that snuck into 1.3. If you're not already using another code coverage tool, this is definitely worth a look. Java 1.4 or later is required.

Friday, May 27, 2005

The Omni Group has posted a public beta of OmniGraffle 4, a general purpose Mac OS X diagramming tool and my UML editor of choice. New features in 4.0 include Bezier curves and improved import and export to/from PICT and Visio. OmniGraffle ranges from $79.95 to $149.95.

Gentleware has released Poseidon for UML 3.1 a Unified Modeling Language CASE tool based on the open source ArgoUML. Poseidon for UML integrates with NetBeans/Forte/SUN One Studio, and features generation and import of Java code. This release Version 3.1 adds UML 2.0-compliant state diagrams, copy/cut/paste of diagrams and semantic model elements, and customizable UMLdoc for HTML. Pricing depends on which features you want and ranges from $249 to $875. Upgrades from 2.x range from $149 to $449.

Thursday, May 26, 2005

It's been a while since I checked in with the Java Community Process so I thought I'd catch up with the various Java Specification requests, Early Draft reviews, Proposed Specs, and so forth today.

Patrick Niemeyer has submitted JSR 274, The BeanShell Scripting Language, to the JCP. According to the submission:

This specification will standardize BeanShell, a Java syntax compatible scripting language for the Java platform.

The BeanShell language bridges Java into the scripting domain in a natural way, allowing developers to mix static Java syntax with scripting conventions such as optional typing, simple closures, dynamic commands, and other conveniences.

BeanShell is a VM hosted language, supporting dynamic execution of the full Java grammar and semantics as well as transparent access to Java objects and APIs. Additional scripting and convenience features are brought into the language as a strict superset of the the Java language syntax. In this way BeanShell attempts to minimize both the syntactic and runtime barriers between Java application code and scripts, easing development and facilitating migration between scripts and static Java.

This specification will standardize the BeanShell language syntax and a minimal set of core commands and environmental components.

Personally I don't see any particular reason this has to go through the JCP. Comments are due by June 6.

Sun has posted the early draft review of JSR 268, Java Smart Card I/O API. Comments are due by June 23.

Nokia has posted the early draft review of JSR 257, Contactless Communication API. This is basically an API for tracking RFID devices attached to products, pets, people, and anything else a corporation or government cares to know about.

Siemens and Motorola have posted the early draft review of JSR 253, Mobile Telephony API (MTA)for Java 2 Micro Edition. According to the JSR,

Mobile Telephony API (MTA) defines a set of functions for controlling calls and using network services suitable for Java applications written for J2ME devices. An example of Java application that uses MTA can be conference application, scheduled calls, or voice services. The MTA must be suited to small devices in terms of functionality and processing. Existing APIs such as JTAPI and JAIN JCC do not suit these requirements.

It is not intended to model the whole telephony network, nor is it necessarily intended to expose every telephony feature available in every wireless network. The goal is to define a portable API basis that exposes common telephony features available in most wireless handsets. The design targets extensibility such that unique features available in some networks can be made available as option packages.

Sun has posted the proposed final draft of JSR 208, Java Business Integration (JBI).

Nokia has posted the early draft review specification for JSR-256 Mobile Sensor API to the JCP.

This specification defines Mobile Sensor API, that allows J2ME application developers to fetch data easily and in a uniform way from sensors. Sensor is any measurement data source. Sensors vary from physical sensors like magnetometers and accelerometers to virtual sensors, which combain [sic] and manipulate the data they have received. Examples of virtual sensors could be e.g battery level or field intensity indicator. Sensor connection type can also vary - current types are embedded, short range wireless, wired and remote type.

API also provides means to monitor retrieved data values; limits and ranges can be set and if value meets any of defined conditions the listener is notified.

Mobile Sensor API is intended to be used with any profile running over both the Connected, Limited Device Configuration (CLDC) and Connected Device Configuration (CDC). For more information, see the System requirements section.

Classes and interfaces are in one package: javax.microedition.sensor

Comments are due by May 22.

Siemens and Nokia have posted the proposed final draft of JSR 228, Information Module Profile - Next Generation (IMP-NG). The IMP-NG requirements are additional requirements beyond the requirements of the Connected, Limited Device Configuration, version 1.0 (JSR-30) and version 1.1 (JSR-139). These requirements are:

  • Memory:
    • 128 kilobytes of non-volatile memory for the IMP components
    • 8 kilobytes of non-volatile memory for application-created persistent data
    • 128 kilobytes of volatile memory for the Java runtime (e.g. the Java heap)
  • Networking:
    • Two-way, wireless, possibly intermittent, with limited bandwidth
  • Display:
    • UI capabilities, if any, that do not allow the use of MIDP UI
    • If the device has UI capabilities that can be addressed by MIDP UI, the IMP MUST NOT be used. Such devices must use MIDP 1.0 or MIDP 2.0 or one of its successors instead.
  • Sound:
    • The optional ability to play tones, either via dedicated hardware, or via software algorithm.

Examples of IMs include, but are not restricted to, network cards, routers, tracking devices, and vending machines.

Panasonic has posted the proposed final draft specification for JSR-164, JAIN SIMPLE Presence and JSR-165, SIMPLE Instant Messaging. JAIN stands for Java Advanced Intelligent Networking. Apparently it's two JSRs, but one spec. According to this spec,

The SIMPLE Presence and Instant Messaging API provides application control of standard instant messaging and presence using the SIP/SIMPLE protocol....The API is intended to make frequently used operations convenient, while minimizing SIP header and SIP message manipulation by the application. Thus the API does not permit the application to specify directly the SIP method in a message, and while it does permit the application control over SIP headers, certain headers are handled only by the implementation (see UserAgent for more information), and there are a number of default mechanisms in place so that the application does not typically need to process SIP headers. It is expected that the API can co-exist with SIP APIs such as JSR 32 JAIN™ SIP and JSR 180 SIP for J2ME™, as well as provide full SIMPLE application control without such APIs.

SIMPLE supports two types of messaging: page-mode and session-mode. During the development of this specification, session-mode was under consideration in the IETF. Consequently, this version of the API only provides page-mode instant messaging.

The API is structured along the SIP concept of a User Agent which provides a set of related functions on behave of the user. The presence-related user agents are:

  1. PresenceAgent
  2. PresenceUserAgent
  3. Watcher

The instant messaging related user agent is: PageModeClient.

Sun has posted a maintenance draft review of JSR 925 JavaBeans Activation Framework 1.1. The changes are fairly substantial for a maintenance draft review. Check it out if you use this API. Comments are due by June 20.

Oracle has posted a maintenance draft review of JSR-73 Data Mining API. The changes focus on improving MIME type mappings and providing fallbacks for these. Comments are due by June 27.

Martin Auer has released UMLet 5, "an open-source lightweight Java tool for rapidly drawing UML diagrams, with a focus on a sound and pop-up-free user interface." It can export diagrams to SVG, JPEG, EPS, and PDF formats and can be used as an Eclipse plugin. This release adds text-based creation of sequence diagrams. UMLet is published under the GPL. Java 1.5 is required.

Wednesday, May 25, 2005

YourKit, LLC has posted a public beta of YourKit Java Profiler 4.5, a 295€ payware tool for detecting memory leaks and memory consumption bottlenecks. It features Automation of memory leak detection, an object heap browser, JUnit integration, IntelliJ IDEA, Borland JBuilder integration. besides bugs fixes, version 4.5 adds a MacOS X "Aqua" Look and Feel, support for 64-bit Java, and a live telemetry view.

Gaudenz Alder has released JGraph 5.5, a free-as-in-speech (Mozilla Public License/LGPL) graph component for Swing that requires Java 1.4 or later. JGraph is accompanied by Graphpad, an open-source diagram editor for Swing that offers Automatic Layout, Printing, Zoom, and much more. It is available in English, German and French. This appears to be mostly a bug fix release.

Tuesday, May 24, 2005

Version 1.2.0 of Subversion, an open source version control system designed to replace CVS, has been released. New features in 1.2.0 include reserved checkouts and WebDAV autoversioning.

Lorenzo Bettini has released GNU Source-highlight 2.0, a GPL'd tool for reading Java, C/C++, Prolog, Perl, PHP3, Flex, ChangeLog, JavaScript, LUA, CAML, SML, Log, and Python code and translating them into syntax highlighted HTML and XHTML. Binaries are available for Unix, and it should compile on Windows with the appropriate libraries. Version 2.0 enables new languages to be added at runtime without recompiling.

Grzegorz Kowal has posted the second beta of Launch4j 2.0, an open source (MIT License) tool for wrapping Java applications distributed as jars in Windows native executables. Beta 2 enables launchers to provide version information for the Windows Explorer.

The Big Faceless Organization has released the Big Faceless PDF Library 2.4.1, a $700 payware (more if you want support) Java class library for creating PDF documents. The $1300 Extended Edition adds the AcroForms support, digital signatures, and the ability to import and edit and existing PDF documents. Version 2.4.1 improves supoprt for TIFF and JPEG and fixes bugs. Java 1.2 or later is required.

Monday, May 23, 2005

The Apache Project has released version 1.6.4 of Ant, the popular open source build tool. Version 1.6.4 is a bug fix release.

Robert Oloffson has posted version 0.47 of Java Memory Profiler (JMP). JMP uses the Java Virtual Machine Profiling Interface (JVMPI) interface to track objects and method times in a JVM. It uses a GTK+ interface to display statistics. The current instance count and the total amount of memory for each class is shown as is the total time spent in each method. 0.47 makes various minor improvements. JMP is written in C for Linux.

Sunday, May 22, 2005

Websina has released BugZero 4.0.4, a $1299 payware (+$300 for maintenance) Web-based bug tracking system that supports multiple projects, group-based access, automatic bug assignment, file attachment, email notification, and metric reports. Bug Zero is written in Java and can run on top of various backend databases including MySQL. 4.0.4 is a bug fix release.

Saturday, May 21, 2005

Mark Doliner has released Cobertura 1.3, a free-as-in-speech (GPL) code coverage tool for Java. Version 1.3 can now measure code coverage in inner classes. It also expands the reporting options. If you're not already using another code coverage tool, this is definitely worth a look. Java 1.4 or later is required.

The Gnu Project has released version 3.4.4 of GCC, the GNU Compiler Collection. GCC contains frontends for C, C++, Objective C, Chill, Fortran, Ada, and Java as well as libraries for these languages. GCC is a clean room implementation of Java that doesn't use any Sun code, so it doesn't always exactly match Sun release versions, but this is roughly at the Java 1.4 level with some omissions. 3.4.4 is a bug fix release. It isn't immediately obvious if any of the bug fixes apply to the Java parts of the compiler but it looks like a few of them might.

Friday, May 20, 2005

Dangberg Software Solutions Jindent 4.0.2, a $148 payware tool for formatting Java source code to various coding conventions. I'm sure this is a nice tool and all, but I really have to wonder why somebody would pay $146 for a tool you only need to use occasionally, and for which there are multiple free-beer and open source equivalents?

Wednesday, May 18, 2005

Grzegorz Kowal has posted the first beta of Launch4j 2.0, an open source (MIT License) tool for wrapping Java applications distributed as jars in Windows native executables.

Enterprise Distributed Technologies has released edtFTPj 1.4.9, a free (LGPL) FTP library for Java. A $1999 payware version adds support for FTP over SSL. 1.4.9 can set the port number range for active mode transfers.

Tuesday, May 17, 2005

BlueJ 2.0.5, a free integrated development environment (IDE) for Java aimed at education, has been released. 2.0.5 is now compatible with Mac OS X 10.4.

YourKit, LLC has released YourKit Java Profiler 4.0.11, a 295€ payware tool for detecting memory leaks and memory consumption bottlenecks. It features memory leak detection, an object heap browser, JUnit integration, IntelliJ IDEA, Borland JBuilder, and Eclipse 3.1 integration. Version 4.0.11 is a bug fix release.

Teodor Danciu's posted version 0.6.7 of JasperReports, an open source (LGPL) Java library for generating reports from XML templates and customizable data sources (including JDBC). The output can be displayed on the screen, printed, or written to XML or PDF files. Version 0.6.7 adds the ability to limit the number of records processed from the data source and fixes various bugs.

Monday, May 16, 2005 has released lint4j 0.8.1, a free-beer "static Java source code analyzer that detects locking and threading issues, performance and scalability problems, and checks complex contracts such as Java serialization by performing type, data flow, and lock graph analysis." Version 0.8.1 adds a Maven plugin, new Ant templates, and fixes bugs. I tested this out on the XOM code base. Most of what it reported as questionable were areas where I knew exactly what I was doing and had a good reason for doing it. However, there was one surprise. It flagged a couple of places where I was calling StringBuffer.setLength(0). I had assumed this would be faster than creating a new buffer, but according to lint4j:

The init() method throws away its internal buffer and allocates a new one of size 16, even if it was created with a larger initial size. This can introduce unexpected performance problems as explained in the last section. In some implementations the original char array is overwritten with a zero value, which takes a lot more time for larger data sets than just throwing it away.

Solition [sic]: create a new StringBuffer instead of using StringBuffer.setLength()

In my case the data is quite small, so I don't think I'm going to make the change. Still, it's something to think about.

lint4j also warned me that "Strings should be compared using equals() even if intern()ed." Apparently, "In Java JDK 1.3 and later, the method String.equals() tests for reference equality before testing the more expensive by-value equality, so there is no performance improvement when the == operator is used, it just makes the code harder to maintain and to get correct."

Websina has released BugZero 4.0.3, a $1299 payware (+$300 for maintenance) Web-based bug tracking system that supports multiple projects, group-based access, automatic bug assignment, file attachment, email notification, and metric reports. Bug Zero is written in Java and can run on top of various backend databases including MySQL. 4.0.3 is a bug fix release.

Sunday, May 15, 2005

The Eclipse Project has posted the seventh milestone of Eclipse 3.1, an open source integrated development environment (IDE) for Java. Eclipse also doubles as a base platform for your own applications, an alternative to the AWT and Swing, and a powerful floor wax and dessert topping. The main new features in 3.1 are Ant 1.6, quick fixes for serial version IDs, and support for Java 1.5.

The milestones are beginning to stabilize and new features in this release are relatively minor. Mostly M7 focuses on improving performance. New features include undo and redo for refactoring. There are also lots of small improvements here and there in the user interface. For instance, the code folding arrows now look different from the override and implements indicators.

The Apache Software Foundation has posted the second alpha of Maven 2.0, an open source build tool for Java that's more declarative and less procedural than Ant. Maven is also much more authoritarian and less configurable than Ant. I've been using Maven lately as part of my work with the Jaxen project, and it has some nice features but I really can't recommend it. It's too controlling. If your build process doesn't look like what Maven wants it to look like, you're going to be fighting against it. Maven's probably a little easier to set up than Ant for basic tasks like build, test, and deploy. However, as soon as you want to do something a little different than Maven expects, you're S.O.L. It's really Maven's way or the highway. According to the Maven site,

Maven 2.0 will feel very different to a Maven 1.0 user - and perhaps a little strange. But it is a lot simpler to work with! The key changes from Maven 1.0 are:

  • Faster and smaller - The Maven core no longer uses Ant, Jelly or Xerces making it much smaller, has fewer dependencies and is perfect for embedding in other tools.
  • Defined build lifecycle - No more prereqs, preGoals and postGoals. The build is a series of well defined phases. This also means that the normal goal names are not used - compile, test and install work for any project type.
  • Built-in multiple project handling - Use the same goals on a set of projects, and aggregate the results.
  • Improved SNAPSHOT handling - Snapshots are now checked for updates only once per day by default - though can be configured to be once per build, on a particular interval, or never. A command line option can force a check - making it more like updating from an SCM.
  • No more properties files - All plugins are now configured from the POM (which is now called pom.xml).
  • No more maven.xml - Plugins are now easier to build and integrate, and are the only way to script your builds. (Note that additions may later be made to the POM to allow simple things that scripting was used for, such as goal aliasing).
  • No more Jelly - Plugins are primarily written in Java, though there are providers for other scripting languages. This release includes support for Marmalade, a scripting framework that supports an XML syntax similar to Jelly which can be used to integrate Ant tasks and has a Jelly compatibility layer.
  • Improved repository layout - Maven 2.0 supports both the existing layout, and an improved repository layout that has deeper, partitioned structure making it easier to browse.

The elimination of Jelly and the use of Java should be a real improvement. Extending Maven 1.0 was vastly too difficult. If plug-ins existed to do what you wanted, it was no big deal. If not, you really didn't want to try writing your own. For instance, Maven supports the Clover code coverage tool I use for XOM but but not the Cobertura code coverage tool I use for Jaxen. It was easier to write a separate Ant build file just for test coverage than to write a Maven extension to support Cobertura.

Alpha 2 adds basic site generation, improved error handling, automatic plugin updates and Ant tasks for Maven 2.0. There's also more documentation. Only the core plugins are available so far, but if that's all you need and you don't mind bleeding a little, you may be able to use this.

Friday, May 13, 2005

Bare Bones Software has released version 8.2.1 of BBEdit, my preferred text editor on the Mac. This is a bug fix release. BBEdit is $179 payware. Upgrades from 8.0 are free. They're $49 for 7.0 owners and $59 for owners of earlier versions. Mac OS X 10.3.5 or later is required.

Thursday, May 12, 2005

Sun has released NetBeans 4.1, an open source Integrated Development Environment (IDE) for Java that runs on Windows, Linux, Mac OS X, and Solaris. New features in version 4.1 focus on Enterprise JavaBeans and Web Services. Java 1.4.2 or later is required.

Wednesday, May 11, 2005

Tom Copeland has released PMD 3.1, an open source tool for automatically checking Java code for various classes of bugs. Version 3.1 improves support for Java 1.5 and adds eight new rules including:

I tried to test this on XOM, but it took way too long. I could test some packages but not others. The main complaint it had was that I wasn't using enough messages in my JUnit asserts.

Cenqua has released Clover 1.3.7, a $250 payware unit test coverage tool. 1.3.7 is a bug fix release.

Clover modifies the source code to enable it to follow which statements are executed when, and keeps a running count of how many times each statement is executed during the test suite. Any statement that executes zero times is not being tested. As usual, I tested the new release on the current XOM code base. My first run failed because I'd forgotten to copy the license file from the old Ant directory to the new Ant directory. My second attempt failed because I'd copied the wrong license file from the old Ant directory to the new Ant directory. My third through fifth attempts failed because I didn't initially understand what had gone wrong with the second attempt. My sixth attempt failed like this:

/Users/elharo/Projects/XOM/build.xml:197: java.lang.NullPointerException

Hmm, that's a really helpful error message. I'm not really sure what the problem is here.

I use Clover with Ant, but there are also versions for NetBeans, Eclipse, IntelliJ IDEA, and Oracle JDeveloper 10g. Clover can generate test coverage reports in XML, HTML, PDF, or via a Swing Viewer. Java 1.2 or later is required.

Tuesday, May 10, 2005

The Apache Jakarta Commons Team has released Commons Net 1.4.0 (formerly known as ORO NetComponents), an open source (Apache license) suite of internet protocols implemented in Java including Finger, Whois, TFTP, Telnet, POP3, FTP, NNTP, SMTP, discard, rexec, rcmd, rlogin, Time, Echo, NTP, and SNTP. 1.4 is pretty much a bug fix release.

Saturday, May 7, 2005

Novell has released Mono 1.1.7, an open source implementation of Microsoft's .NET framework that runs on Linux, Unix, Mac OS X, and Windows. Mono includes an ECMA Common Language Infrastructure (CLI) runtime engine, a cross platform IKVM Java runtime engine, a C# 1.0 compiler, class libraries implementing the .NET 1.1 profile, the Gtk# 1.0 GUI programming toolkit, GNU Classpath for the CLI and a Visual Basic runtime. Version 1.1.7 speeds up I/O and HTTP, improves Windows.Forms support, and fixes bugs.

Friday, May 6, 2005

Sun's posted a minor maintenance update to the Java 2 Software Development Kit 1.4.2, version 1.4.2_08. This version fixes a couple of dozen assorted bugs. It's available for Windows, Linux, and Solaris.

Excelsior has released JET 3.7 MP1, a Java virtual machine for Linux and Windows that uses a combination of a traditional machine code compiler and just-in-time compilation from byte code. This release adds support for Java 1.4.2_08 and fixes bugs. JET costs start at $150 and run up to $3375 depending on which version and how much support you want. Even when you pay for it, support is available by e-mail and Web site only.

Thursday, May 5, 2005

David Ekholm has released RiverLayout, a free-as-in-speech (LGPL) LayoutManager designed around a page layout metaphor. According to Eckholm, "I wanted a flexible layout manager that anyone can understand intuitively. Why not mimic how text is positioned in a text editor? In an editor words flow from left to right. They are normally separated with spaces, but if you want them aligned in columns you can use tab stops. You can insert line breaks where needed and even paragraph breaks to separate sections of text."

David Hovemeyer and Bill Pugh have posted FindBugs 0.8.8, an automated open source tool for finding potential bugs in Java code. This release includes several new detectors including:

As usual, I tested FindBugs on the latest XOM code base. It didn't find anything major (though partially that's because I've repeatedly run and fixed things found by earlier versions of this tool.) It did point out a couple of unused fields, including one I'd marked as a possible deletion but hadn't yet been able to absolutely determine whether or not it was was unused. It found some dead stores to local variables as well, including one that allowed me to eliminate a line of code in a hot spot. It also pointed out a couple of places in Jaxen (which XOM references) where I need to think more seriously about whether a field should be marked transient or an interface made Serializable.

Bottom line: the better your code is, and the better a programmer you are, the less FindBugs will find. The searches it performs are relatively shallow and obvious. They tend to be things experienced Java developers already know not to do. Nonetheless, FindBugs is free and reasonably easy to use, despite a few GUI glitches. It's worth running across your code base every so often. Sometimes even if FindBugs doesn't find anything, inspecting its output will cause you to notice things you'd missed before. FindBugs requires Java 1.4 or later and is published under the LGPL.

Wednesday, May 4, 2005

Sun has posted the second release candidate of the NetBeans Integrated Development Environment (IDE) 4.1. This early access release is available for Windows, Linux, Mac OS X, and Solaris. New features in version 4.1 focus on Enterprise JavaBeans and Web Services. Final release is possibly later this month. Java 1.4.2 or later is required.

The Gnu Project has released version 0.15 of GNU Classpath, an incomplete free implementation of the core Java class libraries. This release mostly improves performance and fixes bugs. Since this is a clean room project, it doesn't always line up exactly with any particular Java version; but it's roughly at the level of Java 1.4 with a few missing pieces. GNU Classpath is published under the GPL with library exception.

Websina has released BugZero 4.0.2, a $1299 payware (+$300 for maintenance) Web-based bug tracking system that supports multiple projects, group-based access, automatic bug assignment, file attachment, email notification, and metric reports. Bug Zero is written in Java and can run on top of various backend databases including MySQL. 4.0.2 fixes bugs and makes the size limit for uploaded files configurable.

Tuesday, May 3, 2005

IBM's developerWorks has published Measure test coverage with Cobertura, a brief introduction to the open source Cobertura test coverage tool that I wrote. Cobertura is not (yet) the best test coverage on the market, but it's good enough and it's free. If you aren't already using some sort of test coverage tool, then you owe it to yourself (and your users) to check out Cobertura. Reading this article is a nice way to start.

Monday, May 2, 2005

Fingers crossed, but I finally seem to have gotten Ant 1.6.3 to successfully build and test XOM. Unfortunately I have no idea what I did to make it work, nor what might make it stop working again unexpectedly. There's something very deeply weird going on here.

Sunday, May 1, 2005

I was holding off on upgrading to Tiger, but then I got a tip that students and teachers could purchase a copy for only $69 at the Apple Education Store. (Note: I am in fact an adjunct professor at Polytechnic University, but Apple's willing to take my word on that. They don't require verification.) $129 was a bit much to pay for an OS upgrade, but $69 I can stomach, especially since my PowerBook is still running 10.2. There are various rebates available at most online resellers that cut the price to $99, but I usually resist buying products that require mail-in rebates. My point of view is that they should just give me the discount up front and save everyone the hassle. Mail-in rebates range from sleazy to outright dishonest. Symantec still owes me about a hundred dollars worth of rebates from a couple of years ago, and until I get them they aren't getting any more of my dollars.

The Big Faceless Organization has released the Big Faceless PDF Library 2.4, a $700 payware (more if you want support) Java class library for creating PDF documents. The $1300 Extended Edition adds the AcroForms support, digital signatures, and the ability to import and edit and existing PDF documents. Version 2.4 adds suport for multiple digital signatures. Java 1.2 or later is required.

Older news:

January, 2005 January, 2004 January, 2003 January, 2002 January, 2001 January, 2000 January, 1999 January, 1998
February, 2005 February, 2004 February, 2003 February, 2002 February, 2001 February, 2000 February, 1999 February, 1998
March, 2005 March, 2004 March, 2003 March, 2002 March, 2001 March, 2000 March, 1999 March, 1998
April, 2005 April, 2004 April, 2003 April, 2002 April, 2001 April, 2000 April, 1999 April, 1998
May, 2005 May, 2004 May, 2003 May, 2002 May, 2001 May, 2000 May, 1999 May, 1998
June, 2005 June, 2004 June, 2003 June, 2002 June, 2001 June, 2000 June, 1999 June, 1998
July, 2005 July, 2004 July, 2003 July, 2002 July, 2001 July, 2000 July, 1999 July, 1998
August, 2005 August, 2004 August, 2003 August, 2002 August, 2001 August, 2000 August, 1999 August, 1998
September, 2005 September, 2004 September, 2003 September, 2002 September, 2001 September, 2000 September, 1999 September, 1998
October, 2005 October, 2004 October, 2003 October, 2002 October, 2001 October, 2000 October, 1999 October, 1998
November, 2005 November, 2004 November, 2003 November, 2002 November, 2001 November, 2000 November, 1999 November, 1998
December, 2005 December, 2004 December, 2003 December, 2002 December, 2001 December, 2000 December, 1999 December, 1998

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

Copyright 2005 Elliotte Rusty Harold