Wednesday, December 31, 2008

Finally, skating in the Netherlands

It has been a few years since we have been able to really enjoy this, but the last week or so it has been freezing hard. The ice has finally hit safe thickness and we went out to give it a try on New Years Eve.

They are predicting that it might freeze hard for another week at least, so who knows we might even get to see an 'Elfstedentocht' this year (their 100 year jubilee is 15 Jan 2009). 

My little girl and I ran about while sleding and laughing with the other kids. Life can sometimes be really good!

2008 in review

This was a really good year for me, busy with lots of new things as this was my first year back on the commercial side of software development. In the personal sphere I moved into a new house, put in a new backyard, new front yard, and cycled quite a bit with stints in the Limburg hills, Veluwe hills, and Ardennes. I just finished this year up by upgrading my bike and putting my old on online for sale.

The most blogging traumatic experience of 2008 was the loss of my domain. I documented the experience, but would not recommend this to anyone. It took awhile but my blog slowly climbed back from obscurity.

This year I was involved with several projects:
I also visited conferences, did some writing, did a few teaching gigs, and was speaking publicly again:
I have already started to fill up my calendar for 2009 with a few submissions to speak at conferences, one writing gig, and hope to continue with both jBPM and Computable contributions.

Being healthy and happy, I wish you and yours all the best for 2009!

Tuesday, December 30, 2008

2009: Weinig werkloze ICT'ers

I have been quoted in an article over at Computable.nl. An article (Dutch language I am afraid) predicting IT employment trends for 2009: 2009: Weinig werkloze ICT'ers.

Monday, December 29, 2008

VanTuyl VT730c Aluminum - for sale

UPDATE: this bike has been sold!

After almost three years on my current road bike, touring places like Normandy, the Ardennes, the Veluwe, and Limburg, it is time for an upgrade. I have just purchased a new road bike, a VanTuyl 740.

I can either trade my current road bike in or sell it myself, so I thought I would put it online should anyone be interested. Here are the component details:

VanTuyl VT730c Aluminum
  • purchased in September 2005 (have receipt)
  • all maintenance yearly by VanTuyl (have receipts)
  • this summer: new rear cassette, new chain, new seat pin, new handlebars and pin, and new tires (have receipts)
  • Frame: 59 cm sloping (normally 60cm, my height is 191 cm)
  • Front fork: Quasar carbon
  • Seat and handlebar pins: Nova Quasar
  • Seat: San Marco
  • Handlebars: Pro XLt
  • Computer: PRO Digi-10
  • Gears: Shimano Sora Triple - 3 front (52 - 30) and 8 rear (23 - 13), so you have 24 gears
  • Wheels: Stylus Racing (622x13) with Michelin Lithon tires
  • Pedals: Shimano
If you are interested in this bike, you are too late as it has been sold!

Thursday, December 25, 2008

jBPM from the trenches - a jBPM CustomClassLoader

My partner in crime has already mentioned this over on his site, so you can read what deMaurice posted there for the details. I will just bring you up to date on our running story of the jBPM process rework:

A jBPM Custom Class Loader
As you all know from reading previous posts, we are running on jbpm-3.1.4, which is lacking in some of the fantastic features provided by v3.3.x or v4. Within our current execution infrastructure we have been also limited to running only one jbpm engine for all deployed processes. Combined with these restrictions, our SOA layer is offering backwards compatibility by deploying 3 versions of services. Each interface update on a Service leads to a new version.
Current processes are all running on exactly the same version in the SOA layer, as class loading has never been that optimal with jbpm-3.1.4. Last week, deMaurice and I set out to implement this in our own version of jbpm-3.1.4. We ended up updating the code in exactly 4 places:
  1. in the jbpm core utils we had to update the ClassLoaderUtil class to the one in jbpm-3.3.0.GA to support the selection of a custom class loader.
  2. added a new system property to the jbpm.cfg.xml file jbpm.classloader='custom' and provide our own class loader property in jbpm.classloader.classname='our-custom-class-loader'.
  3. create a custom configuration file containing api and end-point entries per deployed process.
  4. write a class loader that is used as our custom entry.
The most interesting part of this exercise was how simple it turned out to be to get it in a single configuration file.

Feel free to contact either me or deMaurice for details should you be looking to do something similar.

Wednesday, December 24, 2008

PRIMA - extended for Santa tracking

Tuesday, December 23, 2008

Call for papers: 2009 BPM and Workflow Handbook

I have submitted a proposal to the 2009 BPM and Workflow Handbook that will highlight our current process work based on an Open Source architecture and JBOSS jBPM entitled:

Full Scale Straight Through Processing with BPM
A tale from the Financial Crisis front-lines

Not wanting to be sitting still in 2009, I have been making a selection of the incoming calls for papers. I will keep you posted on the results as they come in next year.

Need that snowy Christmas feeling?

In my home town it has been trying very hard to make a record Christmas snowfall. A huge storm has provided,

"...more than 10 days of icy weather that culminated in a massive snowfall Saturday and Sunday. Snow measured in downtown Portland approached 13 inches Monday afternoon, rivaling a storm in 1980 that dumped 16inches on the city, according to the National Weather Service.

Portland's biggest snowfalls in history? Thirty-two inches in 1893, 28 inches in 1916 and 22inches in 1884.

The latest storm may rank among the top 10 for the area since the state started keeping records in 1880."
-- source, The Oregonian, 23.12.2008.


For those of you (like me) who are not going to see a white Christmas, it could always look like this outside your front window:

Thursday, December 18, 2008

JavaOne 2009 Call for Papers - submitted a tale from the front-line

The JavaOne 2009 conference put out a call for papers a few weeks ago and I submitted my abstract this week. Would you be interested in hearing this session?

Java defeating the Financial Crisis - a tale from the front-line
This session will examine a project running in the Netherlands for the fourth largest Dutch bank. This bank has made a strategic decision to empower her customers on-line by fully automating her business processes using full scale Straight Through Processing (STP). This extreme use of online STP is the trigger in a shift that is of crucial importance to cost effective banking, made even more relevant by the current world wide Financial Crisis.

We examine the integrated Java solution architecture by detailing the major component layers used to implement the case study, a project entitled STP Purchasing. This project enables the online purchasing of savings products, all fully STP enabled to ensure completion of requests within days instead of weeks. The various key components used in the implementation include an Open Source Software (OSS) infrastructure, a process engine, our service-oriented architecture (SOA) layer, and the various back-end systems.


The most significant cant part of this session will provide some insight into our first experiences in this solution space. We will openly discuss our experiences and provide do's and don'ts that we are currently putting into production in successive projects. Finally, we will present empirical data resulting from the STP Purchasing project running in production which demonstrates how the Financial Crisis is losing the battle here in the Netherlands.

Wednesday, December 17, 2008

Eclipse Subversion access from behind a proxy

It is for the very first time that I post anything to solve a M$ platform problem, but this one is to allow the usage of a tool that is worth the shame.

The problem when connecting to any svn repository is that you are getting this message (example is from an open source project AbTLinux):

RA layer request failed
svn: PROPFIND request failed on '/svnroot/abtlinux'
svn: PROPFIND of '/svnroot/abtlinux': Could not resolve hostname `abtlinux.svn.sourceforge.net': The requested name is valid and was found in the database, but it does not have the correct associated data being resolved for. (https://abtlinux.svn.sourceforge.net)

The problem is that you need to pass through a proxy and in my case, this needs to happen with a user name and password authentication. This is done in the Subversion server configuration file. For both Linux, osX (Mac) the file is in the same location, for M$ it is in a bit different location. Both show you how to fix this for the user only. Should you wish to do this for the entire machine you will need to locate the central server configuration file:

#
# For Windows: %USERPROFILE%\Application Data\Subversion\servers
#

#
# For Linux or osX: ~/.subversion/servers
#

[global]
http-proxy-host = <proxy.server.name>
http-proxy-port = <some_port_number>
http-proxy-username = <your_user_name>
http-proxy-password = <your_password>


Once you set these for the user, ensure your SVN-plugin in Eclipse is using the Default location for the configuration settings and you should be able to connect to both http and https repositories.

Tuesday, December 16, 2008

jBPM from the trenches - status of jBPM process rework

It has been almost two months since I last posted on the progress of our jBPM process rework. We have solved the composite business service issues and have since completed the following steps:
  • Business logic has been encapsulated into services and pushed down into the SOA layer.
  • Discussion on composite business services has been initiated for our SOA layer.
  • A first process state node is being setup with complete unit testing
  • The state-proxy is being integrated into the process layer.
The tasks left to be done in the coming year (we are winding down for 2008):
  • Transitional actions are being brought up into process steps
  • Core process steps are being black-boxed so that you can fill them with any eventual project specific sub-flow definitions as needed.
This week we have started the implementation of a custom jBPM class loader to facilitate running multiple projects on a single jBPM engine where we want to access different service versions. I will post more on this soon, after implementing our design and proving it works. I can say we have decided against having it link into maven to solve a projects dependencies.

That's it for now from the trenches.

Saturday, December 13, 2008

Mac Softpedia developer page?

It seems I have been given a developers page over at a Mac site called Softpedia.

Someone attached a link to my DocConversion project from 2004. It is nice to see that people are still getting use out of it!

Friday, December 12, 2008

NIBE course - Algemeen Opleiding Bankbedrijf (AOB)

I recently passed this exam. That is about all you can say for this course. It is a massive content oriented course that focuses on testing the student on very small facts buried deep in the material, not on the students understanding of the material. I won't even get started on the exam style or format. Let's just say that if I had setup exams for my students (I have taught several courses at the Radboud University Nijmegen) like it is for this course, my days of teaching would have lasted up until the exam commission stopped by for a review.

Anyway, there is a positive point to all of this. I don't want to make this experience any more painful for the next person that is required to take this exam (it is compulsory for all Dutch bank employees), so I am providing you with my summary that will save you time while preparing. I can't promise how long it will be valid as the course updates the material from time to time, but it is better than nothing:
PDF  -  SOURCE

Tuesday, December 2, 2008

A 'Ruby best practice' - return values

Over on the wonderful Ruby blog 'On Ruby' they are holding a contest requesting that one post a best practice from another language or community and how it translates into Ruby. It just so happens there is one that I have personally applied to all my Ruby programming even though it is not a Ruby convention!

Return values in Ruby, where are they?
It really bothers me that code can become unclear or obscure by not communicating very simple facts, like what a method is returning. A good practice used in Java is to return a 'results', meaning one keeps the return value of a method stored in a variable named 'results'. It can be a String, Boolean, or whatever.

Ruby is one of my favorite languages right now, but handles return values for methods very differently than languages like Java. Ruby does not require an explicit 'return' statement, but can return the last executed statement results by default. This can be confusing.

Discovering what this return value might be can be more time consuming that is necessary and is immediately taken care of by simply supplying a 'return' statement. Cost is nothing, results are clarity. I provide an example from my current running project, AbTLinux:

##
# Cleans up this packages source build directory.
#
# RETURNS:  boolean - True if the completes successfully,
# otherwise false.
##
def remove_build
  puts "Removings build..."
  if ($REMOVE_BUILD_SOURCES)
      buildSourcesLocation = "#{$BUILD_LOCATION}/#{srcDir}"
       
      if (!File.directory?(buildSourcesLocation))
        return true
      end

      if (!FileUtils.rm_rf buildSourcesLocation, :verbose => true )
        return false
      end
  end
   
  return true
end