Virtual Surreality

It's too real to be true

Browsing Posts in Architecture

CodeMash

2 comments

I’ve been given the privilege of speaking at CodeMash 2009 in Sandusky, Ohio this coming January.

The presentation and discussion will cover the learning from implementations of Guerilla SOA and will include code and demonstration based on the WCF. It may change some minds about the default approach to the WCF programming model and open some eyes on how to build a truly message-oriented service oriented ecosystem.

Looking forward to a conference that comes highly recommended.

The submitted abstract

Title: Guerilla SOA for WCF
Track: Arch & Design
Level: Intermediate

Description:
This talk goes over the fundamentals of Guerilla SOA (a concept conceived in ThoughtWorks and championed by Dr Jim Webber) and how they are applied to WCF in both a SOAP and REST context.

Using principles from agile software development into an emergent architecture, particularly for services, the talk looks at an alternative approach to the usual usage of the WCF programming model which provides a true message-oriented approach (rather than the RPC hole almost every WS-* stack drives us into).

Drawing on real large-scale projects, we’ll touch on consumer-driven contracts, sensible XSD, alternate validation techniques, LINQ to XML, XPath, and a convention-based and MVC approach to web service implementation.

If you want to develop Ruby applications that use the services in the Microsoft® .NET Services cloud, then this SDK is for you:

http://www.dotnetservicesruby.com/

OK so I’ve been moving from Sydney to Chicago with lots of time at a client in Calgary. No posts, but some coming.

In the meantime, based on a note from my colleague Ian Cartwright on an article about Microsoft embracing AMQP, I wrote a little poem, for I am in a very poetic mood at present. I’ll tell you why next week!

There is a message queue open standard /
almost all implementations are free /
it’s the killer app of the internet /
and what’s its name? Lo! It’s SMTP!

:-)

My CTO, Rebecca Parsons, announced the publication of the ThoughtWorks Anthology a few days ago:

I am thrilled to announce that the ThoughtWorks Anthology is now ON SALE!

http://www.pragprog.com/titles/twa

There are essays by Roy and Michael Robinson, Martin, Neal Ford, Tiffany Lentz, Stelios Pantazopoulos, Ian Robinson, Erik Doernenburg, Kristan Vingrys and James Bull, as well as ex-TWers Dave Farley, Jeff Bay and Julian Simpson. (And of course your’s truly made her own contribution). Mike Aguilar wrote the introduction.

Some comments that appear in the book:

Jim Fischer writes, “The anthology provides a peek into the diversity of views and perspectives held by a company that dares to take on the long-accepted tenet of the IT industry that custom software is too hard and too costly.”

Big Dave Thomas writes, “Software is in many ways a team sport, and the leaders shape the software culture. Often successful organizations don’t take the time to document them, and hence others don’t benefit from them. This interesting collection of personal essays gives a glimpse into the culture of ThoughtWorks through some of its leaders.”

I’m really excited that this project has come to fruition and I hope you all enjoy what you see.

Rebecca

I was lucky enough to review the content earlier this year. It’s a keeper.

UPDATE: Some press… http://www.sys-con.com/read/541124.htm

After a meeting of the office of the CTO, most of us stayed around in our San Francisco office for a few days to do some podcasts and to participate in a Code Jam for Inveneo, a not-for-profit who provide computers and connectivity to developing countries (especially their schools, hospitals, and poorer villages).

They install a server in, say, a hospital with a few lower-powered, custom desktops (almost iMac in configuration). These, as well as the servers, can run off solar panels for power.

We were presented with a worthwhile problem with a number of interesting constraints:

  • Low-power server running Ubuntu, with two small SATA hard disks in a Linux software RAID-1 array
  • VMWare images of the servers for testing
  • Python, bash, mdadm, and beep as our “programming languages”

When a RAID array fails, we need to alert any (if any) humans who are near the server. This can be interesting as the only things nearby might be the tree it is mounted in with a long-range WiFi, or the goat who uses it as a heat source at night. This means that any alert should be sufficiently frequent and annoying for the locals to contact someone who can let the support technician know. The conflict is that it also might be the nurses in their office at the hospital who have work to do and don’t want to be disturbed.

The solution was to use the PC speaker to beep. We can control the pitch and duration of the beep. Some combinations sounded too much like an ECG machine so that was no good. In the end, we chose a simple rising scale that would sound odd in any environment (except, perhaps, in a Mike Oldfield recording). This is repeated by default every 30 minutes.

We also had to send an email to the support technician. This doesn’t work when the server doesn’t actually have any connectivity (as some are used only as a local communications hub), or when connectivity is unreliable. Even then, many of the technicians are hours or even days away from the servers.

As many of the technicians aren’t particularly technical, we also had help by identifying which of the two disks had failed and allow them to simply change the one labelled “Disk 1″ or “Disk 2″. Serial numbers are good for this but VM hard disks don’t have serial numbers (I think that’s a feature request to both VMWare and Parallels).

We had Jeff Wishnie from Inveneo as the customer, Anda Abramovici as IM, Jonny Leroy as BA, Paul Hammant and Chad Wathington as QA, and the star developer crew of Drew Olson, Sammy Zahabi, Ola Bini, Erik Doernenburg and your’s truly. We quickly learned the following:

  • The skills we needed (and had, just a little rusty) were more along the lines of Unix devices, shell, ASCII control characters, and simulation
  • Python sucks (a bad tradesman blames his tools? perhaps – but it still sucks)

Anyway, we got most of what we wanted done in the time, and given the context, more than we anticipated. But we all would have liked to get a lot more done and would have if we were using our tools of choice (which are chosen for very good reasons).

Nonetheless, we’re doing it for the kids and it was great!

What a buzz. Super Agile. Super Fun. Go Inveneo, you rock!!

Charles Nutter has just written up a nice summary of the things in Thomas Enebo‘s announcement of RC2 of JRuby 1.1

He talks in general about the astoundingly improved performance characteristics, particularly when compared to the Ruby 1.8.6 and 1.9 native interpreters, as well as the better use of JVM resources. Let alone the 260 bug fixes since RC1.

There’ll be more from me soon about our commercial experiences with JRuby and hopefully give you some fuel for introducing Ruby into your large, conservative corporate environment. I have to say, going back 2 years and thinking about the “enterprise readiness” of Ruby, things have changed a lot – almost exclusively due to the work done on JRuby. The pace at which the JRuby team work to address issues and improve the platform is outstanding, and puts commercial software vendors (particularly those hawking development tools) to shame. Things also have a long way to go – there are many, many solutions that would still be recommended around a recent version C# / .NET or Java implementation and that doesn’t look like changing for some time. The team behind JRuby is multi-skilled and very aware of innovations in other languages and platforms and I think this is one of their key success factors.

If you are evenly remotely interested in working on an OSS project, I encourage you to contribute to JRuby, even if it’s just to identify a problem to be fixed – it’s fun, it’s a great community, you’ll learn a lot about Ruby and the JVM, and you’ll work with some of the best guys in the business.

I suppose we Aussies might give up too easily, Ola :-(

Antonio Cangiano let everyone else who isn’t on the list know the disappointing news from earlier this afternoon.

I’m chairing next week’s Ark Group conference on SOA (Achieving Interoperability in Systems Architecture) at the Vibe Hotel in North Sydney, Australia.

You can download the conference brochure here. My ThoughtWorks colleague Halvard Skogsrud and I are presenting the workshop entitled “Bearing the standards of interoperability”.

For a wonderfully concise and lucid synopsis on what you really need to be aiming for while devising an SOA, watch Jim Webber‘s InfoQ interview.

He discusses the Agile-hugging benefits of an emergent service ecosystem, provides best practices around building for scalability, highlights what makes RPC (even if you pronounce it “doc/literate”) bad in terms of technical abstractions like types and operations, espouses the simplicity of message-oriented interactions, summarises the features of SSDL (a simpler alternative to WSDL, WS-CDL and WS-BPEL), and touches on the “degenerative” RPC model that is unfortunately being adopted by implementations claiming to be RESTful.

For links to those mentioned in Jim’s interview:

…and you’re already at me.

For the Aussies, Halvard Skogsrud and I are presenting a workshop at the October 2008 Ark conference on SOA (Achieving Interoperability in Systems Architecture), which I’m also chairing. Our workshop is entitled “Bearing the standards of interoperability” and, amongst other things, includes some more depth on Jim’s comments around tight coupling, REST, MEST, and “tunneling XML”. There’s some great presentations on the card from credible people, all of whom have real-world experience in forming SOA’s within the corporates and government they are employed by. You can download the conference brochure here. I look forward to seeing you!

This past week, my coworkers Scott Shaw, Evan Bottcher, and Richard Durnall from TW Melbourne, and Gianny Damour from TW Sydney enjoyed our time speaking at the inaugral Australian Archtecture Forum in both Sydney and Melbourne.

The most fabulously contentious talk I attended was a round-table discussion from Gianny on the role of the (software) architect in an Agile project. The quote of the week was “Are you saying architects should be coding? Pig’s arse they should be!”, from my favourite Enterprise Architect in Sydney (Big G from a client). He also rightly quipped that a few months of me helping code on one of his core systems was enough to scare me back into doing EA work!

I discussed Plugin Architectures, spending most of the time on OSGi, and how they could be useful in coming years for incremental deployment (dormant features, production mocks, breaking down monolithic apps). I was surprised to see so many people, figuring it was more to raise awareness, and was delighted to discover 2 projects in Sydney that where heavily component driven with runtime composition. I look forward to hearing more about the day-to-day challenges they face with this interesting and powerful approach.

Evan had a great discussion on different approaches to dealing with legacy applications, encouraging us to not nuke them but to strangle or renovate them. I was asked to give an opinion on how to deal with a VB6 frontend migrating to a web app (no, not Big G’s crowd for those who are reading), and whilst my initial reply was to try the .Net porting tools as a stepping stone and to empathise with the challenge, I also think two more things: if the only reason to change is due to lack of MS support it’s probably not worth doing yet; or it is the ideal opportunity to redevelop from scratch as it is so old the users probably don’t use it like it was built anymore (i.e. it’s a detonate candidate anyway).

Scott talked about dynamic languages in the enterprise and was nicely interleaved with a great Ruby Nubies in our Melbourne office on Thursday night – it was great to see such a diverse crowd with many from the corporate IT space. The talk may have been mostly to the “converted” but it incorporated some of our work over the past 18 months on finding the “enterprise” gaps in RoR and tracking/helping those gaps get closed. We are so close in closing them now I have just started a JRuby project with a long-term client in Sydney. This is a significant event and I look forward to the collaboration with the ThoughtWorks RubyWorks team who have been marvellous in their support. We’re also fortunate enough to be using the single best piece of project software ever released – Mingle!

Richard’s session was totally packed in both cities as he described the way to approach aligning business process, agile requirements, and application architecture. Drawing on his Lean manufacturing experience and sitting right on top of how an SOA should be fabricated, I heard Jim‘s voice ringing in my ears “construct your services along business process lines”. Rich is from the black country and Jim is Brummy so the accent is close enough for my upside-down ears. Correction: Jim pointed out my “gross cultural faux pas” in that he, too, is from the black country. Alreet.

On SOA, I hope to have some exciting details about the Ark SOA conference coming soon…