<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>That is an excellent question!</title>
<link rel="alternate" type="text/html" href="http://www.theguyzrock.co.uk/damian/" />
<modified>2005-12-13T11:21:34Z</modified>
<tagline></tagline>
<id>tag:www.theguyzrock.co.uk,2006:/damian/2</id>
<generator url="http://www.movabletype.org/" version="3.15">Movable Type</generator>
<copyright>Copyright (c) 2005, Damian</copyright>
<entry>
<title>Something to laugh about</title>
<link rel="alternate" type="text/html" href="http://www.theguyzrock.co.uk/damian/archives/2005/12/something_to_la.html" />
<modified>2005-12-13T11:21:34Z</modified>
<issued>2005-12-13T11:05:27Z</issued>
<id>tag:www.theguyzrock.co.uk,2005:/damian/2.594</id>
<created>2005-12-13T11:05:27Z</created>
<summary type="text/plain">If you are in need of some laughter, I highly recommend reading the MSF for Agile Software Development Process Guidance. It is comical! Some of my favourites: Project Managers estimate scenarios (stories?) Project Manager breaks scenario into development tasks Project...</summary>
<author>
<name>Damian</name>

<email>damian_lists@theguyzrock.co.uk</email>
</author>
<dc:subject>General</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theguyzrock.co.uk/damian/">
<![CDATA[<p>If you are in need of some laughter, I highly recommend reading the <a href="http://msdn.microsoft.com/vstudio/teamsystem/msf/msfagile/default.aspx"> MSF for Agile Software Development</a> Process Guidance. It is comical!<br />
Some of my favourites:<br />
<ul><li>Project Managers estimate scenarios (stories?)<br />
<li>Project Manager breaks scenario into development tasks<br />
<li>Project Manager creates test tasks<br />
<li>A developer writes a test, then some code, only then does he/she bother to worry about the business rules!<br />
<li>Not recommended that developers be involved in testing<br />
<li>Of course you always write the test AFTER you have fixed the bug<br />
</ul><br />
</p>]]>

</content>
</entry>
<entry>
<title>Cool Threads</title>
<link rel="alternate" type="text/html" href="http://www.theguyzrock.co.uk/damian/archives/2005/12/cool_threads.html" />
<modified>2005-12-07T16:56:06Z</modified>
<issued>2005-12-07T16:49:52Z</issued>
<id>tag:www.theguyzrock.co.uk,2005:/damian/2.584</id>
<created>2005-12-07T16:49:52Z</created>
<summary type="text/plain">The first servers based on Sun&apos;s Cool Threads Technology have been released. For those interested, some ex-colleagues (and extremely clever and great guys) have written up some useful information: Allan Packer Richard Mc Dougall Sun is giving companies the opportunity...</summary>
<author>
<name>Damian</name>

<email>damian_lists@theguyzrock.co.uk</email>
</author>
<dc:subject>General</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theguyzrock.co.uk/damian/">
<![CDATA[<p>The first servers based on Sun's Cool Threads Technology have been released. For those interested, some ex-colleagues (and extremely clever and great guys) have written up some useful information:<br />
<ul><br />
<li><a href="http://blogs.sun.com/roller/page/allanp">Allan Packer</a><br />
<li><a href="http://blogs.sun.com/roller/page/rmc">Richard Mc Dougall</a><br />
</ul><br />
Sun is giving companies the opportunity to try one of these servers for 60 days. Wish they would extend that to "people who just want to play"<br />
</p>]]>

</content>
</entry>
<entry>
<title>Niagra</title>
<link rel="alternate" type="text/html" href="http://www.theguyzrock.co.uk/damian/archives/2005/11/niagra.html" />
<modified>2005-11-30T16:29:59Z</modified>
<issued>2005-11-30T16:26:55Z</issued>
<id>tag:www.theguyzrock.co.uk,2005:/damian/2.583</id>
<created>2005-11-30T16:26:55Z</created>
<summary type="text/plain">New chip from Sun sounds quite good Niagra. 8 cores, 4 threads per core. Wouldn&apos;t mind a couple of them for my mac!...</summary>
<author>
<name>Damian</name>

<email>damian_lists@theguyzrock.co.uk</email>
</author>
<dc:subject>General</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theguyzrock.co.uk/damian/">
<![CDATA[<p>New chip from Sun sounds quite good <a href="http://news.com.com/Sun+has+high+expectations+for+Niagara/2100-1006_3-5914330.html?tag=nefd.top">Niagra</a>.<br />
8 cores, 4 threads per core. Wouldn't mind a couple of them for my mac!</p>]]>

</content>
</entry>
<entry>
<title>RoR</title>
<link rel="alternate" type="text/html" href="http://www.theguyzrock.co.uk/damian/archives/2005/11/ror.html" />
<modified>2005-11-30T14:39:24Z</modified>
<issued>2005-11-30T14:01:49Z</issued>
<id>tag:www.theguyzrock.co.uk,2005:/damian/2.582</id>
<created>2005-11-30T14:01:49Z</created>
<summary type="text/plain">As everyone is no doubt aware, there has been loads of hype about Ruby on Rails. A number of my ex-colleague got very excited about it some months ago. The hype however, IMO, was over the top, so much that...</summary>
<author>
<name>Damian</name>

<email>damian_lists@theguyzrock.co.uk</email>
</author>
<dc:subject>Dev</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theguyzrock.co.uk/damian/">
<![CDATA[<p>As everyone is no doubt aware, there has been loads of hype about Ruby on Rails. A number of my ex-colleague got very excited about it some months ago. The hype however, IMO, was over the top, so much that it turned me off. I did have a look at it, but had made my mind up before hand that it was overhyped web-app rubbish! <br />
</p>]]>
<![CDATA[<p>Six months later, my good friend (and awesome developer), <a href="http://www.redhillconsulting.com.au/blogs/simon">Simon</a>, said that he was quite impressed with it. So I decided to have another look, this time with my eyes open.<br />
<p><br />
I have been writing an Agile project planner, which is quite amusing! I have been, and still am, against the use of such tools (for another blog). Anyway, it is a good candidate for a web application and there is enough depth to give rails a decent trial.<br />
<p><br />
So far I am quite impressed. The shear pace at which you can knock out functionality is astonishing. For the first time I think I am actually enjoying writing a web application. The amount of code that I have written is negligible, mostly view code and a few bits added to controllers etc. Largely it has been a straight forward and enjoyable exercise.<br />
<p><br />
The next step is to exploit the built-in ajax and drag and drop effects to create a cool way of moving cards into an iteration and progressing them across a Story Board. <br />
<p><br />
Once that is done, all that is left is to train my daughters up and start a web dev company. I'll get my daughters to pump out rails apps after school ;-)<br />
<p><br />
Still lots to learn and I haven't had to deal with deployment, configuration, and other things that always give you headaches on most projects. Still not convinced on the Database-Driven approach either, feels a little odd. Also as it is easy to knock up apps quickly, it is also very easy to create a complete mess faster than ever before! However, thus far, given the choice between writing a web app in Rails, Java/.Net etc, I think i could do the development piece in rails much faster and have loads more fun doing it.<br />
</p>]]>
</content>
</entry>
<entry>
<title>&apos;Tis a great day</title>
<link rel="alternate" type="text/html" href="http://www.theguyzrock.co.uk/damian/archives/2005/11/tis_a_great_day.html" />
<modified>2005-11-16T14:45:57Z</modified>
<issued>2005-11-16T14:44:20Z</issued>
<id>tag:www.theguyzrock.co.uk,2005:/damian/2.581</id>
<created>2005-11-16T14:44:20Z</created>
<summary type="text/plain">Australia made the 2006 world cup and England lost to Pakistan in the cricket! Marvelous!...</summary>
<author>
<name>Damian</name>

<email>damian_lists@theguyzrock.co.uk</email>
</author>
<dc:subject>General</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theguyzrock.co.uk/damian/">
<![CDATA[<p>Australia made the 2006 world cup and England lost to Pakistan in the cricket! Marvelous!</p>]]>

</content>
</entry>
<entry>
<title>Infiniflow </title>
<link rel="alternate" type="text/html" href="http://www.theguyzrock.co.uk/damian/archives/2005/11/infiniflow.html" />
<modified>2005-11-16T10:06:40Z</modified>
<issued>2005-11-16T10:01:46Z</issued>
<id>tag:www.theguyzrock.co.uk,2005:/damian/2.580</id>
<created>2005-11-16T10:01:46Z</created>
<summary type="text/plain">Infiniflow by Paremus has finally been released. I have been wanting to get my hands on this product for about 9 months. What is it? It is supposedly a next generation grid solution, moving beyond the traditional compute farm approach....</summary>
<author>
<name>Damian</name>

<email>damian_lists@theguyzrock.co.uk</email>
</author>
<dc:subject>Java</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theguyzrock.co.uk/damian/">
<![CDATA[<p>Infiniflow by <a href="http://www.paremus.com">Paremus</a> has finally been released. I have been wanting to get my hands on this product for about 9 months. <br />
What is it? It is supposedly a next generation grid solution, moving beyond the traditional compute farm approach. It apparently has built in support for distributed workflows and dataflows and all in a Transactional environment. The underlying infrastructure is built on top of Jini, Blitz, Jxta etc.<br />
Going through the install process now, hopefully it will live up to expectations.</p>]]>

</content>
</entry>
<entry>
<title>TDD in the world of Grid Computing</title>
<link rel="alternate" type="text/html" href="http://www.theguyzrock.co.uk/damian/archives/2005/10/tdd_in_the_worl.html" />
<modified>2005-10-25T09:55:22Z</modified>
<issued>2005-10-25T09:54:30Z</issued>
<id>tag:www.theguyzrock.co.uk,2005:/damian/2.6</id>
<created>2005-10-25T09:54:30Z</created>
<summary type="text/plain">Well it has been about seven months since my last post! I never have been much good at keeping up appearances. A question i have been asked a lot over the past 9 months: How do you do TDD in...</summary>
<author>
<name>Damian</name>

<email>damian_lists@theguyzrock.co.uk</email>
</author>
<dc:subject>Java</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theguyzrock.co.uk/damian/">
<![CDATA[<p>Well it has been about seven months since my last post! I never have been much good at keeping up appearances.<br />
<p><br />
A question i have been asked a lot over the past 9 months: How do you do TDD in the world of Grid Computing<br />
</p></p>]]>
<![CDATA[<p>
The answer is simple: The same way you do it in the non Grid Computing world!
</p>
<p>
The way I do TDD is to push away external systems, libraries, components etc, by wrapping them with Interfaces. This gives me the abilitity to Test/Design the behaviour of an application without external dependencies having too much influence on the overall design.<br>
With Unit level tests I can then substitute the Interface to the external system (Grid in this case) with a Mock or Stub implementation. This provides a number of advantages:
<ul>
<li>I can run all of the unit tests without having to deploy/run a grid etc.
<li>The tests run very quickly, fail fast, as they do not depend on potentially slow external systems such as databases etc.
<li>Most of the code can run anywhere, it does not have to run on a Grid.
<li>...
</ul>
<p>
Of course this approach doesn't cover case where you really want to know that it works when everything is plumbed together. That is what Functional tests are for. 
</p>
<p>
Functional tests should test from top to bottom with real dependencies plumbed in. Further, they should run as a seperate stage in your build pipeline so they don't slow down the feedback loop. Slow feedback == frustrated developers == lower moral == short cuts == a mess!
</p>
<p>
So the moral of the story: TDD on a grid application is no different to TDD in any application. Fail fast and be happy!
</p>]]>
</content>
</entry>
<entry>
<title>Jini and JavaSpaces</title>
<link rel="alternate" type="text/html" href="http://www.theguyzrock.co.uk/damian/archives/2005/03/jini_and_javasp.html" />
<modified>2005-03-05T10:42:13Z</modified>
<issued>2005-03-05T10:44:55Z</issued>
<id>tag:www.theguyzrock.co.uk,2005:/damian/2.4</id>
<created>2005-03-05T10:44:55Z</created>
<summary type="text/plain">As mentioned in my previous post on Grid Computing, I have been looking at and using JavaSpaces; I have not had so much fun with a technology in quite some time. I am currently trying to work out why I...</summary>
<author>
<name>Damian</name>

<email>damian_lists@theguyzrock.co.uk</email>
</author>
<dc:subject>Java</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theguyzrock.co.uk/damian/">
<![CDATA[<p>As mentioned in my previous post on <a href="http://www.theguyzrock.co.uk/damian/archives/2005/02/my_current_day.html">Grid Computing</a>, I have been looking at and using JavaSpaces; I have not had so much fun with a technology in quite some time. I am currently trying to work out why I haven't used it sooner. ]]>
<![CDATA[<p>Part of the reason, I think, is that Jini as a technology seems to have never been taken seriously by anyone accept a few people at Sun and a handful of devotees. This may be partly due to the SCSL license, but is probably mostly due to the fact that is barely mentioned anywhere on the <a href="http://java.sun.com">Java</a> site. Seriously have a dig around and tell me where it is! Sure, if you do a search, you can find some references to whitepapers, but otherwise it is know where to be seen. Another reason, I guess, is that it can be a pain in the back side to get up and running for the first time, this is because Sun doesn’t package any easy start up scripts and documentation with it.
<p>Ok now that I have got that off my chest; why do I like Jini and in particular JavaSpaces? Because, at heart, I am a geek! Seriously now, Jini offers true network plug and play computing. It is built with the fact that networks and computers etc are unreliable. Networks, PCs, Services etc, can come and go, Jini caters for this, enabling you to build reliable and scalable Service Oriented Apps relatively easy. Throw JavaSpaces in to the mix and you get a nice simple way of de-coupling your Services.
<p>With these technologies I can build a simple compute grid quite easily. Basically, create a Worker that pulls Entries from a JavaSpace and calls an execute method, start up 1 or more JavaSpaces, start up <i>n</i> workers, my simple compute grid is now up and running. Ok there is a little bit more to it than that, but you get the idea.
<p>JavaSpaces is more than just an infrastructure for enabling Grid computing. It can be used for distributing data, de-coupling services or components (whatever you want to call them), or adding on-demand scalability to applications. I am sure there are plenty of other usages.
<p>So what I am trying to says is; If you haven't already had a play with JavaSpaces, go and download <a href="http://www.dancres.org/blitz/">Blitz</a>, install it, have a play, and you might find that you are pleasantly surprised.
<p>Last but not least; Sun - please please show some support for this technology!]]>
</content>
</entry>
<entry>
<title>Grid Computing</title>
<link rel="alternate" type="text/html" href="http://www.theguyzrock.co.uk/damian/archives/2005/02/my_current_day.html" />
<modified>2005-02-27T15:25:10Z</modified>
<issued>2005-02-27T15:16:50Z</issued>
<id>tag:www.theguyzrock.co.uk,2005:/damian/2.3</id>
<created>2005-02-27T15:16:50Z</created>
<summary type="text/plain">For the past couple of months I have been working in an Investment Bank helping them to evaluate and choose a Grid computing solution for some of their strategic applications. It has been quite an interesting couple of months, we...</summary>
<author>
<name>Damian</name>

<email>damian_lists@theguyzrock.co.uk</email>
</author>
<dc:subject>General</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theguyzrock.co.uk/damian/">
<![CDATA[<p>For the past couple of months I have been working in an Investment Bank helping them to evaluate and choose a Grid computing solution for some of their strategic applications. It has been quite an interesting couple of months, we have seen grid products of all shapes and sizes.
<p>
So, what is a Grid? That is an excellent question! Unfortunately there is no one size fits all definition for what a Grid is, it has a slightly  different meaning depending on who you talk to. In its most basic form, a Grid is just a batch scheduler with a bunch of compute resources. Not very exciting I know!]]>
<![CDATA[<h3>Types of Grids</h3>
<p>As the previous paragraph suggested there are a few different types of grids. Here i define those that I know about. Note some of these approaches may be used together.

<p><h4>CPU scavengers</h4>
<p>Most people are familiar with the <a href="http://setiathome.ssl.berkeley.edu/about_seti/about_seti_at_home_1.html">SETI@home</a> project, it works by stealing CPU cycles from Computers attached to the internet. Well it is not exactly stealing! You download and install a screensaver on your PC, which when activated, i.e., your PC is idle, will connect to a server and download some data to analyze. So whilst your computer is idle it will <i>steal</i> CPU cyles from it, but as soon as you de-avctivate the screen saver the analysis stops. This is a very specific example, but the same approach can be used in a more general form. For example: You install a very small "agent" program on corporate desktops, that, when the cpu is idle, connect to a scheduler and asks for some work to do. The work performed by the agent could potentially be any arbitraty program. Of course there are environmental specifics such as Operating Systems etc to take into consideration.

<p><h4>Batch Scheduling</h4>
<p>Quite a lot of the grid products in the market are little more than batch schedulers. This type of Grid usually consists of some central scheduling/management server and a bunch of agents on dedicated compute resources. The programs executed on the agents are typically any executable program.

<p>The batch scheduler grids I have looked at so far have a significant overhead associated with getting your work scheduled to run on the grid. This usually means that you need to have fairly long running tasks, and quite a few of them, before you actually see any benefit of using the grid. Of course this overhead leads to under utilization of the resources on the grid, which is a little alarming as most corporates want a grid to make better use of these resources. 

<p><h4>Service Oriented</h4>
<p>Ah yes, SOA had to pop up somewhere! This is the way the grid standards are heading. 

<p>Suprisingly, at least to me, most of the grid products I have come across do not consider this approach. I have come across 2 products that have some sort of Service model, one of them is quite good where as the other one, well, it is the other one!

<p>There still is some scheduling component as part of these grids, scheduling is core to any grid solution, but now you are invoking a method on a Java/.NET/C++ object instance rather than asking an executable to be run.Of course there are nice ways and not so nice ways to do this. To me the nice way means I can invoke arbitrary methods that take rich objects as parameters. The not so nice way means that everything has to be a string or byte array.

<p><h4>Data Grid</h4>
<p>You'll notice that I haven't mentioned data once until now, but surely data access/transfer will quickly become an issue on any grid. The most common way of getting data about on grids seems to be shuffling files about. Shuffling files may be fine for slow changing data, but what about per request/task data? Also, I know that I really don't want to have a file system that is being hit from potentially thousands of compute nodes; bottle neck anyone?

<p>One of the alternatives we have looked at is to turn the problem on its head and think about a grid from a data movement point of view. After all a scheduled task can really just be a few bits of data, i.e, invoke methodA on class B with paramaters c,d,e.. This lead us to look at JavaSpaces as an approach for building a Grid.

<p>JavaSpaces is so simple, yet so powerful. Four very basic methods, read, write, take, and notify. With these four methods and a simple Master/Worker pattern, you can build a very basic grid in a couple of hours. Guess what? Unsuprisingly, JavaSpaces is pretty darn good at moving data about. It enables you to schedule tasks as well as move data about all with the same API. The main problem we have had with JavaSpaces exists on the resource allocation and management/admin side. The products, both commercial and OSS, currently have management only at the Space Entry level, we need more than this for managing potentially 100s of thousands of running jobs/tasks.

<p><h3>My ideal grid</h3>
<p>To me a grid is a completely dynamic compute utility that runs in an heterogenous environment. Heterogenous in terms of Hardware, Operating System, and programming language. The grid should at least support a SOA approach, and if needed, for legacy reasons, batch scheduling. It should also be clever about how data gets into and out of the grid, sorry but shuffling files about just doesn't cut it, i want a transactional cache. There should not be a central scheduler/manager, but rather a set of dynamically allocated resources for this, i.e., the grid uses the grid to run itself. If there has to be a central scheduler, please let it have more than one back up and please don't tell me I need big iron to run it. 
<p>There is a bunch of other stuff I haven't even touched on, i.e.,  dynamic allocation and SLAs etc. Next time!

<p><h3>Summary</h3>
<p>Grids come in many different shapes and sizes, there is no one size fits all solution. In fact, most corporates probably want/need a mixture of the grid types mentioned above. Though i have been mostly underwhelmed by the products in the market place, this is nonetheless quite an interesting area to be working in.]]>
</content>
</entry>
<entry>
<title>4th time lucky</title>
<link rel="alternate" type="text/html" href="http://www.theguyzrock.co.uk/damian/archives/2005/02/4th_time_lucky_1.html" />
<modified>2005-02-26T18:56:37Z</modified>
<issued>2005-02-26T18:56:03Z</issued>
<id>tag:www.theguyzrock.co.uk,2005:/damian/2.2</id>
<created>2005-02-26T18:56:03Z</created>
<summary type="text/plain">Will it last for longer than a week? Doubt it!...</summary>
<author>
<name>Damian</name>

<email>damian_lists@theguyzrock.co.uk</email>
</author>
<dc:subject>General</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.theguyzrock.co.uk/damian/">
<![CDATA[<p>Will it last for longer than a week? Doubt it! </p>]]>

</content>
</entry>

</feed>