Building a (Lightweight) Business Process Engine


Organizing a set of tasks and activities into a structure to facilitate execution by human or by machine, is one of the best understood ways to create order from chaos. Most people who have made it through primary school understand this, in a primitive “hokey pokey” or “Simon says” sense.

This concept of sequence is key to almost all programming languages, which represent flow concepts with language keywords like “if” and “while”. In electronics and robotics, finite state diagrams are …

Gestalt Complexity: Is the Term FrameWORK Misleading?


Do frameworks always work? Do they mostly work? Do they sometimes work? Do we even really look to see if they work?

Or are they just a lot of work?

There is an assumption amongst software developers that adding a framework will automatically save time and reduce complexity. That if a framework follows standards, and reduces the amount of code that has to be written, the project will automatically become “best practice”.

It is safe to say that developers are …

If frameworks were Lego kits


Imagine some Lego. Or alternatively, think of a non-trademark-infringing equivalent plastic brick product, if you’re concerned about that sort of thing.

So you have this box of Lego. It’s that good old general purpose kind, where almost any kind of block can connect to almost any other kind of block. You can build castles or houses or boats or fluorescent yellow difference engines. It takes a bit of forethought, and occasionally you need to change something you already built …

Multiple Inheritance in Java


Most Java developers will have heard the phrase “Java does not support multiple inheritance”, or maybe even admitted that they “wish Java supported multiple inheritance”.

A rarely asked counter-question is “Have you tried?”.

I have.

I set myself the task of creating a working implementation of multiple inheritance within Java. The requirements for a solution were:

  • The inheriting class must have access to all of the inherited class methods and data.
  • It must do this without using composition.
  • It can