Afternoon Coffee 106

Lots of meetings today, so my coffee post is late…

  • The Big Newstm: Visual Studio 2008 and .NET Framework 3.5 Beta 2 is available for download. Soma and Scott have more. Silverlight 1.0 RC and the Silverlight Add-in for VS08 will apparently be available in a couple of days. Finally, there’s a go-live license for the framework, so you get a head-start deploying apps before VS08 and NETFX 3.5 RTM. Time to build out a new VPC image.
  • Next week, I’m attending the p&p Service Factory v3 Customization Workshop. I’m looking forward to playing with the new Service Factory drop, but I’m really interested in learning more about building factories. I wonder if they’re going to discuss their VS08 plans.
  • Nick Malik recently wrote about making “middle out SOA” work. I hate that term “middle-out”. It feels like we’re pinning our hopes on middle-out because we know top-down and bottom-up don’t work. My old boss John DeVadoss (who assures me he’ll be blogging regularly again “soon”) big vs. little SOA, with big SOA being “dead”. I like the term “little SOA” better than “middle-out SOA”, but just because big SOA is a big failure, doesn’t mean little SOA will make any headway.
  • There’s a new F# drop available. Don Syme has the details. Looks like they’ve got some interesting new constructs for async and parallel programing.
  • ABC announced yesterday that they are streaming HD on their website. So you can check out the season finale of Lost in HD for free. They embed commercials so it’s not really “for free”, but you don’t have to pay $3 an episode like you do on XBLM. I wonder if XBLM might offer this capability in the future? Certainly would increase my use of XBLM. (as would an all-you-can-eat pricing scheme)

Morning Coffee 88

I’ve got over 500 unread news posts and 200 emails in my inbox to process. So this is nowhere near comprehensive.

  • Clarius released the June 07 CTP of their Software Factory Toolkit. Big new feature in this drop is T4 Text Template editor that has syntax highlighting and eventually intellisense. They also released the May 07 CTP of VSSDK Assist, previously known as VSIP Factory. Haven’t played with either yet, but it seems like a good time to be a tool builder.
  • PowerShell hits a million downloads in six months. No surprise there, IT’S FRAKING AWESOME. Jeff Snover details seven MSFT products using PS, promising many more that he can’t talk about. See earlier comment about being fraking awesome.
  • Speaking of PS, I don’t “get” Server Core because it doesn’t support managed code. So no PS for Server Core. They announced @ TechEd that Server Core will support IIS 7, but since there’s no CLR you can’t run ASP.NET. As far as I’m concerned, no PS and no ASP.NET is below the minimum threshold of usefulness. I realize it’s technical limitation related to the current factoring of the .NET Framework and I assume some team somewhere in Redmond is working on fixing it. But what’s the point of releasing Server Core in the meantime?
  • QUT releases version 0.8 of their Ruby.NET compiler. Given that the IronRuby guys bootstrapped by licensing the Ruby.NET compiler, I wonder how these two projects will evolve side by side.
  • Speaking of Ruby, JRuby has gone 1.0. Congrats!
  • At TechEd, I saw my friend Steve Jones from Capgemini, and it’s not this Steve Jones. Woops. But CRUD is still CRAP.
  • Pat Helland breaks Scott Hanselman’s Rule #2 and details how he “lost a Megan“.
  • My ex-teammate David Hill has been busy with Acropolis. If you are even the slightest bit interested in this technology, you should be reading his blog.
  • Microsoft acquired a company called Stratature last week. I don’t typically track MSFT acquisition news + it was lost in the noise of TechEd. But Roger Wolter thinks it’s a great move and that Stratature’s Master Data Management hub product is one of the best. Given the importance of MDM in SOA, I think I need to go learn more about this product.

Is Guidance Automation Too Complex?

Over the past couple of weeks, I’ve gotten a chance to spend time investigating the Guidance Automation Toolkit. For those who aren’t familiar with GAT, it is the underlying enabling technology that powers p&p’s Software Factories. Several of p&p’s factories include data access guidance, but that works against an actual database rather than a VSTDB project. Given my newfound love for VSTDB + my interest in GAT, I thought I would whip up some simple automated guidance.

The key word in that last sentence is “thought”. Turns out that authoring guidance in GAT is extremely unfriendly. GAT’s unit of automation is called a recipe, which consists of arguments, wizards and actions. Arguments are GAT’s equivalent of variables, wizards gather argument data from the user and actions execute changes to the solution based on the values of the arguments. There’s more granularity to the GAT authoring model – for example, GAT arguments have optionally have value providers and converters (which should be called validators) – but you get the basic idea.

What makes GAT so hard is that all these recipe elements are wholly independent. This makes individual recipe elements easy to write and recipes fairly modular, but at the cost of making recipe very difficult to write. Your recipe has to define both the list of these elements that it uses as well as their interconnections. For example, arguments optionally contain value providers and converters. They are exposed to the user in wizards as either custom pages or arguments. They are fed into actions as input parameters. Action input parameters can also come from the output parameters of other actions. All these interconnections have to be hand coded in XML with fully specified type names like “Microsoft.Practices.RecipeFramework.VisualStudio.Library.Templates.TextTemplateAction, Microsoft.Practices.RecipeFramework.VisualStudio.Library”. Ugh.

The good news for GAT is that help is on the way. Clarius’ Software Factories Toolkit includes a graphical domain specific language for authoring recipes. With that tool, you can pick the various recipe elements from a list and connect them graphically instead of hand coding all of that in XML. But why do we have this problem in the first place? How much are we gaining by using this XML format in the first place? Frankly, I don’t think very much. I think it would make more sense to define recipes in code than XML.

I was talking to Michael Lehman about Project Glidepath, which is built on GAT. However, Glidepath only uses GAT for integration with Visual Studio’s menu system (which seems much more difficult than it needs to be, but that’s a separate post). Instead of GAT’s recipe system, Glidepath plugins simply expose an Execute() method. Within that method, the plugin can do whatever it wants. Michael showed me the code behind the Vista Bridge package, and it is MUCH simpler than the GAT equivalent. I could see having a little more structure than just Execute(), but GAT seems like overkill in comparison.

Sometimes complexity is necessary. But I can’t help but think that GAT’s complexity wasn’t really necessary. Wouldn’t it have been simpler and just as modular to define a recipe in code instead?

Morning Coffee 57

  • Scott Hanselman’s post on Mindful Coding reminded me of the practice of rubberducking. The basic idea is that when you’re stuck on a problem, you explain it out loud to an inanimate object – aka the rubber duck. (though when I originally heard about this practice, it was a teddy bear.) Maybe instgead of Coding Mindfully, we should be Coding Out Loud?
  • Quick side note to the previous bullet: I have often worked thru a problem by explaining it to my wife who, like Scott’s wife, nods in all the right places, but cares not about such things. But calling your wife a rubber duck is bad for your health, so I’d rather call it Coding Out Loud.
  • I’m a couple weeks behind on this, but Microsoft along with BEA, BMC, Cisco, Dell, EMC, HP, IBM, Intel, and Sun submitted the Service Modeling Language to the W3C. For those not plauing along at home, SML is the new name for the System Definition Model and is a core deliverable of the Dynamic System Initiative. Good to see it’s gotten such broad support for this.
  • Jezz Santos and Edward Baker wrote a series of posts entitled “Factories 201“. The entire series is good, but I particularly liked Jezz’ post How Long Will It Take? His rough estimate is that it takes at least five products built with a software factory before you recoup your investment in building the factory itself. Sounds like a fair assumption.

Morning Coffee 27

  • Is there a good solution to colorize source code that looks good in RSS feeds? I’ve tried Insert Code and Paste from VS for WL Writer and both look fine in HTML but awful in RSS.
  • My friend David Geller launched his latest venture Eyejot recently. Eyejot is a Flash-based video messaging system, so you can send and receive video clips without having to install anything but a webcam. According to the Eyejot blog, they’re getting some good press. See an interview with David about Eyejot up on YouTube.
  • Here’s an interesting article on using WF with Amazon’s Mechanical Turk service. Invoking MTurk isn’t that interesting – it’s just a web service and WF has a built-in InvokeWebService activity. But since MTurk has no way to asynchronously call out to the WF, you have no choice but to regularly poll MTurk to see if the task is complete. Yuck. (via Larkware)
  • Yahoo! Pipes looks interesting. At least the screen shots of it on various websites and blogs look cool. Too bad the site is absolutely hammered this morning. (via Dare Obasanjo)
  • Like GAT? Like DSL? Then use them together!
  • If I can more than raise my Gamerscore by 1,500 points by April 12th (i.e. more than double it), I can get a free $5 game. But why wait to start the contest until next Monday? Doesn’t that discourage people from playing until then?