Monday, November 29, 2004

My first post from Linux...

Okay, so maybe that's not such a big thing to most people, however I'm really pleased. This would have happened last night except Blogger appeared to be having problems. It's been a long time since I first posted about my move away from Microsoft, and although it has finally occured in part due to a machine failure, it is good to finally be here.

I should talk a bit about Suse 9.2 Professional, which has been a joy to use so far. I am looking forward to trying it out on a more powerful machine as soon as I can. One thing that has surprised me is that it's not as polished as I thought it would be. I've never been under the missapprehension that a Linux distro is going to be completely polished but I was thinking that Suse would be, given the way Novell are talking about it. Linux is still now where near ready to be a replacement for Windows for many many people. Luckily it's fine for me.

It has taken me a little while to get my development environment up and running on this machine, and it is far too slow to do much with, but I'm going to try to get back into Quintanona tonight.

Linux at home...

I'm finaly up and running again with the Suse 9.2Prof Linux machine, it's quite old but it will have to do till I get a new one. I also managed to get it dialing in to an ISP so I'm online as well, if you can call a 33.6K connection online these days. Have to sort out broadband soon.

Things at work are settling back to normal after the Open Source launch, although this week we have a stand at the Online Information exhibition at London Olympia, so I am manning the stand on Wednesday and attending on Thursday.

I have to give a mention to my best bud Craig who is always there for me when I need him, I wouldn't have got this far in life without you dude.

Hopefully back to more regular and development focused updates this week.

Tuesday, November 23, 2004

Open harmonise launch...

Sorry I've not posted in a while, I was away in New York for a week and came back to the mad rush to get everything ready for the Open Harmonise launch which happened last night at the Institute of Directors here in London. You can now download the full source and read all of our documentation online at the Open Harmonise website.

The launch event went extremely well with about 60 people from leading public and private sector organisations. Our CTO Grant Cocks and CEO Patrick Towell delivered presentations and Ray Ayers (Managing Director of Silicon Valley) and Dominic Savage (Director General of BESA) also spoke.

It's great to finally have Harmonise out into the community, and it's been a learning experience getting it there. I am sure it's going to continue to be so over the next few months. We are going to get the binary releases out the door as soon as possible.

Tuesday, November 09, 2004

Disastrous evening...

When events are overtaking you and everything is going wrong there can be a moment of complete clarity. In that moment you know exactly what went wrong and when it happened. I'm not talking about regrets, those are a failure to appreciate a life lesson, no I am simply talking about a realisation of the point where things could have gone differently.

Last night I had one of those moments, the clarity of vision showed me that I really should not have written that post yesterday. I should not have "spoken too soon", because last night it all went wrong.

The evening didn't start well when SUSE Linux informed me that Server#2 did not have enough memory for the YAST2 installer to run. I really hadn't realised what a bad spec that machine is, it's just run happily for so long that I've not had to think about it. However a 200MHz AMD K6 with 64Mb RAM probably isn't going to be much use.

After having failed to be able to install Linux on that machine I decided that I would do some programming to cheer myself up, of course this would involve booting up my main machine. This machine has been on its last legs for a while, since sometime in January it has begun to fail to boot, claiming that it has suddenly lost ACPI support. This was an issue with the motherboard, so a quick "Load BIOS defaults" and reboot would normally solve it. Last night it wouldn't even get past the POST check, no boot screen came on it's just dead.

I know it's strange but I am quite sad about this, I've had this machine for a while, it's seen me through a lot. I am lucky though, I'd recently copied all of my important data onto the other machines, even the stuff that I was working on last weekend.

For the time being I have made the move to Linux, with that machine being the only viable workstation I have. I now have to debate whether it is worth attempting to resurrect that old machine with spares, but I definitely need to start looking into a new PC, something I'd hoped to put off for a little while.

Monday, November 08, 2004

My network upgrades

Had some fun last weekend upgrading the home network. Previously I simply had a couple of machines networked via a crossover cable however, as those who read regularly will know, some more machines have decended my way and I made the decision to move to Linux.

Suse Linux 9.2 Professional

You should know that I'm a complete Linux newbie, not inexperienced or a novice, I can only truly, hand on heart say that I'm a newbie. Many people at work have given me help and advice, although this can be a little offputting when they are all advocates of different distributions (Mandrake, Red Hat and Debian). But thank you to you all, you know who you are.

Saying all that though, I have found my first few days with the latest Suse a breaze. The installation went perfectly on my chosen first sacrifice (currently called simply Server#1). I managed to get ftp, telnet and Samba all working happily with my Windows machines (albeit after remembering to allow the ports in the Suse firewall).

In the current setup all the machines have fixed IP addresses, I decided against setting up a DHCP server on Linux as I'll be getting broadband in the next few weeks and I will leave the address serving to the router.

New network

This means that I currently have three machines on the network, more than a simple crossover cable can handle. So I also spent the weekend getting some new network hardware up and running. A D-Link 10/100 8-port switch, lots of Cat5 cabling and a KVM switch.

Only one slight hiccup...I had not thought to check whether all my machines have PS/2 ports for keyboard and mouse, or course one didn't. The oldest of my currently running machines, it never occured to me to check for that.

With the help of some friends (both very good sys-admins) I managed to track down the correct adaptor for the keyboard (already have one for the mouse) so this should all be working by next week.


Next up is installing Linux on Server#2, then thinking of better names for them all! After that I am waiting for some memory and HD drives for the final machine and I am all done until I get a new workstation to replace my main machine which must remain Windows :(

Just so you know I'm in New York from Thursday for a week, so you won't hear from me. When I get back we are into the final few days before the launch of Open Harmonise, very exiting.

Monday, November 01, 2004

Why do I blog?

Had an interesting conversation with a colleague in the pub the other day. We got to talking about why I write this blog, I think he was a little surprised that I am doing this. To tell you the truth I think I am too.

I have been fortunate to be in a job that I love since leaving university four and a half years ago, and while I have no intention of leaving anytime soon I have also become more and more aware that one day I may have to. Thinking about my future has become a major preoccupation. While this doesn't answer the question it is an important piece of context that you should know.

The trigger...

Until a little while ago I had a low opinion of blogs, I thought that they were overblown diaries for total extroverts. I couldn't imagine why I would want to tell the world what I ate for breakfast let alone why the world would be interested. Of course I was wrong, I was shown the error of my ways by a good friend Kieron Gillen. Reading Kieron's blog showed me that they could be more than a simple online diary, that they could be used in a creative fashion.

Kieron used to be the deputy editor of a major games magazine, and has since gone freelance. He still writes articles and reviews about gaming but he is also perusing a career in comics writing and many other forms of writing. His blog is very simply titled "Kieron Gillen's workblog", this is apt as this is the single point where you can find references to all of his work, which being freelance appears in many weird and wonderful places (occasionally your doormat when you are least expecting it!).

It is true that his blog is partly self-promotion, but then he is self-employed so you've got to let the guy take every opportunity, however he has made it so much more than that. From his 2am, ever so slightly drunken, ramblings to Negativeland, his recently completed (experimental?) online comic. He is always willing to respond to comments, and actively encourages feedback.

While I don't claim to be anywhere near as creative or talented a writer as Kieron, I like the way in which he very simply sets out his stall with his blog. He lays out his works and gently invites people to browse and critique. This is what I admire.

The blogging experience!

One of the observations that my colleague made was about the balance in my posts between information and opinion (I wont say what he thought the balance was), we talked about these different blogging styles. I guess I am still trying to work out my style, still trying to find what's best, but the experience as a whole is worth it. My writing is improving, although some I'm sure would disagree, and I am trying to be more and more serious about it.

Answer the damn question!

Okay, so why do I blog? I guess like Kieron I am setting out my stall, showing my wares. I am trying to raise my profile and see if people are interested. My goal I guess is that in a few years time the most relevant part of my CV will be a link to this blog, so that people can really understand where I am coming from and what I know, or think I know. If in the future I sit down to an interview and can spend time discussing with people about topics I've posted about, then I've done well, I will have achieved something from this.

Whether or not any of this would help me get a job is irrelevant, especially at the moment, but blogging is helping me to find my voice about the things that are important to me. I guess that is the answer.

Quintanona: Web Services Intermediary framework for Axis

I spent some time over the weekend on Quintanona, which is my WS Intermediary framework for Axis that I've talked about before. The last time I posted an update on this I told you about the problems I was having with immutable SOAPElements in Axis, well I've gotten around that and changed Quintanona a bit in the process.

When implementing a request or response handler method the only parameter you take in is a QuintContext object, from which you can access DOM elements from the SOAP message, header and body elements. You can alter these elements and these changes get passed onto the actual service.

I also started to add functionality so that you can place a Runnable object into the QuintContext when handling the request, this will run in parallel to the main service request. Your response handler will only be called once both your Runnable object and the main service have returned. This should enable you to build higher performance intermediaries.

Once that is finished I just have to finish the Unit Tests and build some decent examples and I will be ready for a first release.

Apparently I built REST Web Services in 1999...

I do like it when an idea that has been around for a while gets a definition. A recent good example would be Podcasting, where enclosures for RSS had been defined for quite a while and yet not until the perfect application for these came along did it gain a definition and therefore wider recognition.

Being slightly obsessed with Web Services I have of course taken an interest in the SOAP V's REST debate. For a while I didn't pay attention, but as REST got more and more coverage I thought I had better take an interest in this "alternative". The following is the accepted definition of REST from Roy Fielding

"Representational State Transfer is intended to evoke an image of how a well-designed Web application behaves: a network of web pages (a virtual state-machine), where the user progresses through an application by selecting links (state transitions), resulting in the next page (representing the next state of the application) being transferred to the user and rendered for their use."

Therefore, in the simplest explanation, REST Web Services are those where the request is contained entirely in the URL and the information is returned as XML.

REST advantages

Obviously REST Web Services have their advantages, mostly they are all about being easy to use. The learning curve for a new REST Web Service is very shallow, being very closely aligned with the founding block of Web technologies HTML over HTTP. In fact the only difference is that a REST Web Service will return you XML instead of HTML, this is because HTML over HTTP is in fact a REST system.

The definitions for REST Web Services can be as simple as one or more URLs and XML Schema defining the return information.

Finally REST Web Services are very simple because they do not require complex APIs or frameworks for access.

Note: Technically SOAP Web Services do not require APIs or frameworks for access, however they are a hell of a lot more complex if you don't.

Having finally understood what REST Web Services are all about there seemed to be something familiar about them, but I just couldn't put my finger on it...Till now.

So 1999 then?

Ah yes, returning to the title of this post. Recently my ex girlfriend, who I was seeing while finishing my Computing Science degree, was clearing out her MyYahoo! Briefcase and came across what would appear to have been the only surviving and complete copy of my final year project. She very kindly e-mailed it on to me.

Well this was a blast from the past. I hadn't thought about this in a very long time, and it turns out the thoughts I had were wrong. You see I was lucky enough to be in gainful employment about a week after my last exam, and so I didn't really take much interest in my results or think about university at all for a good long time. Going so quickly into the real world of programming was a shock to the system to say the least, so I began to assume that everything that I had done before was laughable.

Taking this into account you can begin to imagine my surprise when reading my project report to learn that I had in fact built REST Web Services for it. Of course I didn't know this at the time because I had never heard of the terms REST or Web Services.

Web PMT!

The idea for my final year project came to me while in Munich on a years work placement. I spent a large part of that year building an online issue reporting tool in Perl. Before then I had done my best to avoid programming, I wanted to be a support engineer (I know, what was I thinking!). However, building this tool, sometime in '98 and '99, I really began to find my calling, which was web based applications. I could see how cool this work could be. I taught myself ASP with the now defunct ZD University (Ziff Davies subscription online learning site).

The issue reporting tool was very text heavy, typical Perl app, but I began putting charts into it, using the age old trick of stretching 1 pixel images to the correct proportions. This got me thinking about using the web to build online visualisation tools, and the most familiar to me at the time were project management tools. Hence my Web Project Management Tool was born. Please ignore the stupid acronym, I was being a "kooky" student.

This concept of an online project management tool developed further in my last few months in Munich, there were several problems that I needed to solve before moving forward. The first of these was to turn this idea into something my university would accept as a project.

"Data Visualisation and the Web"

In the end that was my title, the project was slanted towards being research into how new technologies could enable data visualisation and manipulation to be pushed down into the browser.

While I had my project, the goal and the title, I still did not know how I was going to fulfill this. All I did know was that stretching 1 pixel images was not going to be enough, so I began hunting around for a better solution.

Eventually I stumbled upon Vector Markup Language (VML), Microsoft's precursor to the Scalable Vector Graphics (SVG) standard. You should remember that I was a very inexperienced programmer at this point, so I had no idea what I was getting myself into. I was not fully equipped to evaluate the suitability of a technology, if I was I probably would not have gone down this route.

Data down the pipe

My last problem was to work out a way to send data to the browser independently of the normal HTML request, I wanted the visual layout information and the data to be separated so that the client did all the hard work. One slant to my project was to show a solution that would be good for companies with very low spec server systems by only having them deliver information and not perform much processing.

I had selected VML as my visualisation technology, not really knowing anything about it. The first stage of my education in VML was to understand this XML thing that people kept talking about. It took me a few weeks to finally get what all this was about and that VML was expressed in XML and what that meant. I had the idea that I could perhaps encode the application data as XML, but all the examples I had seen had used XML from static files however I needed to feed dynamic data to the client.

It may sound strange now, but you must remember that this was all very new to me. So I tried a little experiment to see if I could use an ASP page to generate an XML document on the fly rather than have to save it as a static file. I was amazed and overjoyed when this worked. Technically I had created my first REST Web Service.

The final year project

The project itself progressed slowly, there were many teething problems, mostly to do with strange behavior from VML. I didn't manage to do as much as I had hoped. I had really wanted to get two different charting techniques implemented (GANTT and PERT) and show how the visualisation could be changed without reloading any data.

Still, I did manage to create an interactive GANTT chart which could be refreshed with only a data load rather than a complete page load in the browser.

GANTT chart with sub-tasks rolled up.

GANTT chart with sub-tasks exposed.

Should I be proud?

This trip down memory lane has been a strange experience for me, I am left with some questions. Looking back on this should I be proud of what I achieved in the context of the time? The title of this post says that I created REST Web Services in 1999, but I have to admit that I didn't really know what I was doing so perhaps it was random chance that gave me this opportunity.

I have a strange belief in fate, so coincidences don't bother me as much as other people. Because of this I am not so freaked out that the company I ended up working for has been a heavy user and supporter of XML technologies. Barely a day goes by when I am not dealing with SOAP, RSS, RDF or WebDAV documents. I do understand that I was lucky my choices back in 1999 prepared me for all of this.

So there you are, the tale of how I managed to stumble across something new whose time had not yet come.

Note: If Rob Kinmond, my final year project supervisor from Staffordshire University, should ever happen to read this, please get in touch, I would love to catch up, to find out if you did run that course on XML the year after.

Developer Support #4: Review of "Real World Web Services by Will Iverson"

cover buy from

This book turned out not to be what I was expecting, which is not to say it isn't good, just a surprise. All the blurb about it from the O'Reilly site to Amazon to the back cover do not sell this book correctly. Even the preface doesn't seem to quite convey what it is truely about, for that you need to wait till page 25;

"The primary focus of this book is not on creating your own web services but on using existing web services in productive and useful ways."

There it is, the prefect description. The book takes the reader through code examples for innovative ways to utilise the Amazon, eBay, Google, Fedex and CDDB web APIs, all of these examples are in Java.

Will Iverson is someone who really gets, and wants others to understand, that the real benefits of Web Services come when you begin to forget about the details of them and use them simply as APIs, as you would any other. He rarely distracts you with the details of SOAP or WSDL, except for to generate higher level APIs. However he does highlight the potential problems of Web Services by talking about the facilies of network connectivity.

While short, all of the APIs represented are explained, with good examples, enough to get you thinking about ways in which you can use them. This book is perfect for those people who are just getting into Web Services and want to understand what can be done with them, why they are potentially so powerful. Because of this, Real World Web Services is not recommended for those with any real experience of their own.