Passion * Technology * Ruthless Competence

Friday, March 21, 2008

Will The Real DevHawk Please Stand Up?

Sometimes when I blog about politics, I'll get a comment like this:

As far as I'm concerned, posting about topics such as politics or religions on a blog that's supposedly about technology is just looking for trouble.

As I've pointed out before, DevHawk is not "a blog that's supposedly about technology". It's a personal blog - my very tiny corner of the web, if you will - so I feel totally justified writing about technology, politics, hockey and whatever else I want to. I figure that if you don't like it, you're free to unsubscribe and neither of either of us will lose any sleep over it.

The flip side is that DevHawk has traditionally been the only place where I exercise such lack-of-restraint. When my blog was featured on MSDN Architecture Center, I cross-posted relevant content to a separate blog so as to create an topic-focused and safe-for-work subset of my "real" blog. It was always a hassle - especially tracking comments to the same post in two places - and I quit doing it shortly after leaving the Architecture Strategy Team.

However, now that I'm using Twitter, it doesn't feel like DevHawk is "my only place" anymore. My blog == my writing, my del.icio.us == links I find interesting and my Twitter == real time updates. I use FeedBurner to include my del.icio.us links in my blog feed and twitterfeed to include the blog feed in my twitter feed. Therefore, Twitter is the only place to get an feed of all three. Obviously, Twitter's feed isn't full content, but in an always connected world, clicking the link to read the blog entry in the browser isn't that big a deal. Besides, you can always subscribe to both the blog and twitter feed if you want full content + real-time.

I haven't fully integrated Twitter into my daily life yet, though I'm getting there - for example I twittered the results of my hockey game last night. But unlike other social software sites, I think I'm going to be using Twitter regularly. I'm on Facebook, but there's too much "you've been bitten by a Vampire!" type spam to really use it for anything but pure entertainment. Twitter is more like blogging, where there's an information exchange with only the people I subscribe to follow. Also, maybe it's me, but there doesn't seem to be the same stigma if you stop following someone on Twitter compared to rejecting them as a friend on Facebook.

DevHawk has been "me", but now it feels like DevHawk @ Twitter will become "me" which leaves my blog to become my endless book. It's not a bad thing, but it does feel a little strange.

Posted By Harry Pierson at 12:31 PM Pacific Standard Time

Thursday, March 20, 2008

WebDev.WebServer PowerShell Function

In experimenting with NWSGI yesterday, I found I wanted the ability to launch the development web server that ships with Visual Studio (WebDev.WebServer.exe) from the command line. I hacked up the following PowerShell function and dropped it into my $profile so I can easily launch the web server in any directory any time I need. Thought I'd share:

function webdev($path,$port=8080,$vpath='/')  
{  
    $spath = 'C:\Program Files\Common Files\microsoft shared\DevServer\9.0\WebDev.WebServer.EXE' 

    $rpath = resolve-path $path 
    $params = "/path:`"$rpath`" /port:$port /vpath:$vpath" 

    $ignore = [System.Diagnostics.Process]::Start($spath, $params
    "Started WebDev Server for '$path' directory on port $port" 
}

There's probably an easier way to launch an exe with parameters than Sys.Diags.Process.Start, but it works. Using resolve-path is the key, that lets me pass in a relative path on the command line, but the script converts it to an absolute path in order to pass it to the webdev server. Also, I'm not sure I should have hard coded the path to the exe, but again it works and it's not like it's tough to change.

Enjoy.

Update: Tomas Restrepo pointed out an easier way to start the process:

&'C:\Program Files\Common Files\microsoft shared\DevServer\9.0\WebDev.WebServer.EXE' "/path:$rpath" "/port:$port" "/vpath:$vpath"

I couldn't figure out how to correctly launch the exe when the physical path to serve has a space in it. Thanks Tomas.

Posted By Harry Pierson at 2:39 PM Pacific Standard Time

Morning Coffee 159

As you might expect, these morning coffee posts are going to get more dev focused as well as more IPy focused.

  • One of the cool things we showed @ PyCon was Django running on the latest drop of IronPython. IPy lead developer Dino Viehand posted a blog entry (for the first time in 28 months!) showing the basic Python DB provider for SQL Server he put together. Hopefully, we won't have to wait another two and a half years for Dino's next post.
  • Speaking of IronPython, some of my new teammates pointed me to Michael Foord's Planet IronPython aggregate news site. Michael is IPy developer for Resolver Systems (the cool spreadsheet app hybrid I wrote about @ Lang.NET) and he's working on an IPy book.
  • Still speaking of IPy, Jeff Hardy dropped his first release of NWSGI, an port of Python's Web Service Gateway Interface spec to ASP.NET and IPy. I can't wait to see NWSGI combined Django running on IPy like Dino demoed @ PyCon. Congrats Jeff!
  • Scott Hanselman's post on Twitter reminds me that I recently started twittering myself. I haven't worked it into my daily routine, so it gets updated only occasionally, but after reading Scott's post, I'm thinking it's cooler than it appears on the surface. 
  • In surprising news, Microsoft is going to start collaborating with IBM's Eclipse Foundation, to make it easier to it easier to write apps for Windows in Java. I would think this is a very cool thing, but apparently Ted Neward - who's knowledge of JavaWorld far eclipses (ha ha) my own - thinks "the skin here is just too sensitive" and that this move might cause more controversy between MS and Java. However, he seems to imply the controversy would be between MS & Sun (Eclipse is obviously named as a jab @ Sun) rather than between MS & the Java community.
Posted By Harry Pierson at 10:08 AM Pacific Standard Time

Tuesday, March 18, 2008

Lunchtime Coffee 158

  • My friend (and hopefully my next representative) Darcy Burner is leading a group of congressional challengers in publishing A Responsible Plan To End The War In Iraq. I haven't read the plan itself in detail, but I sure like what I'm hearing about it.
  • Speaking of politics, Obama's speech today "A More Perfect Union" was fantastic.
  • Bioshock is getting a sequel. 'nuff said.
  • There's a new version of FolderShare out and I've got mixed feelings about it. On the one hand, I've been a regular user of FolderShare for a while so it's nice to see it get a face lift. On the other hand, it's been over two years since Microsoft bought FolderShare and we're only just now getting a new version, which is literally nothing more that a face lift - this version introduces no new functionality at all.
  • I was hoping to geek out vicariously via someone else's hacking around with Singularity. Luckily, Matthew Podwysocki provides just such an opportunity.
  • Looks like "Prism" is the new CAB. Glenn Block has two extensive posts covering a project overview and their first drop. I think it's interesting that the Prism team is focused on building a reference implementation, and letting the framework eventually fall out. Reading thru the description, it sounds awesome. However, based on the massive increase of inbox throughput I'm experiencing since I accepted the new job, I can't imagine I'll have time to play with it. Maybe Matthew will start playing with Prism too! (via Sam Gentile - btw, thanks for the kind words on the new job Sam!)
  • Speaking of Sam, he points to a series by Bob Beauchemin entitled LINQ to SQL and Entity Framework: Panacea or evil incarnate? With a title like that, who can resist reading the whole series? Err, I can because LINQ 2 SQL & EF performance just fell off my radar entirely. However I gotta agree with Sam's point that he "can't think of anyone more qualified than Bob" to tackle these questions.
  • Tomas Restrepo blogs his dev environment PS script as well as a PS fortune script. Personally, I use Chris Tavares' vsvars wrapper for PS, though I'll gladly take an "official" PS based dev environment.
  • I wonder if Ted Neward will get jumped for admiring Mort the way Nick Malik did. Given that Ted called himself Mort while Nick compared Mort to agile developers, I'm guess Ted will have to go back to his Vietnam analogy if he wants to create controversy.
  • Speaking of Ted, I agree with his point that conferences are about people. As a python pre-newbie (I figure I'll reach full newbie status by the time I actually start my new job), I spent most of my PyCon time connecting with people rather than trying to learn technical stuff. Also, I love Ted's WHISCEY acronym.
  • Speaking of PyCon, my soon-to-be new teammate Srivatsn Narayanan blogs his thoughts on PyCon. I'll try and get to my PyCon thoughts soon.
Posted By Harry Pierson at 11:49 AM Pacific Standard Time

Monday, March 17, 2008

DLR Resources & Jobs

I'm back home from PyCon, but between digging out my inbox, finishing transition reports and doing my mid-year career discussion I'm a little busy. But I did want to point at a couple of recent posts from the IPy team blog:

Posted By Harry Pierson at 11:25 AM Pacific Standard Time

Saturday, March 15, 2008

Things I Didn't Miss About Traveling

In my MSIT role, I only made two business trips, a training session with Thomas Erl and Tech Ed last year. I did travel for two presentations last fall, but both of those were on the conference's dime, not Microsoft's.

In other words, even though I haven't even officially started on the Dynamic Languages team yet, by going to PyCon this weekend I've already halfway to matching my total Microsoft sponsored travel of the past eighteen months. I used to travel all the time - the architect evangelist role I was in when I started this blog had about 35-40% travel. But boy I am rusty. Well, rusty maybe isn't the term, but I had forgotten how much of a pain it is to travel:

  • When I got to SeaTac Thursday, the Alaska Air desk was mobbed but everyone was just standing around waiting. Their computers had crashed and they were waiting for them to come back up. I asked an Alaska Air employee what the back up plan was, you know in case the computers didn't come back up. "None" was the response. <sigh> I (and everyone else) ended up wasting a good half an hour before the system was operational.
  • My flight was around 30 minutes late taking off and we had to circle Chicago O'Hare for a good 30 minutes before we could land. Plus it took 15 minutes for them to get the cabin door open.
  • Internet service at the conference and my hotel has been pretty iffy. I'm not surprised by problematic wireless access at a conference (though it was greatly improved by the end of day one), but I wasn't expecting hardline access in my room to be so bad. Speed has been pitiful when it worked at all. I called tech support (after the hotel staff uselessly sent up an "engineer" with a network cable) and waited on hold 30 minutes before giving up and leaving me a message. They called me back literally 3 hours later, by then it was after midnight. I was still up since I'm on west coast time, but come on!

Once I actually got here, the conference has been great (specifics on that in a future blog post). A lot more stuff than I'd like is going over my head so far, since I don't have a grounding in Python's language model yet. But getting to meet folks and chat face to face is the most important reason for going to these conferences in person - most of the presentation content will end up online anyway. I'm also getting to hang out with my new team - we all went for Chicago style deep dish Pizza last night. I think I'm going to fit in just great with them.

However, there's one other huge difference between traveling now compared to traveling "back then": I didn't have kids before. Leaving my wife behind was hard enough. Leaving behind my kids as well is even harder. Explaining to Patrick and Riley that "Daddy has a business trip" and so I won't be around for the weekend as usual was exactly no fun. I'm taking a few days off in the job transition to make up for it. Hopefully, I'll be able to bring the family along on a few trips in the future, like I did for DevTeach. OSCON, for example, has been in Portland five years - that's just a few hour drive from Redmond.

But maybe I should wait until I officially start the new job before planning my next trip.

Posted By Harry Pierson at 5:16 AM Pacific Standard Time

Friday, March 14, 2008

IronPython 2.0 Beta 1 Released

I'm sitting in the PyCon keynote right now, but I wanted to take a quick second to say congrats to my new teammates for getting the brand spanking new beta 1 drop of IronPython 2.0. You can find out what's new via the release notes.

Posted By Harry Pierson at 6:42 AM Pacific Standard Time

Tuesday, March 11, 2008

Joining the Dynamic Languages Team

After nearly two years in MSIT and six years focused on architecture across three different roles, I'm moving on to a new job in the Developer Division. In a couple of weeks, I'll be joining the Dynamic Languages team as a program manager. This is the team who ships IronPython, IronRuby, the Dynamic Language Runtime and Dynamic Silverlight. After seeing all the their cool work at Lang.NET this year, I just had to be a part of it.

As you might imagine, I'm pretty excited about this opportunity.

In the short term, I'll be primarily focused on IronPython, which is marching towards their 2.0 release. Towards that end, I'm attending PyCon 2008 in Chicago this weekend, though I don't officially change jobs for a couple more weeks. Longer term...well let's just say I'm going to be really focused on doing my part to get IPy 2.0 out the door and after that we'll see where things lie. This is a pretty big shift for me, so I'm explicitly trying to focus on short term work for the first six months in order to absorb as much knowledge as possible from the folks I'll be working with like Jim Hugunin, John Lam, Martin Maly, Jimmy Schementi and a bunch of others who I haven't met yet.

While this is a pretty big role shift, I haven't given up my passion for services and/or architecture. In other words, this isn't the last you'll hear about Kitchen Sink Variability, the ROI of EA or my perspective on Nick's Shared Integration Model. Obviously, with the job focus change, I expect focus on my blog to change as well. I'm not exactly sure how blogging fits into this new role, though the Dynamic Languages team is pretty open and many other members blog (as linked above) so I doubt I'm going anywhere. I'm going to try and keep blogging Morning Coffee, but I'm guessing it won't be quite as regular as it has been in the past. Unfortunately, I am going to stop coding F# for a while (sorry, Don!) I can't focus on learning two languages at once and obviously Python is my new top priority.

I wasn't in my MSIT architect role that long, but I feel that the "in the trenches" experience will serve me greatly for years to come. And of course, I will miss my teammates, especially Dale  who regular readers might remember from filling in around here occasionally.

Posted By Harry Pierson at 9:49 AM Pacific Standard Time

Monday, March 10, 2008

Morning Coffee 157

  • My Xbox 360 started flashing the dreaded Red Ring of Death on Friday. <sigh> I'm not going to have much time to play in the next week, so it's not the end of the universe, but I did have to dig an old DVD player out of the garage for interim duty.
  • My Caps really stepped in it over the weekend dropping two games they had to have and by most reports (aka according to my dad) that they dominated most of the way. Caps Playoff Math isn't as dire as say Clinton's Nomination Math, but they are three games back of the Hurricanes with twelve to play.
  • Ted Neward has a pretty good F# overview article in the most recent MSDN Magazine. I say pretty good because I wonder if someone with no functional programming experience will "get it". As much as I like F# and functional programming, I think some of the basic concepts don't pass Don Box's two beer test.
  • Speaking of Ted, somehow his feed fell off my radar (bad DevHawk!) and I missed several great posts like Modular Toolchains (note to Ted, check out A Research C# Compiler), Why we need both static and dynamic in the same language (note to self, check out Cobra) and The Fallacies Remain.... (recently, I'm the guy shouting about risks).
  • Speaking of MSDN Magazine, have you seen their new site redesign? I can't find any announcement of it, but man the site looks great.
  • If you missed MIX, the sessions are all online already. That was fast.
  • John Lam blogs about the availability of the Dynamic Silverlight bits. Apparently, Dynamic Silverlight includes more recent bits than the Silverlight 2 SDK, which does includes binaries and tools for IronPython, IronRuby and Managed JScript (quickstart). So you can get started with dynamic languages on Silverlight using the SL SDK alone, but I expect that the Dynamic Silverlight bits will be updated more regularly than the SDK.
Posted By Harry Pierson at 8:59 AM Pacific Standard Time

Friday, March 07, 2008

Morning Coffee 156

  • My hockey team won last night 4-2. No points for me, but I was even on the night. I did spend some time in the penalty box, but I was serving a two many men on the ice bench minor. We only had nine skaters, not enough for two full lines, so I'm pretty tired today. However, I'm not as tired as I was two weeks ago - that's a good sign.
  • Politics 2.0 watch: The Obama campain announced yesterday that they raised $55 million in donations in the month of February. That's significantly more than Clinton ($35 million) and McCain ($12 million) combined. Even more impressive is that $45 million of that was raised online, of which $40 million were from donations of $100 or less and $22.5 million were from donations of $25 or less. I guess in Politics 2.0, individuals contribute more than online punditry and video parodies of political commercials.
  • TextGlow is a Sivlerlight 2 based Word docx file viewer, created by James Newton-King. Nice, but what I really want is "SlideGlow", a SL2 based PPTX file viewer. (via DNK)
  • Speaking of Silverlight, Windows Live launched an experimental site called PhotoZoom which will let you create DeepZoom photo albums. (via LiveSide)
  • Charlie Calvert has created a home for Language Futures discussion on MSDN Code Gallery. If you'll recall, back in January he asked for input on Dynamic Lookup. Now he's looking for feedback on Call Hierarchy, a proposed VS IDE feature to help you visualize how your code flows. Great idea, but the Call Hierarchy dialog mockup isn't very intuitive. Couldn't we put these visualizations into the code editor window directly, like CodeRush does?
  • John Lam continues his Dynamic Silverlight series, first building a Flickr image browser in Managed JScript then showing how to integrate an IronRuby version of the Flickr image browser with an ASP.NET MVC app.
  • EdJez is inspiring. Subscribed. (via Brad Wilson)
Posted By Harry Pierson at 10:34 AM Pacific Standard Time

Thursday, March 06, 2008

Morning Coffee 155 - Dueling Conference Edition

  • If you don't want to watch the video of yesterday's MIX keynote but still want a sense of what happened, check out Tim Sneath's keynote liveblog. (via Sam Gentile)
  • Other announcements from Mix day one keynote that I missed (all via Tim Sneath)
  • Quick side note - Installing Silverlight 2 in order to check out the DeepZoom Hard Rock demo was smooth, fast and easy. It's hard to believe there's a whole CLR in there.
  • Now on to public stuff I saw @ TechFest:
    • One of the problems with touch screens is that your fingers obscure what you're trying to touch. Lucid Touch solves this by having you touch the back of the device, while rendering a virtual shadow of your hand - a technique they call "pseudo transparency". You really need to watch the video to "get" this. It's not currently feasible - the prototype uses a webcam on a foot long boom to track hand and finger position. However, they expect a future version will have some type of imaging sensors embedded in the body of the device.
    • The Berkeley Emulation Engine version 3 (aka BEE3) (video) is a high powered hardware simulator. Apparently several orders of magnitudes faster than conventional simulation. Frankly, most of this demo was over my head and I'm not really a HW guy. But it sounds really fast.
    • BLEWS or "what the blogosphere tells you about news". Given my interest in political blogging, it's not a surprise I was interested in this project. This tool categorizes news stories according to their reception in the political blogosphere. It provides a visualization showing not only how many links from a given ideological sphere there are, but how strong the emotions are running. Kinda like Memorandum on major steroids.
    • Music Steering (video) is an "interactive music-playlist generation through music-content analysis, music recommendation, and music filtering". Sort of like LastFM + Pandora on your Zune.
    • In-Depth Image Editing (team site) showed some cool photo editing software that reminding me of Microsoft Max.
    • MashupOS (paper) is a set of abstractions to improve the browser security model, allowing for isolation between blocks of code from different sources while still allowing safe forms of communication.
    • MySong (paper, video) "automatically chooses chords to accompany a vocal melody, allowing a user with no musical training to rapidly create accompanied music". Karaoke singers rejoice! Actually, it's pretty cool. You can adjust sliders to adjust characteristics of the generated music like "Jazz factor" and "Happy factor". Actually, I just want a happy factor slider in all my software.
    • I saw some cool projects from the Socio-Digital Systems group and MS Research. My wife is a sociologist and always says there's no way she could ever get a job in the big house. Maybe after she checks out this team, she'll stop thinking that.
    • The Worldwide Telescope booth was so crowded that I couldn't get anywhere near it. From what I could see from standing in the back, it looked fantastic. It's not live yet, but you can check out the video from the TED conference to get a sense of it.
Posted By Harry Pierson at 9:51 AM Pacific Standard Time

Wednesday, March 05, 2008

Morning Coffee 154

  • Did you see yesterday's Dilbert cartoon? Classic.
  • MIX isn't the only Microsoft conference this week. It's also time for the annual MS Research TechFest conference. It actually started yesterday, with a keynote from Rick Rashid and Craig Mundy (available on demand). I'll be heading up there later today and will blog everything I saw that is public, like I did last year. In the meantime, you can check out some cool MS Research projects on the TechFest video page.
  • Speaking of MS Research, they've published the Singularity source code (for academic and non-commercial purposes) on CodePlex. Singularity is research OS "focused on the construction of dependable systems". I've wanted to play with this, but I've never had the time. Frankly, that hasn't changed, but now that it's available to the community, I'm hoping I can live vicariously thru other people hacking around with it.
  • Some announcements coming out of MIX won't be a surprise to anyone:
  • Here some primarily "new" news from MIX:.
    • I'm not sure which team owns it, but I'd say the biggest previously-unannounced news was SQL Server Data Services (aka SSDS), a "highly scalable, on-demand data storage and query processing utility services." In other words, SQL in the sky. There's a free beta sometime this month you can sign up for. Very cool, though no word on what it's going to cost. If you're interested in this, I'd keep an I on the Data Platform Insider blog.
    • John Lam announces the Dynamic Silverlight extension that lets you run DLR languages on Silverlight. Given that they talked about this last year, I'm not sure it's really "news", but John provides lots of gory details so it made the cute. But are they really using "DSL" as the acronym for this? Guys, that acronym's already taken.
    • Mary Jo Foley has a scoop on Silverlight for Nokia Symbian mobile phones.
    • There's a new beta of Expression Studio 2 as well as a separate Expression Blend 2.5 preview for Silverlight 2. Soma has the details. This isn't really a surprise, but I hadn't seen any news on new versions of all the Expression Studio products.
Posted By Harry Pierson at 11:27 AM Pacific Standard Time

Experience vs. Change

My wife and I usually watch The Daily Show a day late and yesterday was no exception. Hillary Clinton was the guest Monday night in advance of yesterday's big primaries in Ohio and Texas which Jon Stewart called the "Ultimate Last Final Showdown (Unless Hillary Wins One or Both of the Larger States)". If you missed it, you can watch the interview online (part 1, part 2).

I haven't seen much 'raw footage' from either Democratic candidate in quite some time, and through most of the interview all I could think was "I may have an Obama flair on my website, but I'd be happy with Hillary". However, there was a section of the interview where she was trying to draw a distinction between her and Obama that didn't sit well with me. She's been on this whole "action not words" kick of late, trying to take the wind out of Obama's sails. For example, in her speech last night in Ohio, she said this:

Americans don't need more promises. They’ve heard plenty of speeches. They deserve solutions and they deserve them now.

America needs a president who’s ready to lead, ready to stand up for what's right even when it's hard. And after seven long years of George W. Bush, we sure are ready for a president who will be a fighter, a doer and a champion for the American people again.

To be clear, this kind of talk doesn't bother me on it merits. Some folks aren't happy with Clinton because she's "dumpster diving" or they think that she's ripping the party apart. I think she's fighting for her political career and I would hope any Democratic candidate would go down swinging as it were. Besides, as Howard Dean said, the negative campaigning we've seen so far is a "tea party" compared to what the Republicans will throw at the eventual nominee. I'd also make the argument that it's better to get as much of this stuff "out there" now so that it's old news by November. That that doesn't kill you makes you stronger, right?

However, I do think Clinton is painting herself into a general election corner with this experience vs. change strategy.

I get why Clinton played the experience card - she had to do something to take the wind out of Obama's sails after 11 straight victories. If the popular primary vote results from Tuesday are any indication, the experience message is working for her. So I would expect we'll hear a lot more about how we "don't need more promises" but that we need a president "who's ready to lead" in the next seven weeks ahead before the Pennsylvania primary.

However, if she does win the nomination, she'll have to to argue the exact opposite position in the general election. I'm certainly no fan of McCain, but there's no question his 25 years in Washington will cast him as the "experience" candidate (even though he hasn't accomplished much in that quarter century). Plus, with the Howard Dean already framing McCain as "four more years of George Bush", it's pretty obvious either Democratic candidate will be cast as the "change" candidate.

Will Clinton have credibility running as the candidate for change when she's spent the spring arguing that experience matters most? I don't know. Combined with the rabid anti-Clinton (both her and her husband) emotions her candidacy is assuredly going invoke among conservatives, I'm much more concerned about her ability to win in November than Obama's.

In the end, I doubt it will matter. Obama's roughly 160 pledged delegate lead seems pretty insurmountable. Even with Clinton's impressive victories yesterday, estimates are that she's going to only net around ten delegates total, meaning the delegate math is largely unchanged. With only 561 delegates left in the remaining twelve contests, she would need to win almost 65% of the remaining delegates just to draw even. Frankly, that's not possible given proportional delegate allocation method that Democrats use. At this point, her only hope is to cut the margin as much as possible and hope the undeclared superdelegates break her way. Hope isn't a strategy, but I don't see how she has any other option.

Posted By Harry Pierson at 9:24 AM Pacific Standard Time

Tuesday, March 04, 2008

Kitchen Sink Variability

Nick Malik forwarded the last ZapFlash newsletter to me. I gave up on analyst newsletters like this long ago, but Nick shared it with me because it "hit directly on what [Nick] thinks an ESB is and does, and why an ESB is not a hub." I'm not a fan of the whole ESB concept and frankly this article didn't do much to change my opinion. However, this passage did sorta jump out at me.

[T]he main concept of SOA is that we want to deal with frequent and unpredictable change by constructing an architectural model, discipline, and abstraction that loosely-couples the providers of capability from the consumers of capability in an environment of continuous heterogeneity. This means that we have to somehow develop capabilities without the knowledge of how they might be used...[T]his means that we need to have significant variability at a variety of aspects including the implementation, infrastructure, contract, process, policy, data schema, and semantic aspects. Having this variability allows companies to have stability in their business and IT even though the IT and business continue to change. Agility, predictability, reliability, visibility, and cost-effectiveness all become that much more realistic when we can achieve that sort of abstraction.

My reading of this is that the author, Ronald Schmelzer, is advising organizations to introduce "significant variability at a variety of aspects" in their services in order to deal with what he openly admits is "unpredictable change".

This sounds like a mind-boggling awful idea to me.

At it's heart, any practical design - including a service-oriented one - needs to be an exercise in tradeoff analysis. You can't add "significant variability" without also adding significant complexity, effort, time and cost. So the real question is: Is the significant variability Ronald describes worth the inevitable tradeoff in significant time, effort, cost and complexity?

I seriously doubt it.

Since unpredictable change is - by definition - unpredictable, you have no way of knowing if you will actually need any specific aspect of variability down the road. Ronald's strategy - if you can call it that - seems to be let everything he can think of vary except the kitchen sink. That way, when said unpredictable change happens, you might get lucky and have already enabled the variability you need to handle the change with a minimum of effort.

Getting lucky is not a strategy.

Chances are, a specific aspect of variability won't ever be needed. In other words, most of the the time, effort and money you spent building these aspects of variability will be wasted. And remember, this isn't just a one time cost - the increased complexity from including this significant variability means you'll pay the price in additional time, effort and money every time you have to change the system.

I wonder if Ronald is familiar with the term "You Aren't Gonna Need It". He talks about increasing business agility, but he eschews many of the principles of agile development. I realize they aren't the same thing, but I have a hard time believing that they are so diametrically opposed that a core principle of agile development should be readily violated in order to enable business agility.

Maybe it's cliche, but I try to always come back to "What's the simplest thing that could possibly work?". I would think that building a ton of currently-unnecessary variability into your system on the off chance that someday you'll need it fails the "simplest thing that could possibly work" test spectacularly.

Personally, given the choice of taking advice from Ward Cunningham or pretty much any enterprise analyst on the planet, I'll pick Ward every time.

Posted By Harry Pierson at 5:08 PM Pacific Standard Time

Play Ball Script in F#

Scott Hanselman wanted an F# version of this Play Ball! round-robin scheduling PowerShell script. Here's what I came up with:

let randomize list =
    let random = new System.Random()
    let list'= 
        list 
        |> List.map (fun i -> (random.Next(), i))
        |> List.sort (fun (i1,_) (i2,_) -> Int32.compare i1 i2) 
    let (_,list'') = List.unzip list'
    list''

let rec makeGames teams =
    match teams with
    | first :: rest ->
        [for team in rest -> (first, team)] @ (makeGames rest)
    | [] ->  []

let teams = ['a'..'f']
let games = teams |> makeGames |> randomize

MakeGames uses pattern matching to see if the list of teams is empty or not. If the list is empty, we simply return an empty list of games. If not, we use F#'s list comprehension syntax to generate a list of games between the first team in the list and each of the remaining teams. This list is combined (via the '@' operator) with the results of calling makeGames recursively. This generates the un-randomized list of games.

Once we have the list of games, we need to randomize it. I ported the randomize function above over from a version I found in Erlang. Basically, it attaches a random number to each element in the list to be randomized, sorts by those randomly generated numbers, then throws the numbers away and returns the just the randomized list. Note, the Erlang version I referenced runs randomize log(length of list) times to ensure a fair shuffle, but I thought once would be enough for this simple script.

(Note to F# team: perhaps List.randomize should be a part of the standard F# library?)

Posted By Harry Pierson at 12:58 PM Pacific Standard Time

Lunchtime Coffee 153

Posted By Harry Pierson at 12:28 PM Pacific Standard Time

Monday, March 03, 2008

Morning Coffee 152

  • I was slammed Friday, so I didn't get a chance to post the results of last Thursday night's hockey game. I'm sure you've all been eager to hear. We lost, bad, 8-2. Personally, I was -3 and had no points, but I played much better than last week. We had three full lines of forwards, which was a big help, but I have started to find my ice-legs so to speak.
  • Charlie Calvert has the now-definitive list of LINQ to Everything. Of all of them, I found LINQ over C# fascinating, especially given my recent efforts in parsing.
  • Chris Tavares blogs about a distributed source control system called Bazaar. Unlike most version control systems, Bazaar is distributed which means you can use it without a server. According to Chris, you can share branches as easily as mailing a file. I wonder if you could make Bazaar work over a P2P network.
  • While looking up the MSDN link for the previous coffee item, I noticed an entire new section in the MSDN Library for Open Protocol Specifications. Not much to add, just wanted to highlight their existence.
  • Admitted non-designer Scott Guthrie shows off using the new version Expression Blend to build a Silverlight 2.0 app. Personally, I was most interested in seeing some of the new of built-in controls.
Posted By Harry Pierson at 10:58 AM Pacific Standard Time

Sunday, March 02, 2008

What is the ROI on EA?

Nick Malik took me to task for my suggestion that Enterprise Architecture provides no value.

You implied that I could not answer the question, "How does EA demonstrate value." That is not true. I can readily answer the question, from my viewpoint, but I chose instead to *ask* the question to see if my answer matches the various answers that I may hear back. I got a lot of valuable input, both on the blog and on the forum on Shared Insights where I asked the same question.

You are the ONLY person to reply and say that EA provides no value.

Perhaps you should read about the role and value of Enterprise Architecture from established sources before you bash the entire profession.

EA is real, my friend. It is as real as city planning. The only major city in the US without city planning is Houston. I have visited a few times, and I can honestly say that without city planning, they are a mess.

Nick also provided a link to an article in Architecture and Governance magazine. I was going to read it, however their web site is down as I write this. I feel comfortable interpreting that as a sign that I'm right... :)

Actually, Nick's got a point. It was wholly unfair of me to say that EA provides no value. However, I do believe the return on investment of enterprise architecture is fairly low, perhaps even negative. In other words, I shouldn't have argued that EA doesn't deliver any value, but instead that I don't think it delivers enough value, given what we spend on it.

Architecture ROI is hard enough to calculate on a project by project basis. I would argue that measuring it at the EA level is probably impossible, but I think that's both a blessing and a curse. It's a curse because EA can't justify their existence in terms the business can understand. It's a blessing because if EA is running as deep in the red as I suspect they might be, the company would cut EA entirely in a heartbeat.

Since Nick started my asking a question about value, let me turn it around and ask some questions of my own:

  1. How much do you think your organization spends on EA per year?
  2. What do you think your organization's EA ROI is?
  3. What can you do to improve your organization's EA ROI?
Posted By Harry Pierson at 11:52 PM Pacific Standard Time
Change Congress
Recent Bookmarks
Tags .NET Framework (2) __clrtype__ (9) ADO.NET (5) Agile (7) AJAX (3) Architecture (288) Guidance (6) Interop (2) Modelling (61) Patterns (7) Process (4) SOA (94) Web Services (5) ASP.NET (25) Async Messaging (2) Azure (1) Battlestar Galactica (3) BI (2) BizTalk (4) Blogging (117) dasBlog (11) Podcasting (4) BPM (1) C# (11) C++ (4) Capitals (5) CardSpace (3) CLR (2) CodePlex (1) College Football (10) Comedy Central (1) Community (81) Concurrency (6) Consumer Electronics (1) Database (13) Debugger (23) Dependency Injection (2) Development (122) C Plus Plus (1) Embedded (5) Lanugages (42) Media (2) P2P (11) Rotor (1) SharePoint (6) SOP (3) DIY (1) DLR (25) Domain Specific Languages (15) Durable Messaging (5) Dynamic Languages (12) Dynamic Silverlight (1) Education (3) Enterprise 2.0 (1) Entertainment (14) ETech (15) F# (51) Functional Programming (17) Game Development (2) Guidance Automation (3) Hardware (8) HawkCodeBox (1) HawkEye (3) Health (1) Hockey (31) Home Electronics (1) Home Network (5) Hosting API (1) Humor (5) IASA (1) Idempotence (3) infrastructure (5) Instrumentation (4) Integration (2) IronPython (112) IronRuby (16) Java (2) Job (3) Kodu (1) LangNET (2) Lightweight Debugger (5) LINQ (23) Live Framework (3) Live Mesh (2) Lost (1) Master Data Management (1) Media 2.0 (6) Microsoft (31) MIX06 (2) Mobile Phone (1) Monads (5) Morning Coffee (172) Object Oriented (4) Office (5) Open Source (8) Open Space (2) Operations (3) Other (135) Art (1) Books (1) Family (33) Games (18) General Geekery (27) Home Theater (1) Movies (23) Music (20) Politics (3) Society (1) Sports (37) Working at MSFT (19) Parallel Programming (3) Parsing Expression Grammar (16) patterns & practices (2) PDC08 (5) Politics (48) Polyglot (3) PowerPoint (2) PowerShell (39) Presentation (7) Projects (1) HawkWiki (1) Pygments (5) Python (6) Quote of the Day (4) Refactoring (1) Research (2) REST (18) Reuse (5) Robotics (2) Rock Band (4) Rome (5) Ruby (23) Ruby on Rails (1) Sci-Fi (2) Scripting (4) Security (3) Service Broker (14) SharePoint (2) Silverlight (20) Social Software (1) Software + Services (2) Software Design (2) Software Engineering (1) Software Factories (11) Software Industry (1) Space Elevator (1) Spark (1) SQL Server (2) Stephen Colbert (1) TechEd (7) TechEd06 (1) TechRec League (1) Television (6) Travel (7) Unified Client (1) Unit Testing (4) USC (1) UX (1) Virtual PC (2) Visual Basic (3) Visual Studio (20) Volta (2) Washington Capitals (37) WCF (31) Web 2.0 (67) Web Services (7) WF (21) Windows (3) Windows Live (29) Windows Live Writer (3) WPF (8) Xbox (1) Xbox 360 (54) XML (11) XNA (15) Zune (4)
Disclaimer: The information in this weblog is provided "AS IS" with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my opinion. Inappropriate comments will be deleted at the authors discretion.