September 2002 Archives

Pretty URLs

| 1 Comment

User-Centered URL Design touches on a meme I've noticed recently. I personally got frustrated with jakarta-struts and the fact that it required me to produce ugly URLs in my particular use-case. Russel has recently complained about ugly radio URLs.

The article references Tufte...

But despite the universality of URLs, we often forget that they're not just a handy way to address network resources. They're also valuable communication tools. They help orient users in your architecture, and can suggest whether other options are available.

In Edward Tufte's classic book The Visual Display of Quantitative Information, he coins the term chartjunk to refer to needless visual flourishes that contribute nothing to the effectiveness of an information design in communicating to its audience. These days, our URLs are loaded down with something very similar: long strings of characters that exist only to satisfy some technical constraint, detracting from the effectiveness of our URLs as communication tools. Call it CMSjunk.

drools-2.0-beta-7

| 1 Comment

Well, I just released version 2.0-beta-7 of drools. You can read the full announcement.

I've tagged CVS (DROOLS_2_0_BETA_7) and released new source and binary distributions. I've also pushed a new jar to the repo if you're using drools from a mavenized project. http://drools.org/releases.html

Non-Tech: Freedom of Speech

| 1 Comment

I guess I'm glad to know that political ad restrictions don't affect Leno and Letterman (what about Conan?). There mere fact that the feds have to clarify that entertainers can talk about an election near polling day shows us just how close we've gotten to losing some of our guaranteed freedoms.

I'll take freedom instead of security any day. But then again, I'm a libertarian.

Jay Leno ( news - Y! TV) and David Letterman ( news - Y! TV) still will be able to joke about federal political candidates in the weeks before an election. The Federal Election Commission ( news - web sites) says comments like theirs are not covered by the new campaign finance law.

The law, which takes effect Nov. 6, prohibits special interest groups from airing ads identifying federal candidates within one month of a primary or two months of a general election.

Scariest... Clown... Ever...

This evening, Rebecca and I watched Vulgar. Produced by Kevin Smith of Clerks fame and having a clown as the main character, we thought it might be a fun movie. It's a good movie that I certainly recommend. But it most definitely is not in the same genre as Clerks. It's somewhat a mix between Rocky Horror Picture Show, Shakes The Clown and Deliverance.

Plot Outline: A young man finds fame as a transvestite clown named Vulgar.

Tangentially, my all-time-favorite movie is probably Dead Man by Jim Jarmusch. The soundtrack by Neil Young is especially cool.

QDox

QDox caught my attention today. I'm not sure how/if it's better than XDoclet (having never really looked at XDoclet). I have no idea when I might use it. But, it just seems like one of those projects I should remember for a later date.

QDox is a high speed, small footprint parser for extracting class/interface/method definitions from source files complete with JavaDoc @tags. It is designed to be used by active code generators or documentation tools.

classworlds-1.0-beta-1

classworlds 1.0-beta-1 has now been released. Still might not be ready for prime time, but we'll never know if you don't try it out and give it a spin.

Also, fwiw, classworlds is intended as a full replacement for forehead.

ClassLoading, differently

It's not quite ready for prime-time, I don't think, but James Strachan already blogged me, so I might as well blog myself. I've started classworlds, a new project to hopefully help rid ourselves of classloader psychosis once and for all.

It effectively turns the ClassLoader tree hierarchy into a directed graph of ClassLoaders. Effectively, a ClassLoader can have multiple 'parents' from which it can load classes. The relationship between ClassLoaders can be constrained to only allow classes belonging to certain packages to be loaded across ClassLoaders. Effectively, you get fine-grained firewalling with a sort of mix-in flavor to it.

classworlds is a framework for container developers who require complex manipulation of Java's ClassLoaders. Java's native ClassLoader mechanims and classes can cause much headache and confusion for certain types of application developers. Projects which involve dynamic loading of components or otherwise represent a 'container' can benefit from the classloading control provided by classworlds.

classworlds provides a richer set of semantics for class loading than Java's normal mechanisms, while still being able to provide a ClassLoader interface to integrate seamlessly with the Java environment.

The classworlds model does away with the hierarchy normally associated with ClassLoaders. Instead, there is a pool of ClassRealms which can import arbitrary packages from other ClassRealms. Effectively, classworlds turns the old-style hierarchy into a directed graph.

Classloading

Advanced Classloading in J2EE is a pretty good explanation of the various intricacies of Java classloaders. I'm planning on taking knowledge gained from this (and other) articles and incorporating it into forehead, my classloader management project.

Classloading can be one of the nasty issues in a J2EE environment. Questions come to mind like: How to integrate with 3rd party libraries, which have conflicting classes, how to use remote stubs, etc.

This article will describe an especially sophisticated classloading system that combines ease of use with efficiency and compliant behaviour in order to deal with the mentioned questions. This classloading approach also contains a mechanism to separate internally used libraries from user-installable libraries that could potentially conflict with each other.

As an example, such advanced classloading mechanisms are implemented in IONA's Orbix E2A Application Server. It's classloading techniques will be illustrated and their usage demonstrated.

Jelly Docs

James Strachan's Radio Weblog tells us that...

Jelly documentation finally starting to improve :-)

Jelly has just gotten a getting started guide and an introductory tutorial.

blissed-1.0-beta-1

Following up on yesterday's ramblings about blissed, I'm pleased to announce that blissed-1.0-beta-1 has been released.

blissed is a very small framework to assist in the creation, management and execution of processes and states.

blissed is not intended to be useful on its own, but rather may support a larger workflow system or other process-based application. To allow it to be easy to integrate with other projects, a Jelly tag library is provided.

Calendar Taglib

| 2 Comments

Mike and someone else were chatting about needing a Calendar taglib...

XOM: Rusty's XML Object Model

| 1 Comment

Rusty has hinted about it for a while, but he's finally made XOM available after presenting it to the NY XML SIG.

XOM is a new XML object model. It is an open source (LGPL), tree-based API for processing XML with Java that strives for correctness and simplicity.

His pages contains the presentation given, which includes a nice overview comparison to JDOM, EXML DOM and dom4j.

fwiw, I think XOM more closely resembles earlier versions of EXML. I've got to wonder if the world will accept yet-another object model, even if it is superior. We'd all like to hope so, of course. But, I think we're bordering on xml object-model exhaustion.

Regardless, jaxen will probably support it sometime soon, bringing to the total number of models supported by jaxen to 5.

Grand Flow Unification Theory

| 1 Comment

Oracle's Modest Proposal is a quick little article talking about Oracle's appeal to the W3C and others with regards to coming up with a unified flow language.

I'm not certain that Oracle's intentions are altruistic or even if I care.

blissful // state machines

| 2 Comments

Thanks to funding from Zenplex, I have been hacking blissed quite a lot lately. blissed will be the underpinnings for the werkflow project, also sponsored by Zenplex.

blissed supports all sorts of inter-process interaction and is generic enough to be directly embedded in your application with whatever semantics you desire. A process instance can call into another process or it may spawn additional process instances.

The very familiar concepts of Process, State, Transition, Guard and Activity are modelled in a generic way to reduce imposed constraints.

I'm also particularly proud that I have no Checkstyle violations and Clover tells me I'm 98.9% covered.

JSR-147 Workspace Versioning...


WVCM API is yet-another JSR. In a previous life, I did revision-control software, so this JSR does look interesting to me.
This specification will address these problems by defining a client side library that will expose the full DeltaV functionality, but will:
  • automatically provide client-side file maintenance required by any operation
  • hide whether or not DeltaV or some other protocol is being used to communicate with the server
  • hide the distinction between a client workspace and a server workspace in the client side library implementation, so that a user of the library is presented with a single uniform workspace interface.

Geek Diversity

| 1 Comment

The description of abcm2ps just tickles me. I'm amazed and impressed that someone concerned with organ scores for Baroque music is also a person who can hack Postscript. The geeks of the world are certainly diverse.

abcm2ps is a package that converts music tunes from ABC format to PostScript. Based on abc2ps version 1.2.5, it was developed mainly to print baroque organ scores that have independant voices played on one or more keyboards, and a pedal-board. It introduces many extensions to the ABC language that make it suitable for classical music.

WSFL Chapter

| 1 Comment

Web Services and Flows (WSFL) is Chapter 18 from Java Web Services Unleashed by Brunner et al. I'm in werkflow mode, so this is interesting.

Complete representations of complex service interactions rely on two basic concepts: service flow and service composition. The service flow is a description of how the service operates. In business environments, the service flow is a representation of the business process that it implements. By revealing the internal operation of the service, the flow lets users and possible business partners know how the service should be used. In particular, the flow describes the order in which the operations the service provides should be used, and the logic the service follows to process requests. Following a long-standing tradition in the field of business process modeling, WSFL uses a flow model to represent service flows. The flow model itself is presented in the section Flow Modeling Concepts.

Webby MVC (WebWork and Struts)

| 3 Comments

It's been cool, lately, to debate the various parts of Struts, WebWork and other web MVC frameworks.

I've recently played with Struts and it's not exactly making me happy. I'm a big fan of using regular expressions to take synthetic URLs and remap them to actual URLs, changing parts of the path to query parameters. Struts simply does not play friendly with that concept. It must work in terms of static URL patterns instead of Regexps. Since it's ignorant of URL rewriting, I cannot submit forms to URLs that I know are valid (or will be after rewriting), and thus Struts forces me into the world of Ugly URLs.

So, I've looked at WebWork. I finally understand the concept of WebWork, since it's exactly the same concept that Jelly uses. A WebWork Action is like a Jelly Tag. Something pulls your tag, instantiates it, calls some settors, and then executes it. Possibly then wash, rinse and repeat.

So, why am I not using WebWork? It's not mavenized. Too many dependencies that don't currently exist in the ibiblio maven repository. So, what would get me using WebWork? If someone would either Mavenize WebWork, or at least point me to a tarball that I could use to easily get all WebWork-based jars into the ibiblio repository with the correct structure.

Bottom line: if it's hard to use in a mavenized project, I won't use it.

Topic Maps

| 1 Comment

xml.com is running an article What Are Topic Maps? I'm only now getting into the Semantic Web, RDF and other meta-data types of things with XML and this article seems very well-written.

Many years ago, I started looking into SGML and XML as a way to make information more manageable and findable, which was something I had been working on for a long time. It took me several years to discover that, although SGML and XML helped, they did not actually solve the problem. Later I discovered topic maps, and it seemed to me that here was the missing piece that would make it possible to really find what you were looking for. This article is about why I still think so.

Rerun: JSR-94 Comments

| 2 Comments

Just reblogging my own JSR-94 Comments since the comment period ends tomorrow.

The Aussies, again

Tridgell gets AUUG special achievement award which also mentions Peter Miller (of Recursive Make Considered Harmful fame).

The Aussies are certainly taking over. Maybe it's time to move south.

IBM and The Grid

| 1 Comment

You might think it's fluff, but IBM's grid conversion talks about IBM's view of The Grid.

I think p2p and grids will certainly take off sometime soon. I was even working on a grid project, which is why I created beep4j to use as an internode protocol layer.

Shortest Path To A Semaphore

Edsger Dijkstra has just decremented his last semaphore.

So much of what we do is because of Dijkstra's great ideas.

Business Process Automation

| 1 Comment

Duncan Child sent me a link to Business process automation made easy with Java, Part 1.

These days, severe market demands drive enterprises to reduce costs and increase shareholder value. In such an environment, businesses can realize significant cost reductions and efficiencies by automating business process flows, eliminating nonvalue-adding human interventions, and allowing enterprise applications to communicate and intelligently and seamlessly share information. In this two-part series, we present the technology building blocks for automating an enterprise, how those blocks fit within an enterprise component architecture such as J2EE, and how you can design and build a business rule engine solution based on this architecture.

From Wither Came The Aussies?

| 1 Comment

Here recently, every time I turn around I trip across another cool project from some Australians. There's the Atlassian folks and the guys who produce Clover, and Greg & the Jetty team, just to name a few.

Is this a new occurence? Or have I previously been amerikacentric and just in denial of things coming from the southern hemisphere? Did .au universities recently start producing more and better engineers?

What gives? Regardless, it's a Good Thing.

Rich Web-based XML Editing

| 2 Comments

James Strachan pointed me towards Xopus.org, which is browser-based rich XML text editor. That's just cool.

Xopus is a browser based in-place wysiwyg XML editor. Xopus allows users to edit their XML data in an intuitive word processor alike way.

JSR-94 (I'm grumpy)

| 1 Comment

It's public-review time for JSR-94 and here are my JSR-94 comments.

I spent a few hours today trying to make drools compliant and it wasn't a happy experience.

I'm hoping the JSR expert group is truly taking public-review comments serious and won't just push what they have through the finish line. JSR-94 is in several places under-defined while in others it seems to place too many constraints and burdens upon implementors.

Jaxen and EXML

EXML 6.0 now includes seamless integration with jaxen, the multi-model XPath engine project I founded a while ago.

If you're not already using jaxen for your Java and XPath needs, you probably should.

My Wonderful Wife

Well, Rebecca's insanity has now lasted a tad over two years. We celebrated our 2nd wedding anniversary by visiting recently-relocated friends in Pennsylvania, which is positively beautiful.

But of course, not nearly as lovely as my wife.

rebecca_garage.jpg

About this Archive

This page is an archive of entries from September 2002 listed from newest to oldest.

August 2002 is the previous archive.

October 2002 is the next archive.

Find recent content on the main index or look in the archives to find all content.