Sunday 1 August 2010

Moving Forward NOT looking back, Eclipse Helios

After having an on again off again relationship with eclipse for many years I decided to give it another shot, in part due to the influence of a work colleague. The current scratchpad project I am working on, fxassetman, incorporates a range of tools and libraries I am currently experimenting with. The core ones are as follows:
Most of these technologies, or those supporting them are well supported by the new Helios release. This in my opinion is the best release ever of eclipse, it just seems tighter, leaner and more responsive.

So for those which are not supported out of the box I have added a list of plugins, plus a few extra tools I just like to have around. This is my first cut list of additions to the base eclipse helios J2EE package:
Being conscious of memory use and to limit this install to just the stuff I need I pretty much just install the core requirements from each of these update repositories. In the case of spring tools I do however install all components related to Spring MVC.

In addition to this I grab the subversive team provider, then select the latest version java based client SVNKit library, this actually needs to be done post install and pops up for selection after restart.

So that is about it at this stage however I do plan do a couple more updates with new additions, and yes I am SERIOUSLY over this stupid Australian Federal election, these cheesy slogans are pretty damn funny.

Friday 20 November 2009

RestMS where I am at

I received an e-mail a few days ago inquiring about my work on a RestMS implementation. In writing a response I was inspired to consider some of the things which I had discovered in my research so far.

After working through a prototype for the REST API I started delving into the message handling and ran into a bit of brick wall. The RestMS protocol leans on AMQP, as far as I can tell, for a lot of it's concepts in the area of "messaging".

So if your looking to understand RestMS do your self a favor and go and learn how AMQP works, there are few implementations around I am currently using RabbitMQ and it's java based API. Once you have kicked the tires of a few implementations you will go back to the RestMS specification and understand a lot more.

This brings me to a question, are these specifications viewed as autonomous specifications, or indeed are they joined at the hip for some of their core concepts? If RestMS is to be presented as it's own protocol there may be a requirement to carve out the concepts in the AMQP protocol and fork them into this specification.

At this stage it looks like my best option is to enhance an existing messaging server, rather than writing a RestMS server from scratch. My research is however not all for naught, I have quite a good understanding of RestMS, REST and ATOM, and how these protocols/frameworks/standards work.

Sunday 18 October 2009

Insert Witty Couch Reference Here

As a sideline to my research for storm-cloud I ran into a post about a new service from ubuntu one. The post referenced a data store known as CouchDB which is a is a document-oriented database written in Erlang. As I am currently interested in how to store unstructured document data for my RestMS implementation I continued through to a book published by O’Reilly Media on the subject. The book is available to read online for free at CouchDB: The Definitive Guide. I found the first chapter very interesting with a break down of the reason for the project as well as some very insightful quotes from people in the industry relating to distributed data, and access to it.

One thing I find intriguing about this database is it's use of Erlang, a programming language designed at the Ericsson Computer Science Laboratory. Having recently had a peek at scala this language was mentioned quite a bit as "another functional language", however I didn't really look into what it was. Having now had a read over the free first chapter of Erlang and OTP in Action and considering my keen interest in concurrency this looks like a must investigate.

So with this all in mind I set out to install couchdb on my opensolaris box in a zone.

Saturday 3 October 2009

Surveying the land scape

After spending the obligatory time setting up my java project and being led off in many and varied directions chasing shiny new APIs and tools I have come REST back at Java and Maven.

There are certainly a myriad of new frameworks in the JVM, especially with the inclusion of such a diverse array of new languages like JRuby, Groovy and Scala. In the last few weeks I have kicked the tyres of most of them, and certainly the odd one a good test drive. But at this stage I have decided to stick with the old trusty Java and Maven team.

This is not say I am any worse off for the trip having seen some great ideas, new features and tricks I will surely call upon in the future, however in my case all of the building blocks I need for my RestMS server are all written in Java, and for a basic functional 1.0 will be fine bound together using Java.

The reason for sticking with Maven is just the sheer array of plugins, tools and overall power of this build tool. God knows I fight with it, dodging and weaving through it's more complex areas but at the end of the day it does a lot of shit I just cannot be bothered with, or didn't even think was possible. And all with a small tweak here and sometimes bit of head bashing. This paired with the ability to stand on the shoulders of giants, borrowing ideas from the wide array of large projects already using it makes it quite an attractive path.

In addition to development toolsets is the wide variety of open source hosting environments, with http://sourceforge.net, http://code.google.com and http://github.com to name a few. Having also given them all a try again lately I have selected github.com for my storm-cloud project. I can summarise the reason for this by saying I am amazed by how it is entirely focused on the code, how it is browsed, how it is shared. Their interface for code browsing is much more interactive than the other project sites. This paired with the ability to add a nice welcome page to your project is very cool.

So my new project site is http://github.com/wolfeidau/storm-cloud

I am currently, albeit slowly, chipping away at my todo list, adding structure, function and of course tests :)

Tuesday 8 September 2009

RestMS a voyage of discovery

For quite some time I have been researching lightweight asynchronous messaging protocols for use as a signalling protocol and the transport of telemetry. Ideally I was looking for something which built upon current protocols, and established client implementations rather than re-inventing the wheel. Quite recently I chanced upon RestMS and after reading through each of the draft specifications, and going through the perl example client code that this could well be a good basis for what I was looking for.

Below are some of the reasons I was attracted to RestMS, albeit quite young at the moment.

1. It uses HTTP which is everywhere, with clients for pretty much everything.
2. It is based on the REST approach to data access and services.
3. The documentation relating to this stack clearly illustrates a lot of thought and experience has gone into these specifications.
4. Some nice high level diagrams with a good explanation of behavior, this provides a great starting point for someone building or evaluating the use of this stack.

So based on this I decided to setup a project to work on my implementation of RestMS, in my language of choice being Java. This can be found at http://code.google.com/p/storm-cloud/.

While looking into the basis for RestMS I have read a lot of resources on the web, I have pulled some of them into the following list.

Wednesday 8 October 2008

Solaris Patching Goodness

I have recently been working on updating a Solaris 10 based server with the latest security patches. As the company I work for is small and the server is working along side a slew of Centos Servers which get FREE updates I needed a simple way to apply the security updates available from Suns Patches and Updates site.

For some time I have just checking the sun public list patch list every once in a while, and applying the important sounding ones manually. This was not a very nice or secure solution.

So recently after some searching I found Patch Check advanced (PCA) which can be found at the PCA Website.

This simple Perl script has made it very simple for me to apply and check for new recommended and security patches published by Sun. I cannot thank the author enough for such a simple and easy to use patching application.

To install just download the latest release using wget at Latest PCA Stable version and copy it to your /usr/local/bin directory. Make this script executable using chmod and then create a directory for your updates, in my /data/softwareupdates.

Once installed we want to check for missing recommended and security patches, to do this we run the following command.

# pca -l mrs

If your happy with that I recommend downloading all these patches first to ensure the patching process is as short as possible. To download the patches you need a FREE sun user ID which you can register for at . To perform the download we run the following command while in /data/softwareupdates directory, this will prompt you for a password.

# pca --user mynewusername -d mrs

Now that we have our patches we can apply them, again passing our username just in case it needs to download something new.

# pca --user mynewusername -i mrs

At this point I reboot the server just to be sure they are all applied.

# sync; sync; reboot


Next I am going to look at modifying the pca script so it can be run from crontab and send an e-mail if there is any new patches to install.