Monday, March 31, 2008

Suggestion: DSL for Service Composition

There is a lot of noise right now around DSLs (Domain Specific Languages) and the notion that people can easily build new languages that are centered around a specific vocabulary that makes sense for the problem domain. While I think we’ll probably be in DSL hell in about 2 years where there thousands of new languages for doing everything and nothing, there is one DSL I would like to propose for Service Composition.

On the Mule project we need a DSL to make Java-based configuration more usable and intuitive. We are about to embark on this part of the project, but it seems to me that we need to stop and think about the bigger picture.
The notion of “service”, “component”, ‘’interface“, “endpoint”, “router”, “filter”, “policy”, etc are common concepts that appear in different flavours in all products targeted for the SOA space. It would seem logical to define a common DSL for constructing services. Using these concepts.

I see two possible ways of defining this DSL –

  1. Define a set of Java APIs for building services. This would consist of a set of Interfaces, some helper builders, and well-defined extension guidelines. The problem with this is that it is Java-specific; we really want to write services in other languages such as C# and Ruby.

  2. Define the DSL in pseudo code with clear guidelines of how to implement the DSL interface in any language. The actual DSL interface would still need to be implemented for a specific technology, but no matter what technology or platform I am using the DSL is familiar to me.

My preference would be for #2 as it would be platform agnostic and have a much better chance for adoption but it also has the added benefit that it would create an universally accepted glossary of concepts for constructing SOA. I should point out that SCA has a similar goal but is Xml-centric. SCA seems to a step in the right direction but we’re not seeing the mass-adoption yet to make SCA stick. I really think there is room for a DSL here.

I would really like to flesh out this idea since we at Mule could really use it and I think it would benefit the wider community.

Sunday, March 30, 2008

Integration: SOA's Dirty Little Secret - Session available

For those who missed our talk on Integration and SOA last week, the recorded session is now available here.

TSSJS Roundup

I didn’t get to see any sessions on day two of TSSJS partly because I gave two sessions myself and I was catching up with a bunch of people.

First I gave my Building an ESB talk again since it seemed to be popular. I also made a realization that may be perfectly obvious to most people. When developers talk about their projects or areas of interest they almost always talk about what you can do with technology X. Very rarely d they talk about how the technology should be used and how it applies to the real world. There was nothing new in my presentation but it was the first time I talked about how to approach the planning an implementation of an ESB/SOA solution and it seemed to be well received.

The next talk I would like to do is to build on this presentation and demonstrate how users can leverage Mule Galaxy to take a more structured approach to building SOA solutions with all the governance, lifecycle and artifact management that Galaxy offers.

The other session was a Fireside Chat (without the fire) about OSGi with Myself, Rod Johnson and Eugene Ciurana. I think the session was well received but I doubt we managed to dispel all of the confusion in the room about what OSGi is and how/why people should be using. The fact is I think most people shouldn’t care, but I’ll blog about this another time.

Overall, the TSSJS conference was a success and I’m pretty sure most attendees walked away happy and enlightened. However, TSS has changed over the years and I felt it was much less about innovation and more about technology applicability. The conference seems to have matured and now appeals to a different audience. Or maybe it the “Server-Side” space that is maturing.

Wednesday, March 26, 2008

TSSJS: Building an ESB Solution

My talk about Building an ESB Solution using Mule seemed to go down really well. I had a packed room and the TSS folks have asked me to do the talk again tomorrow at 11:45, come along if you missed it.

I promised today's listeners that I'd post the code and slides here, but since I'm making some changes to the presentation before tomorrow I figured I'd post everything afterwards.

Also, I've been roped into doing an OSGi Fireside session tomorrow at 16:00 with Eugene.

TSSJS: Boldly go where the Java language has not gone before

Geert Bevin provided a fast-paced introduction to some of the cool concepts in Terracotta, Rife continuations, GWT and Android.

Terracotta provides a nice way of overlaying state distribution to your Java classes using bytecode manipulation. I can see this working really well for smaller app but becoming pretty complex for larger applications.

The section on Rife continuations was interesting but I didn’t fully get how it worked. Maybe because I don’t build web apps. It seemed to allow halting and continuing the interaction flow of web applications and picking up state and context between requests. Very simple and pretty cool if you are a web app guy.

Unfortunately, I had to jump on a call and missed Android and GWT.

TSSJS: SOA without the bus

As you can guess this talk kicks off with the benefits of WS and REST. Early on Brian Sletten states that an ESB (or rather Message bus) should not be used before your architecture is ready for it. I couldn’t agree more.

He then goes on to discuss other approaches. First is a “Pipe and Filters” approach to integration. I do see this style of topology being used with many Mule users.

Second, he talks about the “netpbm” way of integration. I have no idea what this is and preceded to muse over funny Simpson’s episodes. I may have laughed out loud, I can’t be sure. Clown Collage is a truly great episode. Mental note: lookup netpbm.

Next up is the Web and Resource Oriented Architecture (ROA). Rightly so, there is no ESB behind the web, but the web lacks many of the requirements of an ESB such as transactionality, routing (beyond simple forwarding), transformation and centralized management. I am a fan of ROA and REST and view these concepts as more great tools for the Architects toolbox.

The overall message of this presentation was

“hey, don’t forget if you are doing SOA you don’t always need an ESB.”

I do agree with this with the caveat that while you may not use the ESB topology (really, ESB is a deployment topology), but you still need the SOA platform that gives you a way to manage services, and a common set a functions for routing, transformation, management, security, scalability, concurrency, connectivity, etc. These are functions that are always required for any SOA.

TSSJS: Event Processing In Java

I’ve always thought that Esper is a great project, and being in the SOA/ESB space Esper has a lot of applicability for the systems our company works on. Thomas did his best to describe what you can do with Esper, but it’s pretty tricky to describe useful Esper queries effectively in PowerPoint slide. The kind of stuff you can do with Esper is awesome and Thomas Bernhardt has done a great job on this project.
I think the sentence that summed up what it’s like working with Esper was -
“it’s like performing time-aware SQL queries.”
Basically, you can define section criteria (query) on multiple event streams (tables) within time “windows” and perform joins to create associations between event streams.

Pre-TSSJS nightmare

I intend to blog about the session I sit in on at TSS, but I had such a nightmare getting to Vegas that I think its worthy of a mention.
It was one of those days when everything went wrong. First I got our flight time wrong and an hour before the flight was to leave my wife and I were still packing. I called the airline who told me that I was in luck because my flight was canceled! - I liked the spin they put on this news. I inquired as to what my new flight time was. They had scheduled it for 8 hours later, which meant if I was on time I would have been stuck at the airport. Also, I had tickets for Zumanity, and my new flight time collided with this. After some discussion we managed to get on a SouthWest flight (they use Mule ☺). Now we only had 40 mins to get to the airport, so we were in a mad rush.

On the way to the airport, our cab driver asked to borrow my phone. When I handed it over I noticed some horrific skin disease on his hand and almost told him to keep the phone so I didn’t have to touch it again. While he was fumbling with my phone he missed our freeway exit and delayed us further.
Once at the airport I decided to upgrade to Business Class and was surprised and the nominal charge of $15. However, it turned out I just paid to jump the queue since SW flights are free seating!

We got to the Venetian without a hitch and the room is nice. In the evening we went to see Zumanity, one of the Circ du Soleil shows. This was nothing like I expected and felt a bit cheated since it was more like slapstick meets cabaret meets the carnies. I paid a high price tag for an uninspiring circus show without the lions, clowns or cannonball man, just the freaks.

If you do find yourself in Las Vegas and have an evening to spare make sure you see Le Reve, its awesome.

Tuesday, March 25, 2008

TSSJS, Las Vegas

I have just arrived in Las Vegas for TSSJS. I think you either love or hate this place, and I'm definitely in the love camp. Its just so over the top, bizarre and tacky that you just have to enjoy it for the experience. Plus I don't mind a game of Craps every once in a while.

I am giving a talk tomorrow on called Building an ESB using Mule. This is very different structure to my previous talks, I spend the whole session talking about how to implement a real-world-ish use-case in Mule from the planning to design to implementation.

Anyway, back to the Craps table, give me a shout if you are around.

Monday, March 17, 2008

Integration: SOA's Dirty Little Secret

I'm giving an online Webinar about SOA and Integration on Tuesday, March 18 (tomorrow), at 9 AM Pacific Time (17:00 GMT), I will be hosting a session entitled “Integration: SOA’s Dirty Little Secret.” During this hour-long talk, I’ll discuss the reality of integration in any SOA initiative, including integration planning and implementation checklists, some best practices around Web Services, some common integration patterns and testing using Mule. There will also be time for live Q/A.

You can register for this free webinar here.
I hope to see you there!

Wednesday, March 12, 2008

Taking the Fun out of Fireworks

I was finally settling down to prepare my slides for my upcoming integration webinar when BOOM! Our whole apartment block shook violently. It felt like an earth quake. I heard some nearby cries outside our door and thought there must have been an explosion in the building. Then I caught a glimpse of a bellowing mushroom cloud out of our window. It was a huge blast and seemed to be close to our town centre.
I decided to go and investigate further. Walking up the road I started to pick up a strong scent of burning fireworks. Malta takes great pride in their Festa firework displays and every year there is usually an explosion reported at a remote, makeshift factory - always with fatalities - and this seemed like a similar situation. Except that the explosion happened in populated area. As I got closer a bystander confirmed that a car full of fireworks had ignited in a garage. The car parked in a confined space behaved like a bomb and destroyed 3 residence buildings and the cars parked outside. I got this picture with my iPhone -

Needless to say there are already fatalities reported with the possibility of more to come as rescue workers sift through the debris. I feel bad for the people involved, this one was a little too close to comfort. Just earlier today I had been only seconds away from the blast site with my wife at one of the local shops.

This comes from the Times of Malta report -

Given the number of incidents and deaths around the manufacturing and transporting fireworks in Malta I think it's high time for the re-elected government to start putting some formal procedures in place to monitor this activity. I'm surprised this isn't already governed by EU regulations.

Mule and JCR content repositories

David Dossot as been a long time community member and a great supporter of Mule. When we launched MuleForge back in September, he was one of the first to start a project - the JCR Connector for Mule.

In a nutshell, it allows you to configure endpoints in Mule for listening for new content written to a repository, writing content to a repository and running queries on a repository. David has also written up some examples you get you started.

This project has already received quite a bit of attention with the TheServerSide and there is an interview with David on Day Software. Nice job David!

Election Fever

With all the commotion around the US Presidential elections this year, some of you may have missed that Malta were having their General elections. Shame on you if you missed it. What I didn't realise is that Malta turns in to crazy-ville around this time. In fact the day after the official announcement (Nationalists remain in power) the whole island shuts down and parties. Apparently it was madness on the streets with people setting up impromptu roadside bars, letting off fireworks and sounding horns. I missed all of it being laid up in bed, but I could hear the music thumping till the wee hours of the morning. A friend posted some interesting pictures on facebook -

This is some sort of firework and the white car drives off unscathed, apparently.

Erm... not exactly the Rio carnival.

Sunday, March 9, 2008

Two wipe outs in one week!

I've been out snowboarding for just under a week at Madonna di Campiglio, Italy. It was a really good to be up in the mountains for a few days.
It was an all-out boys trip with 10 guys from Malta, Poland, US and me holding the the British flag. We got off to a bad start when our plane got diverted (RyanAir) to an airport further out of our way. Thankfully, we found some crazy Italian taxi drivers (is there any other kind?) to get us to where we needed to be, complete with in-car dvd entertainment no less. The rest of the trip was an absolute beer fueled blast. Unfortunately, We didn't get powder till the last day and we were already on the bus to the airport. Bogus.
My first wipe out was caught on camera, then I got a cold the day after I got back to Malta and have been totally wiped out since. So if you have sent me an email recently, I am getting to it, just a little slowly.