Throwing Gasoline on the Fire

Steve Vinoski has raised a bit of a flame war by admitting he has lost the ESB religion. Given that I’ve never been a fan of ESB’s anyway, there’s a lot there that I agree with. In particular I liked the description of “magical framework” middleware, blaming enterprise architects for driving ESB’s as the “single integration architecture” even though a single *anything* in the enterprise is untenable and his point that flexibility means you don’t do any one thing particularly well.

However, Steve goes on to bash compiled languages and WS-* while suggesting the One True Integration Strategy™ is REST + <insert your favorite dynamic language here>, then acts surprised that the conversation denigrates into “us vs. them”. When you start by saying that compiled language proponents “natter on pointlessly”, I think you lose your right to later lament the depreciating level of conversation .

All programming languages provide their own unique model of the execution environment.  Dynamic languages have a very different model than compiled languages. Arguing that this or that model is better for everyone, everywhere, in all circumstances seems unbelievably naive and arrogant at the same time.

On the other hand, I do agree with Steve’s point that most developers only know a single programming language, to their detriment. One language developers often miss a better solution because their language of choice doesn’t provide the right semantics to solve the problem at hand. Developers could do a lot worse than learn a new language. And I don’t mean a C# developer should learn VB.

The most pressing example of picking the right language for the right problem today is multi-threading. Most languages – including dynamic languages – have shitty concurrency semantics. If you’re building an app to take advantage of many-core processing, “mainstream” apps like C#, Java and Ruby won’t help you much. But we’re starting to see languages with native concurrency semantics like Erlang. Erlang is dynamically typed, but that’s not what makes it interesting. It’s interesting because of it’s native primitives for spawning tasks. I don’t see why you couldn’t add similar primitives for task spawning to a compiled functional language like F#.

As for REST vs. SOAP/WS-*, I thought it was interesting that Steve provided no rationale whatsoever for why you should avoid them. The more I listen to this pissing match debate, the more I think the various proponents are arguing over unimportant syntactical details when the semantics are basically the same. SOAP is just a way to add metadata to an XML message, much as HTTP headers are. WS-* provides a set of optional message-level capabilities for handling cross-cutting concerns like security. Past that, are the models really that different? Nope.

For system integration scenarios like Steve is talking about, I’m not sure how important any of the WS-* capabilities are. Security? I can get that at the transport layer (aka HTTPS). Reliable Messaging? If I do request/response (which REST excels at), I don’t need RM. Transactions? Are you kidding me? Frankly, the only capability you really need in this scenario is idempotence, and neither REST or SOAP provides any standard mechanism to achieve that. (more on that in a later post)

I understand that some vendors are taking the WS-* specs and building out huge centralized infrastructure products and calling them ESBs. I think Steve is primarily raging against that, and on that point I agree 100%. But Steve sounds like he’s traded one religion for another – “Born Again REST”. For me, picking the right tool for the job implies much less fanaticism than Steve displays in his recent posts.

Morning Coffee 117

  • Quick update to the DevHawk 2007 World Tour: I won’t be making it to the SOA & BP Conference. Riley’s having her tonsils out. As much as I’d like to hang with my geek peeps, family is the priority. But I can still make an evening event or geek dinner later in the week if anyone is game.
  • Caps season-opening winning streak continues. Still 100% on the PK, though the power play is pretty anemic. As I said yesterday, it’s WAAAAY to early in the season to start bragging, but starting strong is much better than starting weak.
  • Speaking of hockey, looks like the NHL Network is launching in the US this month (it’s been available in Canada since 2001). Also, NHL.tv is up and running. Those wishing to see Caps highlights can go directly to Capitals.NHL.tv. Unfortunately, if you want to see full games, you’ve got to subscribe to Center Ice or Center Ice Online to the tune of $150. But I don’t want to get “up to 40 games each week”, I just want the Caps games. Between the time zone difference and kids, it’s not like I have time to watch that much hockey anyway. Why can’t I subscribe to just the Caps games online for say $25 a season?
  • Finished Halo 3 Sunday night. Fun game and a great end of the trilogy. Looking forward to what the newly-independent Bungie does next. Something tells me we haven’t seen the last of Master Chief. However, I do think Bioshock has better and more original storytelling. Mass Effect looks like it’ll be better still.
  • Sam Gentile pointed out that his Neudesic colleague David Pallmann has posted a series of WCF tips. Several of them are right on the money like “Take Advantage of One Way Operations” and “Use a Discovery Mechanism to Locate Services“. However, I can’t agree with “Maintain a Service Catalog“. David warns that if you don’t, “The left hand won’t know what the right hand is doing.” Of course, that’s probably the case regardless of how you maintain your service catalog. And “Retry on minor failures“? That’s fine, if you’ve got an idempotent operation. Unfortunately, most non-read operations aren’t idempotent unless you take the time to design them that way. And most people don’t.
  • Speaking of Sam, he’s blown up his CodeBetter blog and walked away from the ALT.NET crowd. I’ve not been a fan of this ALT.NET stuff since it surfaced – as Sam said, “ALT.NET is a divisive thing” – so I’m happy to see my good friend walk away from it.
  • Speaking of ALT.NET, Scott Hanselman blogged about previewing the new ASP.NET MVC Framework at the ALT.NET conference. Like Sam, Scott thinks the term ALT.NET is “too polarizing”. I like Scott’s suggestion for Pragmatic.NET. Oh, and the MVC framework stuff looks cool too.
  • Reading Dare’s description of OAuth gave me a distinct sensation of deja-vu.

Morning Coffee 116

“Looks like I picked the wrong week to stop sniffing glue”
Steve McCroskey, Airplane!

  • So it’s been a while since my last post. Just over a month, not including The F5 High, which wasn’t “original IP”. Frankly, I just stopped reading pretty much cold turkey. I wanted and needed to go heads down on day job stuff for a while. Since I haven’t been reading, Morning Coffee is going to be a little cold while I ramp back up.
  • The new NHL season is upon us, and the Caps are looking good so far. Obviously, they have the new uniforms, but they’re also out to a 2-0 start for the first time in five years. And in those two games, they’ve only allowed one goal and are 100% on the PK. It’s nice to see them start strong, but obviously there’s a long way to go. Here’s hoping the can stay strong all season.
  • Speaking of staying strong, the wheels that were rattling last week came off the Trojan bandwagon completely this week. I’m not sure it’s as big an upset as Appalachian State beating Michigan but it’s close. What happened to the team that scored 5 TD’s in a row on Nebraska?
  • Big news last week is that MSFT is going to release the source code to much of the .NET Framework. Scott Guthrie has the details. Frankly, between Rotor & Reflector, it wasn’t like you couldn’t see the source code anyway, so this seems like a no-brainer. But integrating it directly into the VS Debugging experience, that’s frakking brilliant.
  • I haven’t had a chance to install the new XML Schema Designer (Aug 07 CTP)  but I was really impressed with this video. The XML Team blog has more details. However, I’m not sure what the ship vehicle is. The CTP install on top of VS08 beta 2, but in the video they keep saying “a future version” of VS, implying that it’s not going to be in VS08.
  • Dare is spending some time investigating SSB. I think it’s interesting that some of the REST crowd are starting to see the need for durable messaging. Dare argues that the features and usage models are more important than wire protocol. As long as it’s standardized, I don’t care that much about the protocol. Several of the REST folks mentioned AMQP. While I’ve got nothing against AMQP technically (frankly, I haven’t read the spec), but what does it say about durable messaging vendors (including MSFT) that a financial institution felt the need to drive an interoperable durable messaging specification?

The F5 High

A while back, my good friend and MAAB cohort Loren Goodman sent me the following. I was hoping he’d start his own blog and post it (and other stuff) there. But he’s busy working on other things these days, so I doubt he’ll get to the whole blogging thing anytime soon. So I offered to post it here rather than have it sit gathering virtual dust. Enjoy.

Update: I got the timeline wrong. Loren sent me this and I offered to post it. He didn’t ask me to post it originally as I originally wrote. Sorry about that, Loren.


The F5 High

Hunting and farming in the next generation of software development

A little while ago I was having an intense discussion with a colleague of mine Scott Colestock while we were both out at Microsoft.  We were discussing the ever present need some developers have to build things themselves instead of looking for something to leverage or using an off the shelf product.  After we were postulating a couple of off the wall, overly judgmental and holier than thou theories behind this phenomenon, Scott said something that really hit home and opened my eyes to an interesting explanation of what might really be going on.  He offhandedly said maybe it is not about ego or fear of less than adequate solutions at all; maybe it is actually bout the F5 high instead.  The F5 high… hmmm have not heard of that one.  What is the F5 high I asked him?  The F5 high, you know, that feeling you get when you hit F5 in the development environment and something happens.  Come on, admit it, It feels good.  As I took in the idea, I realized that he was totally right, it does feel good, it is a sense of accomplishment, it is an ultra quick hit, and more importantly, it makes us want to do it again.  This simple button and the rote process wrapped around it is a gateway to experiencing indisputable proof of our own creativity.  So to some extent, we are able to become our own dealer, dolling out small packets of that near harmless drug called satisfaction whenever we want.    So after this grand near religious realization of our true essence and this new found understanding behind that very special little key, we moved back on topic and continued our discussion about architecture.

Later on I was replaying the discussion between Scott and I with another colleague of mine, Jon Tobey.  Jon is one of the most avid fisherman I know.  Right in the middle of my F5 story, just when I thought mans greatest revelation had been already been achieved, if you can even imaging anything greater, he proceeded to add yet another improvement to the growing theory.  He took the F5 high concept and explained it in the context of fishing.  As a sportsman, fishing is about the hunt, it is about the building feeling you get when there is a bite and the exhilaration that courses through your veins as you attempt to catch and reel in the unknown trophy on the other end of you line.  In the case of fishing, we don’t even keep the fish, we throw it back for reuse.  Considering that we return the fish to the pond or stream from which we caught it, fishing is clearly much more about the rewards of the process and not about the value proposition of the actual fish.

If we approached fishing trips like software projects there would be some very strange consequences.  Firstly, we would have to keep everything we caught – even if it is not a fish and even if we did not catch it.   Then we would bring them back to office and try and probably have to cram them though the little slots on the sharepoint server or something.  Reusing fish would be dramatically less fulfilling, we would just take the dead fish, somehow work a hook into its mouth, throw it across the floor, and then yank the rod with excitement on a par with a kid on the traveling carnival merry go round.  Then drag the lifeless fish corpse across the floor by reeling it in until it reached the end of our rod.  Take it off and throw it back across the floor, repeat.  Man, that sounds exciting doesn’t it?  So where does that leave us?  Right now we have a very smelly server closet and a bunch of drug crazed developers yanking dead fish around the office hoping to somehow score an F5 fix while wondering when fish serialization technology will reach the point where the rehydrated fish are slightly more exciting.  They are all very excited about the new social network called FishTank 2.0 where anyone can reel in anyone else’s dead fish.  This does not look good – I must need a quick hit of F5 – {F5} – crap, well not so exciting, it turns out that F5 in word fires up the find and replace box and I remain unfulfilled.

So it appears that good developers, aka hunters, need to do some fishing every once in a while to keep the monotony of eating fish every day in check.  For when this get too far out of balance, the devs usually start using the project managers as the fish and the requirements of the project as the river.  They bait the project managers and try to yank them off the page and into something new, something that will give them that F5 fix they so desperately need.  When the PMs tell them NO, they might go to the users, a different company, who knows?

The DevHawk 2007 World Tour

After spending almost all of fiscal year 07 (July ’06 thru June ’07) not traveling and not presenting, I’m going to be doing a few public talks to finish out the year. If you, dear reader, are going to one of these please drop me a line. Invariably, it’s the side meetings and discussions that are the most valuable at these conferences.

IT Architect Regional Conference 2007
October 15th – 16th, San Diego, CA

I’m a huge fan of IASA, so I’m thrilled to be doing their west regional conference. I’ve presented to a packed house for the local chapter before, so I think these folks will put on a good conference. They sure have a good selection of topics and speakers.

My session is called “Moving Beyond Industrial Software“. Here’s the abstract:

Computers have been instrumental in ushering in the post-industrial age. Yet, most enterprises today are run with an industrial mindset and the IT department is organized like a factory. This creates a tension between the forces of industrialization that define the organization and the forces of post-industrialization that define today’s marketplace. For example, our post-industrial world is becoming more decentralized by the day. Yet many organizations believe the key to a successful service oriented architecture – a very decentralized system design – is to have a central service repository.

In this session, Harry Pierson will examine this tension, get you thinking outside the industrial mindset and help you think about software development in a post-industrial way.

I’m very excited about this talk.

MS SOA & Business Process Conference
October 29th – November 2nd, Redmond, WA

I’m not presenting at MSSOABPC (that’s a mouthful) but looks like most of my team is going. So if you’re going and want to hang out with the guys who are doing this stuff in the trenches @ MSIT, let me know. Also, I put out the call for anyone interested in a geek dinner. From the agenda, looks like they’re keeping us busy until 8pm every night Mon-Wed, so we can either a) have geek dinner Thursday or Friday or b) have geek beers after one of the receptions in the early part of the week.

patterns & practices Summit USA West
November 5th – 9th, Redmond, WA

I did the p&p Summit back in 2005, a very successful debut of my Developer 2.0 talk. (I’m doing that talk at a different conference this year, details below.) This year, I’m not 100% sure what I’m going to talk about yet. I’m currently slated to talk about the Rome project that I’m doing in MSIT, but given our current slow progress on that project, I’m probably going to talk about something else. I’m thinking either the “Moving Beyond Industrial Software” talk described above or the “Facing the Fallacies of Distributed Computing” talk described below. Any other suggestions?

DevTeach Vancouver 2007
November 26th – 30th, Vancouver, BC

This is a brand new experience for me. Frankly, I’d never heard of DevTeach before my friend Mario Cardnial suggested I submit a couple of sessions. Since it’s only a few hours drive away, I’m bringing the family along. We’ll see how that goes. And when I’m not doing my sessions or hanging out with the family, I might take in a session or two in the XNA track.

Here are the sessions I’m doing:

Developer 2.0
Finding Your Way in the Future of Software Development

The one constant in software development is change. Software development in 2007 is dramatically different than it was in 2000, which was in turn dramatically different than in 1993. You can be guaranteed that the platforms, languages, and tools will continue to evolve. Learn how Harry Pierson, Architect in Microsoft IT, believes software development is going to evolve in the next five years and what you must do today to remain competitive.

Facing the Fallacies of Distributed Computing
Sun Fellow Peter Deutsch is credited with authoring “The Eight Fallacies of Distributed Computing”. These are near-universal assumptions about distributed systems that “All prove to be false in the long run and all cause big trouble and painful learning experiences.” In this session, we will examine these fallacies in depth and learn how to avoid them on the Windows platform by leveraging Web Services, WCF and SQL Service Broker.