Morning Coffee 107

  • The last day of the service factory workshop was much like the second, primarily focusing on stuff p&p built to integrate GAT and DSLs. We also got a briefing in what’s coming for factories after VS08 (can’t blog about that). We ended with a look at the DSL Editor Power Toy, which provides additional views on a given model and allows you to completely replace the graphical editor with a Windows Forms UserControl. I wonder if you could use ElementHost in order to build a WPF based editor?
  • Finished the last Harry Potter book last night. My wife finished it last week but kept quiet about it until I got to the end. No spoilers here, but I wasn’t exactly surprised by how it played out. I wonder what J.K. Rowling will write next?
  • As promised, Silverlight 1.0 RC and Silverlight 1.1 Alpha Refresh were released last week. Also finishing out this beta wave were Silverlight 1.1 Alpha Tools for VS08 and a new preview of Expression Blend 2. Scott Hanselman has all the details on all the releases.
  • In one of his articles on LINQ to SQL, Scott Guthrie mentioned the LINQ to SQL debug visualizer in passing. Now, he drills into that feature in more detail. Apparently, this isn’t a built-in feature of VS08 – it has to be installed separately. Make sure you do that, this seems like a must-have extension for LINQ to SQL development.
  • Jeff Atwood is worried that he spends more time talking about programming than actually programming. That’s exactly why I left evangelism to join MSIT.
  • I’m still way behind on blogs, but if I don’t post this soon, it’s going to be an afternoon coffee. I’ve also got this day job thing that I’ve been away from for several days. So more old news tomorrow.

Morning Coffee 86

  • Google announces Gears, a browser plugin for taking your web application offline. Developer docs are also available. TechMeme has lots more, but obviously this is yet another significant bow shot in the upcoming unified client platform war. By my count, there are four horses in this race: Microsoft with .NET and Silverlight, Adobe with Flash and Apollo, Google with AJAX and Gears and Sun with Java and JavaFX. Did I miss anyone? (via Dare Obasanjo and Scott Hanselman)
  • Alex James writes that REST is about intent and shows a pseudo-code sample posting multiple changes to a single endpoint as a way of demonstrating your intent that they be applied atomically. Andres Aguiar left a comment saying that Astoria does something similar. Personally, I like that model for transactions better than the transaction factory approach Jon Udell describes. But either way, you’ve moved beyond simple CRUD style services and into the world of protocol. Surfacing intent via protocol aligns with what Tim described as making the protocol explicit
  • Windows Live posted new beta versions of Writer, Mail and Messenger. I’ve been on an internal build of the new Writer for a while and I’ve really been impressed. There’s also a new Provider Customization API, so I can’t wait to see what the DasBlog folks do with that.
  • Scott Guthrie’s LINQ series continues, this time covering how to build the LINQ to SQL data model. Looks like they used the DSL toolkit to build the LINQ to SQL data model designer, cool!
  • Martin Fowler digs intoracc, a yacc-esque compiler compiler for Ruby. Looks interesting as a internal DSL example (better than the now-canonical rake example). But why is the sexy new language on the block using old school CFG’s instead of new hotness PEG’s?
  • Speaking of Martin, he writes about the opportunity Ruby presents to Microsoft, building on Scott Hanselman’s concerns that Microsoft is losing the Alpha Geeks. Sam Gentile also weighs in, suggesting that Microsoft is at the crossroads. Frankly, I don’t work in evangelism anymore so I’m going pass these links along without comment except to say that Scott, Martin and Sam are all folks I have much much respect for.

Morning Coffee 82

  • Dare reached a similar conclusion about Silverlight and Apollo that I did. But newly minted Adobe RIA evangelist Ryan Stewart writes that calling Silverlight vs. Apollo the next platform competition is overblown. However, he then reiterates my point that MSFT is moving in on Adobe’s traditional stronghold (aka the web) while Adobe is moving in on MSFT’s traditional stronghold (aka the desktop). The upshot is that both companies are trying to deliver a unified “client” platform that spans desktop, devices and browser. That sounds like “platform competition” to me.
  • Apparently I’m missing the this years compiler dev lab. 😦 John Lam is there, with slides from his talk on the DLR. Miguel de Icaza is there, with fairly extensive notes. Hopefully they will post talks like they did last year.
  • Speaking of languages, Scott Hanselman explains why he thinks Ruby is “the tits”. Personally, on the scale between “I can’t see where Ruby is such hot shit” and “Ruby is the tits”, I’m somewhere near the middle, leaning towards tits. I love the expressiveness of Ruby’s syntax, but I miss the static typing. Call me over the hill, but I like the compiler catching mistakes at compile time. I realize it’s not for everyone, but I like what I like.
  • This talk about Ruby’s expressiveness reminds me of something Larry O’Brien said in the wake of the IronRuby announcement: “I am surprised by the IronRuby announcement. I really thought we were going to see some form of Ruby#:Ruby::C#:Java. Although I’m happy, I was actually hoping to see a new language.” The expressiveness of Ruby that Scott describes (which is to say, not all of Ruby’s expressiveness) would be completely achievable in a statically typed language. Personally, I’d like to see that language…
  • My birthday is past, but I want a Lego Ice Cube Tray. (via Geekdad)

Morning Coffee 76

  • Dare Obasanjo sez Cool URIs Don’t Change. He’s got other versioning advice, but that’s the main takeaway. Good advice that dovetails nicely with “It’s the URI, Stupid“.
  • I usually agree with Jack van Hoof’s stuff, but I don’t agree with his thoughts on loosely coupled transaction processing. It’s much better than suggesting the use of 2PC system like WS-AT, but when he writes that “by design every action has a compensating action to undo the original action” I am reminded of Pat’s old post Why I hate the phrase “Long Running Transactions”. Personally, I’m a fan of using the Tentative Operation or Reservation pattern, described by John Evdemon. Note the lack of a transaction coordinator in that pattern.
  • Speaking of service anti-patterns, I wonder how we rationalize the following two statements, both from Microsoft, in documents published by my old team:
    • “CRUD operations are the wrong level of factoring for a Web service. CRUD operations may be implemented within or across services, but should not be exposed to consumers in such a fashion. This is an example of a service that allowed internal (private) capabilities to bleed into the service’s public interface.” John EvdemonPrinciples of Service Design: Service Patterns and Anti-Patterns, Readings in Service Orientation
    • “It is very common for Entity Services to support a create, read, update and delete (CRUD) interface at the entity level, and add additional domain-speciic operations needed to address the problem-domain and support the application’s features and use cases.” Shy Cohen, Ontology and Taxonomy of Services in a Service-Oriented Architecture, Journal 11
  • Ian Thomas wonders Does ERP suck? In a word: Yes! 😄 Seriously, I’m a strong believer in what Ian alternatively calls “unbundling” and “disaggregation” of monolithic enterprise systems – ERP is the most glaring example of such systems.
  • Jamie Cansdale is figuring out how to host Silverlight’s CLR outside of the browser. He’s already got a console runner up and running. He’s working of adding “Test With Silverlight” option to TestDriven.NET. You go Jamie.

Hawkeye on Silverlight

While I was crusing the zoo with the family on Monday, everyone else was focused on the big announcement coming out of MIX. Short version of the press release: the next version of Silverlight contains a small, cross platform CLR. As you might imagine, this is somewhat significant. Check out reaction from TechCrunch, Sam Gentile and Scott Hanselman.

A year ago, I wrote “Where else should the CLR live?” At the time, I was talking about XNA (which had just been announced) though I was aware of the plans around what I think is now officially called CoreCLR (got the name from Scott’s post). The first time I heard about this, it literally floored me. Part of me is surprised that in the year since then the news didn’t leak and no one figured it out. I mean, doesn’t it seem sorta obvious, in retrospect, that a Silverlight should run on CLR? I mean, if we can shrink the CLR down to fit on a watch, getting it into the browser seems like a no-brainer. On the other hand, it’s such a huge departure from “Windows, Windows, Windows” that I wonder if most people had (have?) a hard time wrapping their mind around it.

(Actually, in searching for CoreCLR, I discovered this post from last summer basically confirming “the CoreCLR team working on the Macintosh version of the MiniCLR that’s going into WPF/E”. So it did leak, but it seems to have been met with significant skepticism and didn’t make much news. )

Now that you know all about Silverlight and CoreCLR, go back and re-read my Virtuous Cycle of Virtual Platforms post. Especially the last paragraph (complete with the bad grammar):

If the end user isn’t committed to a virtual platform like Flash, then who is? The developers who build software for that virtual platform. This is Virtuous Cycle of Virtual Platforms between the platform and developers instead of the platform and users. In the old model, developers go where the users are. In the new model, users go to where developers are. And developers go where they can be most effective.

Silverlight vs Flash looks to me like the next big platform war competition. It’s just getting started, so you can’t say with any certainty which platform will be “most effective”. But early Silverlight reviews are pretty impressive. TechCrunch’s Michael Arrington wrote that Silverlight “makes Flash/Flex look like an absolute toy”. That doesn’t erase Flash Player’s head start in the RIA space, but it certainly makes catching and surpassing Flash sound feasible. I suspect most people didn’t think that sounded at all feasible last week.

Of course, while catching Flash may sound feasible, Microsoft is a long way from achieving that goal. While the point of my earlier post is that that market penetration doesn’t provide much advantage in the virtual platform market, Adobe does derive significant advantage from shipping nine versions of Flash while we haven’t quite shipped the first version of Silverlight yet. Also, while I’m fairly sure the number of .NET developers far exceeds the number of Flash developers (anyone have hard numbers?), I would also expect that the number designers using Flash far exceeds the number of designers using Expression (given that MSFT only just shipped Expression on this week). I believe an important facet to the Silverlight / Flash platform competition will be a race to woo the competitor’s core constituency. Can Microsoft woo more designers with Expression than Adobe can woo developers with Flex? We’ll see.

I’m also curious to see how people’s perspective of Adobe’s Apollo project changes in the wake of the Silverlight/CoreCLR announcement. From my perspective, both Microsoft and Adobe are trying to unify web and desktop development. Not surprisingly, each is trying to unify around the model where they’re stronger: Apollo takes the web development paradigm (Flash, HTML, AJAX and JavaScript) to the desktop while Silverlight takes desktop development paradigm (WPF, CLR) to the web. I’m sure you can guess which paradigm I think will be more successful, but how will the market react? Again, we’ll see.