Today I stumbled across an interesting blog post from Nenshad Bardoliwalla. One of the key points he makes is…

Enterprise 2.0 tools can actually drive quantified business value by combining the unstructured and structured processes

…so rather than it being an either/or choice – rather unsurprisingly as in most things it’s “horses for courses” – which he observes is in contrast to the message some web 2.0 vendors are broadcasting.

Nenshad goes further and argues that existing core business processes (e.g. order management, accounting etc) will always require relatively structured business processes for the sake of efficiency and compliance – and using only unstructured Enterprise 2.0 technology-based processes would be too risky.

One of the images from his book Driven to perform articulates this really well using an example business process…

The Real Enterprise 2_0

 

The real Enterprise 2.0: A combination of structured and unstructured processes and technologies woven together to achieve desired business outcomes

It’s the best articulation I’ve seen of how these collaborative technologies fit into existing ‘traditional’ enterprise business processes. The boxes represent the existing business process steps, supported by various IT platforms, but the Enterprise 2.0 technologies fill the ‘white space’ in the existing process that would previously have been filled with either silence (i.e. no communication) or phone calls, coffee machine chats etc. These adhoc collaboration methods can still continue, but they can be enhanced by the Enterprise 2.0 capabilities such that the process executes better, quicker, across geographical boundaries etc.

ByronCookThe other night I attended the BCS Roger Needham lecture held at the Royal Society in London – this is an annual event that recognises outstanding research work in the IT world and provides a platform for the author to present. This year it was the turn of Dr Byron Cook from Microsoft Research, speaking on the subject of “Proving the programs eventually do something good”. Byron reminded me of a cross between Jarvis Cocker from Pulp and Smart421’s WebSphere practice manager, and there is a bit of the IT research pop star about him (if such a thing exists!).

My attendance was part of my strategy to follow Guy Kawasaki advice – “eat like a bird, poop like an elephant”, although I must admit that beforehand I was pretty sceptical of how useful I would find the event.

So I have to say straight off – the presentation was utterly, utterly fascinating. He was a great speaker – interesting, amusing, great anecdotes and just eccentric enough to be a convincing academic. To be honest, he is actually quite a practical academic – having produced real code solutions that solve real problems and are in use today. I found myself fished in and attracted to the idea of the purity of academic research – at least until he got started on the maths and the set theory :) . The basic message of the research papers he and his colleagues have worked on is that static analysis of code can prove that programs will eventually terminate (i.e. not hang), and that some other programs will hang under certain conditions, but that this cannot be proven for all programs. The nature of some programs means that it just cannot be proven either way. Ever. Turing worked that out years ago. But his vision is that it will be possible to increase the proportion of programs in the “we definitely know if we have a problem or not” category to a useful level, giving you a kind of automatable 100% test coverage for some programs.

So in the future, as well as just using the static code analysis tools like CheckStyle, lint, FxCop etc that we use today, we could also perform static analysis that will prove (I say again – for some programs) that they will not hang. Impressively he has already demonstrated this by finding some bugs in Windows device driver code (the size of which was up to 30k lines) which had previously gone undiscovered despite being in use in the field. Of course there are many barriers to this becoming mainstream – two of which were that it sounded like you needed pretty huge processing power (so could only be done overnight typically and maybe using a high degree of parallel computing capacity, although fortunately the algorithm does fit parallelism quite nicely) and also that the range of ‘checkable’ programs and data structures is currently quite limited, e.g. today we can handle linked lists but not tree structures.

But Byron gave me hope that static code analysis is not a ‘dead’ area and that advances are being made that can lead us to produce better software in the future. If you want to read more, have a look on the Microsoft research site.

Angela's winning photo!It’s been a full-on CTO day today, with a cloud computing partnership-related meeting this morning in London, then off to IBM’s Bedfont Lakes to meet Rashik Parmar, their European CTO, and now I’m waiting for the BCS Roger Needham lecture to start back in central London.

Rashik’s overview of IBM’s smarter planet initiative was fascinating – it was good to lift my head up from the day-to-day and consider some of the imminent and not-so imminent “mega-trends” in society and the IT world. Some of the key points that resonated with me were:

  • In the industries in which Smart421 work, there’s been a lot of focus over the last few years in tuning the business processes to squeeze out all the low hanging fruit optimisations – and whilst there is always further tuning that can be done even in relatively stable industry sectors, the law of diminishing returns applies. Not that I feel that BPM has entirely lived up to the hype – but that’s another story…anyway – moving forward, business are going to need to apply business process reinvention (a term I just made up!) to innovate their way to additional markets and revenues.
  • The transition to mobile devices to become the primary interaction mechanism of choice. Remember when it was said that iPhones were not a credible business tool? Didn’t take long for that view to be overturned did it…?
  • The usual generation Y/collaboration argument
  • An increase in instrumentation – measuring and monitoring things that we just didn’t or couldn’t before because the bandwidth, storage and compute capacity just wasn’t in place at the right price. As an aside, I worked out the annualised cost the other day of Amazon Web Service’s MySQL offering e.g. for their largest offering (basically a freakin’ beast…!), the “Quadruple Extra Large DB Instance” with a 64-bit platform, 68 GB of memory, 26 ECUs (8 virtual cores with 3.25 ECUs each – one ECU provides the equivalent CPU capacity of a 1.0-1.2 GHz 2007 Opteron or 2007 Xeon processor) – comes in at $3.10 per hour, which works out as $27,156 p.a., so maybe £20k p.a. or so. Seems like a steal to me. And they do all the DBA backup/patching admin for you/at your web service call request. As my colleagues have pointed out, there’s pros and cons of course and it’s not quite this simple so it’s not necessarily low risk enough for wide enterprise adoption yet.
  • Things are moving so fast that it’s very hard to predict how things will develop – and so the best strategy for businesses is to back a number of innovation horses and accept that some will fall at fences along the way.

All these trends will drive a huge desire for more – more bandwidth, more compute power, more storage. And whilst there have been some very public hiccups along the way and there will be more, it’s an unstoppable train. Obviously vendors such as IBM are positioning themselves to be the providers of the infrastructure that provide the “more”. The only thing I can see that might slow down that train is climate change, and even then it is debatable.

In part 1 I set out my requirements for evaluating and choosing an open source ESB, and promptly fall down a rabbit hole of OSGI and Maven when I get to see how much more there is to them than I was previously aware.

From time to time we get requests on how to get started with middle-ware technology on the cheap. Here the emphasis is just about connecting service providers and consumers up, without getting into anything fancy like orchestration or service repositories. Of course, in an ideal world the solution should not rule the latter out.
So here are the requirements I can filter out of a few of these conversations.

  • Open source for low cost and wider options when upgrades appear – i.e. not always forced onto the latest version.
  • Must handle WS-Security, WS-Addressing
  • Freedom for choosing java-XML binding framework
  • Supports contract-first services design (as opposed to generating the service artefacts (WSDLs, schemata) from java classes.
  • Run-time is ‘light’: i.e. when service-enabling components are deployed on the same machine as an application which will be service enabled, these service-enabling components do not gobble up all of the resources.

Contract first development is very important in a heterogenous environment. See arguments on the object – XML impedance mismatch here. Another way of putting it is: if you are going to stick with just one language (e.g. java) then why bother with XML in the first place – just go with some RMI technology, RMI-IIOP. If we are using Web-services, then interoperability is a big consideration, and for that we have to think contract-first.
One of the reasons for separating out the java-XML binding from the web-service end-point binding code is that it is great to use the same pojo to describe an entity, whether it is serialised to XML or persisted to a database or just as a value object.
On the one hand it is good practice to work with web-services in a contract-first style, and on the other hand: if you use the code (specifically the domain objects to which the XML is bound) throughout your application then you can introduce a dependancy on the XML marshalling generated classes, which is not great either. In an automated build environment, it means building your gen-src directory from schema before you can write any src code which uses it.
In the past I have got around this by specifically generating class libraries of domain objects, using jaxb, and then importing the resulting jar into any code (both client and server side) which manipulated these objects. The compromise at the time was that I ended up writing my own endpoints (servlets) to expose web-services – which is OK when there is not much WS-*, (e.g. Addressing, Security) going on.

I wanted to see if the latest incarnation of the open source frameworks would enable contract first, generation of domain objects first (such that they could also be used in persistence layers and as value objects) and relatively easy handling of WS-Security and WS-Addressing.
The new kids on the block for me are ServiceMix (a.k.a. Fuse), apache cxf, spring-ws, and the sun JAX-WS.

The previous time, the players had been Apache Axis, WSIF, and JAX-RPC. Oh I almost forgot Castor. Every one of these had had their own java-XML binding code and none of the produced beans were interoperable between frameworks. Stand-alone java-XML binding frameworks like JAXB (1.x) were not interoperable with the web services binding (e.g. JAX-RPC) generated objects.

Anyway: enough of the background… The first two I wanted to look at were both FUSE and Spring-WS, as they both allow contract first (Spring-WS will not allow anything else) and they both support Spring and its IoC (another Good Thing, but that’s a different discussion).

I had only got around to looking at FUSE when I fell down the first rabbit-hole: OSGI and Maven. I have had a look at the excellent video tutorials by Adrian Trenaman of progress (formerly Iona) software, (see the demo videos tab at the bottom of this page.
I had been aware of Maven for a while as a ’slightly better Ant’, but the demo and a bit more digging around reveals there are two big extra features in Maven which move the game on a whole lot more:
Firstly there is the project template feature. This is the feature whereby you can create a java project using a Maven build file with a command-line argument. The command builds the appropriate directory structure and even the correct POM.xml (Maven equivalent of an Ant build.xml file). Although I had been demo’d this before, it has only really sunk in this time what a big deal this is.

We have in the past put a lot of energy into our automated build system, based around Ant. For it to work well, there is a mandated project directory structure, and set of files and libraries have to be in the right places relative to each other. There’s a bit of a learning curve on top of Ant to understand what is going on. The template projects from Maven give you all that in one go. That becomes especially evident when you try a new project: for example an OSGI plug in project. You just run Maven with the proper archetype and bingo…

Secondly there is the repository system. You can configure a set of remote repositories, and just by specifying a library in your project file (.POM file) the maven build will try to fetch the library – of the version you specify too to your local machine, in a local repository – which is then shared amongst all of your projects. Again you notice how powerful this is when you download a maven-enabled project, and on the first build it goes and fetches all of its libraries which it depends on – unless you already have them locally. A large number of common shared libraries (e.g. most of the well-know apache projects) are available in the default repositories. It is possible to configure which external repositories are trusted and should be used.

The repository system has become effectively just another resource, to the extent that to install an OSGI bundle from the OSGI console (more on this next time) ‘mvn:’ is named as the protocol type for a given resource. The resource is then seamlessly retrieved; either from local storage, or from one of the configured remote repositories.

All clever stuff.

So from starting to look at Open Source middle-ware, I have fallen down a couple of rabbit holes. The maven excursion is definitely going to make me sit up and give that a much closer look (talk about late adopter!). The second rabbit hole for me was OSGI. more on that next time. Then it will be back on track for the open source middle-ware.


I’ve been hearing more about web traffic management products recently, and they’ve been of increasing interest to me as they seem to fit nicely with a cloud deployment model – e.g. if you’ve got your SaaS app deployed to your favourite cloud provider so that you can scale out quickly without large upfront capital costs, then you are probably going to need something infront of that deployment architecture to manage the incoming traffic. Hopefully (and this will become more common) your cloud deployment might auto-scale to increase its own capacity on demand, and so your environment will always be able to cope with demand, so you don’t need to manage the incoming traffic – right? Well, I’m not so sure – I can see some barriers to this:

  1. Cloud auto-scaling implies unpredictable costs, and whilst maybe extra traffic = extra cost = extra revenue to offset it, I’d expect most SaaS providers would want to set a cap on costs and so any traffic exceeding that ‘cap’ still needs to be managed gracefully.
  2. Traffic management allows finer grained control over where you deploy your valuable £/$, e.g. favouring response times for customers on the ‘buy’ pages of your app over those looking at ‘about you’. So in times of high traffic you don’t just keeping throwing virtual servers (and therefore cash) at the problem – you get more selective instead.
  3. Finally, web traffic management products give some comfort as a ‘last resort’ in case auto-scaling etc goes wrong or is incorrectly set up etc – or your cloud vendor doesn’t meet their SLA :)

We’ve come across the following products in this space:

  • Zeus ZXTM software appliance – I intend to delve into Zeus ZXTM in a little more detail in another blog post at some point…as it is a software appliance (as opposed to the next two products) it fits a public cloud model better.
  • Big IP F5
  • IBM WebSphere DataPower – this is not in exactly the same market as the other two products, but is capable of fulfilling this role (plus other things) and we have worked with customers to deploy it for this kind of ‘use case’

Maybe one day auto-scaling will be mainstream enough and incremental costs will be low enough that traffic management won’t be required – but we’re not there yet I suspect.

JohnZachmanPresentationOct09 3

As advertised in my notes from the last BCS EA specialist group event, myself and my Smart421 colleague (David Taylor, head of our internal WebSphere practice) attended this evening’s John Zachman presentation at Sun’s offices in London. I felt it was too good a chance to miss as I’ve not seen John present before – regardless of whether you agree with him or not, every self-respecting EA needs to have seen him at least once I think, and usually you have to shell out some hard-won training/conference budget to do so. I must admit I was expecting quite a hard sales pitch from him, having seen collateral for all the Zachman Framework materials and courses etc, and because he’s American :o …but this was not the case, and so I humbly apologise for my stereotypical assumptions.

He is a bit of a handful though – Mike Buck did his best to ‘manage’ John at the end – whilst the sandwiches outside started to curl up at the edges. As I expected he is a very engaging speaker, with some great anecdotes from his career and he spoke passionately about enterprise architecture. He kept speaking at a quite frightening rate and intensity for about 100 minutes, going 100mph and hammering home his messages using those good old speaking techniques of repetition, comedy and metaphor. I was glad I wasn’t at the front of the audience as I suspect that was a bit full-on – it’s a bit like when you go an see a stand-up comic – always best to sit a few rows back…

So what about the content? Well, he basically covered the need to enterprise architecture as a discipline and then spent the majority of the time explaining the Zachman Framework and the justification for it. So for most people in the room, I suspect they didn’t really hear anything new. It was really quite odd to hear him refer to that thing that we’ve all grown up with, the Zachman Framework, as “my framework”. There was no content about how to execute an enterprise architecture process and his viewpoint seems quite academic in nature. In his motivating way, for a moment you are led to feel that you could “model the world” – until your real world experiences kick in and you realise that this is nonsense in almost all current business environments. I must admit I feel bad criticising John Zachman in any way – it feels like complaining about your (very sharp, clever, transatlantic) grandad. To be fair to him, he didn’t try and cover the ‘delivery’ topic at all and could not of done so in the time he had. He’d be a great guy to wheel out in front of your CEO to ’sell’ the idea of enterprise architecture to them, but you also get the impression that you don’t want to be the guy following up on the expectations he might have created. He neatly side-stepped a few audience questions, but you got the impression he had the answers if not the time to give them, e.g. the classic cross-cutting concerns challenge such as ‘how is security architecture represented in the framework?’. I was quite impressed that he openly volunteered that the framework was an ontology but not a method – whilst this is obvious, I thought he might spin this towards a method of his choosing but he didn’t try that at all.

In some ways the asides, anecdotes and little historical lessons were the most riveting part of the presentation – he talked about the process by which he originally “discovered” the framework, the reasons he changed some things in version 2 of it such as renaming some of the terms to make them more business-relevant and less IT-centric, and the history of System R, DB2, IMS, business process modelling and so on. Overall I am very glad I went…I’m richer for the experience although my ears do feel like they’ve been assaulted. Another excellent and very well attended BCS EA SG event – well done committee.

I had a demo of Lombardi’s business process management (BPM) tooling the other day – Lombardi TeamWorks.

The first thing to note is that the tooling is Eclipse based and uses BPMN notation – in fact at first glance I thought it was IBM WebSphere Business Modeller as I’m more familiar with this! It looks very similar, and all the concepts are equivalent. I guess BPM is BPM and so the “problem space” is what it is and so they will all tend to look the same. The difference is down to the quality of the implementation between vendors. It certainly looked easier to use than WebSphere Integration Developer (WID) – the Java code was all hidden from the designer until you get to wanting to put custom controls in JSPs or invoke external services. Debugging a process flow fired up quickly, no booting up a test instance of WAS required etc. Also, there is no real mention of BPEL, unlike in WPS (WebSphere Process Server).

There is also a SaaS modelling environment for business users called Lombardi BluePrint – this uses a simpler subset of BPMN, and so is essentially a clever online Visio-style tool. You can can pull models from BluePrint into the Eclipse dev tool and flesh out the process with more technical/implementation detail, as you might using WID for Modeller models.

There’s a business portal web app for business users to launch business processes, see what’s “in their inbox” etc – very similar to the ‘Business Space’ portal that WPS v6.2 now has, so I think IBM have caught up a bit here as the ‘human task management’ part of WPS has up until now been a weak area.

Inbuilt rules engine support is weak apparently (like in WPS IMHO, hence IBM bought iLog and got JRules, amongst other things), so you’d need to integrate with external “decision services” if a strong capability was needed.

The other vendor in this space that keeps coming up in our customer engagements is Peg a (strong in the business rules area), and in general my view is that are all pretty much capable of doing the job. One word of caution is that I’d have thought that as an almost “single product” vendor, Lombardi must be at risk of being acquired at some point, which could lead to consolidation into the acquirer’s existing product lines etc.

Robin Meehan just pointed me to an article in Information Week describing Doyenz Shadowcloud, an interesting product cloud-based disaster recovery solution.

Basically, the product allows SMEs to wire up the servers in their data centre so that they are incrementally backed up to the Doyenz cloud. When disaster strikes and your basement floods after a storm, you can restart your servers in the Doyenz cloud, getting back up and running as quickly as possible.

It’s an interesting proposition, particularly for tech savvy but lean SMEs out there who are maybe still relying on tape backups and insurance policies for their DR plans. How well it works, and how big this market is remains to be seen…

BCS SouthamptonStClockAs threatened, I attended the BCS Enterprise Architecture specialist group meeting in London near Covent Garden yesterday. There were two interesting presentations regarding EA case studies, both of which caused lots of debate and questions from the gathered audience.

Amit Apte from SITA presented an anonymised case study from the airline industry. As is always a good idea, he started off with a provocation – that “enterprise architecture is boring” – and I think he was a little disappointed with the lack of reaction he got to that statement. I tend to agree to the extent that if it’s all done well, then it should be largely mechanical in nature and so rather dull. However in general this is not the case – in fact it is far too exciting! But the key thing that attracts me to EA is the ability to influence with a more significant level of impact, e.g. stopping the wrong change projects and starting the right ones, rather than operating at a solution architecture level and only influencing with a smaller scope. Maybe it’s a power thing, anyway…

He got a fair amount of stick from the audience about whether this was really an overview of an EA initiative or a one-off enterprise-wide solution architecture that had used a modified version of TOGAF v8 as a method, and the discussion centred around whether a sustainable EA function had been created or not.

Andrew Jolly from Deloitte presented an anonymised case study from the TMT (technology, media, and telecom) sector – concerning the creation of an EA governance capability in an organisation of circa 29k staff/partner staff. Some interesting things came out…

  • Both presentations mentioned something like “the business don’t need to know about EA”, i.e. a rather depressing but not unusual admission that selling the concept of EA to the business community is in the too hard pile. Andrew added to this with the sage comment that brand awareness for your EA initiative with the wider stakeholder community is key though, even if it is a meaningful acronym. Call it A.A.R.D.V.A.R.K. (I’ll leave that as an exercise for the reader to come up with) or whatever, but call it something so they can hang a label on what you are doing for them.
  • The usual general advice applied – start small to demonstrate value, winning over hearts and minds by demonstration of real value rather than selling potential future value. The good old “virtuous circle” that Smart421 (and especially Richard Latham) have been banging the drum about. I was going to ask about metrics etc but someone else got in before me – and got the answer I expected which was they set up some KPIs at the start, but eventually the qualitative measures took over, i.e. did the projects the EA function had cherry-picked to engage with ‘feel’ that they were adding sufficient value.
  • One of your selection criteria for where to start is on a project where you have influence (probably by chance, e.g. you know the project manager personally etc).
  • As a mechanism of starting to embed the idea of architects contributing to projects/programmes, Andrew’s suggestion was that you could provide a ‘free’ architect as projects will never turn away free resource. You need to ensure they are a good resource and then some benefit will naturally emerge and the project will see it, and so be more likely to ask for (and then pay for) architecture input next time round. Obviously this requires some seed funding which is non-trivial to find.
  • Even in what may appear to be an organisation that appears architecturally doomed initially, there are generally people inside the organisation who are performing a psuedo-architecture role some of their time even if they haven’t got the title and wondrous benefits package that goes with it. Otherwise how has the enterprise made it this far? Get these guys involved in some kind of virtual team as they hold the keys to your initial EA artefacts.
  • Publish EA materials early – don’t wait for perfection as you’ll never get there. Even if they’re wrong an early viewing so that they get ripped to bits (hopefully not too badly) and then improved is a good thing. Obviously they’ve got to be of a certain quality though. This point really reminded me of the practice recommended I read in a book from Guy Kawasaki about releasing new products to market early, which is completely common practice in the software industry. His quote – “Revolutionary products don’t fail because they are shipped too early; they fail because they are not revised fast enough”. Hence never buy a vs.0…
  • What was the biggest risk to the EA function that had now been established? Andrew’s view was that it was “taking our eye off the ball” and losing sight of the fact that the roadmap for the EA function itself must be maintained and pursued – just like the other roadmaps that the EA function might generate for business architecture etc.

Andrew’s parting message was an interesting one – that putting in place an EA capability is a business change project in itself and so should be treated as such, i.e. get the organisation’s “change” people involved to execute the business change.

It was good to put some faces to the names of some more of the the movers and shakers in the UK EA world – I can now point Amit, Andrew, Tom Graves and Sally Bean out of a line-up if required…

Specialist group chairman Mike Buck mentioned that the next event is a presentation by the grand-daddy of EA, a certain Mr John Zachman on October the 6th, so I expect that event to be very well attended…

I’ve been at the IBM WebSphere User Group meeting in Edinburgh today, and attended a couple of sessions about IBM’s shiny new WebSphere CloudBurst Appliance.

For the un-initiated, the CloudBurst appliance is a hardware appliance which provides an easy means to deploy WebSphere products to virtualised infrastructure. We’ve written about this a couple of times before (first on 6th and again on 17th of July), so I won’t repeat it all over again.

Firstly, a bit of an update on one particular area which was confusing us here at Smart421 Towers. IBM WebSphere Application Server Hypervisor Edition is a version of WAS which is tuned for virtualised environments and pre-packaged into a VM image. Each image is 20 GB. Each of these images is encrypted and stored on the Cloudburst’s built in hard drive. These images can’t be stored on a LAN or SAN, so the maximum number of images you can store is limited by the size of the hard drive. So, let’s assume this thing has a hard drive that’s 500GB; that means the maximum number of images is 500/20=25 images, right? Wrong.

CloudBurst takes every image it owns, and cuts it into little pieces (I’m not sure on the official terminology, but I’ll call them shards), and then builds a manifest that describes how to put them back together again to make the image. When you create a new image (usually based on an existing one), the appliance analyses this image to work out what’s different between this image and the one it was based on. It then only needs to store the differences between this image and its parent. This way, the cloudburst can store a load more images than you’d otherwise expect. Almost certainly hundreds, I would suggest.

Talking about the appliance got me thinking. What are the use cases for this beast? It’s a serious piece of kit, and it has a significant cost; certainly enough that it needs justification.

The most likely short term use for it seems to be self-service access for creating new WebSphere development and test environments. The machine cannot yet be clustered (although I understand that’s coming in a future firmware release), nor can it create elastic environments that scale up and down on request, which makes it unlikely to be attractive for managing production environments right now. Delete production environment, create larger production environment doesn’t feel like a viable workaround to me.

Whether this business case makes sense will depend on the size of your organisation and how many WAS environments you create/destroy. Many organisations don’t do this that often, but that’s often for all the wrong reasons: It’s hard to create a new environment, so we piggy back on an existing one. Even so, environment build can be a major stumbling block, and if you don’t create a fresh environment for the project, you’re putting yourself at the mercy of the last bunch of cowboys who used it (unless, of course, that was you).

To help navigate this minefield, IBM have developed an ROI model for CloudBurst which can help you work out how much benefit you’re likely to get. Ultimately though, the proof of this particular pudding will be in the eating – if the business case stacks up, then fairly soon we’ll see adoption rise significantly, particularly among the large blue chip companies that make up Smart421’s customer base. When this happens, we’ll be there to help.

There are currently only two CloudBursts in the UK. We get to get our corporate grubby hands on one for the first time sometime in early November, and you can too. Drop us a line and we’ll put you in touch with the right people in IBM.

P.S. If you’d like to see a CloudBurst in action, check out the YouTube video.

Next Page »