February, 2007 Java News

Wednesday, February 28, 2007 (Permalink)

The Apache Portal Project has released Pluto 1.1, the open source reference implementation of the Java Portlet Specification. According to the web page,

Portlets are designed to run in the context of a portal. They are written to the Portlet API which are similar to the Servlet API.

In contrast to servlets, portlets may not do things like sending redirects or errors to browsers directly, forwarding requests or writing arbitrary markup to the output stream to assure that they don?t distract the portal web application which uses them. Another difference compared to servlets is that portlets rely on portal specific infrastructure functions such as access to user profile information, standard interface for storing/retrieving persistent settings, getting client information, etc. Generally, portlets are administrated more dynamically than servlets typically are.

A portlet container provides a runtime environment for portlets implemented according to the Portlet API. In this environment portlets can be instantiated, used and finally destroyed. The portlet container is not a stand-alone container like the servlet container; instead it is implemented as a thin layer on top of the servlet container and reuses the functionality provided by the servlet container.

Pluto serves as portlet container that implements the Portlet API and offers developers a working example platform from which they can test their portlets. However, it's cumbersome to execute and test the portlet container without a driver, in this case, the portal. Pluto's simple portal component is built only on the portlet container's and the JSR 168's requirements.


According to Craig Doremus, version 1.1 "is a major refactoring of Pluto 1.0.1 to allow for easier integration of Pluto's portlet container into a portal and easier configuration of the Pluto portal driver, a bare-bones portal included with Pluto."

Tuesday, February 27, 2007 (Permalink)

IBM's alphaWorks has released the Real-Time Class Analysis Tool for Java. (a.k.a. Ratcat. Has someone been reading a little too much Larry Niven lately?). Ratcat "scans the Java bytecode of the user's application as well as the classes that it uses. The tool then generates a Java source file containing a static method that can be called by the application to preload and, optionally, pre-compile all these classes."

Monday, February 26, 2007 (Permalink)

Bruno Ranschaert has released JSON Tools, a free (LGPL) Java library for parsing, rendering, and validating JSON documents, as well as marshalling and unmarshalling Java objects to and from JSON documents.

Sunday, February 25, 2007 (Permalink)

Robert Breidecker has released JEval, an open source (Apache License 2.0) library for parsing mathematical, string, Boolean and functional expressions.

Saturday, February 24, 2007 (Permalink)

Sun's posted the seventh milestone of NetBeans 6.0, its pure Java IDE for various platforms. Additions include:

  • Java Web Start support for J2SE Projects
  • Expression stepping in Debugger
  • NetBeans Installer
  • Profiler Improvements
  • CSS editor
  • Local History and Subversion Properties Editor
Friday, February 23, 2007 (Permalink)

The Eclipse Project has released version 3.2.2 of Eclipse, an open source integrated development environment (IDE) for Java. It 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. Version 3.2.2 fixes many bugs. Java 1.4 or later is required.

Thursday, February 22, 2007 (Permalink)

Atlassian has released Bamboo 1.0, a $960 payware continuous integration server that "provides Build Telemetry to help identify and highlight trends, patterns, and linkages across builds — not just focusing on the results of a single build."


Nathan Fiedler has released of JSwat 4.0, a graphical, stand-alone Java debugger built on top of the Java Platform Debugger Architecture. Features include breakpoints, source code viewing, single-stepping, watching variables, viewing stack frames, and printing variables. Version 4.0 adds support for Java 6, and is now published under the Common Development and Distribution License (CDDL) instead of the Sun Public License.


The Jakarta Apache Project has released the Commons FileUpload 1.2. "FileUpload makes it easy to add robust, high-performance, file upload capability to your servlets and web applications. FileUpload parses HTTP requests that conform to RFC 1867, 'Form-based File Upload in HTML'. That is, if an HTTP request is submitted using the POST method, and with a content type of 'multipart/form-data', then FileUpload can parse that request, and make the results available in a manner easily used by the caller." Version 1.2 adds a streaming API, progress listeners, header continuation lines, and limits on file sizes.


The Big Faceless Organization has released the Big Faceless PDF Library 2.7.7. This is a bug fix release. The library costs $700 (more if you want support)s. The $1300 Extended Edition adds the AcroForms support, digital signatures, and the ability to import and edit and existing PDF documents.


Teodor Danciu has released JasperReports 1.3.1, 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 1.3.1 supports stacked area charts.

Tuesday, February 20, 2007 (Permalink)

I'm trying to figure out what it would take to generate modern markup from javadoc. Some parts are obvious, like removing table layouts and using XHTML instead of HTML. I can just TagSoup everything to fix malformed doc comments. That's all fairly easy, if tedious. The tricky part is getting rid of frames. I'd like to duplicate the typical framed layout including scroll bars by using CSS. So far, this is what I've got. It's almost there but not quite. For reasons I don't understand, the bottom left frame overflows the window rather than scrolling. If anyone can figure out how to fix this and let me know, I'd appreciate it.

I do know there's a lot of other ugly markup in this example left over from the original JavaDoc. The CSS also is pretty ugly because there's not enough white space on the margins and I've drawn borders everywhere to see what's going on. Don't worry about that. I know how to handle that. I'm just trying to straighten out the frames for the moment.

They're a few solutions I can't consider. JavaScript is out. So are server side templates of any kind. This has to all be static HTML that can be read from a local file system. It would also be very nice if the main content of the page could be the first div on the page rather than the last. That would improve accessibility for people using screen readers. However they'll probably choose the "no frames" version anyway so that's not a deal breaker. Any suggestions?

Monday, February 19, 2007 (Permalink)

Linus Tolke has posted ArgoUML 0.24, an open source UML modeling tool written in Java. This release adds support for Brazilian Portuguese. ArgoUML is published under the BSD license.


The Apache Commons Team has released Commons IO 1.3.1, a class library that provides utility classes and methods for copying streams, endianness conversion, safely closing streams, creating Strings and byte arrays from streams and Readers, filtering files, and querying and manipulating the file system. Version 1.3.1 fixes a couple of bugs. Commons IO is published under the Apache license.

Sunday, February 18, 2007 (Permalink)

Tuesday, February 20, is the third iteration of Extreme Tuesday New York. This will once again be held at the Silver Swan at 41 East 20th Street, starting at 6:30. See you there. Hopefully this time they won't run out of dark beer.

Saturday, February 17, 2007 (Permalink)

Bruno Lowagie has released iText 2.0, an open source Java library for creating documents in PDF, XML, HTML, and RTF. It can also convert XML documents into any of these formats. This release fixes bugs. Version 2.0 adds support for certificate encryption, portable collections, and new printer preferences. iText is published under the Mozilla Public License.

Friday, February 16, 2007 (Permalink)

Apple has posted a bunch of software updates including Java for Mac OS X 10.4 Release 5 and Java for Mac OS X 10.3 Update 5. The primary change in these two releases is support for the upcoming earlier date for Daylight Savings Time. These releases also update "J2SE 5.0 to version 1.5.0_07, Java 1.4 to version 1.4.2_12 and improves SWT compatibility for J2SE 5.0."


The Apache Software Foundation has released of Maven 2.0.5, an open source build tool for Java that's more declarative and less procedural than Ant. This is mostly a bug fix release.


The Eclipse Project has posted the fifth milestone of Eclipse 3.3, an open source integrated development environment (IDE) for Java. It 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. New features in this release. mostly minor, include:

  • Vista support
  • Equinox launcher
  • Product editor gives you the option to bundle a specific platform JRE
  • Better looking PDE form editors
  • PDE validates plug-in and product editor form fields as input is entered.
  • Update Site Target Provisioning wizard
  • Analyze dependencies for JAR archives
  • Drag over and drag under effects
  • Color cursors on GTK
  • Mozilla can be used as the underlying browser control on Windows and OS X
  • Text drag and drop in text editors

Cenqua has posted a beta of FishEye 1.3, a $999 payware tool for viewing CVS activity. I've been using FishEye lately as part of my work with the Jaxen Project. As well as drawing graphs of activity, it lets you see who's committing what when to CVS, what individual committers have been up to, what's going on in different branches, what's happened to particular files, and so forth. It automatically wraps up tarballs and zip files of the current code base. Version 1.3 adds Perforce support and fixes bugs.


Bare Bones Software has released version 8.6.1 of BBEdit, my preferred text editor on the Mac, and what I'm using to type these very words. This is a bug fix release. BBEdit is $199 payware. Upgrades from 8.5 are free. Upgrades from 8.0 cost $30 and upgrades from 7.x costs $40. Mac OS X 10.4 or later is required.

Thursday, February 15, 2007 (Permalink)

One more question about JSR-311: why is this being proposed for Java Standard Edition at all? The proposal seems to depend on JAX-WS and the Java Servlet API, neither of which is included in the Java 6 Standard Edition. Will these packages have to be added to Java SE just to support this?


The Gnu Project has released version 4.1.2 of GCC, the GNU Compiler Collection. GCC contains frontends for C, C++, Objective C, Fortran, Ada, and Java as well as libraries for these languages. GCC's Java is a clean room implementation 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. According to Mark Mitchell, "This release is a bug-fix release for problems in GCC 4.1.1. GCC 4.1.2 contains changes to correct regressions from previous releases, but no new features."


The Jakarta Apache Project has released Commons Lang 2.3, an open surce collection of "helper utilities for the java.lang API, notably String manipulation methods, basic numerical methods, object reflection, creation and serialization, and System properties. Additionally it contains an inheritable enum type, an exception structure that supports multiple types of nested-Exceptions, basic enhancements to java.util.Date and a series of utlities dedicated to help with building methods, such as hashCode, toString and equals." Classes include:

  • CharRange
  • CharSet
  • CharSetUtils
  • CompareToBuilder
  • Enum
  • Enum.Entry
  • EnumUtils
  • EqualsBuilder
  • ExceptionUtils
  • HashCodeBuilder
  • Nestable
  • NestableDelegate
  • NestableError
  • NestableException
  • NestableRuntimeException
  • NumberRange
  • NumberUtils
  • ObjectUtils
  • ObjectUtils.Null
  • RandomStringUtils
  • SerializationException
  • SerializationUtils
  • StandardToStringStyle
  • StringUtils
  • SystemUtils
  • ToStringBuilder
  • ToStringStyle
  • ToStringStyle.DefaultToStringStyle
  • ToStringStyle.MultiLineToStringStyle
  • ToStringStyle.NoFieldNameToStringStyle
  • ToStringStyle.SimpleToStringStyle
  • ValuedEnum
  • ArrayUtils
  • BitField
  • BooleanUtils
  • CharRange (previously package scoped)
  • ClassUtils
  • StringEscapeUtils
  • WordUtils
  • IllegalClassException
  • IncompleteArgumentException
  • NotImplementedException
  • NullArgumentException
  • SerializationException
  • UnhandledException
  • Validate
  • IntRange
  • LongRange
  • Range
  • DoubleRange
  • JVMRandom
  • NumberRange
  • FloatRange
  • NumberUtils
  • Fraction
  • RandomUtils
  • DateFormatUtils
  • FastDateFormat
  • DateUtils
  • StopWatch
  • CompositeFormat
  • StrBuilder
  • StrLookup
  • StrMatcher
  • StrSubstitutor
  • StrTokenizer

"This release contains an equal number of bugfixes and improvements. Users of the StrBuilder and DurationFormatUtils classes will especially want to upgrade." There's a lot of good stuff here. Everyone should check it out, at least for the ideas even if you don't want to use the library.

Wednesday, February 14, 2007 (Permalink)

Sun has submitted JSR-311, Java API for RESTful Web Services, to the Java Community Process. No useful information is provided in the specification as to what they're actually proposing. However I can't help but think that this is a horrible idea.

A major selling point of REST is that it's simple. It doesn't require big, complicated frameworks with seven levels of indirection to solve simple problems. However there are some companies (Sun being one of them) that can't imagine regular, ordinary developers building systems without using some ultra-complex framework they've designed. The idea that people might just want to send plain old XML over plain old HTTP is inconceivable to them. There has to be some big framework for serializing objects and abstracting databases and faking method calls and guaranteeing message delivery and a dozen other things people either can already do perfectly well with HTTP and XML or don't actually need to do at all.

What would be helpful would be a serious rethink of Java's HTTP functionality. Client-side, something like Apache HttpClient that has full and complete support for cookies, authentication, ETags, If-Modified-Since headers, PUT, POST, DELETE, HEAD, GET and so forth would really make it a lot easier to build RESTful systems in Java. Yes, you can sort of make all this stuff work now, if you squint your eyes and look at the problem crosswise; but it's really ugly and hard. Rather than designing the best possible HTTP API, Sun opted for a lowest-common-denominator API for all protocols. Guess what? Not all protocols are the same. FTP, HTTP, file, and mailto are very different things. Any API that tries to cover all these is guaranteed to fail at least three and probably all of them. The URLConnection class suffers from genericity disease.

However, although the proposal is very vague, I don't think that's what we're going to get. Rather than an API that exposes HTTP to programmers in a straightforward way, this group is likely to try to hide HTTP from programmers. Consider this statement:

Currently, building RESTful Web services using the Java Platform is significantly more complex than building SOAP-based services and requires using low-level APIs like Servlets or the dynamic JAX-WS APIs. Correct implementation requires a high level of HTTP knowledge on the developer's part.

Actually no. It's a lot easier to build systems on top of plain old XML and HTTP than by trying to work with confusing messes like JAX-WS, SOAP, and object serialization. They are right about the servlet API, but that's because the servlet API was designed without considering REST (or without considering user interface principles in general). The problem is not HTTP or requiring developers to understand it. The problem is that Sun's server-side HTTP API blows chunks. Like the client side API, it suffers an overly generic focus (not just HTTP but potentially all server-side protocols) and an unfamiliarity with the actual HTTP spec they were trying to model. No wonder RESTful development with servlets is hard. We need to replace the servlet API with something more RESTful and usable, not hide HTTP completely. RESTlet might be a good start.

Finally, like all too many JCP specs, this group proposes to develop, experiment, and standardize at the same time. There is little prior art in this space, and what there is, is likely to be unknown to or ignored by the working group. Instead they are going to try to lock out competing alternatives by pronouncing their creation to be the standard and bundling it with the Java standard edition. This won't work. When a standard sucks, it will be replaced by better third party alternatives. Just consider Hibernate and Spring vs. J2EE or RELAX NG vs. W3C XML Schema. However, preempting other efforts can delay the adoption of better technologies by years and cause much pain along the way.

Comments are due by February 26. Please ask Sun to reconsider this proposal.

Tuesday, February 13, 2007 (Permalink)

Object Refinery Limited has released JFreeChart 1.0.4. "This release features a new XYBlockRenderer class, URLs for pie chart labels in HTML image maps, a new dataset implementation for open-high-low-close charts, support for gradient paint in ClusteredXYBarRenderer, StackedXYBarRenderer and legend graphics, a new anchor attribute for XYImageAnnotation, improvements to the experimental SWT support, plus a number of additions to the API for usability, and many bug fixes" JFreeChart is free software under the terms of the GNU Lesser General Public Licence (LGPL), and requires Java version 1.3.1 or later.

Monday, February 12, 2007 (Permalink)

Kohsuke Kawaguchi has released NLink, a JNI alternative for invoking native methods from Java. Unlike JNI, NLink is driven by annotations. You do not need to write a separate Java method corresponding to each native method you want to call. NLink is published under the MIT License.

Sunday, February 11, 2007 (Permalink)

Frank Wierzbicki has posted the first beta of Jython 2.2. Jython is an open source Python implementation that runs on the Java virtual machine.

Thursday, February 8, 2007 (Permalink)

Nigel Wetters Gourlay has released JavaInetLocator 2.23, a library based on Whois information cached locally that looks up the country code and language associated with an IP address. It is published under the GNU General Public License (GPL)


Ohad Serfaty has released the Java Mozilla Html Parser 0.1.2, "a Java package that enables you to parse html pages into a Java Document object. The parser is a wrapper around Mozilla's Html Parser , thus giving the user a browser-quality html parser." This is a bug fix release. It is published under the LGPL.

Wednesday, February 7, 2007 (Permalink)

Kirill Grouchnikov has released the Substance Look-and-Feel 3.2. This release adds two more skins, Challenger Deep and Emerald Dusk, both of which look hideous and unreadable. There is also now a "SubstanceLookAndFeel.OVERLAY_PROPERTY client property (currently supported only on scroll panes) specifies that a component should have overlay functionality. In case of scroll pane marked with this property set to Boolean.TRUE, the contents of the viewport are painted 'beneath' the scroll bar area (scroll tumb, scroll track and scroll buttons)." This is a good idea why?

This project should be a cautionary tale for people who think programmers should be interface designers. Apple and Microsoft at least recognize that these are different skill sets, and that looks and feels should be created by a team of programmers, graphic designers, and interaction designers. Sadly the Linux and Java communities haven't really figured this out yet, and are still trying to have programmers do it all, with predictable results. The bottom line is that we don't really need different look-and-feels in Java. The best Java can or should do is faithfully mimic the native user interface. Unless your name is Bruce Tognazzini or Kai Krause, you almost certainly won't do better than that; and you'll be very. very lucky if you don't do worse. Pluggable look-and-feels are necessary in Swing only because Swing apps have to run on multiple platforms. They should be changed only from operating system to operating system, not application to application. The goal of a Java application is to fit in with other native applications, not to stand out.

Java 5 or later is required. Substance is published under a BSD license.


Michael Allan has posted Rhinohide 0.1.8, a Java library that exposes the browser's DOM to applets. (Why this functionality isn't a standard part of the JDK I've never understood.) Java 5 or later is required.


The Big Faceless Organization has released the Big Faceless PDF Library 2.7.7. This release improves performance. The library costs $700 (more if you want support)s. The $1300 Extended Edition adds the AcroForms support, digital signatures, and the ability to import and edit and existing PDF documents.


TMate has released SVNKit 1.1.1, a pure Java Subversion client library formerly known as JavaSVN. Version 1.1.1 fixes bugs and adds some commands and OpenVMS support.


Enterprise Distributed Technologies has released edtFTPj/Pro 1.3.3, a $299 payware FTP library for Java that supports FTP over SSL. Version 1.3.3 fixes bugs.

Tuesday, February 6, 2007 (Permalink)

IBM's developerWorks has published Java 2007: The year in preview. In this article, I peer into my crystal ball, and predict what we're likely to see happen to Java over the coming year.


Gilad Bracha, Neal Gafter, James Gosling, Peter von der Ahé have posted version 0.5 of their Closures for Java proposal. According to Gafter,

There are two significant changes:

  1. We've dropped the nominal version of the specification. We are no longer maintaining parallel versions of the specification (with and without function types) because the most significant concerns regarding function types were resolved in earlier revisions of the spec.
  2. We added support for user-defined looping APIs. I wrote about this in October 2006, but did not integrate that into the spec until now.

There is now a two-hour version of my Closures for Java talk on video. It is the same as the one-hour version but with questions and answers both during and after the talk.


Tonight, February 6, is the second iteration of Extreme Tuesday New York. This will be held at the Silver Swan at 41 East 20th Street, starting at 6:30. See you there. Personally I'm going to see if we can get a good discussion of closures in Java going at one of the tables.


Sebastiano Vigna has released version 5.0.6 of fastUtil, a collection of type-specific Java maps and sets with a small memory footprint and faster access and insertion. The classes implement their standard counterpart interfaces such as java.util.Map and can be plugged into existing code. However, they also contain type-specific methods. For instance, the CharList class has not only the usual add(Object o) method but also an add(char c) method. This release adds a FastBufferedInputStream class and a front() method that retrieves elements equal to the top from queues. fastUtil is published under the GNU Lesser General Public License (LGPL).


Diomidis Spinellis has released UMLGraph 4.6, an open source (BSD license) tool for declaratively specifying UML diagrams. UMLGraph uses text files that look vaguely like source code to specify how UML class and sequence diagrams are drawn. A doclet converts this into a Graphviz diagram that can be easily converted to Postscript, GIF, SVG, JPEG, etc. Version 4.6 is a bug fix release. Java 5 is required.

Monday, February 5, 2007 (Permalink)

CMP has posted the Call for Papers for Software Development Best Practices 2007. Tracks include:

  • Build and Deploy
  • C++
  • Design and Architecture
  • People, Projects and Teams
  • Process and Methods
  • Requirements and Analysis
  • Security
  • Testing and Quality
  • Web Services/SOA

Deadline is March 17. The conference takes place September 18-21 in Boston.

Sunday, February 4, 2007 (Permalink)

The GNU Project has released version 4.0.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's Java is a clean room implementation 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. 4.0.4 is a bug fix release. "The 4.0.4 release is provided for those that require a high degree of binary compatibility with previous 4.0.x releases. For most users, the GCC team recommends that version 4.1.1 or later be used instead."

Saturday, February 3, 2007 (Permalink)

The Apache Commons Team has released Commons IO 1.3, a class library that provides utility classes and methods for copying streams, endianness conversion, safely closing streams, creating Strings and byte arrays from streams and Readers, filtering files, and querying and manipulating the file system. Version 1.3 adds a DirectoryWalker class "designed for subclassing to walk through a set of files. DirectoryWalker provides the walk of the directories, filtering of directories and files, and cancellation support. The subclass must provide the specific behaviour, such as text searching or image processing." Commons IO is published under the Apache license.


The Mozilla Project has released Bugzilla 2.22.2 (stable), 2.20.4 (legacy), and 2.23.4 (testing). Bugzilla is an open source issue tracking system based on MySQL and Perl. These are all bug fix releases, and include security fixes. All users should upgrade.

Friday, February 2, 2007 (Permalink)

Next Tuesday, February 6, will be the second iteration of Extreme Tuesday New York. This will be held at the Silver Swan at 41 East 20th Street.


Stephen Colebourne has submitted JSR-306, Date and Time API, to the Java Community Process. According to the JSR,

This JSR will provide a new and improved date and time API for Java. The main goal is to build upon the lessons learned from the first two APIs (Date and Calendar) in Java SE, providing a more advanced and comprehensive model for date and time manipulation.

The new API will be targeted at all applications needing a data model for dates and times. This model will go beyond classes to replace Date and Calendar, to include representations of date without time, time without date, durations and intervals. This will raise the quality of application code. For example, instead of using an int to store a duration, and javadoc to describe it as being a number of days, the date and time model will provide a class defining it unambiguously.

The new API will also tackle related date and time issues. These include formatting and parsing, taking into account the ISO8601 standard and its implementations, such as XML. In addition, the areas of serialization and persistence will be considered.

The final goal of the new API is to be simple to use. The API will need to contain some powerful features, but these must not be allowed to obscure the standard use cases. Part of being easy to use includes interaction with the existing Date and Calendar classes, something that will be a key focus of the Expert Group.

Dates and times are extremely tricky to model, much trickier than what we usually naively expect. For example, how do yo handle both times with a specific time zone and ones in which the time zone is not specified? Comments are due by February 12.

Thursday, February 1, 2007 (Permalink)

Johann Burkard has released UUID 2.1.3, a Java library for generating UUIDs and GUIDs.


Julien Ponge has released IzPack 3.10, an open source tool for building cross-platform installers in Java. 3.10 fixes bugs and adds a DataCheckPanel and support for custom icons. IzPack is published under the Apache License 2.0.


Version 5.7 of SuperWaba, an open source Java virtual machine for handheld operating systems including PalmOS and Windows CE devices, has been released. 5.7 adds support for the Nokia E62 (Symbian s60v3) and MotoQ. SuperWaba is published under the LGPL.


Older news:

20072006200520042003
January, 2007 January, 2006 January, 2005 January, 2004 January, 2003
February, 2007 February, 2006 February, 2005 February, 2004 February, 2003
March, 2006 March, 2005 March, 2004 March, 2003
April, 2006 April, 2005 April, 2004 April, 2003
May, 2006 May, 2005 May, 2004 May, 2003
June 2006 June, 2005 June, 2004 June, 2003
July, 2006 July, 2005 July, 2004 July, 2003
August, 2006 August, 2005 August, 2004 August, 2003
September, 2006 September, 2005 September, 2004 September, 2003
October, 2006 October, 2005 October, 2004 October, 2003
November, 2006 November, 2005 November, 2004 November, 2003
December, 2006 December, 2005 December, 2004 December, 2003

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

Copyright 2007 Elliotte Rusty Harold
elharo@metalab.unc.edu