August 2002
[ bob ] 11:04, Thursday, 29 August 2002

Read the announcement.

drools 2.0-beta-6 has been released. Pick up the flavor of distribution that you like from:

http://drools.org/releases.html

Major points:
Removed dependency on JDRing.
Created Python Semantic Module (using jython).
Fixed several show-stopper Rete-OO bugs.

[ bob ] 23:38, Wednesday, 28 August 2002

An introduction to object prevalence.

Why persistence as you know it is bad Today, data persistence for object-oriented systems is an incredibly cumbersome task to deal with when building many kinds of applications. The developer must map objects to database tables, XML files or use some other non-OO way to represent data, destroying encapsulation completely. One solution to this problem is object prevalence.

The Prevalent way
Object prevalence is a concept that was developed by Klaus Wuestefeld and some colleagues at Objective Solutions. Its first implementation, known as Prevayler, became available in November 2001 as an open-source project. (See Resources.) Today, Prevayler is at version 1.3.0 and has about 350 lines of code. You may think that the code is too small to do anything useful but, based upon my experience on a recent porject, I can confirm that Prevayler is several orers of magnitude faster than one of the leading open source relational databases. It is all about simplicity.

[ bob ] 23:02, Wednesday, 28 August 2002

Dave Cramer told me about SnipSnap. It's Java. It's a Wiki. It's a Blog. All are Good Things.

A personal content management system and WikiLog. It's easy to install and has a powerful text formatting system. See install to run it yourself. This software will primary serve our needs.
[ bob ] 17:08, Wednesday, 28 August 2002

Yes, we have a dog now. We have exactly one dog to accompany our five cats, thus, she's been named Only.


only.jpg

Technology: bought a little USB nugget to read Flashcards since Rebecca doesn't like sharing her Mac. Darn simple to just plug it in, reboot and mount the flashcard. Hence, the photo of the dog.

Who says linux isn't easy to use. I don't even claim to have much sysadmin knowledge. Just ask my sysadmin.

[ bob ] 14:39, Wednesday, 28 August 2002

drools 2.0-beta-6-dev API: Package org.drools.semantics.python

Package org.drools.semantics.python

Python Semantic Module.


Ayup. drools does python, now.

Figured since Mike got a kick out my blogging a bug in my Jira that he might enjoy one that points to Javadocs.

[ bob ] 03:23, Wednesday, 28 August 2002

drools test coverage information is now available. Only about 28% tested, overall. But at least I can now visualize the weak parts.

Have you run clover on your codebase lately?

[ bob ] 21:30, Tuesday, 27 August 2002

It arrived in my inbox.

The note is titled "Stock (Tymeless, Aug 24 00:37)" If you had bought $1000.00 worth of Nortel stock one year ago, it would now be worth $49.00. If you had bought $1000.00 worth of beer one year ago, drank all the beer, then traded in the cans at a redemption center for the nickel deposit, you would have $107.00.

Given the current conditions of the economy, my advice is to drink heavily and recycle.

Something to think about.

[ bob ] 14:30, Tuesday, 27 August 2002

Talking to Jason van Zyl, of maven fame, and discovered that not everyone konws about Scrum.

Extreme Programming (XP) frightens many people, myself included. It seems a tad... hackish. Scrum, though, is another agile methodology that seems to have a little bit less insanity and more planning/thought behind it.

Scrum naturally focuses an entire organization on building successful products. Without major changes -often within thirty days - teams are building useful, demonstrable product functionality. Scrum can be implemented at the beginning of a project or in the middle of a project or product development effort that is in trouble.

Scrum is a set of interrelated practices and rules that optimize the development environment, reduce organizational overhead, and closely synchronize market requirements with iterative prototyes. Based in modern process control theory, Scrum causes the best possible software to be constructed given the available resources, acceptable quality, and required release dates. Useful product functionality is delivered every thirty days as requirements, architecture, and design emerge, even when using unstable technologies.

I know this is a religious war to you agile zealots out there, but I say that Scrum is the best, so it must be true.

[ bob ] 01:11, Tuesday, 27 August 2002

Stereophonic Space Sound Unlimited - The Fluid Soundbox is a great CD I owned a while ago. Today, I repurchased it since my CD-organizationl skills are next-to-nil, and I'd lost my original copy. Anyhow, it thinks it's a soundtrack to a 60's spy movie. There was no movie. It isn't a soundtrack. But it has that surfabilly/mission-impossible sound to it.

Anyhow, in searching for a page to blog, I came across the above link and was surpised to learn I could buy each song on the CD, over the internet, for 79 cents apiece. Too bad its RealAudio and not Ogg Vorbis or even MP3. Oh well.

Cool thought, though.

[ bob ] 13:33, Monday, 26 August 2002

Geocrawler.com - jython-users - [Jython-users] Advanced Jython embedding is a message that describes embedding jython efficiently. The jython.org docs aren't all that great, so I'm just bookmarking this for myself as I hack drools+jython.

[ bob ] 18:37, Sunday, 25 August 2002

[#DROOLS-19] Jelly Semantics <consequence> tag indicates that drools now supports a <jelly:consequence> tag so that the consequence of a rule can be any arbitrary jellyscript.

An example exists (the sisters example) that mixes the Java semantic module for object-types and conditions, while using the jelly semantic module for the consequence of a rule match.

[ bob ] 01:28, Sunday, 25 August 2002

The AcroTeX website is a pretty nice resource for folks wanting to do advanced PDF generation with (La)TeX. I'm a big fan of using LaTeX for documentation. I attempted to use DocBook way back when, but was unimpressed with the output produced by FOP. Using the dsssl stylesheets and jade produces beautiful output, but I decided that if I need to have TeX installed, I might as well use it natively. XML is not a fun way to mark up technical documentation.

Try this: write lots of docs in plaintext. Convert to PDF. Would you rather insert the occasional \section{...} tag, or worry about balancing pairs of XML tags, marking each and every paragraph, etc?

LaTeX rocks. PDF rocks. There ya go.

[ bob ] 18:48, Saturday, 24 August 2002

The wftk: Background page has the author of Wftk's thoughts about state-based versus task-based workflow.

One of the basic problems that I have had while coming to terms with workflow systems is simply that there are two basic approaches to workflow. In the first, which was more strongly supported by early wftk prototypes, a process, once activated, then activates various tasks which must be done (this may include loops, decisions, and so forth, but the basic item here is the task.) Meanwhile, a lot of the material I was reading about workflow was firmly based in a transition-diagram model, where the process may be in a certain state, and the state of the process determined what various people might do. This dichotomy caused me a lot of grief before I realized that I was missing a point: state-based and task-based processes are simply different aspects of the same thing.
[ bob ] 02:11, Saturday, 24 August 2002

JUnit 3.8 Released

The theme of this release is easier access, see the README for details.
[ bob ] 20:43, Friday, 23 August 2002

XML.com: Top Ten Tips to Using XPath and XPointer

XPath and XPointer allow XML developers and document authors to find and manipulate specific needles of content in an XML document's haystack. From mindful use of predicates, to processor efficiency, to exploring both the standards themselves and extensions to them, this article offers ten tips -- techniques and gotchas -- to bear in mind as you use XPath and XPointer in your own work.

[ bob ] 14:39, Friday, 23 August 2002

drools-2.0-beta-5 has now been released.

It includes a massive refactoring and reorganization effort, along with bundles of new tests. A robust XML rule-language based upon Jelly is now consistent across all semantic modules.

Here's the full announcement.

[ bob ] 15:28, Thursday, 22 August 2002

AIM is described by Jack Park at ThinkAlong seems cool. I see rules rules rules.

(Yes, it's been a heavy drools week for me.)

[ bob ] 15:06, Thursday, 22 August 2002

So, XML-DEV discussion header towards talking about tuples and graphs, I mentioned drools has to deal with the issues. One thing led to another, and now I'm aware of GSIX thanks to Peter Jones.

GSIX seems to encompass a lot of cool ideas. I'm definitely going to investigate it more.

[ bob ] 00:44, Thursday, 22 August 2002

The Iconfactory: Your Quality Freeware Icons Hub seems to have a garantuan collection of high-quality, free icons.

Open-source graphics is cool. Especially when it's something as cool as this and not just bad scans of out-of-copyright turn-of-the-century clip-art collections.

[ bob ] 11:15, Monday, 19 August 2002

Just noting that phish is excellent music to code to. Especially the new live series they are releasing quarterly.

[ bob ] 19:49, Wednesday, 14 August 2002

Just tripped across Venus Application Publisher's Ant Task Suite. I've started getting interested in JNLP after I noticed mike@atlassian using it.

Will probably make a Maven plugin for it.

[ bob ] 17:05, Wednesday, 14 August 2002

Patrick Lightbody, of OSWorkflow, and I had a nice chat about workflow and our two projects.

[ bob ] 15:53, Wednesday, 14 August 2002

I keep tripping across random projects touting code generation as a nice feature, and I'm not certain I quite share their enthusiasm.

I think code generation as a process of turning the abstract into the concrete is a Good Thing. For example, ANTLR allows you to specify a language grammar is an abstract form and then make it concrete as Java, C++ or Sather (Sather?!) code. I definitely support code-generation as used by ANTLR and other similar device.

The other extreme of code generation seems to target wrapping and adapting. For example, some projects enable you to generate code to make your JavaBean a web-service.Somewhere in the middle resides mapping generators. Object-relational mapping layers map an Object to a relational database.
One could argue that wrapping is a form of mapping. You are conceivably mapping Java linking constructs to XML-over-port-80 semantics when you wrap a JavaBean as a web-service.

Most of the wrapping and mapping cases seem to use code generation as an efficiency mechanism. Compiled Java runs faster than interpreted code. Projects exist that allow you to provide a web-service face to a javabean without code generation by using introspection and run-time interpreters.

Code generation has many downsides, in my opinion. In many languages, loading new code into a running process is less than fun. Also, a developer weilding a compiler must be in the loop to still do something useful with the generated code.

Dynamic and interpreted systems allow easier customization and modification to a running system. Of course, the cost is extra CPU cycles. With code-generation though, the cost is typically developer hours. A trade-off must be made, and I personally will always favor a dynamic solution that reduces developer idle time (waiting for generation and compilation).

Even better, of course, is run-time bytecode modification and instrumentation. But that's a topic for another day.

[ bob ] 01:04, Wednesday, 14 August 2002

Well, not long after mentioning Thinlet, Mike came up with ThinRSS.

[ bob ] 20:27, Tuesday, 13 August 2002

JSR-94, the Java Rule Engine API has entered public review and will remain available until 11 September 2002.

My own drools project will be implementing JSR-94 sometime soon.

[ bob ] 20:04, Tuesday, 13 August 2002

Maven the coolio build-system has released 1.0-beta-5 which solidifies the new Jelly-based core.

[ bob ] 20:00, Tuesday, 13 August 2002

Tripped across Thinlet a super-thin xml-based UI layer for java. Definitely usable in applets or JNLP types of applications.