Morning Coffee 96

  • My friend David “LetsKillDave” Weller writes a long post on corporate blogging, responding to comments on the subject from Penny Arcade. Andre “Ozymandias” Vrignaud also responds. David is specifically talking about blogging within the gaming division, but they apply pretty broadly to Microsoft as a whole when it comes to blogging. “I don’t want to get fired”, “I don’t want to do things that needlessly hurt my company” and “We can say things that PR or marketing people can’t.  Or won’t.” all ring true to me.
  • Speaking of gaming, there seems to be more that your average cool games coming our for Xbox 360 this summer. I just picked up Forza 2 which rocks with the Racing Wheel. The Darkness looks very cool and I laughed my ass off playing the Overlord demo. Both shipped this week and have gotten good reviews. On their way in August are Bioshock and Blue Dragon. Of course, there are a few other big games coming this holiday. A good, but expensive, year to be a gamer.
  • I laughed my ass off reading Larry O’Brien’s Top 10 Things To Do With Your Petaflop Supercomputer, esp. #9.
  • WSDL 2.0, it’s official. Nick Allen has the news. Personally, WSDL seems to be the spec most responsible for driving RPC-style request/response web services, so let’s just say that I am not a fan.
  • Joe McKendrick thinks something is “holding back SOA”? I don’t think it’s any one thing, but certainly the RPC style that most web service toolkits pretty much force down your throat isn’t helping.
  • Nick Malik thinksAcropolis is promising as a SOA service consumer, but Udi Dalan thinks it doesn’t support multi-threading well enough. I lean towards Nick on this one since I see multi-threading as a language problem, which a library like Acropolis can’t solve on it’s own.
  • Jon Flanders has been busy building the BizTalk Server 2006 extensions for Windows Workflow Foundation (June CTP) SDK Sample. I’m not sure why the marketing folks gave this such a long and involved name, but the sample does look pretty cool. Paul Andrews has the project overview and demo video. However, given that the WF workflows are hosted in BTS, is it accurate to say “No Biztalk Experience Required“?
  • Speaking of WF, Tomas Restrepo takes a detailed look at the new WF service hosting in .NET FX 3.5. Mostly, he likes what he sees. I have the same problem he does with the message correlation IDs. I’d like to have other options here, including support for what I call “message data correlation” (Tomas describes this as “natural correlating identifiers”) and “address correlation” which is basically the REST model.

Morning Coffee 95

  • New version of dasBlog is out, the final version on ASP.NET 1.1 (unless this release “kills a kitten” as per Scott Hanselman). I don’t have the time (make the time?) to run daily builds, but I do try and upgrade to new major releases in a timely fashion. I’m also moving hosters, so expect a little downtime around here at some point in the near future.
  • Matt Winkler is doing a series on alternate WF execution patterns. His first is the N of M pattern. While I can nitpick some things in WF – especially the limitations of transaction flow – WF’s support for variability and extensibility of execution patterns is fraking brilliant. (via Sam Gentile)
  • Joe McKendrick is all excited about a SOA built without web services! We’ve been “doing SOA” since the EDI days without web services, so I’m not sure this level of excitement – with an exclamation point and everything – is warranted. But it is good to see people realize web services != SOA. Instead of web services, CERN is using JMS to move messages around. I don’t know much about JMS, but I do know it supports async and durable messaging, two things I think are critical for enterprise services.
  • I saw on LtU that there’s a new paper on Singularity out. For those who don’t know, Singularity is a MS Research platform designed for reliability instead of performance. But there’s more than just a new paper. According to the project home page, “Singularity Version 1.0 is complete. We’ve shipped the Singularity Research Development Kit (RDK) to a small number of universities for their research efforts.” I wonder if I can get my hands on that RDK?
  • Jeff Atwood is starting to show ads on Coding Horror, but he’s donating “a significant percentage” of the ad revenue back into the programming community. He’s starting with $5,000 and Microsoft is matching for a total of $10,000 to be donated to open source .NET projects. Go tell Jeff which projects you think he should donate to. Castle seems to be an early favorite.
  • On Monday, Nick Malik posted what he called the Simple Lifecycle Agility Maturity Model (aka SLAMM) as a way of measuring your “agile factor”. Surprisingly, the community response has been zilch. After Nick’s comments on Agile last week, I figured someone would have something to say about it, even if only to slam it. (Slam SLAMM, ha ha.) Maybe nobody opened the spreadsheet and saw Mort has an agile factor rating of 71%? Personally, SLAMM seems like a rather coarse tool for measuring how agile you are, but coarse tools are better than no tools at all.

The Myth of the Service Catalog

Normally, I would simply note that Nick Malik had finally moved on from the Great Mort vs. Agile Debatetm in my next Morning Coffee post and be done with it. But man, his post on the Unimportant SOA Catalog is just too good to leave until then…

Nick has come around to the view that the catalog does “a really good job of solving the wrong problem”. I agree 100%. I haven’t talked about it much here, but my teammates could tell you I have been on a rampage about this internally. People think a service catalog will create adoption and reuse. That suggests that the big obstacle to service adoption and reuse is simply the issue of finding something to adopt or reuse.

It’s not.

The next PM I meet who says “I wish I had a big catalog of services so I can search for something that I can take an external dependency on” will be the first. And they’ll probably be wearing a straightjacket, because looking for dependencies on purpose like that is crazy talk. Project managers avoidexternal dependencies like the plague. So when a PM looks at a service catalog, what they see a big list of stuff they don’t want to take a dependency on. Not exactly the mindset to stimulate reuse and adoption, is it?

Nick suggests that a catalog might work if it was small (20-50 services) but not for hundreds or thousands of services. I think it’s a culture issue not a scale issue, so I don’t think it would work even for a small number of services. But in the end, it’s a moot point since he expects a large number of services. Different reasons, same conclusion. ’nuff said.

However, while I rail against wasting time building a service catalog that won’t do what everyone thinks it will do, I haven’t had a better idea.

Nick does. The Periodic Table of Services. Go read. More of my thoughts on this later.

What is the Rails Question?

Nick Malik asked “what is the Rails “answer” on the Microsoft platform? If we don’t install Ruby, do we use Rails on JS or is there a Rails version we may want to put up ourselves?” I guess it depends, what is the Rails “question”?

On the one hand, the question could be “What’s the best way to run Rails on Windows?” I think the short answer to that is IronRuby. In the wake of the IronRuby announcement, John Lam wrote that “Nobody would take our implementation seriously if it doesn’t run Rails.” Somepeople question the DLR’s teams ability to ship a compatible version of Ruby without looking at the source, but my money is on the DLR team. (Of course it is, I’m a kool-aid drinker!)

BTW, I don’t think having a JavaScript port of Rails (JailS?) is much of a help for the Microsoft platform. I’m not sure if Steve Yegge’s JavaScript Rails port would run on JScript.NET, but I wouldn’t bet on it. I would expect you need either the old Active Scripting JScript or the new Managed JScript (aka the DLR based version of JavaScript). Of course, IronRuby runs on DLR as well so why wouldn’t you just run Rails on IronRuby instead of the JavaScript port of Rails on Managed JScript?

(Side note – why isn’t the new JScript engine called IronJavaScript? Wouldn’t that be cooler than Managed JScript? Don’t they know “Iron” is the new “#”?)

On the other hand, maybe the question is “can ASP.NET evolve to be more Rails-esque?” I think it’s starting to, slowly. Rails at it’s core is a Model View Controller web app pattern (aka Action Pack) combined with an Active Record data access pattern (aka Rails’ Active Record). Certainly, nothing stops you from using a similar approach with ASP.NET. The Castle Project has an ASP.NET implementation of MVC (aka MonoRail) and Active Record (also called Active Record). But I assume Nick’s more interested in what ships natively in the platform to compare to Rails.

On the data access side, I think LINQ to SQL is a a compelling alternative to the various Active Record implementations. It’s not an implementation of the Active Record pattern, it looks more like a Table Data Gateway patten. Also, it’s not DRY like Rails Active Record, but I think that’s more of a function of dynamic vs. static languages. Castle Active Record isn’t DRY either. But once you get the hang of the slightly funky syntax (the from clause is first so you can get intellisense) I find LINQ very easy to use. Certainly, building Query Objects is a snap.

On the web app framework side, the story isn’t so pretty. The agile folks like MVC because it’s easier to test (among other reasons – see update below). Apparently, there’s an ASP.NET MVC framework that’s “in the works”, but AFAIK no one has seen or heard anything about it since the MVP summit. Jeffrey Palermo was impressed with what he saw, but I guess everyone else has to reserve judgement until it gets a little more public.

Actually, I don’t think it’s an either-or question, it’s both. In order to be the Common Language Runtime, I think it needs to support common dynamic languages like Ruby, Python and JavaScript natively. And, in order to be the best platform, I think the .NET Framework in general and ASP.NET in particular need to support multiple approaches to meet the needs of different developers.

Update: in the comments, Jeffrey Palermo points out that he likes MVC “mostly because it separates concerns of controlling screen and rendering the screen. It makes the application more maintainable and keeps the code easily changeable.” Point taken. I didn’t mean to imply that testability was the only virtue of MVC.

Morning Coffee 94

  • By most accounts, the Capitals had a good draft this weekend. They started the day with ten picks across the seven rounds. The ended the day with ten prospects as well as three extra picks next year, including two second rounders. According to the GM George McPhee (aka GMGM), next year’s is “supposed to be a terrific draft” which is probably true but what you always say when you trade down for future picks. On the other hand, if the guys you want are available further down, why not stock up on the future picks?
  • John Lam reports on Steve Yegge’s Rails port to JavaScript that he saw at Foo Camp. Google (aka Steve’s employer) wasn’t interested in adopting Ruby or Rails since they already use C++, Java, JavaScript and Python. So Steve ported Rails to JavaScript. Wow. However, it does beg the question which is more valuable, Ruby or Rails? If you could have just one or the other, which would you choose?
  • Speaking of dynamic languages, Powershell Community Extensions v1.1 is out. I want to check out the new Elevate function. Currently, I’m using the Script Elevation PowerToys, but I would rather have a pure PS solution. (via Powershell Team Blog)
  • I always know it’s a slow day when I decide to check TechMeme while writing my Morning Coffee post. Usually, I get plenty to write about from just my news reading. However, right now, even TechMeme seems mostly uninteresting. Only thing remotely interesting to me is Samsung’s new 64GB solid state drive.