Morning Coffee 122

  • Sorry for the posting lag. Had a few technical difficulties around here. In the process of moving hosts, so expect more glitches.
  • My talk at the p&p Summit on Monday went really well. At least, it felt good and the applause at the end felt genuine. I recorded the audio on my laptop, so I’ll be posting a Silverlight version as soon as I figure out how to adjust the levels so their somewhat consistent. Paraesthesia and #2872 have reactions.
  • Speaking of the p&p Summit, Scott Hanselman posted his ASP.NET MVC demo from his talk. Said ASP.NET MVC bits aren’t available yet, so you can’t, you know, run the demo for yourself. But at least you can review what the ASP.NET MVC code will look like.
  • I stopped by the SOA/BPM conference last week and saw Jon, Sam and Jesus among others. Spent quite a bit of time talking to Sam and his Neudesic colleagues about this “physically distributed/logically centralized” approach that I think is hogwash. It sounds to me like Neudesic approach is really federated not centralized, though I’m not sure David Pallmann would agree. Federated makes much more sense to me than centralized.
  • Nick Malik continues his series on SOA Business Operations Model. I especially like his point that this isn’t a series of choices, you need to “look at your company and try to understand which model the business has selected.”
  • The first CTP of PowerShell 2.0 is out! Check out what’s new on the PowerShell team blog and Jeffrey Snover’s TechEd Presentation. (via Sam Gentile)
  • Soma announced updates to VC++ coming next year, including TR1 support and a “major” MFC upgrade to support creating native apps that look like Office, IE or VS. I get supporting TR1, but the idea that people are clamoring for MFC updates is kinda surprising. Many years ago when I first came to MSFT, a friend asked “But don’t you hate Microsoft?” to which I responded “No, I just hate MFC”. Obviously, not everyone agrees with that sentiment.
  • Steve Vinoski thinks there’s no hope for IT. Funny, I keep agreeing with Steve’s overall point but disagreeing with his reasoning. I still don’t buy the serendipity argument. I like compiled languages. And I think he’s overstating the amount of “real, useful guidance” for REST floating around. Basically, there’s “the book“.
  • In widely reported news, Windows Live launched their next generation services. Don’t bother with the press release, just go to the new WL home page.
  • Speaking of WL, Dare Obasanjo points to the Live Data Interactive SDK page where you can experiment with the WL Contacts REST API. It gives you a good sense of how the Web3S protocol works. Pretty well, IMO. However, how come WL Contacts Schema doesn’t include some type of update timestamp for sync purposes? If you wanted to build say a Outlook to WL Contacts sync engine, you’d have to download the entire address book and grovel thru it for changes every sync.
  • Speaking of Web3S, I’d love to see some info on how one might implement a service using Web3S. Yaron Goland positions Web3S as an alternative to APP that WL developed because they “couldn’t make APP work in any sane way for our scenarios”. I’m sure other folks have similar scenarios.

Morning Coffee 119

  • The biggest news of the week IMHO is Soma announcing the formation of an F# product team. Specifically, they will “fully integrate the F# language into Visual Studio and continue innovating and evolving F#.” Though Soma calls F# “another first-class programming language on the CLR”, I get the feeling there won’t be a “Visual F#” sku. Don Syme has more on the news.
  • In other Soma announcement news, Popfly is now in beta. More details on what’s new on the Popfly Team Blog. I haven’t played with Popfly in depth, but I think it’s got huge potential.
  • Scott Guthrie details the upcoming ASP.NET MVC Framework. Personally, I’m not building web apps much these days, so I’m not really invested one way or the other. Given the interest in this approach, it’s nice to see the ASP.NET team respond to the market, though I’m sure someone will complain that we’re trying to kill off the various open-source MVC Web frameworks that have sprung up.
  • Over in Windows Live, they shipped a new version of Live Search Maps, upgraded WL Photo Gallery (which I’ve been digging) to support Flickr and shipped an update to WL Accounts which allows you to link accounts.
  • The Clarius folks keep churning out great tools for software factory developers. The latest is the T4 editor, which brings intellisense, color syntax highlighting and property inspector support for Text Templating Transformation Toolkit (aka T4) files. T4 files are used for code generation in both DSL Toolkit and GAT.
  • David Pallman (again via Sam Gentile) suggests there are only three choices for infrastructure architecture: None/Point-to-point, Centralized/Hub-and-Spoke and Thin/Bus. I get the first two, but his explanation of the third goes to far into the “magic framework” category for my taste. “Physically distributed but logically centralized”? That doesn’t make any sense to me at all.
  • Fellowship of the Ring makes its way onto XBLM. Alas, not in HD so I’ll stick w/ my extended four hour DVD version thankyouverymuch.

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.

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 17

Yesterday’s Morning Coffee was canceled on account of barfing. For all the gory details (you have been warned), check out my wife’s blog.

  • Only 12 responses to the State of the Union were posted as I write this. Dunno why, but I was expecting more. Maybe this whole Web 2.0 thing is overblown a bit! 😄
  • Speaking of the State of the Union, is it just me, or did anyone else find it odd that the Scooter Libby trial started the same day?
  • AtlasASP.NET AJAX 1.0 is done. Lots more on this from Scott Guthrie’s blog. While I’m not personally that interested in ASP.NET AJAX itself, two things strike me as interesting in this release. First, we’re shipping all the code for this. The client side JavaScript library, the Control Toolkit, even the server-side components. Second, it’s nice to see the Developer Division shipping something this significant without waiting for the next release of Visual Studio. Here’s hoping that both of these two trends continue.
  • Rich McCollister pointed me to the XmlProviderLibrary. Bad on me for not looking harder.
  • Windows Live Writer is pretty cool, but it is missing one feature that I needed twice Tuesday. While embedding images in a post is cake, there doesn’t seem to be a way to embed non-image files. You know, like the ColorConsoleTraceListener Project or the Live Search for Chartity Search Providers. I’m guessing the infrastructure to post images and files would be identical, but there’s no UI interface for it. I checked out the WLW SDK online and found the ISmartContent.Files.Add method, so I’m guessing it’s doable. But there’s no such animal on the Live Gallery. I wonder why nobody else has built this yet? Is this really that unique a request?