Connect 2012 schedule

QuickImage Category Connect 2013
In 2 weeks time I and the rest of the LDC founders will be pounding out to Florida for the first IBM Connect conference (or 20-something Lotusphere depending on how you look at these things)

This is my 5th time going and the first one where I will be speaking on my own, I suspect it will be chaos, but there will be 5 places I am sure to be:

UKnight (sponsored event)
Monday 20:00-22:00 shulas bar
In which the British companies at Connect attempt to bring their favorite bit of home with them, that is a dark bar stuffed with fun people drinking a serious amount for free
Its invitation only so you have to grab one of us to get your sticker before hand (we have big ugly doormen)

Great geek challenge (sponsored event)
Tuesday 20:00-22:00 dolphin ice cream bar
Each year the nerd girls organise a quiz to separate the geeks from the chaff, we are sponsoring it (more free booze), allow the freaky geek in you out of the can and win prizes

BP203 : Limitless Languages In The IBM Social Stack
Wednesday 17:30 - 18:30 Swan Pelican 1 & 2
My first solo presentation, and one on a subject I'm quite rabid about, learn about all the alternative languages you can use on any prodect that supports java what they give you and why, if you can pull your self away from Paul and Bill's worst practices session, then let me rant and blow your minds.

SHOW104 : Buried Treasure: Finding the Hidden Gold in Lotus Notes Data
Thursday 08:00 - 09:45 Swan Osprey 1 & 2
Julian Robichaux and I show you how to get all that valuable data that's in your notes applications and integrate it with every system under the sun, your managers will love you for it.

Thursday 10:00-11:00 swan ballrooms
The best practices speakers are forced to sit up on stage and answer to our crimes by answering questions from the ravening horde, I will be trying to keep my mouth shut this year

Matt white is also speaking there , you can see his blog on it here

IBM connect is the main conferences I go to each year, (the others are LUGs and conferences of convenience in London) so there is lots of stuff I have to do while I'm there

- Have a LONG talk to the connections developers, as I have been developing on the platform for the last few months and while I now have a good handle on it and its functions there are a lot of inconsistencies in its interface and I want to feed back to them (or discover if I have got it wrong and need to change how I look at the system)

- Find our clients and buy them drinks, along with the rest of LDC I have had a lot of new clients in the last year as well as more work from existing clients, quite a few of them will be at IBM Connect and I want to meet them in person and have the odd tipple with them.

- Find more new clients, this is a professional conference after all, LDC has a great portfolio, skill set and a proven history of delivering against all the odds, I'm hoping to introduce this to more people. (mind you as a lot of the people there are techs the initial conversations tend to be a bit like a technical interview which wipe you out)

- But most of all there are about 200 named people I need to find, chat to, shake hands with, exchange tech ideas and project plans with and finally catch up and have a laugh with

IBM Connect 2013...Bring it on.

Bookmark and Share


Missing in Action

QuickImage Category Surfacing for air
Well, how long has it been since I have written to my blog?. The answer is bloody ages and the reason is work. LDC has simply been flat out with work. With both day work and all nighters. The months have been stuffed with a mixture of major client work, smaller independent projects and community actions such as presentations for conferences such as UKlug and IBM connect. ( which I will talk about In the next blog entry) in fact I am writing this entry sat in bed as I can't sleep on my first early night in months which strikes me as bloody dumb.

Anyway this entry is mainly a year in review and a look to the future in case people read my blog during IBM connect and wonder why I have been so lazy.

This year has been quite amazing, with the work I have been doing at LDC really showing me where I want to go in the future. The variety of work as well as the variety of clients has been staggering from hideously complex websites to training, from nasty nasty Java to Amazon Web services consultation

Most of all I have been very lucky with the people I have been working with, its quite the most amazing thing to be the dumbest person on the team as you learn shit loads on each project (although it's terrifying to see how fast Julian can Code, the quality of Matts design and the fact that that even the bloody wretch Ben Poole is getting even better at UI design) and that's not even including the partners we have worked with such as Gab and Mike from the Turtle partnership ( if anyone says they can keep up with Gab or know a better project manager than Mike then they are a fibber and need a kick in the fork)

Continuing on with this theme will be 2013. Keeping up with all the tech and business design that clients seem to need at the drop of a hat, though I'm fairly sure my brain won't hold much more than it currently seems to be stuffed with but what is life with out the odd challenge

Bookmark and Share


XPages review

QuickImage Category Review
Here at LDC towers we are quite a diverse bunch each member taking a primary role in a few technologies and then acting as secondary and tertiary to other members to back them up when needed, with people like Matt White and Ben Poole in the team handling the bulk of the XPage work, my Primary UI skills were Spring web/view/mvc and Flex (as well as the classic domino we all still know like the back of our hands).

During this time I kept up on XPages by watching Matt's videos on and following the rest of the blog spheres posts, but quite frankly demand has outstripped supply and now im Xpageing in anger so I figured a review on XPages was due for any body else who is late to the show ( I know you lot, some of you are still not doing proper Java in your apps!!!).

Sooo...what do I think?

Well frankly I like it, you produce really nice apps chock full of functionally, cleanly and at break neck speed, the only real hurdle is how you approach the development cycle and this depends on your point of view:

From a classic Domino persons point of view, XPages are not another component like pages or Navigators (remember them), they don’t work that way, think of XPages as a separate product that you have installed in your domino designer and server that provides you with a whole new layer of features, I found that it was easiest if I thought of them as an IBM plug in to the Classic Lotus product (which helped me resolve some of the integration miss matches and different ways of doing things).

From a none Domino person point of view: IBM have written another implementation of JSF (just like Spring Faces) and have glued it to a Legacy NoSQL database with integrated security and dedicated server platform to enable that platform to serve up content in an up-to-date form (just like they did with the HTTP task in 4.6).

Once you have your point of view and get down to writing code, you will find you don’t actually write XPages, they are just the final container, you actually write custom controls and then plug them into the relevant Xpage when you're ready, like little UI and code modules sitting in a hierarchy (a bit like Spring MVC ) , understanding this is the corner stone to not tripping your self up. On the designer its self it's obvious that the framework architects have been given considerably more time to get their sh*t together than the IDE designers and there is a lot of “you need to do that in the source view” or “change that in the 'All properties' section” , if you cant figure out how to do something, don’t worry they WILL have catered for it, it just wont be in the designer UI yet.

Lists are easyer to read than chunks of text so here are the good and bads of XPages as I see them.

- SSJS (server side java script): I love this, all the power of JavaScript running nice and securely at the back end with nearly all the functionally of @fomula's added to it (makes me want to go of and learn node.js).

- Flexible: unlike other modern JSF/JSP frameworks, XPages thankfully inherits its 'classic' ancestors ability to be completely adaptable to what you want, which is a breath of fresh air from Spring in which you are basicly told "we know what’s best, so you cant do that".

- The Security is still there, its still far easier that other frameworks to do good security and it inherits well from classic (though not perfectly).

- Expandability and plug-ins : IBM have gone with a constant upgrade path in which they develop add-ons which are released to the community as plug-ins which in turn will eventually get rolled into the main product ( the best example being the "XPages Extension Library" ) , giving you a nice balance of speed and supportability (thumbs up).

- SSJS: Its not ECMA complaint and I've already hit a few WTF moments when coding functions, also debugging is not the friendliest and please for the love of all that’s holy can I have a auto format key-shortcut.

- Still a fair amount of hacking: there is quite a lot of "how how the hell do I do that" then performing some strange convoluted action for dealing with simple problems , the old domino people are used to it but I can imagine it being a real head scratcher for new people.

- It has that IBM "I'm still slightly a prototype" feel about it, with a lot of IBM products you have the feeling they went "cool it works, ship it" while gently bypassing testing, now I know they are really trying (I got a tweet reply to me bitching about an error in about 30 mins) but still its an ongoing process.

- The IDE is slow and hates to share with other developers at the same time (turn off automatic build), now I use plain eclipse most of the time as well as Adobe Flash builder and for my sins IBM RAD and all of them are faster than 8.5.3.

All in all, what with the Xwork server, if you can get a client to ignore the "lotus" memory then we have a real contender on our hands, I am building apps at the same speed (if not faster) as I used to with classic domino but they are easy to make look really good, are technologically up to date, and built with a great deal less hastle than with something like Spring, IBM just need to clean up the rough edges and convince us they are not going to dump the whole thing for pure connections.

Bookmark and Share


A London contractors guide to Hartford US

QuickImage Category Travel Insurance
Hartford Connecticut is sometimes called the insurance capital of America so a contractor with insurance knowledge stands a good chance of ending up there sometime.

As it's a good policy to treat your clients money as you would your own,I was doing it on the cheap also like many Londoners I tend to love public transport and dont hire a car unless I can help it (which marks me as a freak to many Americans).

There are plenty of hotels in the middle of Hartford but these tend to not only be a bit expensive but when I tried to book they were also full up, so I ended up in Glastonbury, a suburb town a few miles south with a couple of huge hotels which always seem to have rooms free and surprisingly good Internet access (the Hilton Garden Inn Hartford and Home wood Suites) these suited me perfectly as they have 2 shopping malls within 5-10 mins walking distance, both with supermarkets ( the Garden Inn has microwaves in its rooms and as the homewood suites are grander I assume they have the same or better) as well as a variety of reasonable restaurants and fast food places.

Travel wise your hub is the square round 'Central Row' in Hartford, all major clients are walkable from there, all the buses I describe below both arrive and leave from this area, it also contains a large round booth in the centre island that is the ticket office to buy your weekly travel pass from (the buses take cash but don't give change or a ticket for receipt purposes).

The buses are clean, air conditioned and everyone I met on them was very nice. The ones that you will need are:

30/30x this is the airport bus between Bradford international and Hartford downtown

4/14 this is the park and ride between the two Hilton hotels at Glastonbury and down town Hartford, fast with no stops but very limited running times, you seem to have pay an additional $1.05 per trip if have a travel card (normal price $2.30), it picks you up next to the brown wooden shed on the parking lot opposite Burger king near the outdoor mall on Main street. ( the official stop is called Putnam bridge Part and ride), If you miss the 4 or need to travel on Saturday Then the 95 is the bus for you (if you need to travel on a Sunday you will have to get a taxi into Hartford)

35/64 these are the buses from Hartford to West farms mall which is Apparently the best mall in the area for souvenirs for loved ones

The site is where you will get the the details you will need. and a good set of maps can be found here

1) Hartford dies at 6:30 pm , West Hartford is apparently the place to be (it certainly looked far posher and more residential on the basis the one meal I had there)

2) A taxi trip from the The airport to Hartford is about $30 + tip, from Hartford to Glasbury is just over $20 + tip, a taxi all the way from the airport to the Glastonbury is about $57 + tip, to a Londoner the taxis are pretty naff, not only can they say 'no' to your fair (quite gave me a start when one did) but they don't know where anything bloody is!!, if you need one, pre book it from either your hotel or the little booth at the Airport.

Bookmark and Share


Classic Domino Search Trick

QuickImage Category Classic Domino Search results
There is less classic Domino work around then there used to be ( Pure Java, mobile and Xpages taking up most of my time), but still plenty of maintenance work for those who can provide what the client wants, any way, this is something I just updated on an existing clients classic app, and it struck me that it MUST be known by just about every one, but either no one has blogged it, or my Google foo is weak at the moment, so I decided to post it in case I might be of some use.

Problem: you have a classic search form, and you want to analyse or work with the results (making totals or stuff like that), but need to somehow get hold of the values in order to do so, I can remember this being a complete PITA years ago, but with a fresh set of eyes its dead easy.


1) Make your searching view a HTML one (via the view properties).

2) Make a column that returns a hidden field for each row for the value(s) that you want to access.

"<td>" + "<input name=\"PostCodeSearchValue\"  value=\"" + PostCode + "\" type=\"hidden\" />" + "</td>"

3) Now when you search, you can go a fetch all these values with client side java script.

var coll = document.getElementsByName("PostCodeSearchValue");
var arr = [];

for (var i = 0; i < coll.length; i++) { 
 arr[i] = document.getElementsByName("PostCodeSearchValue").item(i).value;

and do what ever you want with them.

Now that lacked a bit description wise, so here is a demo and working download for you to take to bits

Demo: Here , Just Click "Search" to get a bunch of data to work with and then "Find Unique Postcodes" to run a bit of Javascript over the result to find and display the unique Post Codes in the returned data

DownLoad: You can get the file Here

ahhh, History...

update: Matt White has pointed out that this produces invald HMTL (working but invalid), and suggests using a JS framework and doing the same sort of "find" but using a CSS Class name... a fine point

Bookmark and Share


Being nice to other developers with REST services

QuickImage Category JSON coding standards
REST services are really nice, really fast and easy to create, but sometimes we forget in our haste to get them out the door that a little bit of structure will help both our selves and any third party developer than might user them, eg, if when a call is made to your service


is returned, what does that mean? was it sucessfull but there is no data, or was there an error in your call, a bit of context would go a long way, the easiest way round this is a little wrapper class, nothing fancy, just enough to throw the front end devs a bone, my basic one looks like this

package com.ldc.classes;

public class RESTReturn {  
	public static final Integer SUCCESS = 0;
    public static final Integer FAILED_GENERAL = 1;
    public static final Integer FAILED_INVALID_PARAMETER_VALUES = 2;
    public static final Integer FAILED_MISSING_PARAMETER = 3;
    public static final Integer FAILED_AUTHENTICATION_FAILURE = 4;
    public static final Integer FAILED_AUTHORISATION_FAILURE = 5;
    public static final Integer FAILED_AUTHENTICATION_EXPIRED = 6;
	public RESTReturn() {
	public RESTReturn(int returnStatusParm) {
		returnStatus = returnStatusParm;
		returnStatusDesc = statusToString(returnStatusParm);
	private int returnStatus;
	private String returnStatusDesc;
	private Object payload;
	public int getReturnStatus() {
		return returnStatus;
	public void setReturnStatus(int returnStatus) {
		this.returnStatus = returnStatus;
	public String getReturnStatusDesc() {
		return returnStatusDesc;
	public void setReturnStatusDesc(String returnStatusDesc) {
		this.returnStatusDesc = returnStatusDesc;

	public Object getPayload() {
		return payload;

	public void setPayload(Object payload) {
		this.payload = payload;
    public static String statusToString(Integer wsReturn) {
        if (SUCCESS.equals(wsReturn)) {
            return "It Worked";
        } else if (FAILED_GENERAL.equals(wsReturn)) {
            return "Error: This call caused an error";
        } else if (FAILED_INVALID_PARAMETER_VALUES.equals(wsReturn)) {
            return "Error: Something you gave me was rubbished";
        } else if (FAILED_MISSING_PARAMETER.equals(wsReturn)) {
            return "Error: You left somthing out";
        } else if (FAILED_AUTHENTICATION_FAILURE.equals(wsReturn)) {
            return "Error: Err user name or password was wrong";
        } else if (FAILED_AUTHORISATION_FAILURE.equals(wsReturn)) {
            return "Error: You you can log on, but you dont have rights to do that";
        } else if (FAILED_AUTHENTICATION_EXPIRED.equals(wsReturn)) {
            return "Error: Your logon has expired, sorry";
        } else {
            return null;


and I would use it a bit like this

package com.ldc.classes;

import java.util.List;

public class Getaddress {

	public RESTReturn getAddressInJSON() {

		int callStatus = RESTReturn.SUCCESS;

		List<Address> someAddresses = null;
		try {
			someAddresses = doSomthingToGetALoadOfAddress();
		} catch (Exception e) {
			callStatus = RESTReturn.FAILED_GENERAL;

		RESTReturn restReturn = new RESTReturn();
		return restReturn;

so instead of


I would get

{"returnStatus":1,"returnStatusDesc":"Error: This call caused an error", "payload" : "[]"}

which at least tells you that something is not right with the world

Obviously you can get as creative as you want, and a lot depends on how good your internal functions are at displaying their unhappiness, but every little helps and you will make better friends with your client side devs for a bit of consideration like this

Thanks to Ben Poole for pointing out to me that I'm behind the times as normal and this is standard practice, doh!!

Bookmark and Share


Exposing existing classes for REST top tips

QuickImage Category JAVA JSON
Bolting new functionality onto older systems always has its fair share of fun and games, but exposing internal data structures to external parties is an even greater horror, this does happen though, particularly when clients want to access previously locked down systems via web services or REST interfaces or you want to deliver the same functional via new client eg B2B, mobile etc etc, I have been doing this recently with REST services using the JERSEY library, which like nearly all the good service libraries serialise and deserialise classes for you automatically, however nothing is ever perfect straight out of the box so here are some the things you can do to make your REST services perfect (these work with any JAX/Jackson implementation and often even CXF based systems)

Ill put all the code in first then explain it later (this coded represents the internal class that I am exposing via the services plus the annotations that I have added to it):

package com.ldc.classes;

import java.util.Date;
import org.codehaus.jackson.annotate.JsonProperty;

public class Address {

	private int Id;
	private Date whenTheyMovedIn;
	private String guessWhenTheyMovedIn;
	private String firstLine;
	private String secondLine;
	private String postCode;
	@JsonSerialize(using = CustomDateSerializer.class)
	public Date getWhenTheyMovedIn() {
		return whenTheyMovedIn;
	public void setWhenTheyMovedIn(Date whenTheyMovedIn) {
		this.whenTheyMovedIn = whenTheyMovedIn;
	@JsonSerialize(using = CustomTextToDateSerializer.class)
	public String getGuessWhenTheyMovedIn() {
		return guessWhenTheyMovedIn;
	public void setGuessWhenTheyMovedIn(String guessWhenTheyMovedIn) {
		this.guessWhenTheyMovedIn = guessWhenTheyMovedIn;
	public String getFirstLine() {
		return firstLine;
	public void setFirstLine(String firstLine) {
		this.firstLine = firstLine;
	public String getSecondLine() {
		return secondLine;
	public void setSecondLine(String secondLine) {
		this.secondLine = secondLine;
	public String getPostCode() {
		return postCode;
	public void setPostCode(String postCode) {
		this.postCode = postCode;
	public int getId() {
		return Id;
	public void setId(int Id) {
		this.Id = Id;


package com.ldc.classes;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;

public class CustomDateSerializer extends JsonSerializer<Date> {
    public void serialize(Date value, JsonGenerator gen, SerializerProvider prov)
            throws IOException, JsonProcessingException {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz");
        String formattedDate = formatter.format(value);

package com.ldc.classes;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;

public class CustomTextToDateSerializer extends JsonSerializer<String> {
    public void serialize(String value, JsonGenerator gen, SerializerProvider prov)
            throws IOException, JsonProcessingException {
    	Date date = null;
		try {
			date = new SimpleDateFormat("MM/dd/yyyy", Locale.US).parse(value);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz");
        String formattedDate = formatter.format(date);


Right!, first one is name changes, i.e. you have a field who's name is just fine in your internal class, but you want to change it when you expose it via REST services (in this case its the "id" field, this was because "id" is a reserved word under iOS which make using it a PITA for the client coders), all you have to do is put the following @annotation and the Alias you want to use just above the field you want to change, and bingo, new name ONLY for REST services

	private int Id;

Next is date formatting, the default json date format is not loved by many people I know, and a lot of people prefer ISO 8601, you can use a custom class to do this conversion for you quite easly, again without touching the internal workings of your existing classes, just put this anotation above the 'getter' for that field and it will do the conversion for you on the fly (you can see the CustomDateSerializer.class code above)

@JsonSerialize(using = CustomDateSerializer.class)
	public Date getWhenTheyMovedIn() {
		return whenTheyMovedIn;

Finally you can take the custom classes a bit further and change type not just class, for example converting a short form date "DD/MM/YY" stored in a String into a propper Date field. you again just declare a custom class but beef up your code and you can turn anything to anything, funky!

	@JsonSerialize(using = CustomTextToDateSerializer.class)
	public String getGuessWhenTheyMovedIn() {
		return guessWhenTheyMovedIn;

Looking back on this last project and talking with clients about a future one, there is maybe the option of having a dedicated set of classes for external services, far more control and more secure (as, if someone adds a field that really should NOT be exposed it wont automatically flow though to the external service), mind you if you do it that way you will have to weight up the not inconsiderable advantages of speed and easy of maintenance offered by using the internal classes.

but either way these tips might help

Bookmark and Share


New Anime Series: Haiyore Nyariko

QuickImage Category Anime New Release
First Episode Review for: Haiyore Nyariko

Summary : Well basically all the gods of the Cthulhu Mythos are actually aliens and some of them are good guys (space cops) and are living on earth disguised as cute teenage girls, GOD I LOVE ANIME!!

Animation : A great mix of styles from a acceptable plain cell style to a seriously detailed dark style (hence the 2 screen shots)

Plot Potential: I don't care if it has a plot (which is Lucky as I cant see any sign of one), as I'm to busy trying to follow all the 'in jokes' regarding Lovecraft's works and RPG's

Characters: The characters have diddly squat to do with their Lovecraft originals, and this is far more a re skinned "alien girl comes to earth" than anything else

Music: Nothing to speak off, I cant even remember the opening theme and its only 10 mins into the anime!

Reminds me of: To Love-Ru feels just about the same

Overall: I had been really looking forward to a Lovecraft themed anime, and was disappointed when the terrible flash style version Haiyore! Nyaruko-san came out
, this is the anime I was really waiting for and it is very happily received, though I'm sure that a pure lover of H.P. Lovecraft's works would be rolling in their grave



Disclaimer: These are mini reviews of anime's that are fresh out in Japan and are not licensed in the UK, buy them once they have been licensed or at the very least buy the merchandise, remember if the anime makers make a loss, THEY WILL STOP MAKING ANIME!!
Bookmark and Share


New Anime Series: Ginga-e-Kickoff

QuickImage Category Anime New Release
First Episode Review for: Ginga-e-Kickoff

Summary : A lad who loves Football (soccer) but can't play it for toffee is the last person on a dissolved team and starts the hunt to make a new team.

Animation : Slightly washed out single tone cell animation, nothing partially wrong with it but a bit "low rent"

Plot Potential: This looks like another underdogs rise to meet the challenge job,

Characters: Strangely enough given that I was not enjoying this anine (I hate football), the characters were not that bad, the main character was the weakest of them

Music: The opening theme was quite rousing, with low key stirring music in the back ground throughout

Reminds me of: A much naffer (or comedy version) of Knight in the Area

Overall: I made it though this anime teeth gritted, there is nothing hugely wrong in it, but the subject matter combined with the lack of anything outstanding makes it in my opinion one to miss


Disclaimer: These are mini reviews of anime's that are fresh out in Japan and are not licensed in the UK, buy them once they have been licensed or at the very least buy the merchandise, remember if the anime makers make a loss, THEY WILL STOP MAKING ANIME!!
Bookmark and Share


New Anime Series: Folktales from japan

QuickImage Category Anime New Release
First Episode Review for: Folktales from japan

Summary : As you may have guessed from the title this anime is a series of retellings of traditional Japanese folk tales.

Animation : Very basic, a certain simplistic charm but obviously designed for young children

Plot Potential: 3 short tales for each episode very much in the vein of Aesop's fables, although Japan REALLY has it in for bad neighbours, really REALLY!!

Characters: I cant really pass judgements on traditional characters that are there to relate the point of a tale rather than entertain us, characters tend to be very polar either completely good or completely bad

Music: Snippets of traditional music and a couple of kiddies tunes for closing, nothing that gets on the nerves.

Reminds me of: Nope this is fairly unique on me, i vaguely remember an 80's anime about history that might come close but I can find its name

Overall: These were really quite fun to watch, quite fascinating in fact and I suspect gave a bit of low brow cultural background to the normal stuff I watch, very much recommend.


Disclaimer: These are mini reviews of anime's that are fresh out in Japan and are not licensed in the UK, buy them once they have been licensed or at the very least buy the merchandise, remember if the anime makers make a loss, THEY WILL STOP MAKING ANIME!!
Bookmark and Share

Avalable for on site contract in


Hire Me


Curriculum Vitae

As a member of:

Contact My Grubby Hide

Skype Linkin Main Me Twitter

Paid Advert

o2 ad

Get LDC Tshirts

All profits go to the Children’s Cancer Association (CCA) in the US.