September, 2006 Java News

Saturday, September 30, 2006 (Permalink)

The Eclipse Project has released version 3.2.1 of Eclipse 3.2, 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.1 fixes over 300 bugs, though not the nastiest one that keeps me still on version 3.1. Java 1.4 or later is required.

Friday, September 29, 2006 (Permalink)

Cenqua has released Clover 1.3.13, a $250 payware unit test coverage tool. 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. 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. 1.3.13 is a bug fix release. Java 1.2 or later is required.


Mort Bay Consulting has released Jetty 6.0.1, an open source servlet engine that supports version 2.5 of the Java Servlet API and version 2.1 of Java Server Pages. This seems to be a bug fix release. Jetty is published under the Apache 2.0 license.

Thursday, September 28, 2006 (Permalink)

My very first book was the Java Developer's Resource. It was sort of amateurish, made lots of mistakes that make me cringe when I read it now, never earned out, and generally died an unheralded death; but it was the early days, and nobody else knew any better back then either. It did succeed in getting me my first university teaching job, and it did become the basis for the Java course notes I've published here for the last nine years or so.

Unlike the book, which is long since out of print, I have been updating and adding to the course notes over time. In fact, there's relatively little of the original book left at this point. It's actually become a fairly solid introduction to Java at roughly the level of Java 1.4. Professors at quite a few other universities have used my notes to teach Java, and even more individuals have used them for self-study. I probably should add some more Java 5 material to cover generics and the collections API, but at this point I'm limited by how much I can cram into one semester. Every subject I add means there's one thing I have to take out. A few topics in the later parts of the notes I haven't gotten to since the first or second semester I taught the course way back in the 1990s.

Periodically I receive requests for a unified bundle of the notes that's easy to install on a laptop and read in the dorms, at the library, the beach, the coffee shop, the local tavern, or wherever else people study. I tried selling zip files with HTML but:

  1. People post the notes on their own web sites, and then I get bug reports about problems I can no longer fix.
  2. A lot of people really seem to want a single, printable file; especially a PDF.
  3. I'm really, really bad at doing my own fulfillment.

Hence I am pleased to announce that I have teamed up with Lulu.com to make the course notes available for purchase in both printed and PDF form under the title the Java Student's Resource. A PDF is $19.95. A perfect-bound, printed copy is $35.90. All major credit cards are accepted. Now I can concentrate on what I like to do (writing and teaching) and Lulu will handle the mundane details of taking credit card numbers and shipping boxes.

The printed book is not available from other retailers such as Amazon. I thought about making it available there, but the tyrannies of ISBN numbers would have kept me from updating it as frequently as I like. Lulu doesn't tell me who ordered the book, but if you drop me an e-mail after you've ordered it, I'll put you on a mailing list to receive free updated versions of the PDF as they're released, probably 2-4 times a year. Enjoy!


Cenqua has released FishEye 1.2, 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.2 "substantially improves Subversion support, adds new visualizations, email feeds, user preferences, administration, and is faster."

Wednesday, September 27, 2006 (Permalink)

Yes, I know the headlines below from Mokka mit Schlag are seriously broken. Here's the explanation. I'm fixing it now.

Wonderful! Fixing Mokka mit Schlag headlines broke the Cafe con Leche headlines. Working on that now. Ain't legacy code fun?

OK, that much is half fixed; but now the formatting is confused. I'm not sure why. Time to dig deeper. OK. That was not the same problem at all. An extra </div> closing tag had snuck in. Removing that restored the proper appearance.

An unintended side effect of all this hacking is that the complete story list and recommended reading from Cafe con Leche is now linked from here, rather than just Today's News. I didn't mean to do that, but now that I see it I sort of like it; so I'll probably leave that alone for now.


The Eclipse Project has posted the second 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:

  • Color cursors on Mac OS X
  • Resource search dialog
  • Hiding the window toolbar
  • Warning if editing a derived file
  • Spell check in Commit dialog
  • The "Show Source of Selected Element Only" tool bar button is now hidden by default
  • Class file editor shows disassembled code
  • Cheat sheet editor

Sun's posted the third milestone of NetBeans 6.0, its pure Java IDE for various platforms. This release adds a Windows Vista look and feel.

Tuesday, September 26, 2006 (Permalink)

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


BenQ Corporation has posted the proposed final draft of JSR-230 Data Sync API for J2ME. According to the draft,

This JSR defines a JME optional package that can be used with the JME configurations Connected Limited Device Configuration (CLDC) or Connected Device Configuration (CDC). The package contains an API that enables applications to synchronize application-specific data stored in the terminal with the corresponding data stored on a server, thus replicating any changes made to either instance of the data. The API defined by this JSR provides a generic interface to the data synchronization implementation in the device, enabling data synchronization via data synchronization protocols supported by the device. One example of a data synchronization protocol that may be used by Java applications is the SyncML protocol as defined in OMA Data Synchronization (OMA DS).

The API defined in the present specification provides a protocol-independent set of synchronization commands, which means that the API can be implemented on top of various data synchronization protocols.

The API covers the following aspects:

  • Management of synchronization sessions (starting a session from the application, notifying the application about a server-initiated session)
  • Synchronization operations (add, delete, change – both issuing of outgoing synchronization commands and notifying about incoming synchronization commands)
  • Registration of applications and their databases for synchronization (to enable notification and automatic start of applications)
Monday, September 25, 2006 (Permalink)

The Apache Portal Project has released JetSpeed 2.0, an open source implementation of the Java Portlet Specification. JetSpeed is :

an Enterprise Information Portal, written in Java and XML. Within a Jetspeed portal, individual portlets can be aggregated to create a page. Each portlet is an independent application with Jetspeed acting as the central hub making information from multiple sources available in an easy to use manner.

A portal based on Jetspeed can make applications, database information and other data sources available to end-users through a single web site. Jetspeed provides a security infrastructure so that the information and functions made available to each user can be customized on basis of the user or a role that the user has. The user can access the portal via a web browser, WAP-phone, pager or any other device supported by the servlet engine.

Content held in a wide variety of formats such as XML, RSS or database tables can be integrated within a Jetspeed page. The actual presentation of the data is handled via XSL and delivered to the user via combinations of data presentation tools such as Java Server Pages (JSPs), Velocity and HTML. Jetspeed provides support for templating and content publication frameworks such as Cocoon, WebMacro and Velocity .

Sunday, September 23, 2006 (Permalink)

The Apache Jakarta Project has released Commons Configuration 1.3, a Java class library that

enables an application to read configuration data from a variety of sources. Commons Configuration provides typed access to single, and multi-valued configuration parameters as demonstrated by the following code:

Double double = config.getDouble("number");
Integer integer = config.getInteger("number");

Configuration parameters may be loaded from the following sources:

  • Properties files
  • XML documents
  • Property list files (.plist)
  • JNDI
  • JDBC Datasource
  • System properties
  • Applet parameters
  • Servlet parameters
Different configuration sources can be mixed using a ConfigurationFactory and a CompositeConfiguration. Additional sources of configuration parameters can be created by using custom configuration objects. This customization can be achieved by extending AbstractConfiguration or AbstractFileConfiguration.

New features in this release include XPath support, a hierarchical alternative to ConfigurationFactory that allows more configuration options, and configuration listeners.

Friday, September 22, 2006 (Permalink)

I've updated the conferences page. Please let me know about any upcoming shows I've missed.


Teodor Danciu has released JasperReports 1.2.6, 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.2.6 fixes bugs.

Thursday, September 21, 2006 (Permalink)

Sun has submitted JSR-306, Towards a new version of the JCP, to the Java Community Process. According to the JSR,

This JSR proposes several changes to the JSPA and to the JCP process document. The changes are both of a streamlining nature:

  • further improve the transparency of the process;
  • further optimize the average duration of JSRs;
  • how can individuals best participate in the process;

as well as of a potentially more fundamental nature:

    • allowing non-Java implementations of a JSR's specification;
    • ability to create liaison relationships with other standards organizations;
    • easing the migration of pre--existing technology towards an agreed upon standard;
    • the availability of TCK and associated licensing information upon completion of a JSR.

During the execution of the JSR the Spec Lead and Expert Group may decide to add additional items and may also decide to drop items if it is deemed that a reasonable consensus cannot be reached or in order to complete the work of this JSR in a reasonable time frame.

Comments are due by October 2.


Motorola has submitted JSR-307, Network Mobility and Mobile Data API, to the Java Community Process. According to the JSR,

This JSR provides two APIs: one to establish packet data sessions with particular attributes such as bandwidth, latency, QoS or destination APN (for GPRS) and another for providing a framework for managing network mobility for mobile platforms and applications on those platforms. Data control and network mobility control are linked together because many use cases for the data capabilities in this JSR also include operations that need information about the available networks (to determine what services to offer to the user).

Mobile Data API
Entering into a wider range of applications and application services available on a mobile device, not all applications are able to operate best with the default type of data session which is available today. This API provides means to request sessions over a particular radio transport (if more than one is available), obtain bandwidth guarantees for the session, and update sessions as available transport capabilities may change. The API expects that when applications do not specify a radio transport for use, that the platform will select the transport best able to support the requested session characteristics.

Additional APIs in the framework provide for notifications of changes in session attributes, along with mechanisms to change the attributes of an active session. For devices with multiple data transport mechanisms (such as cellular and WLAN), the API provides a means to select a particular transport for the session. As an example of the attributes which may be specific (for a GPRS session), this would include APN, minimum and requested bandwidth, traffic class (conversational, streaming, interactive, background) and latency limits.

Network Mobility API
This will provide a framework for managing network mobility for mobile platforms and applications on those platforms. Applications will be able to manage and monitor the features, attributes, and capabilities of available wireless networks (wireless Voice, Data and related services) as well as identifying wired connections to services (accessing the internet through a USB connection bridged in a PC for example). The mobility API will provide a means for an application to set both application specific and device-wide preferences for which networks to attach to, obtain information about the networks which are currently available for attachment, attach/detach to a specific network and control preferences for different protocols or transports which may be able to provide a service. Preferences might include selections such as preferring a VoIP telephony session instead of a cellular telephony session, or preferring to use a particular WLAN network when it is available.

Comments are due by October 2.

Wednesday, September 20, 2006 (Permalink)

Christopher Deckers has released SWTSwing 3.2.0003, "a port of the SWT graphical toolkit to Swing." It's published under the Eclipse Public License. It seems fairly rough right now, but it's an interesting idea.


The first alpha of Mantis 1.1, a free-as-in-speech (GPL) bug tracking system based on PHP and MySQL, has been posted. According to Victor Boctor, "This release has about 100 enhancements and fixes, some of the highlights include wiki integration, web based configuration (general/per user/per project), customizing columns for view/print/csv issues can now be done through the web interface and can be per user or project, email queuing, and authenticated RSS feeds."


Polarion Software has released Subversive 1.1.0 M4, a pure Java, open source Eclipse 3.2 plug-in that provides Subversion integration. New features in 1.1 include "Branch from Revision" and "Tag from Revision" actions.


David Cranshaw has released SQLiteJDBC 022, a JDBC driver for the SQLite database. "It is written as a thin driver on top of the SQLite 3.3.x C API. The native JNI library has SQLite compiled into it so all you need to do is include the two files packaged above in your project." It's published under the BSD license. This release improves error messages and fixes bugs.

Tuesday, September 19, 2006 (Permalink)

Michael Fuchs has released DocBook Doclet 1.4, a doclet that creates DocBook SGML and XML documents from JavaDoc. Version 1.4 adds support for HTML entities and fixes bugs.


Christian Schlichtherle has released TrueZip 6.2.1, a drop-in replacement for the java's file I/O classes.

TrueZIP is a Java based Virtual File System (VFS) which enables an application to access ZIP, TAR and all derivative archive types (JAR, TAR.GZ, ...) transparently as if they were just directories in a file's path name. This works recursively, so an archive file may even be enclosed in another archive file. TrueZIP 6 features an extensible "plug-in driver" architecture (actually a Service Provider Interface), so it is expected that support for other archive types will be added over time (contributors wanted: ARJ, RAR anyone?).

The TrueZIP API provides drop-in replacements for the well-known classes File, FileInputStream and FileOutputStream. This design makes TrueZIP very easy to use: All that is required to archive-enable a legacy application is to add a few import statements for the package de.schlichtherle.io, add some type casts where required, and add a final call to File.update() once before the client application terminates in order to force an update of all archive files which have been used and require an update.

This release improves exception messages and fixes bugs. TrueZip is published under the Apache 2.0 license.


The Big Faceless Organization has released the Big Faceless PDF Library 2.7.2, 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.7.2 fixes bugs and supports for translucent canvases.

Monday, September 18, 2006 (Permalink)

The Apache Project has posted the second beta of version 1.7 of Ant, the popular XML based, open source build tool for Java.

Ant 1.7 introduces a resource framework. Some of the core ant tasks such as <copy/> are now able to process not only file system resources but also zip entries, tar entries, paths, ... Resource collections group resources, and can be further combined with operators such as union and intersection. This can be extended by custom resources and custom tasks using resources.

Ant 1.7 starts outsourcing of optional tasks to Antlibs. The .NET antlib in preparation will replace the .NET optional tasks which ship in Ant. Support for the version control system Subversion will be only provided as an antlib to be released shortly.

Ant 1.7 fixes also a large number of bugs.

Ant 1.7 has no support for Java6 features, but first tests on Java6 did not fail.

It's not immediately clear what's changed in beta 2, probably just bug fixes.


Martin Jericho has released the Jericho HTML Parser 2.3, an open source (LGPL) Java library for parsing, analyzing and modifying HTML that ignores any server-side code/markup or invalid HTML. It includes an HTML form analyzer. Version 2.3 fixes bugs and improves indenting.


Allatori has released the Allatori Java Obfuscator 1.2, a $775 payware program for obfuscating Java .class files to prevent understanding and delay decompilation. Why anyone cares about such products is beyond me. Most software doesn't require preventing users from inspecting its code, and the very little software that does require such protection can't be adequately protected by such tools. The only way to really protect algorithms is to not run them on a client computer: run them on a server that accepts inputs and provides outputs, but never actually runs code on the client. The whole obfuscation game is even more flawed than DRM. To paraphrase Bruce Schneier, trying to prevent software from being reverse engineered is like trying to prevent water from flowing downhill. I suggest renaming this product "Canute".

Saturday, September 16, 2006 (Permalink)

I should finally have uploaded all the slides from all my talks at last week's SD Best Practices conference including:

The first two talks were completely new at this show, and went very well. Between developing the talks and communicating with the audience, I've got a couple of very interesting ideas for new products in these areas. Watch this space.

My apologies for not putting these up sooner. It seems the size of the FitNesse presentation was too much for the wireless network at the show. Somehow the upload failed, but still managed to create a bunch of empty write-protected files I couldn't easily replace with the correct files. It took me some time to realize what had happened. Harold's first rule of debugging: It's better to have no idea why something is broken, than to have the wrong idea. I was so convinced the problem was the permissions on the files and directories, it didn't occur to me to check to see if the files actually contained what they were supposed to.

Friday, September 15, 2006 (Permalink)

Bill Pugh of the University of Maryland has released FindBugs 1.1, an automated open source tool for finding potential bugs in Java code. This release attempts to reduce the number of false positives and increase the number of null pointer dereferences it can detect. This release also adds several new bug detectors including one "for computing the absolute value of a random 32 bit integer or of a hashcode. This is broken because Math.abs(Integer.MIN_VALUE) == Integer.MIN_VALUE, and thus result of calling Math.abs, which is expected to be nonnegative, will in fact be negative one time out of 2 32, which will invariably be the time your boss is demoing the software to your customers."

I tested this out on XOM (which bundles jaxen). There are definitely more false positives than true positives. However there are also several new reports, mostly in jaxen, that I need to check out. It definitely found one class that needed an SUID and one redundant null check I could eliminate. Otherwise everything looks like a false positive.

Wednesday, September 13, 2006 (Permalink)

I've posted the updated notes from this morning's Testing Legacy Code presentation at SD Best Practices. This is one of two new talks I'm delivering at this conference. (The other is tomorrow's talk on Test Driven Web Apps with FitNesse) and I think it went pretty well. We had a large and enthusiastic audience that asked lots of interesting questions and brought up a number of personal experiences. I may give this talk again at SD West in Santa Clara in March, though that's not definite yet.


Subversion 1.4.0, an open source version control system designed to replace CVS, has been released. 1.4.0 adds an svnsync commandline tool for repository replication, support for BerkeleyDB 4.4, and various optimizations and bug fixes.

Tuesday, September 12, 2006 (Permalink)

The weekend's server move broke various things here, including the permalinks and the RSS and Atom feeds. I think I've now created workarounds for most of the pieces that broke, Holler if you notice any remaining issues. However I'm at SD Best Practices in Boston for the next few days so I may not be able to fix things immediately.


The Apache Jakarta Project has released Commons JEXL 1.1. "Java Expression Language (JEXL) is an expression language engine which can be embedded in applications and frameworks. JEXL is inspired by Jakarta Velocity and the Expression Language defined in the JavaServer Pages Standard Tag Library version 1.1 (JSTL) and JavaServer Pages version 2.0 (JSP). While inspired by JSTL EL, it must be noted that JEXL is not a compatible implementation of EL as defined in JSTL 1.1 (JSR-052) or JSP 2.0 (JSR-152). For a compatible implementation of these specifications, see the Commons EL project."

Saturday, September 9, 2006 (Permalink)

Charles M. Chen has released Sanselan 0.75, an open source pure java library that "reads & writes a variety of image formats, including fast parsing of image metadata (size, color space, icc profile, etc.). This library is pure Java. It's slow, consequently, but perfectly portable. It's easier to use than ImageIO/JAI/Toolkit (Sun/Java's image support), supports more formats (and supports them more correctly). It also provides easy access to metadata." Sanselan is published under the Apache license 2.0.


IBM's alphaWorks has released the closed source Bytecode Instrumentation Profiling Toolkit for Java. "Profiling consists of getting timing traces on method execution and is commonly achieved by using a JVMPI standard interface. Instead, Bytecode Instrumentation Profiling Toolkit for Java™ (BIPTK) exploits new bytecode instrumentation capabilities provided by frameworks such as AspectJ or Eclipse TPTP. Bytecode instrumentation allows for a new generation of profilers that are much more customizable than older, JVMPI-based counterparts."

Friday, September 8, 2006 (Permalink)

The Apache Software Foundation has posted the third beta of Maven 1.1, an open source build tool for Java that's more declarative and less procedural than Ant. "This release upgrades several dependencies of Maven, in particular Jelly, Dom4j and Jaxen. Improvements since Maven 1.1 Beta 2 include a lot of new plugin releases and a number of fixes for known issues in the Beta 2 release." There's one pretty big bug in the released version, so you may want to grab the latest snapshot instead.

IBiblio is upgrading server hardware starting tonight at 6:00 P.M. EDT. This and other IBiblio hosted sites will be up and down sporadically between then and 6:00 P.M. Saturday. I will likely not be able to check e-mail at my metalb address for most of that time either.


Sun has hired the two primary JRuby developers, Charles Oilver Nutter and Thomas Enebo, to work full-time on JRuby. They promise JRuby will remain open source. Interesting times.

Thursday, September 7, 2006 (Permalink)

Bare Bones Software has released version 8.5 of BBEdit, my preferred text editor on the Mac, and what I'm using to type these very words. New features include support for support for Ruby, SQL, and YAML; code folding; HTML Format, Translate and Tidy; and autosave. BBEdit is $199 payware. Upgrades from 8.x are $30. They're $40 for owners of earlier versions. Mac OS X 10.3.9 or later is required.


Kirill Grouchnikov has released the Substance Look-and-Feel 3.0. "The goal of this project is to provide a modern Java look & feel that combines graphic ideas from Windows XP / Vista and MacOS 10.4." That sounds sort of like mixing a truly excellent Cabernet with a quite nice carton of milk. The screen shots I've seen range from almost adequate to truly hideous. New features include blended and saturated themes, animated tab icons, and some other things that demonstrate a truly stunning lack of taste. Java 5 or later is required.

Wednesday, September 6, 2006 (Permalink)

Sun has slipped the schedule on Java 6. The first release candidate is now due at the end of October and the final release tentativiely in the first week of December. I doubt this matters all that much. Java 1.4 was probably the last version I really wanted the latest and greatest as soon as possible. Of course, the only thing I've ever really needed the latest and greatest for was to write books about it, and betas work just fine for that. The increased access to Java 6 build code has been a big help. The second edition of Java I/O includes a lot of Java 6 material even though it was published several months ago, for example.

Tuesday, September 5, 2006 (Permalink)

Soft Frame Works has released the Java Print Dialog Framework (JPDF) 1.5, a $195 payware "collection of Java classes and resource files intended to be used by software developers to add a comprehensive printing capability to existing Java applications/applets." Features include report generation, print preview, and the ability to print Swing components. Java 1.4 or later is required.


The Jakarta Apache Project has released version 4.1.34, a beta of the Tomcat open source servlet container and official reference implementation of the Java Servlet API 2.3 and Java Server Pages (JSP) 1.2. This beta is mostly a bug fix release.

Monday, September 4, 2006 (Permalink)

Saturday, September 2, 2006 (Permalink)

Michael Fuchs has released DocBook Doclet 1.3, a doclet that creates DocBook SGML and XML documents from JavaDoc. Version 1.3 can now generate RTF output. It also adds a new option for using fully package qualified names.

Friday, September 1, 2006 (Permalink)

The second public release candidate of Subversion 1.4.0 has been posted. Subversion is an open source version control system designed to replace CVS. New features in 1.4 include

  • Path-based authorization for svnserve
  • Improved logging and repository listing in mod_dav_svn
  • Improved python and ruby bindings
  • New commandline switches

This RC fixes bugs.


Older news:

200620052004200320022001200019991998
January, 2006 January, 2005 January, 2004 January, 2003 January, 2002 January, 2001 January, 2000 January, 1999 January, 1998
February, 2005 February, 2005 February, 2004 February, 2003 February, 2002 February, 2001 February, 2000 February, 1999 February, 1998
March, 2006 March, 2005 March, 2004 March, 2003 March, 2002 March, 2001 March, 2000 March, 1999 March, 1998
April, 2006 April, 2005 April, 2004 April, 2003 April, 2002 April, 2001 April, 2000 April, 1999 April, 1998
May, 2006 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, 2006 July, 2005 July, 2004 July, 2003 July, 2002 July, 2001 July, 2000 July, 1999 July, 1998
August, 2006 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 2006 Elliotte Rusty Harold
elharo@metalab.unc.edu