Welcome to the home page of Wolfgang Laun.

On this page, I provide information on selected topics of computer programming, and a little entertainment for German speaking visitors (see Wortspielereien).

Computer Programming

Rule Based Programming

General Articles

Challenges for Rule Systems on the Web is a general survey paper on Rule Based Systems, written by Yuh-Jong Hu, Ching-Long Yeh and Wolfgang Laun,

If you can read German, you might be interested in my article Regelbasiertes Programmieren in der Bahntechnik, which appeared in SIGNAL+DRAHT, 4/2010.

Dr. Heinz Kabutz, Java Champion, creator of the Java Specialists' Newsletter and a dear friend, kindly let me write a short introduction to rule based programming, seen through a Java programmer's eyes. You find [Issue 205] How to Make Your Own Rules in the Java Newsletter archive. I also managed to compile some notes on the support Java provides (in version 1.6) on Unicode, sent out in [Issue 209] Unicode Redux (1 of 2) and [Issue 211] Unicode Redux (2 of 2). Unicode Redux is also available in a combined version.

Drools

Publications

There is my whitepaper Design Patterns in Production Systems, published by Red Hat, Inc. Here's a selection of its section headings: Fact Classification, Handling Failure to Match, Data Validation, Extending Rules, Reasoning with Interfaces, Combinatorial Joins, Active Facts, Marker Facts, Fact Proxies, Application Design Patterns, Short-Term Sessions, and Permanent Sessions. It contains many examples coded in Drools.

You can download the paper elaborating my talk Domain Specific Languages - Notation for Experts at Rules Fest 2011, International Conference on Reasoning Technologies and you can also look at the presentation.

Another paper with the title Reasoning With XML Data contains the material for my talk at IntelliFest 2011- International Conference on Reasoning Technologies.

Articles

You can download a comprehensive set of syntax diagrams for Drools 5.2. Note that this is "work in progress", anticipating ongoing development, subject to revision, etc.

Drools is a constantly evolving Rule Base System. I have explored some of its possibilities in the paper Event Processing in an Object-Oriented Rule-Based System.

A novel idea is described in my paper Enhancing the Usefulness of FOL Clauses in Rules.

Guides on Selected Topics

Drools processing is centered around a Knowledge Base object. The essential initial stept to create such a Knowledge Base are illustrated in how to set up a Knowledge Base.

Drools lets you define your own Domain Specific Language for writing rules. Here is a digest of how to set up and use a Domain Specific Language.

Defining your own operators is another way of extending Drools. Here is a concise description of how to add a custom operator to the Drools LHS language. There are two examples, one for defining set intersection and another one for testing the subset relation.

The handling of exceptions that occur during the execution of a right hand side can be used to add detailed information about the rule and the participating facts. This is described in How to Implement Custom Consequence Exception Handling.

Jess

The other system I acquainted myself is Jess. You will find some of my work on the Jess Wiki pages for Jess Design Patterns and User Functions.

There is also a short paper on the relationship between Predicate Calculus and Jess which might be of general interest.

Java - JAXB

Somehow I got hooked on JAXB, the Java Architecture for XML Binding. As a result, I wrote a JAXB Tutorial. You can find it on : java.net or here, on my home page.


Perl 5

I have been active on Perl 5 Porters for some time, implementing the Perl version of sed, the stream editor for filtering and transforming text that comes with Unices, which you'll find in your Perl 5 installation. Also, most of the Perl 5 tutorial perlpacktut, the tutorial on "pack" and "unpack", was written by me.

Publications

YAPC Europe 2008: A Backtracking Algorithm

YAPC Europe 2008: Generate and Execute: A Paradigm for Perl Programs

Tutorials

Perl/Tk was another point of interest. Although it isn't quite fashionable nowadays, it is still a good platform for implementing graphical user interfaces. Here is my A Perl/Tk Cookbook.

Perl Implementations of Unix Utilities

There have been some initiatives for implementing other Unix utilities, and I have tried my hand at some of them. See below for my Perl implementations of cut, lex, m4, and od. Some of what I learned during these implementations is reported in Generate and Execute: A Paradigm for Perl Programs.

cut - remove sections from each line of files

lex - the fast lexical analyser generator

m4 - macro processor

od - dump files in octal and other formats