Gray's Matter
Justice Gray - North America's favorite metrosexual software consultant

I Wish These People Updated More Than Once a Year

Recently the industry was rocked to its very foundations when yours truly gave the most spectacular interview (technical or otherwise) since "Macho Man" Randy Savage was asked what his chances were of wresting the Intercontinental title back from the Honky Tonk Man.  My thought-provoking discourse led to an equally thought-provoking discussion with Missisauga's local jello wrestling champion, Rob Windsor, who took umbrage to my claim that "70% of the industry is fraudulent", until I had a chat with him and promised to sign his back with the message
"Hello person of interest!
This states we have spoken,
-Justice Gray"

In the event anyone else was looking to strip 3/4s naked and wrestle me into submission as Rob had expressed, I thought I would provide some additional context to my statement.

The self-proclaimed presenters/teachers/thought leaders that I threw into the fraudulent category fall into three groups:

1) Technically fraudulent: People that perform half-baked presentations or demoware that almost exclusively shows cheaply regurgitated Microsoft slide decks without any sort of real-world relevance
2) Motivationally fraudulent: Those who do presentations simply so that they can either jack up their billing rate by $20-$50 an hour or to enjoy cheap/free vacations to cities of their choice without any real thought for making the industry better
3) Complete shysters: People who fit into *both* 1 and 2

When I said that 70% of the presentation circuit is fraudulent (and let's say for sake of argument that I could over by at least 5 percent) I was not referring to people exclusively in category #1; I was referring to people that fit into *any* of the three categories.   I personally believe that there are more people in category 2 than the others, Your opinion on which is highest might differ; however, I think we can all agree that regardless of percentages the presentation side of our industry (much like any industry's presentation side) has some difficulties. 

Rob did make one great point that I wanted to highlight here:
"Can you truly say that there is no value in someone who is presenting good content but doing so for selfish reasons?"

This is a bit of a sticking point to me but I do recognize it as an issue I have personally.  Call me a hand-holding, group-hugging, free-loving whatever but I obviously believe that it would be best if everyone who was involved in presenting, speaking, or teaching did it because they have passion, something to share, and truly want to be of benefit to the community and to help it get better.  I am not naive enough to believe that anyone involved in the industry is 100% altruistic but I do believe that these should be someone's primary motivations and not "I really need to get a Microsoft MVP award so I'd better run around and do some presentations."  For sure, there are those that will still get value out of a presenter will good material who does so out of greed, like that notorious gloryhound Scott Bellware.   I just believe strongly that presenters shouldn't be doing what they do for increasing their RFP bids or for all-expenses paid trips to Vancouver.  Actually, scratch that last one because I would run over your mother* to have an all-expenses paid trip to Vancouver, but I trust my point is made. 

I was surprised to see how many of you thought I had struck a chord with my statements - perhaps the interview wasn't quite as controversial as I originally thought it to be!  Thanks to all of you for the feedback and discussions we've had regarding these subjects over the past week or so.  In the end it is the dialogue and discussion with many of you and the actions from our community that will eventually spring forth from it that are truly important.

* yes, *YOUR* mother

P.S.  I was just kidding Scott!  You don't need to burn your "I tried to give Justice Gray my hotel key at DevTeach" T-shirt








Friday, May 23, 2008 #


If you miss Hot Developer Corner (and who doesn't?), well, I can't help you here - I am still lining up subjects!  However, Mike Duncan has just published an interview with none other than *yours truly*.  An interview that is TOO HOT FOR THIS BLOG.  An interview in which the following questions are answered:

  • Exactly what percentage of the .NET speaking circuit is fraudulent?
  • Is tech evangelism where developers go to die?
  • How WYSIWYG is Justice, really?

All of these would be minor trifles in the pond, but this interview includes the answer to a question *SO* unthinkable it has never been asked...

Who is the one man in the industry* who actually has *BETTER* hair than Justice Gray??

Disclaimer: I am not responsible for the dramatic alterations in your career, your relationships, and your life that will result.  I am merely...the messenger.

* Aside from George Clingerman, who asked not to be counted as a man for the purposes of this interview


Monday, May 05, 2008 #


justice_gray_MicrosoftMVP2.jpg
Obviously there are many who would *claim* to be a friend of Justice Gray, but few that have the credentials to prove it


As many of you know, at the beginning of this year I announced that I would be taking a sabattical from regular blogging.  Seeing as the fabric of North American society would likely unravel without regular posts about , I decided to open up the hallowed doors of Gray's Matter to anyone who wanted to post about how I shaped their very existence, thus
a) leaving everyone with nothing but incredibly inspiring essays for a two-week period
b) skyrocketing the average post quality of this blog by a factor of ten million

At this time, I'd like to thank the following people for participating in this venture.  Clicking on the name will bring you to *their* tribute post, from which you can also find links to their own blogs:

George Clingerman (contest entry)
Ridley Thunder (contest entry)
Russell Ball (contest entry)
Donald Belcham (contest entry)
Kyle Baley (contest entry)
D'Arcy Lussier (entry 1, and entry 2)
Dave Woods (contest entry)
Ben Walters (who did not make a post, but created the image you see above - unfortunately the contest is not open to extended family, Ben!!  But once you marry my sister-in-law I just *may* allow you to call me your friend IN PUBLIC!!)

Choosing between these posts is like parents choosing their favorite child - they *say* it's hard but really it ends up defaulting to whichever child is the best looking.  So with that, I can now officially announce that the *winner* of the "What Justice Gray Means to Me" contest is...

actually *two* people!!

That's right, in the end I could not narrow it down to just *one* person.  So let's give a big round of applause to winner #1:

Russell Ball, The Caffienated Coder

Some would suspect that Russell Ball only won on the basis of the sheer amount of flowery praise and adulation in his post.  To those nay-sayers, I point you to the fact that I recieve claims of undying admiration, love, and sexual attraction from friends, peers, co-workers, and various cashiers on an almost hourly basis.  Let your jealousy rest!  The true reason Russell is a winner in this contest is due to him writing a post that I can completely re-use as an "About Justice Gray" post!  Thanks very much to Russell for his participation, but most of all for saving me work!

Obviously for an entry of this magnitude, even a "Potential Friend of Justice Gray" certificate just isn't enough.  So, considering that Russell is very big on coding to music, he *also* receives:

A Hannah Montana 2 double CD!!

This isn't just any Hanna Montana CD set, either - it's apparently a double CD complete with tunes from another famous artist, Miley Cyrus!!! 

Congratulations, Russell - with this and the "Potential Friend of JG" certificate coming your way, you have now reached a level of superiority among software developers only held by *three* other people - Martin Fowler, Ben Schierman, and the *other* winner of the "What Justice Gray Means to Me" contest...

Jeremy Miller of codebetter.com!!!

How is this even *possible*?  After all, Jeremy Miller isn't listed among the people above who originally posted an entry on this blog!  But he did post an entry - just not on *this* blog.

Jeremy's post back in January, entitled "Should I Blog?" appears at first glance to simply be helpful encouragement motivating other software developers to start adding their voices to the community.  However, upon reading to the *end* of the post, the massive twist is apparent: this entire essay was nothing more than a lengthy tribute to yours truly!!  And I quote,

"
And finally, if you're really, really lucky and good, you can become a cultural force like Justice Gray." 

For this final line, Jeremy is not only a winner of this contest, but also a winner at *life itself*.   Congratulations to you Jeremy - I know that you have toiled and sacrificed through your entire career for this very moment.  My only regret in giving you this award: now that you've achieved all that there is to achieve, your retirement from the industry is likely imminent.   

For the culmination of Jeremy's decade-long quest, we not only have a "PFOJG" certificate, but *also*...

The High School Musical Novel, Stories from East High #7 "Friends 4Ever"!!!

This book, like the Hannah Montana 2 CD, is sitting on my desk right now, pristine and unopened.  However, I felt it my civic responsibility to share the back of the book with this audience, so you can all share in the thrills that await Mr. Miller:

"There's a new girl in town!!

When a student names Ashley enrolls at East High, Gabriella, who has plenty of experience transferring to new schools, offers to show her around.  But Gabriella soon begins to wonder if Ashley is using her to get closer to Sharpay and Troy.  After all, Sharpay is throwing a birthday bash at the local country club - the hottest invite of the year!  And Troy's such a cutie - who wouldn't try to catch his eye?  Will Gabriella find that Ashley is true friendship material, or just plain trouble?"

Before you ask, the answer is NO - I do not know how this book ends!  For answers to these questions (and anything to do with High School Musical), you'll have to ask Jeremy himself.

"But what about me?  WHAT ABOUT D'ARCY!??!"

Many of you know that D'Arcy Lussier gave a terrifying magnum opus on this blog several months ago that mentally scarred a nation.   For those who have not read it, I encourage you not to unless you are looking to see photographs of Bil Simser's genitals.  Let's just leave it at that and move on.

However, D'Arcy, knowing that a "Potential Friend of Justice Gray" certificate was the *only* thing that would get his peers to finally take him seriously as a software developer, made a *second* post, this one a little less drug-addled but no less obsequious.  Unfortunately for D'Arcy this post was *also* disqualified as he somewhat plagarized George Clingerman's feel-good inspirational message of the century.  Yes, it was his own spin but I couldn't risk George shivving D'Arcy to death at the MVP Summit.  You might even say that my refusal to give D'Arcy a "Potential Friend of Justice Gray" award saved his life.  No need to thank me - I perform humanitarian feats like this all the time.

However, *very* recently D'Arcy went all out in his attempt to get some sort of "in" for this contest.  You would think that the dedication of "I Touch Myself" to me would be quite significant, but it's unfortunately the (at last count) 1,214th time someone has dedicated this song to me before belting it out.  However, D'Arcy has made history as the first *man* who has done so, so it deserves some recognition.  As well, D'Arcy put together an audiovisual tour de force that we'll talk about in our next post - some moments were funny, other moments were touching, but every moment was inspiring, considering it was entirely dedicated to my favorite subject ever - myself.  Really, there was no way I could let that go without giving him *some* sort of award.

Unfortunately, giving D'Arcy a "Justice Gray" award for this so late in the contest (remember, this ended back in January) would be unfair to the hard work and the tears that Russell Ball and Jeremy Miller lovingly crafted into their essays.  While originally planning to send D'Arcy a chocolate medal saying "Thanks for participating", I eventually decided to give him an award that benefits more than one person in the community:



This is a win for everyone involved - D'Arcy recieves his first certificate of significance, and Donald Belcham recieves his very first friend.   You'll note that there is no secondary prize listed on here, although previous recipients of the "Potential Friend of Justice Gray" award know what that award is - trust me when I say to you, D'Arcy, perhaps you are better off not claiming it!

Note to all winners: please send me your snail-mail address and I will be happy to provide you with your prizes - otherwise I will send them to you for DevTeach!

Thursday, April 24, 2008 #


Although my sleuthing skills are truly legendary, I can't take credit for this disturbing discovery.  No, it was head detective Shane Soldice (and his assistant Kelly Cassidy) that originally pointed out the strange nature of the relationship between Scott Guthrie (grand poobah of Microsoft's developers) and D'Arcy Lussier (grand poobah of the All-You-Can-Eat-Chicken-Wing-Night at the local Winnipeg pub):



I can't help but think that this puzzle would have been better left unsolved*.

* At least Scott looks happy, I guess


Wednesday, April 16, 2008 #


circular_intersection.png
Thanks to D'Arcy Lussier's liveblogging, we have a glimpse as to what gets discussed when Microsoft MVPs all get together to chat.  As you know, I am keenly interested in the Microsoft MVC (as I am using it fairly heavily right now, and on paid projects to boot) and thus was also keenly interested in some of the events going on this week.  What would the development community say about the MVC? What would Microsoft have to say about the MVC?    Apparently the answers are "not too much" and "marketing, marketing, marketing", respectively, given D'Arcy's posts.

The first ominous signs began with this snippet from Day 1:
""We had alot of good discussion, but what I really got out of it was how muddled the message really is around ASP.NET. First we had ASP.NET and all the touted drag and drop goodness...then we had some attempts at guidance and standards...now we're getting MVC, and there's clearly some confusion about how everything fits, and what should be used when. This is something that obviously we have to start talking up within our communities and trying to figure out."

So...there's a Microsoft conference chock full of Microsoft's *hand-picked* community leadership and Microsoft employees.   Out of this large group of people *no one* can figure out where everything fits together? 

Of course, I panicked for naught, because Microsoft was there to straighten this message out later in the day with *brand new* guidance about the MVC.  Just some of the notable quotes included:

"MVC is a car, WebForms is a motorcycle*"
"MVC is just an *alternative*"


I couldn't figure out just where I had heard this before, until I realized that it was actually from every single presentation or screencast Microsoft has pushed out since its announcement!  Is the wholesale regurgitation of blog posts and webcasts the kind of guidance being given to MVPs in need? 

I don't want to be a massive downer about this sort of thing.  For certain the MVP summit is a *fantastic* opportunity for some of the thought leadership in the Microsoft community to come together and hash out some great directions for the future.  Am I wrong for assuming that in this case, the direction seems a little bit less than forward?

* It could be vice versa, I always get them confused because WebForms and MVC are of course SOOOOOOOOOOO ALIKE

Wednesday, April 16, 2008 #


I have never quoted so liberally from another person's post before, but extreme events require extreme measures. 

Here's the most recent post from my friend and fellow exec of the Edmonton .NET User Group, Donald Belcham (also known in both development circles and BDSM communities as the Igloo Coder). 

"I figured I should put up a bit of info about my plans for this spring's conference season.  So here they are.

April 14 - 17, MVP Summit...and of course Party with Palermo.  I'm only an attendee at this one, but I'm sure it'll be an interesting experience going to the mothership for the first time.

April 18 - 20, Alt.Net Seattle.  Again, only an attendee...or is anyone 'only' an attendee at an Open Spaces conference.

May 12 -16, DevTeach Toronto.  Speaking at this one.  As always I'm sure it'll be a great conference which will allow you to get quality face time with speakers and other people with great ideas.

May 19 & 20, The Great Developer Summit Bangalore. This one is going to be very interesting.  I've never been to India.  I'm from a wee-tiny-hick-town, not a city with many millions in it.  I don't do well in heat.  What I am looking forward to is seeing how passionate, pragmatic and skilled our development counterparts 1/2 way around the world are."

Now, it's easy to misread this as a simple "Here's my travelling schedule for the next month or two in the event you want to share a beer with me", instead of perhaps one of the most courageous posts of 2008.

Tragically easy.

Luckily for everyone, especially Donald, I am a *master* of critical analysis.  Let's re-read that last paragraph with the important points highlighted.

"May 19 & 20, The Great Developer Summit Bangalore. This one is going to be very interesting.  I've never been to India.  I'm from a wee-tiny-hick-town, not a city with many millions in it.  I don't do well in heat.  What I am looking forward to is seeing how passionate, pragmatic and skilled our development counterparts 1/2 way around the world are."

That's right - Donald Belcham is trying to tell you all that in addition to being a software development legend, he also suffers from male impotence.

You can laugh if you like, but to share this story with the entire internet takes a lot of testicular fortitude - certainly ironic considering the subject.  On its own, this post seems rather strange - after all, wouldn't you just go see a doctor rather than tell the entire development community?  But if you take into account his previous post, you can see the *true* message my good friend is trying to share:
 
It doesn't matter whether you have successfully migrated your team from VSS to Subversion if you don't have functioning genitals.

I'd like to take this opportunity to rally the community's support.  With the Microsoft MVP Summit only one week away, I want my friend to be able to hold his head high - it might be the only part he can!  It is now *my* turn to plead - to all of you MVPs out there, I am hoping you will be able to at least buy Donald a drink (if not several kilograms of Viagra) in order to show your support for his devastating disorder!

I have also made a small image you can handily post on *your* web site, or print and wear on a physical button if you want to show Donald you care about his well-being.

Don't Worry Donald Belcham

And to Donald: as always, you don't have to thank me for bringing attention to this - it's just what friends do!  We've got your back buddy!


Saturday, April 12, 2008 #


No, this isn't me joining the party late - in fact I've titled this post to be innocuous enough that most people are just going to skip over it in their blog-reading. 

Here's the revelation - one of the people who confessed to being the ALT.NET Pursefighter on April the 1st (no, I'm not linking to them, you'll have to find out each and every person I was referring to), actually *is* the ALT.NET Pursefighter.

April Fool's indeed, because that author certainly fooled you twice over!

Friday, April 04, 2008 #



Don't worry, I'm just getting this out of the way pre-emptively

Scott Hanselman's fourth screencast *confirms* that the interfaces and abstractions made as part of the MVC (HttpContextBase, IHttpRequest, IHttpResponse, etc.) will not be put into the existing Webforms model.  That means that once MVC is released, the old HttpContext object in WebForms will *not* inherit from HttpContextBase, nor will the WebForms versions of HttpRequest and HttpResponse objects implement the interfaces.  I don't believe anyone was sure of this happening anyway, but now it is definite.  From about 22 min into the final of the four screencasts:

"There are certain things we would have wanted to have done, for example we would have loved to have pushed out our [HttpContextBase] and our testable interfaces deep down into System.Web, so that other ASP.NET developers could get that functionality as well.  But that would have involved massive changes to the already well-tested codebase of ASP.NET WebForms.  So there are some things that history will not allow us to do, or at least, is going to slow us down."


So if you want to have some easy abstractions around these objects with the good old WebForms model to ease your testing and TDD pains, you have many, many choices:
1) Write wrappers for pretty much *everything* yourself.
2) Forget about testing stuff like that
3) Wire up your own MVP pattern for it
4) I lied, there's really only those choices

Now, once again, like NMock, this doesn't matter all that much to me - I've been moving away from the WebForms model anyway and now Microsoft has made the decision between the two models academic.  All of the cool extensions and abstractions to give ASP.NET web applications better testability are only happening in the Microsoft MVC. Not only that, but the screencast is also implying through the "we would have loved to do this, but we can't" message that what is being done in the MVC is a recognizably better way of doing things than what is happening in the Webforms model.  However, due to historical reasons WebForms is stuck with that model while everything else evolves.  That's right, my friends, WebForms will be the new legacy system! 

To me, this is *huge*.  In fact, for any of you that have been having problems pitching Microsoft MVC in the past, this is even bigger news for you.  I have insanely good looks and absolutely ridiculously awesome hair to rely on, so it really doesn't matter what I say; people agree with me naturally.  Some of you out there might have to rely on things like *facts* to convince *your* stakeholders to use the MVC.  And now you've got your facts - if you are looking to have a unit-testable web application (and trust me, I've got a *boatload* of metrics to indicate that is preferable, if that's really your bag) WebForms cannot be that choice for you.  And yes, for those of you about to tell me all about the glory of Monorail, I know!  But of the Microsoft MVC or Monorail, which one do *you* think is going to be easier to pitch to "BigCo Inc."?

At my presentation in DevTeach (this again!  Really, I should post about it already) I implied -jokingly - that MVC was your *only* choice.  Now this time it's Microsoft implying it, but I don't think they are kidding!

Do you remember the whole religious war several years back about VB vs. C#, and how people would fight for ages about whether one language was better than the other, or whether you were even a better developer for choosing one over the other?  Those were crazy times, thank goodness that got worked out - oh wait, no it didn't.   Well, guess what - those days are here again, but worse.

And you thought *NMock* was in trouble?

[update: the previous three parts in this series can be found by clicking below:
MVC Preview 1 to Preview 2 Part A
MVC Preview 1 to Preview 2 Part B
MVC Bombshell #1]





Thursday, March 06, 2008 #



Wow.

All right, so the new and improved MVCToolkit, according to Scott now contains helper extension methods for setting up mock controller contexts, mock http contexts, etc. etc. with RhinoMocks.  The fact that you can do this is not revolutionary at all - after all Phil Haack discussed it in a previous post a while back.

To me, the big news about this is that Microsoft's MVC support toolkit has now implicity supported one mocking framework above the rest.   I don't think this is a worry for TypeMock considering it's almost a different beast entirely, but I can't see how something like this doesn't pretty much kill NMock dead.  And hey, I'm pretty ambivalent about it - after all, *I* don't use NMock, and obviously if Justice Gray doesn't use your tool, it almost doesn't exist!  I know, I know, some of you might say "Well, NMock can always provide their own mocking extension methods" but defaults are *crucial* for many teams.  There will be (a smaller number, but still some) dev teams that are picking up mocking and simply go with Rhino because it is now seemingly endorsed by one of the world's largest software vendors.  I don't know how often Microsoft actually includes dependencies like this on 3rd party DLLs, but I can't imagine it happens much. 

Aside from basically endorsing one mocking framework above all, in some ways this is also a promising step because Microsoft is at least demonstrating - to some small degree - that they actually care about making testing easier.  As well, they have also taken a small step towards helping the whole concept of mocking get some recognition.  After all, from a "big co" standpoint it's a lot easier to take a step towards learning or getting on board with some of these things when it doesn't seem like some "fringe" thing that only ultra-CSGs* do.

Of course, the potential controversy caused by Rhino/Ayende and MS being totally in bed with each other** is *dwarfed* by bombshell #2.  Trust me.  And that one comes next...

[update: the other three parts in this series can be found by clicking below:
MVC Preview 1 to Preview 2 Part A
MVC Preview 1 to Preview 2 Part B
MVC Bombshell #2]

* Comp Sci Geeks
** that's an exaggeration, before I am hauled off to Turkish prison



Thursday, March 06, 2008 #



This isn't as unrelated as it looks


[While watching the remainder of Scott Hanselman's new screencasts on the MVC, there were two things in particular that I found to be of such significance that they are getting their own posts.   What follows is every other change from Preview 1 that is mentioned in the remaining screencasts from Scott.]

  • The UI helper methods from the MVCToolKit are now actually part of the MVC dll.  There are also new helper methods  including BuildUrl, BuildUrlFromExpression and RouteLink among others.  They were not explored in the demos and I haven't looked at them yet, but I will attempt to look into them later to see what it is they do if no one else posts about it the next week or so.
  • The Html.ActionLink<>(lamba expression) is not new, but I need to point it out as it's a great way to have strongly typed ActionLinks (if you change your Controller or methods on it, you'll have a broken build rather than waiting to run and finding that out)
  • [As an aside, I can't get over how diplomatic Scott's tone is at certain points of these screencasts.  Here's my paraphrasing of his going over the different ways of doing Html.ActionLink and rendering form tags:
  • "Here are three methods of writing your a hrefs, and here are three methods of writing your form declarations.  There are different trade-offs to each method of doing this, so it's all about choice."
  • Scott is too nice to say it but I have no such worries.  Here are your tradeoffs:
    • two of the choices are lame
    • one of the choices uses lambdas and is the only strongly typed one out of the three, which means for those of you that don't understand lambdas, it may require an extra investment of a whole 3 minutes of your time to learn it
  • and since it's all about choice, it's also your choice to be a coding HERO or a complete professional outcast , spat upon in the street by all competent software developers.
  • Rob Conery's UpdateFrom() is in the new version, but *not* as an extension method on the object class - it is called by using Binding.UpdateFrom(yourObject, yourFormData).
  • Instead of having the MVC templates all bundled in to the already overcrowded main template window, they have now been placed into a separate heading under Web->MVC.
  • Bad news.  For those of you who got excited about Authorization and OutputCaching filter attributes shown on ScottGu's blog - they're not here; Scott mentions them as examples of "something you can build" and "we will probably have some in the next CTP" - not something that is, as yet, available.  If you want them, build them yourself!  The price of betas! 
  • I'm torn between laughing at the nerdiness of the comic book references in the CustomViewEngine demo and being in awe at seeing "Groo the Wanderer" being referenced in *anything*.
  • There's now wildcard support for routes in the frame of new Route("music/{*catchall}", where anything past the * is put into a parameter called "catchall".  This is actually nice for some complicated routing concerns.
To be continued with MVC bombshell #1 - the actual live *killing* of a project dead!  Well, not quite but it's quite a shot across the bow.

What am I talking about?  Come back in 30 minutes!

[update: the other three parts in this series can be found by clicking below:
MVC Preview 1 to Preview 2 Part A
MVC Bombshell #1
MVC Bombshell #2]


Thursday, March 06, 2008 #


The New Captain America
For those of you who come for the lack of content, the new Captain America will keep you entertained

My apologies in advance for the dryness of this post, but given that some of Codivation's current contracts are using this technology right now, I wanted to capture some of this down for reference.  Yes, that's right, one of the perks of running your own company is being able to negotiate some control over technical decisions!  I know what you're all asking inside, and no, I have no idea why Microsoft hasn't contacted me to do white papers.  All of what you can read here can be gleaned from watching the first part of Scott Hanselman's new screencast series - however watching that screencast will take you sixteen minutes while reading this post will take you one. Except, of course, in D'Arcy's case where I expect the reading time will be approximately 2 hours before he gives up and asks his class for help. 

Here's what *you* need to know thus far about the new Microsoft MVC Preview 2:

  • The "MVC with Test Project" template is gone.  In its place, there is now a prompt on the normal MVC project (a la Monorail) that asks if you'd like to set up a test project (yay).  The only test project you can set up is keyed to MSTest (booooooooo) but they are hoping to have support for NUnit, xUnit, mbUnit and whomever else wants to play though I would suggest DUnit and JUnit shouldn't get their hopes up.  A scoop from my inside man at MS says that G-Unit might still have a chance if we petition Phil Haack for it*.
  • In the previous releases of the MVC, the entirety of the new functionality was located in an updated version of System.Web.Extensions (3.6).  However, this has now been removed from Extensions so to make the MVC bin-deployable for people without colliding with the old version of System.Web.Extensions (3.5).  In its place are the following three assemblies:
    • System.Web.Mvc - contains the Mvc namespace stuff
    • System.Web.Abstractions - contains the IHttpContext (sorry, HttpContextBase or whatnot), IResponse, IRequest, IWhatever
    • System.Web.Routing - all of the routing logic.  The routing logic is now usable in "vanilla" ASP.NET as well!!
  • Route definitions used to look like this:

    "[controller]/[action]/[id]"

    and now they look like this:

    "{controller}/{action}/{id}"

    Truly a breaking change no site will ever recover from!
  • Controllers no longer have a [ControllerAction] attribute.  Any public method on the Controller is available through the web. 
  • However, if you have any *other* public methods on the Controller that you want available for unit testing but do not want to be accessible through the web routing, mark them with a [NoAction] attribute.
  • Much more detailed exception messages are available when a controller fails to load, and particularly when a View cannot be found (you'll get a message stating "View cannot be found at the following paths:")
  • MS MVC can now run in partial trust environments.

Continued tomorrow on related topics but with even less related pictures!

[update: the other three parts in this series can be found by clicking below:
MVC Preview 1 to Preview 2 Part B
MVC Bombshell #1
MVC Bombshell #2]


* I can't take full credit for that one - it came from a presentation on unit testing that EDMUG's treasurer (Brad Daoust) and I did a couple of years back.  I'm only providing this disclaimer so Brad doesn't sue!

Thursday, March 06, 2008 #


Phil Haack, much like Sarah McLaughlin, is building a mystery.  A mystery that yours truly, despite being a certified genius,

actually, a *super* genius


cannot figure out the answers to.  Thereby I am opening this up to everyone so that I have a hope of being enlightened.

1) Phil posts part 3 of his series in infinite parts about how he has recently discovered abstract base classes are the best thing ever, at least when it comes to the Microsoft MVC!  Negative but constructive feedback follows, mostly along the standard "why aren't you going interface-based" and "shouldn't third-party vendors be responsible for keeping up with breaking changes if they are directly dependent on the MVC dll" queries. Nothing we haven't seen in the feedback to the past few posts.

2) However, David Nelson makes an excellent point in the comments:

"Whenever I see a MSFTie blog about backwards compatibility and breaking changes, the overwhelming majority of responses are in favor of relaxing the extreme stance toward breaking changes that .NET has exhibited so far. Yet you say:

"to the vast majority of clients out there, breaking changes is a big problem."

and

"we've already heard overwhelming feedback against breaking changes as much as possible."

Where is this feedback coming from, and why doesn't anyone else in the blogging community have visibility into it?"


3) Phil responds with:

"@David Nelson the vast majority of developers don't read my blog. :) I tend to think the more advanced devs are the ones reading my blog. The ones who care about this sort of thing."

So this left me with several questions:

a) If MVC is considered a more "advanced" alternative to WebForms, and MS is firmly behind keeping the existing WebForms model as well, who exactly *is* the MVC being marketed to? 

b) If MVC *isn't* considered a more "advanced" alternative to WebForms, what exactly was the purpose behind introducing it other than to dissuade MS developers from trying to jump to MVC frameworks like Rails?

c) Are there actually developers out there that are:
  • advanced enough to seek out, download, and experiment with a product in 2nd beta like the MVC
  • not "advanced" enough to go to Phil's blog (where apparently only advanced developers hang out) considering he's one of the PMs on the project and the most active blog posters *on* the topic of MVC?  Where else would people go to get information on it and its future right now aside from Hanselman, Conery, Haack and Guthrie?
d) What was the answer to the question asked above:
"Where is this feedback coming from, and why doesn't anyone else in the blogging community have visibility into it?"


I haven't determined prizes for this yet but rest assured someone who can answer these successfully *will* get something!!

Wednesday, March 05, 2008 #



This is going to get a little personal but bear with me - it's a story from the dark recesses of my past that needs sharing.  Because this blog always pulls out all the stops today's entry comes with musical accompaniment by everyone's favorite 5-man band, Earth, Wind, and Fire.  This is best read if you listen to "After The Love Is Gone" while you are reading this saga, so I've embedded it here.



My wife used to *love* the user interfaces I designed.   "Oh, *that's* nice."   "The client will *love* that."   "This is *amazing*!"  People warned me it was just the honeymoon phase, that eventually this infatuation would pass and Mrs. L would be off looking at other UIs.  I didn't believe them, partially because I was naive but also partially because the main proponent of this theory collapsed in a drunken heap after giving my wife his new business card and telling her to leave me because "eventually you'll find far better UIs out there."  Out of respect for this man's privacy I've declined to name him.  Nonetheless I'm sure why you can see why I was skeptical

Our lives went on but in the back of my mind I wondered - was there even a glimmer of truth to this man's words?  Sure, there's not a lot of credibility to be had from a man who gtells women "the greatest UI of all is down *here*" before falling down on the floor and wetting himself, but it made me a little jumpy. 

At some point - I don't know when  - I found things had changed.  Mrs L had begun to lose inerest in looking at the sites I was designing.  "Yeah, that's okay" or "Are you sure they'll be happy with that" had replaced the previous enthusiastic cheerleading.  More than that, I noticed that her eyes were wandering...wandering to other sites.  Sometimes I would catch her and she'd race to close the window, telling me it was "just nothing".  I, however, have the mind of a steel trap, and thus knew she was hiding something from me. 

It all blew up one day when we were reviewing a UI design I had sketched out - at which point she asked me, "Why don't you do it like [this site]??"  Awkward silence ensued as she realized what she had unintentionally admitted to - she had been actively looking at other UI.  

The next several weeks were a downward spiral.  I couldn't even open Firefox without feeling nauseous.  Out of respect she moved herself out of our office and put her laptop on the kitchen table for her work.  I meanwhile spent every day for two weeks drinking down a mixture of salty liquor and saltier tears.  It was at this point I felt we had truly hit rock bottom.  Friends suggested that maybe I try looking at Silverlight, but I didn't need some "5 minute abs" style solution to UI concerns; I needed something that would be legitimately transformative.  I thought perhaps I needed a complete reinvention - thinking that perhaps an entirely new lifestyle would be the solution to my problems. 

And that's when I discovered prototype.js[You can now change your musical selection to "Let's Groove Tonight" by Earth, Wind and Fire - I've attached the *original* 1970s video!!]



We've talked a bit before about why I feel so strongly about Javascript and those of you who were at my MVC presentation last November (honestly, I *am* going to post about my experience there, I promise) also heard me talk to these points a bit.  Prototype (and yes, Ben, JQuery as well ;) ) is what turned me around into the rampaging machismo machine I am today. 

As I began to explore prototype and its cousin script.aculo.us an entire new world of user interface design became clear to me.  Form elements that could gracefully fade in and out depending on validity of input.  Modal and non-modal windows for login.   Scaling and scrolling effects.  A floating tooltip plugin, which I hacked in order to be a "Pop-up Video" style real-time help system.  And DOM traversal functions that actually made sense!   Sure, Visual Studio can't debug either of the libraries at all, but who cares?  VS is obviously just jealous.

I redeveloped my UI using prototype and tentatively showed it to my wife.  Instead of the "Well, I liked [this site] better" I received cries of "How did you do that?"  and "I'm sorry my eyes ever strayed.  Can you forgive me?!"   Since then we have lived happily together and I know that now, more than ever, my UIs are truly without peer.

It was with this that I learned a valuable lesson.  After all, the code underneath hadn't changed, but it was the UI that turned her around.  I had discovered that my experiences with prototype and script.aculo.us were not just a marriage-saver but a metaphor for life.   You see, in the end, it's nice to think that clients actually care about how elegant your database mapper class is or how many design patterns you've used from the Gang of Four.  But it doesn't matter.  It's not to say that clients don't care at all about having a solid and maintable system...it's just that they are much more appreciative of a sexy system than they are a reliable one.  This goes for *everything* in life.  Like it or not, superficiality exists in everything, even development.  Do you think anyone cares if Facebook's code is an untenable mess?  It's 17 million billion users say the answer is "no".   They use it because it fills a void, it's easy to use and for the most part (let's exclude the ridiculous "Funwall" garbage) it looks good.  

If you're looking to:
  • lose weight
  • have better self-esteem
  • have clients that are excited rather than falling asleep as you pore over the cylcomatic complexity of your code
  • meet women
  • no, I mean *real* women, not the ones you're chatting with on WoW

prototype and JQuery have my highest recommendation.  Check them out today if you dare!

Tuesday, March 04, 2008 #


Hammett (author of Monorail) writes:

"Funny enough, [Jeffrey] Palermo never seem to care about Castle. Suddenly he - and others - became the world’s expert in MVC, testability, maintainability and good architecture. I wonder, what have been using to develop web apps before the ASP.Net MVC? WebForms? If so, I’m not that keen to believe that they are what they claim."

I do not profess to be the world's expert in MVC.  In fact, the astute among you have noticed that I don't actually claim to be the world's expert at *anything* here at Gray's Matter except looking good and getting laid all the time.  Thank goodness for this!  According to Hammett, since the IBM PC Jr BASIC apps I wrote when I was 6 were not the height of testable and maintainable architecture people I am forever disqualified from hyping up these same factors to other people as paramounts of good software.  If only I had not been so naive in my elementary school years, perhaps I, too, could have evangelized good practices in software development!

I don't actually recall Jeff claiming to be the leading authority on MVC or anything else for that matter - so I'm not sure where the context of the discussion is coming from - but is it not possible for someone to *begin* caring about testability, maintainability and the like?  I can't speak for Jeffrey, but I was not always an evangelist for TDD,  I certainly wasn't always writing code that didn't drive lesser minds insane, and I certainly didn't write sentences chock full of double negatives (not every new habit is a good one). 

This exclusionary, "nerds in the treehouse" style elitism is off-putting to people getting into our industry.  I fail to see entirely how boosting and evangelizing good qualities of software development, regardless of where you came from to get there, is a bad thing. 

If you spend 25,000 years emphasizing good practice and someone else joins up and emphasizes it more (and maybe even has a louder voice than you do), do you think the best reaction is to:

a) vitriolically shout them down from your corner of the web
b) act as a light, encouragement, and advisor for that person, so that when their voice is heard by a large number of people, it is an informed and accurate voice?

I tend to think far more highly of the latter, because *that* is actually helping our industry get better.  Not the former.


Tuesday, February 26, 2008 #


...is that you end up spending a little too much time talking shop with your patient wife.  I've quoted the relevant snippet, although if you want some insight into our courtship history it's a good read:

"During that time, unintentionally my knowledge of development-related topics (OO TDD, programming, design patterns, VB.Net vs. C#.Net, Agile, MVC vs. MVP, etc.) actually increased, despite the fact that I don't even know how to write a proper For / Next loop anymore."


Note: my wife is an elementary teacher.

Thursday, February 21, 2008 #


Hard-hitting journalism at its finest awaits you in D'Arcy Lussier's 2 minute sitdown with Bil Simser just before the Winnipeg Code Camp.  The *real* meat of this interview comes at approximately 1:41 for those of you pressed for time, which made this one of the greatest technical discussions in history.  I haven't managed to view the entire series of Winnipeg Code Camp interviews yet, but part 2 of the Steven Soroka interview also intrigues me for similar reasons.

Obviously the mention of "hard-hitting journalism" on this blog is what we in the business call subtle foreshadowing...stay tuned.


Monday, February 18, 2008 #


I assume everyone currently living in North America reads Mo Khan's blog.  I also assume that anyone who *doesn't* read Mo Khan's blog is a total loser!    Then again, I also assume that D'Arcy Lussier shooting up with horse steroids twice a day is going to have *no* side-effects whatsoever so you can take my assumptions for what you feel they are worth.

Anyway, if you have been reading Mo Khan's excellent blog (or seen the reference to him on the Caffeinated Coder) you would know that Mo has nominated me for a Microsoft MVP award.  I am flattered by this considering Mo's posts are always among the most intelligent and insightful on the web, which means that to post something like this means he no longer *cares* about having credibility.  That's a sacrifice only true friends make. 

It's unfortunate that Mo makes this recommendation at a time when the Microsoft MVP Program has almost zero credibility itself. 

Yes, that's correct.  You see, there are several fantastic leaders in our industry right now who are *far* more deserving of the MVP on *all* scales and measures of community involvement and technical credibility, and none of them currently have a Microsoft MVP designation.

I'm going to pause for a second while you all pull your jaws back up from the initial shock of my statement.

The people I am thinking of are far too humble to realize that they are being ripped off by the almighty MS.  Fortunately,  as any reader of more than one post on this blog can attest to, excessive humility is certainly not a problem of mine.  I'm going to drag this conspiracy into the light by naming all of these exemplary people and giving you a brief run-down of their background so that you will know as well as I do why the MVP program will never be able to hold itself as a bastion of the best of the best until these people are all MVPs themselves.



Tom travels pretty much all over the place spreading the good news about Test-Driven Development, Refactoring, and various other practices that pretty much everyone with a lick of common sense should know about.  Last year he presented at no less than six separate speaker engagements, will have done another two or three by the time February is over.  He has been running a technical blog that has consistently poured out excellent information for several years.   Why Tom is not an MVP already is quite possibly the second biggest mystery facing the technical community today.


Again we have someone who has tirelessly worked his @$$ off, presenting all over Western Canada and (once again) running a blog with fantastic articles yet with nothing to show for it.  I'm not sure whether it is his previous association with this blog through Hot Developer Corner or his ribald domain name that is keeping Microsoft from giving him the recognition he deserves as one of Western Canada's top technical talents.  David: if you are listening, perhaps changing your domain name to DavidWoodsEnterpriseSuiteForDevelopersExtensiveEdition.com will get Microsoft's marketing division to stand up and take notice.

You let me know how someone can:

yet *not* be considered for a Microsoft MVP.  I presume there's just residual jealousy over Kyle's chosen location because my brain cracks in half every time I try to piece this together in a logical manner.


I can't figure out for the life of me why someone who tirelessly tours around the entirety of Texas talking and blogging about MVC, NHibernate, TDD, and looking good to anyone who will listen doesn't have some sort of recognition for his efforts.  I am presuming that he is also a victim of jealousy over his "Potential Friend of Justice Gray" certificate.  Microsoft MVP Program people: if giving you a certificate of your own will get you to cast aside the green-eyed monster for Ben Scheirman, I will do so.

Here are some choice quotes from Microsoft's MVP site.  First from the overview:

"When a community participant sees an MVP in a technical community, whether in a newsgroup, as a user group host, a conference speaker, or a respondent in forums, that community participant can be confident that the information shared by the MVP will be of the highest caliber and will help every user make the most of the technology."

Then from the FAQ:

"Individuals are nominated for the MVP Award by their peers or by Microsoft, based on their contributions during the previous year to offline or online technical communities. Each nominee's contributions are then compared to the other candidates' contributions for the same year to determine who will receive the award.

Nominees are chosen from traditional and emerging community venues, including public news groups, forums, third-party Web sites, user groups, book authors, event speakers, Web boards, blogs, and wikis."

Microsoft - I plead with you publicly, let this statement mean something again by putting these men in the spotlight that they truly deserve!!  


Wednesday, February 06, 2008 #


I was reading Phil Factor's parody of Microsoft's enthusiastic, energetic, and most importantly synergystic announcement that SQL Server 2008 was going to be delayed.  I don't know whether I lau