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

I Wish These People Updated More Than Once a Year


Footage of the *secret* first meeting of the Sharepoint Knights


I had some spare time tonight and against my better instincts I decided to read some technical blogs.  It turned out to be quite a historic night for two reasons:
a) I was introduced to the concept of something called "The Sharepoint Knights"
b) It marked one of the only times in my life that I wished I was functionally illiterate.

Sharp observers will realize that these two reasons are (like 75% of the married couples in Winnipeg, MB) strongly related.

Some of the ways *you* can be under consideration for membership in the Sharepoint Knights include:
  • User Group Management
  • Conference Speaking
  • Getting Regularly Beaten For Lunch Money
  • Never Having Intimate Relations With Another Human Being
I know a lot of you out there have leaned over to your cube-mate to excitedly proclaim, "Hey, I think I qualify on all four of these!!" and are anxious to hear a little more about this undoubtedly prestiguous group.  Here's some notes from the initial announcement:

"Some might compare it to the MVP program, but it's much more behind the scenes.  It isn't used to promote your skills more than it is to help share information amongst the group and to help each other and the community.  The SharePoint knights do recognize each other for their skills and boost each other up.  The knights are made up of Devs, IT, and PM and Business Analysts.  Male and Female alike as in the Jedi Knights."

I'm glad this was laid out for me, because I know that when *I* am trying to determine if a group is an elite representation of industry professionals, I *immediately* ask, "Do they compare themselves to concepts in STAR WARS???"

But don't worry, it gets better.  Way better!!  Apparently if *you* become a Sharepoint Knight you will also receive "An unique ranking Knight icon to put on your business card, blog, site that sets you apart as a Knight who provides a service of SharePoint chivalry".  Sharepoint chivalry.  Seriously.  Can you imagine explaining this icon to a business client over the age of 12 without them laughing you out of the office?    

I have heard some rumors that the next Sharepoint Knights summit will figure 20-sided die rolls for that coveted Charisma+3 bonus.  Unfortunately, I will probably never know for sure because I am not and never will be a Sharepoint knight.  Yes, let's be open here - by virtue of:
  • this post
  • not having a life-sized replica suit of armor at home
  • having hobbies involving the outdoors
I am disqualified from contention.  It's entirely possible that if *you* have ever kissed someone with tongue, *you* can't be a part of the Sharepoint knights either.   I know, I know, "Justice, if I can't be part of the Sharepoint Knights,  how will I ever have a chance to be part of a group of pasty middle-aged geeks shunned and feared by regular looking people of society?" and to that my friends, I can only say that the Microsoft MVP program brings in new people twice a year, so there's still hope!!    Keep chasing that dream!!

Wednesday, May 27, 2009 #


ASP.NET WebForms developers throwing a tantrum due to the MS MVC
Seriously guys, I'm going to run out of images if this keeps up


Apparently there are some WebForms lovers in the ASP.NET community who love the technology soooooo much that they were "not without a tinge of anger" when discussing the situation at PDC with Phil Haack, the program manager for the Microsoft MVC.  Can an online petition a la the oh-so-successful "Keep VB6 around because I'm tired of learning new stuff" be far behind? 

I had to laugh when reading the post, and not because of the image of a legion of "professional software developers" standing in front of Phil, looking down at their feet, hands in their pockets muttering, "If you don't stop progressing the industry, I'm going to burn my pocket protector".  No, I laughed because I know how Phil Haack *really* feels about WebForms development despite his public stance.  Let me share with you a heretofore-*confidential* exchange between myself and Phil:

From: Phil Haack (haack420_ForLife@Microsoft.com)
To: Justice Gray [E-mail censored because I get enough unsolicited offers for sexual favors]
Subject: I need your advice
So there was a homeless guy wandering outside the 7-11 tonight and what a sob story this guy had.  "Excuse me, sir...but I used to have a job doing ASP.NET WebForms development..."  I didn't even hear the rest of his sentence but when I heard the word "WebForms" I just snapped.  Kicked that dude in the nuts *17 times*, poured a can of gasoline on him and then SET HIM ON FIRE, yelling,
"Burn!!!!  Burn like the careers of everyone who still does WebForms development!!!" 

So do you think I went too far?*
"

I had originally sent this E-mail to the local authorities but the Seattle police simply told me that they don't have the manpower to handle the sheer outbreak of people crying their eyes out on the streets about
a) how they do WebForms development
b) they feel "betrayed" by the very *existence* of the Microsoft MVC
c) they fear change.  I don't mean the change people throw at them while yelling "Get a *REAL* job" either.

There's not really much I can say to this reaction.  We talked about it briefly a couple of months back when "Mr. Drag and Drop" GridViewGuy dropped by Rob Conery's to say, "BOOOOO HOOOOO TESTING IS HARD STUFF, hold my hand so I can start doing competent work".  There's pretty much no way I can possibly relate.  What I can tell you however, is that if you like sleeping on a bed of money, you should learn the MVC.    If only you knew how much people like me make cleaning up WebForms projects gone wrong!!!  With every half-assed DotNetNuke implementation I save somebody from, it's another *10 billion dollars* in my pocket.  Hey, to all of you people soiling yourselves because WebForms is dying: maybe some of you suckers should spend less time doing this:

ASP.NET WebForms developers: on the streets because of MS MVC

and more time doing this:
WebForms developers need to stop whining and start showering!!


I take donations for SAVING YOUR CAREER.  Contact me if you need to send me money!

* Sincerely, the homeless are people too and deserve to be treated with respect.  Not WebForms developers though.
Wednesday, November 19, 2008 #


[this is not a joke, despite how it may read at first]

then you *need* to go see Scott Hanselman's presentation, "Microsoft .NET Framework: Overview and Applications for Babies" *tomorrow*, Monday the 27th of October, at 5:15 PM in room TL49.  You need to see it, and when it blows you away, make sure you provide good ratings and feedback for the presentation.  Hell - listen, if you're *not* at PDC, find some way to submit feedback anyway and make sure it is 10 out of 5 stars or whatever ratings scale Microsoft uses for these things.

Scott has given an overview of this presentation before, but in case you're too lazy to find it by clicking on the link, here it is again:

"Join Scott Hanselman for this lots-of-code-minimal slides talk that walks through the sheer joy of building out a .NET Framework application with Visual Studio using many of the new advances in the .NET Framework 3.5SP1 and 4.0. We have a data layer with Entity Framework, use REST web services with WCF and ADO.NET Data Services, write an ASP.NET site for reporting using Dynamic Data and MVC. All the data will come from a WPF client application and a Silverlight application that the audience will run live! All this, plus it's an application that babies and toddlers will love!"

So what makes this presentation great enough for me to interrupt my *own* self-promotion to highlight someone else? 

a) Scott's presentation is not yet another Northwind-based demo*
b) Scott's presentation is a highly original usage of the .NET libraries and thus stands a very good chance of being *memorable* and having a lasting impact on those in attendance
c) Scott is a Microsoft employee.  For those of you who read the first two points and thought, "Big deal, Justice, you did a presentation on MS MVC that explained the MVC pattern in terms of Steven Rockarts' drug addiction" I'm not an employee of MS, and thus not subject to Microsoft's cardinal rule against being interesting.
d) I know how Microsoft works with these things, and if Scott's presentation is the blowout highlight of the conference,there will be leverage for *more* original presentations, *better* presentations, and ones that actually can *teach* people via unforgettable impacts.  Who actually goes to a Northwind demo and actually *remembers* what they saw?

This is *your* chance to be an influence on Microsoft's future direction!  Previously, the only chances you've had to be part of a zeitgeist moment in the software development industry have been:

  • shaking my hand
  • seeing me wave at either you or someone behind you from a distance

Scott's presentation, believe it or not, may be an even larger moment than the above.  Please, I am begging you, if you have a chance to see this thing, *attend it with all of your might*.  It might be our only opportunity as a profession to free ourselves of Microsoft's Northwind-based demos and moving on to something meaningful!!

* Seriously, I legitimately dream of a day when the statement "This was the strangest Microsoft talk I could sneak past the bosses without them noticing" isn't something that needs to be said, even *half*-jokingly.  We've made some progress but we've still got a long way to go.
Monday, October 27, 2008 #


NHibernate and Our Army At Love
Trust me, if the war stories were like this NHib would be a *lot* more widely adopted


Trust me.  I've been there, I've felt that pain, I've even debugged the NHibernate source to figure out what the heck was going on.   Please, I beg of you, tell my tale to those who ask, tell it truly...and let me be judged accordingly!  And let me tell you, this Hamlet quotation is appropriate because going through this problem will make you feel as if your mom just slept with your uncle.  Do I take NHibernate difficulties too seriously?  Maybe.

Anyway, some of you NHib rookies out there might think that if you have an enumeration, it's easy enough to just map it to an int for DB storage, like the following:

namespace J
{
    enum JusticeCharacteristics
    {
        Sexy,
        Sultry,
        Seductive,
        *Sassy* // This is fake code homeboy!  I can use whatever characters I LIKE!
    }
    
}



and then in the mapping file put the following for a class using the JusticeCharacteristics in a property called "Characteristics":
<property name="Characteristics"
              column="JusticeAppeal" type="Int32" />

Bold in this case stands for THIS WAY LIES MADNESS.

You see, when you do something like this NHib tries to map back and forth between two different types - the moment you retrieve the object from the database it is marked as "dirty" and thus you will get an automatic update call every time you close the NHibernate session.  Trust me, nothing is more confusing than profiling your application and noticing that you've got random update calls firing every web request!  Certainly a very confusing and time-intensive operation, made quadruply so when a himbo like myself is trying to figure out what destruction our team has wrought! 

The solution to this problem is actually pretty simple - just use the enumeration type as the mapped type:

<property name="Characteristics" column="JusticeAppeal" type="J.JusticeCharacteristics" />

Italic in this case stands for YOU ARE NOW AN NHIBERNATE NINJA.

Given the skew of the audience that reads this blog, I fully expect:
  • 99.999999999999999% of you read this post and thought, "Thanks for sharing something completely obvious" (trust me, it won't be the first time)
  • 0.0000000000000001% freaked out and raced to their production application and now have me to thank for saving their system performance
  • one of you doesn't even know what NHibernate is, but that's okay Dad! I'll explain it to the entire family over dinner this Christmas!
[Update: For the curious, Ben Hart has an explanation of the casting issues that cause this over on his blog.]
Monday, October 06, 2008 #


I rarely if ever do this but...

I told you so.

I TOLD YOU *ALL*!!!

At last my brothers in arms, we are *VINDICATED*!!!!

Celebration is forthcoming next February!!!!  Big announcement to come!








Monday, September 29, 2008 #


Truly we are at a crisis point in our industry when Gray's Matter places #26 in a list of the Top 100 Blogs for Software Development Managers.  I was very impressed by Jurgen Appelo's temerity in putting this list together.  After all, there are no two bigger middle fingers you could give the software development industry than:

  • putting Gray's Matter on the list at all
  • placing Gray's Matter *above* almost 100 other blogs that actually have some margin of technical credibility


Seriously, this is the banner I was provided


Like the rest of you, I'm scratching my head wondering how this was ever allowed to happen.  Whether it was:


it's clear we'll never truly know the answer.  Nonetheless, this will probably be the only time in my life I see my name mentioned in the same list as people like Seth Godin or Paul Graham so I do want to tell Jurgen that I appreciate the honor of being listed, and that if I need to give him a larger bribe to show up ahead of Leon Bambrick in Q4's polling results just say the word and untold riches will be his!   For the rest of you, definitely check this list out - it's got a wonderful list of *truly* thought-provoking and influential people on it!

[Note: I would also be remiss if I didn't point you to Jurgen's own blog, which is as entertaining as it is informative.  Unlike when people say this about Gray's Matter, this is meant as a compliment of the highest order!]


Tuesday, September 16, 2008 #


Donald,

If you can supply me with the name of the person who put you through the incident you described today, I solemnly promise you that if it is the last thing I do, I will hunt down that man and kick him square in his gonads. 

Repeatedly.

A kick in the nuts to those who diss continuous integration(*)


From your description it doesn't sound like this man *does* have functioning testicles, in which case I promise you that I will find some testes, surgically attach them to this man and *then* nail him in the groin.

Repeatedly.

Just a word of warning to people usurping the title of "software developer" who would like to try the same thing they did with Donald and tell me "learning is useless"; I like to think I'm generally a pretty easygoing architect/lead/whatever you call someone who looks this fine.  Heck, who *doesn't* consider themselves easygoing even if they're a powderkeg of rage waiting to go off at any second?

However, nice as I am, do not tell me you do not want to learn if you do not want me to have to apologize to your family for the shoddy condition of your remains.

* With apologies to Bil Simser, who I think has a patent on this sort of visual representation
Saturday, September 13, 2008 #


Just one week ago, the entire internet community was treated to the least manly display of tears since Steven Rockarts broke down at the conclusion of P.S. I Love You: when D'Arcy Lussier opined for the good old days when we all ran Internet Explorer 4.    


(artist's rendition of D'Arcy's post)

We know why this is: D'Arcy loves Silverlight more than he loves John Bristowe, and he loves John Bristowe to an illegal and uncomfortable degree.   I was once an unfortunate witness at a bar where someone made the mistake of just making an off-hand joke about John, only to have D'Arcy leap upon him, punch his lights out and then go back to licking his crumpled photo of John in-between shots of tequila.  Knowing this, imagine what his lust must be for Microsoft's latest attempt at getting rid of Javascript for all time! Thus I knew once reading D'Arcy's essay that he was experiencing similar amounts of turmoil about how Chrome's mere existence threatens the very bedrock of his entire belief set.

Now, D'Arcy and I are brothers for life so I'm not going to dissect his points, but instead I *am* going to point you to an article where none other than Scott Hanselman and Harry Pierson were interviewed at Tech Ed Australia about how Javascript pretty much puts lipstick on Silverlight before parading it around as its prison servant and trading it for a pack of cigarettes !  Now, my own biases in favor of, you know, being a good web developer and thus knowing how to develop for the web are legendary so it's good to get an unbiased source on this!

Now because you likely don't have any desire to click links that lead away from this blog, I have decided to put on my "Sexiest Reporter in North America" hat and give you the essence of the article* before those hacks at ZDNet got a hold of it. 

  • Scott says that the next 18 months will see an ass-kicking not witnessed since he smacked down that one dude over O^n complexity (in a friendly and non-violent way, I hasten to add)
  • Harry tells the audience he fears the coming of Javascript, calls it an ugly duckling of a language and tells the audience he would prefer to hide behind a wall of solid C# code
  • Scott retorts with, "Nah, the Javascript today is different than your momma's Javascript, so maybe you ought to pick up a book once in a while Harry!!  AWWW YEAH!!! WHO - IS - YOUR - DADDY?!?!"  before downing a case of malt liquor
  • Jonas Folles tries to find *any* use for Silverlight, saying that maybe we'll use Silverlight for the intranets of the world, or perhaps use it for some neat Hello World demos at TechEds round the world.
  • End message 1: Javascript is like that girl who weighed 400 pounds and had some *really* funky stuff happening with her teeth, but now she's been working out and thankfully got some braces on those suckers so whenever her mouth is closed she's actually pretty freaking hot!
  • End message 2: CHROME IS THE FUTURE.

I know what you're thinking, but ZDNet doesn't pay enough to hire the metrosexual Walter Cronkite of the software development industry so in the end you'll just have to be satisfied with whatever poor slobs they were able to haul off of the "former PHP developer" unemployment line! 

* give or take some major liberties

Tuesday, September 09, 2008 #


I wish I could tell you the number of reasons this post is ironic yet so insightful; however I can say with some certainty that this "jdn" person must be a handsome and well-groomed chap to have such well-thought posts! 


Monday, September 08, 2008 #


I don't think it would surprise any regular reader that this blog, *aside* from being the greatest single continuous writing achievement in North America, is also no stranger to controversial confrontations that shake the development industry to its very foundations. Thankfully, Gray's Matter is also a place that brings men *together* in a close heterosexual bond. With the exception of one notable case that led me to the local police department to talk about whether restraining orders across North America were a viable option, people who enter into conflict with the metrosexual champion of the universe leave it being able to tell friends of theirs that they have actually engaged in dialogue with yours truly. If there is one thing that my interactions with people like Jeffrey Palermo, Carl Franklin, or the entire Castle project have taught me, it is that incredible good looks and witty banter make our industry a better place to be.

Astute readers might have think that the title of this post and the preceding paragraph are contradicting each other. After all, if there is only one thing that his blog has stood for in its lifetime it has been the merciless trash-talking of the rest of the industry! It only seems right that I would be supportive of Leon manning up and showing Scott Hanselman who is really the boss when they have their showdown at Tech Ed. So why is it that I can't bring myself to back Leon in the battle of his lifetime?  Hopefully a "tale of the tape" will shed some light on my decision.


Scott Hanselman

I'm not too sure about the rest of you, but when a man attends the Microsoft MVP summit, steals a pair of bowling shoes from the local 10-pin alley and calls himself a metrosexual, the first thought I have is certainly *not* "I trust this man and the advice he is giving." As if this faux pas didn't already demonstrate a significant lack of self-awareness on Scott's part, let's not forget that after a brief flirtation with a blog photograph that women I knew actually found hot (the one where he was making the "Shhh" signal with the brown background? Am the only person who remembers this striking piece of work?) he inexplicably went back to the photo currently on his blog with the "I'm not sexually threatening" smile. My friends, these acts are the acts of a man who has lost touch with erotic reality. Does anyone think attending a session by a man who no doubt wears blue jeans tucked into bright white sports socks is a good idea?

Now let's look at his competition:

The legendary Leon Bambrick


Not only is Leon a genius and an entrepeneur, but he is also a regular reader of this blog, which demonstrates to me he is a man of discerning taste and impeccable intelligence. Those of you who are searching for a photo of Leon on the web, stop wasting your time - Google Images has nothing for you. This is because Leon, like myself, is a sexual powerhouse and thus recognizes the dangers of having an online visual presence. One picture of yourself online and all of a sudden you start getting women showing up at your house at all hours of the night asking you to sign their bottoms with felt markers. This is even more awkward for married men like myself - why do you think Mrs. L and I are moving to Vancouver? - so I can understand why Leon is reticient about posting photos like this online:


Leon Bambrick(*)


Do you now understand why I can't support Leon? It's because Leon has already won in devastating fashion - he doesn't *need* my support. Heck, just read the part where he posts his fake little "apology" to Scott:

"(footnote for the humour impaired.... i'm a big fan of Scott Hanselman, a hanselfan infact, and i owe him a big thanks, because the fact he interviewed me on his podcast is the direct reason i've ended up speaking at tech ed -- plus he's given me various pieces of encouragement in this topic over the last few years. Can't wait to meet the guy in person. (Will he sign my boobs? Let's hope so) All up, he's truly the bestest guy in the whole world)"

"Everything's ok, man, I was just kidding and I love you madly, truly, deeply".   Right.  That is a charade - what Leon has done here is the verbal equivalent of giving someone a hug after kicking them in the nuts and curbstomping them!  Scott Hanselman deserves better than a curb-stomping.

Scott, I know you have been frantically refreshing the Gray's Matter site for weeks now in the hopes that I would post, so I hope that this missive gives you the inspiration you need to succeed against Leon Bambrick's Herculean physique. Don't worry, my friend...one day you will get a pair of shoes as beautiful as my white Springs and the healing process can truly begin. In the meantime, you are in my thoughts and prayers!

* This was taken from an E-mail I once recieved from Leon saying "This is what I look like in RL, are you sure you don't want to cyber?" I was flattered, my friend, but as I am totally hetero and totally married the answer is still no!



Wednesday, September 03, 2008 #


From reading the comments on Rob Conery's post explaining how to get away from tag soup  in MVC
we have the following gem:

"Hi,

Actually, I agree with Jeff's post. Sure we have extracted out all the code from the page behind and now we can test our application. But the cost is too high. Now, we have to do everything on our own. Our code behind is clean but guess what our view is freaking ugly. What we don't realize is that the real power of the ASP.NET framework are the controls. You remove the ASP.NET controls and you are left with nothing.

Rob, you wrote so much code just to achieve paging. How about you implement the GridView in-place editing now. Let's see how much code you end up writing?

I am not saying that ASP.NET MVC is BS. I am just saying it won't work when your view is really complicated.

One of the other things that we need to realize is that the MVC Rails framework (default rails framework) is not so popular because of the the MVC implementation. It is popular because of the Ruby language. Ruby is a very concise language which makes things happen quickly.

Using ASP.NET MVC seems like I have transported myself 10 years back to the days of classic ASP."

The one thing this comment leaves out is the part about "Hey, I run or link to a site called GridViewGuy, so I am aware I have some vested interests in the technologies I've spent time with" but that's okay...I'm sure it was impartial!  And to be fair, given:

It would seem that I have my own biases, were it not for the fact that my impartiality is beyond reproach.

  I have almost recovered from the surgery I required when I nearly bit my tongue *off* after reading the comments on Kyle Baley's post in a similar vein.  Thus, once my move to paradise on Earth has been completed, I assure you we'll be talking quite a *bit* more about the MVC...



Wednesday, August 27, 2008 #


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 laughed more at Phil's parody or the announcement itself.  I will not be talking about *that* any further here as we all know the only easy target we take shots at here on Gray's Matter is Donald Belcham.  We are going to discuss something far more serious today, something I discovered on reading the comments on Phil's post:

The Heroes Happen Here comic.

As much as we all wish this was also a joke or parody of some sort, you can verify by clicking on the link that what I am discussing is all too real.  I've done you the favor of reading this thing so you don't have to.  Onward!


Microsoft - Heroes Happen Here: Fat, Ugly Heroes P1
(cllck on image for larger version - I'm not responsible for any damage that occurs)


Large mullet?  Check.  Inability to dress himself?  Check.  Standard geeky T-shirt underneath? Check.  Failure to shave his chin?  Check.  Massively overweight? Che...oh come on, seriously, WTF *is* this?

But lest you think I'm just being my normal superficial self and judging this man by the impossible task of looking as good as yours truly, look at panel 5 for this man's explanation of what he does for his son, who is in elementary school:

"I write algorithms we call code to build software packages and drivers that do everything from sending E-mail and encrypting CDs to calibrating airplanes and lasers."

Awesome.  Sincerely, who in the world explains their job in this ultra-geek manner to their 5 year old?  That does remind me that this comic obviously takes place in an alternate universe, as there is no way this man would have found a mate to father a child with in the real world.

Am I being too harsh?  Let's go to page 2!!

Microsoft - Heroes Happen Here: Fat, Ugly Heroes P2
(this caused me the BRAIN DAMAGE - take your chances if you must and click for larger)

WOW.

So, our development hero treats configuring a firewall like a fantasy D&D world, while he works in a room filled with action figures and several empty cans of cola.  No stereotypes here.  I'd like to note that our hero has changed his clothes to yet *another* awkward combination of ill-fitting plaid shirt (look at the drawing, there's no way he can button up that thing) with standard "geek" T.  ARRRGH.  No bonus points for the presence of a "wife", who is obviously some robotic construct. 

Microsoft Heroes Happen Here - Fat, Ugly Heroes P3
(you know the drill by now)

Do you want to know what would happen if I told my wife that "hackers all over the world fear me"?  That's right, the same thing that happens to Donald Belcham every night - complete lack of sexual congress.

Note the part about fixing a "computer problem" - this comes into play later.

Microsoft : Heroes Happen Here - Fat, Ugly Ones P4

I can't tell you how "cool" I would find *my* dad if while investigating an EBay sale he grabbed the monitor like a deranged maniac.  Then again, my dad also knows how to shave properly so perhaps I am being unfair.  The only other thing I have to say about this panel is that given the way this kid likes to wear blue shirts with red jackets it's obvious which parent he is emulating.

As if all of this wasn't enough, we are now presented with this:

Microsoft: Heroes Happen Here - Fat Ugly Ones P5

"Did you solve the problem?"
"Well, you *did* get the money and it's in your account."

Let me translate that for you:
"Did you solve the problem?"
"Well, nothing actually happened here, and I flipped out on an ancient monitor for absolutely no reason whatsoever.  In fact, none of what I did actually had discernable value!!
  I'm not only fat but ineffectual as well!"

Bonus points for the robot wife, obviously programmed to say, "Lee, your daddy is a genius!"  A genius for *what*!?!?!  For sitting at a computer and bitching for a while?  My goodness, I've been using the wrong interview criteria all this time!  Silly me, looking for someone who can solve problems when I should have just hired people who could pretend to non-technical users that they actually accomplished something too complex for them to truly understand (1)!!

Sigh.

We've talked about Microsoft, their strange stereotyping of developers as homely and useless, and their rampant prejudices against good-looking members of society in previous posts.  This is no different than par for the course.  But think about this for a second:

if you are a software developer, *this* is what Microsoft thinks you can relate to.

In fact, this comic shows you that Microsoft thinks this is the typical software developer.

Seriously, if marketing thought this would be in the slightest bit offensive to a software developer, it never would have seen the light of day as part of Microsoft's campaign for a monumental launch tour. 

Our industry has a hard time attracting new developers.  Why is this?  Well, if *you* were looking for a career and saw *this*, would *you* feel that being a software developer was cool?  

That's what I thought.

(1) in fairness, I'm pretty sure there are some multinational consulting companies that were formed in this very manner

Monday, February 04, 2008 #


Now that we've fulfilled our technical quota for 2008, let's get back to our normal stream of noise - in fact, this post is even worse as it is simply a pointer to my content on someone else's page!!

Russell Ball was gracious enough to let me guest present the January 2008 Caffeinated Codey awards.  Who will be bursting into tears of joy this morning upon reading that I actually gave them recognition?  You can only find out by clicking here!


Friday, February 01, 2008 #


*


Apologies for the technical interruption - we'll get back to our regular lack of content soon enough - but I was reading over Ben Scheirman's post on testing TempData and my comment ended up just long enough that I thought it needed its own post.


One of the current projects I am working on is using the Microsoft MVC.  Now, I haven't been screwing with TempData like Ben (haven't had the need) but I *had* previously encountered similar issues with Request.Form.  Sure, there's no problem with mocking out IHttpContext and all of its 15 million dependencies therein, but
a) I'm pretty married to the mockRepository.Record(){}/mockRepository.Playback(){} syntax
b) it just seemed like a lot of extra code to get at a NameValueCollection.

Hence, I just busted out layer supertype and had a base class with the following pertinent data:

public class MyControllerBase: Controller
{
    public virtual NameValueCollection FormData
    {
            get
            {
                return Request.Form;       
            }
    }
}

Methods in the inheriting controllers refer to FormData instead of Request.Form in exactly the same way.  Let's take a small piece of code from the Igloo of Love application that we'll talk about at a later date...

e.g. Request.Form["lastnameofdonaldsnewlovah"]
becomes FormData["lastnameofdonaldsnewlovah"]

(Note: yes, this is really just an example of utilizing a base class with a testing hook but I prefer dropping "layer supertype" as using larger words == instant credibility).

Now, the reason I do this is because when I need to set up some form values for testing, I want it to be even simpler than with the mocking of IHttpContext, ya da ya da...

thus, in test controller classes (yes, this is testing by inheritance and many of you would rather scrape your nether regions with a board full of nails, but bear with me please) we do the following:

private NameValueCollection privateFormData;
 
public override NameValueCollection FormData
{
    get
    {
        return privateFormData;
    }
}

Now, this makes some of my testing RIDICULOUSLY EASY, because all I need to do in my test is write:

myTestController.FormData["lastnameofdonaldsnewlovah"] = "Bellware";

and we're set to test actions that rely on FormData.

When I first read Ben's post, my initial thought was "Well, why don't we just extend my layer supertype (good job, Justice, remember that term when negotiating salary in the future) to also 'mock' TempData?"

My second thought was

"public TempDataDictionary(IHttpContext httpContext)
{
    if (httpContext == null)
    {
        throw new ArgumentNullException("httpContext");
    }
    this.HttpContext = httpContext;
    this.EnsureReadData();
}"

Yes, for those of you asking, I think in Reflector disassembled code, which I am 7331*. 

Third thought was, "Well, this certainly sucks, I'm going to kill myself now."

After the depression phase of my manic depression subsided, I'm back on the "manic" phase to tell you that
no testing hook for TempData == SUPER CRAZY, and since
it seems I have already successfully taken on 2/3rds of the Microsoft MVC team, I would like to extend a challenge to Phil Haack: for the love of all that is good, please fix this so I don't need to jump through five flaming hoops and castrate a lion in order to mock out TempData!

Since  
I mean, take a look at all the efforts poor Ben has to go through in order to get this going with mocks!  Yike!

I've got your back Ben!!  That's what blood brothers do!!

* Yes, this image shows up when searching Google for TempData, confirming the theory I espoused at my presentation on DevTeach 2007 that using the MS MVC is the only guarantee a .NET developer has for getting LAID**.
** Unless of course you are as good looking as yours truly*** in which case you should be getting some in between every unit test you write
*** Unfortunately, that's impossible

Thursday, January 31, 2008 #



Yes, that even goes for the ladies in this crowd!  Now that I've finally aired this in public I feel like a giant weight has been lifted off of my shoulders.

I was first introduced to the sensual splendors of assembla through the MVC Javascript Project, which
a) consists of JC Teague, Adam Tybor, Sergio Pereira and myself
b) sounds like one of the greatest names for a boy band I've ever heard
c) consists of people with the greatest names for boy band members that I've ever heard
d) "Quit playing games with my heart!"  Seriously, I could see it, but getting back on point...


And within several minutes I had fallen in love.  I've actually implemented this on a separate project/team with absolutely stellar results.   If you have any remote members but still like trying to do things in even a *pseudo*-agile way, it's awesome.  Looking for a feature tracker but don't want to piss around with Bugzilla's ridiculous installations?  It's there!  Want Subversion for remoters but are too lazy to set it up yourself?  It's there?  Strangled by confidentiality agreements that will not permit you to track your features, host your scrum meetings, or store your code base on a remote online site?  Well, hey I can't help you there, I'm not a miracle worker!  The point is that assembla rules and if there were a way to make love to a web application, I would have found it so that assembla and I could be together.  And heck, I'm happily married!    The main questions I have are:

1) How did I manage to remain unaware of this for so long?
2) How in the world do they afford to make this *free*?

In short, I would give assembla a test spin - that is, if it's worth risking your marriage!!
Tuesday, January 29, 2008 #



This is the smiling face of SHAME

D'Arcy Lussier managed to do the unthinkable and get himself *disqualified* from the "What Justice Gray Means to Me" contest due to his tribute post breaking the previously established rule of "no genitalia shots".  Overcome with fear and grief, he frantically whipped up a *second* (and much less drug-addled) tribute to yours truly over on his own blog.  What do you think?  Should he be re-entered into the competition or left outside to wail and gnash his teeth?


Monday, January 21, 2008 #


[18:12:12]
Justice~! - Be Agile or I will PUNCH YOU IN THE FACE says:
What is your experience with BDD?
[18:12:20]
Donald says:
not much
[18:12:26]
Donald says:
i'm more of a bdsm guy

Friday, January 18, 2008 #


[ed: If there's only one message we can glean from this guest post, it's JUST SAY NO to drugs.

I received this in E-mail last week.  Under normal circumstances, I would have just marked it as spam except that it was from D'Arcy Lussier and was titled "Greatest Guest Post EVAR".  Little did I know that my opening this E-mail was opening an EPIC.  I can't tell you my reaction after reading it, because I am still trying to figure it out.  However, one thing I know for certain: I take absolutely NO RESPONSIBILITY whatsoever for the content of this guest post.  All images, text, and spelling mistakes are explicitly the property of D'Arcy.

This post has forced me to make an addendum to the rules of our guest post contest.  Now, you can also win a "Potential Friend of Justice Gray" certificate if you are able to explain what the heck this guest post is talking about.  I would be touched by the sheer artistry of it, if only I could understand what strange language it is written in - perhaps one of you speaks Winnipegian and can translate??]


"The Adventures of the Mad Mexican and Black Mu-Stache the Sexually-Oriented Questionable French Pirate! (as told to me by the Mad Mexican)", by D'Arcy Lussier


It started out with a poker game between me, Black Mu-stache the Sexually-Oriented Questionable French Pirate, Castro, and Don Box in Cuba.

MadMexican_DonBox_FidelCastro.jpg

I was up big when the US sent in a special task force to try and assassinate the Cuban dictator, led by Richard Simmons...

MM_RichardSimmons.jpg


...they immediately tried to sweat us out to the oldies, but Black Mu-Stache and I escaped with our lives. We hopped on a freight ship leaving for who-knows where.

 

 

We hadn't gotten too far before our ship came under attack! Apparantly Black Mu-stache was somewhat of a ladies man during recent trips to the orient, and now we were under fire from a gang of Asian women-pirates who kept screaming "Why did you dump me at the coffee shop you French whore!?"

 MM_AsianPirates.jpg

Angered that we would bring this upon them, our cuban crew decided that they would throw us overboard. We were only in the water for a few moments before we felt something start to pull us down into the murky depths. We both thought we were gonners.

Until we realized that we weren't! Instead, our heads were surrounded by air bubbles and goth-mermaids were guiding us to an underwater city. They took us in to meet their king! We entered the throne room to be greeted by King Simser, leader of the Underwater Spooky Kids!

 
MM_BilSimser.jpg


 We relayed our story to the king, and he began to laugh heartily. At this point, his three children entered: his son Zune, his daughter Vista, and his other daughter Excel 2003. Excel 2003 gave out a loud gasp at the site of Black Mu-stache, and exclaimed that he was the one who had tried to get her drunk with cheap sake and convince her that his aquarium at home was big enough.

We figured that our leave was at hand, and raced into the citys sewer system which whisked us away from the underwater city and expunging us...

At Jabba's palace. I had done some wrestling matches for the Hutts before, so I figured this would be safe.

I'd be so wrong...

We entered and found that Jabba was out, but his brother Donald the Hutt was holding court. Beside him was his favorite entertainer, Steven Rockarts, chained to his side (I always thought Steven in a gold bikini was a little weird, but that's Donald I guess). I greeted Donald and explained that we were looking for a place to party.

MM_DonaldBelcham_StevenRockarts.jpg

Donald was gleefully happy to see us, especially since his shipment of scotch had shown up from Hoth (they don't just make good vodka). I realized that Black-Mu-stache was nowhere to be seen. Worried, I started exploring Donald's pad in hopes of finding him somewhere...and hopefully not in trouble. My hopes were dashed, as I saw him being accosted by some in the court he had offended by insisting that sushi was 10 times better than Indian food any day.

They threw us together in the carbonite chamber, and then everything went black.

We awoke spooning (aaawwwwkwaaaarrrrd), but thawed out. All around us were mushrooms...but they had doors...and windows ...and people living in them...but they weren't people...they were Bellwareurfs...and Native American ones at that!

MM_ScottBellware_Smurf.jpg

Thousdands of them descended on us, spears held high above their heads showing that they were interested in one thing, and one thing only: roasting us over an open flame until our eyes melted and our bones became so brittle that they could remove our skulls and  drink our boiled brains out with bendy-straws! We ran...we ran for our lives!!!

"If only some BC resident would come swooping down from the sky swearing at me, we might be saved!"

All of a sudden a chorus of loud squawks could be hurd over head, mixed in with f-bombs! the Bellwareufs scatterd as the  forest ranger Capt. Zak landed on his gryphon in front of us. Thrilled that we had been saved, we flew back to Victoria with him and caught a Westjet flight to Edmonton. But curses: the plane was hijacked and diverted...BACK TO JAPAN!

MM_MoreAsians.gif

Those Asian woman-pirates had found us, and weren't about to let us leave! We decided to jump out of the plane and take our chances. We hit the water and started swimming for our lives. A school of dolphins came and helped carry us to an island, an island called...

*AHHHH, I can't stand the lights...so bright...so bright!!! How can I survive...give me my cow back now! I'm so very angry that you took my cow, give me my cow back now!!!! AHHHH*


...so with the money we got from selling Black Mu-stache's kidney, we chartered a plane from Morrocco to Cuba. We'd wasted enough time, Richard Simmons and his minions should be taken care of, and it was a good chance that Box and Castro were up a few hundred pescos on us. We needed to finish the game.

WHAT DOES JUSTICE GRAY MEAN TO ME? YOU DO THE FREAKING MATH HOSERS!


Monday, January 14, 2008 #


[ed: many of you likely had to re-read that byline to verify that CodeBetter's Kyle Baley himself has dropped by to offer a guest post.  For the millions of you that are in shock that a thought leader in our industry wants anything to do with my name, I believe that checking out the title to his very first post (on his original tech blog) will explain everything.  All links to Kyle's blog(s) within have been added by me for purpose of clarification.]

My first...ummm...exposure to Justice Gray was in May 2006. During a routine vanity search of my name, I discovered a review of a presentation I did at the Calgary Code Camp. And to this day, if you google "Kyle Baley hotness", that same review will appear at the top of the list. Some other phrases from that review:
  • secret, *dirty* lover
  • Kyle's shirt is half up
  • Okay, fine, sexual. DON'T JUDGE ME!
  • My backside is numb
  • You gots a purty mouth
Like many, my first reaction to Justice Gray was "restraining order". (Come to think about it, that was my second through thirty-third reaction to him as well.)

But then, over time, fear for my own purity gave way to morbid curiosity. And over the next year and a half, we'd spar back and forth on the joys of Joey Tomato's Ahi Tuna Salad and our common interest in South American revolutionaries. During this time, keep in mind I had still never met Justice Gray face-to-face. Several attempts were made on both sides but, more often than not, I generally blew them off with a cryptic "I gotta bail. I'll explain later."

For you see, I was still afraid that I wasn't ready. I would think "I have one chance to meet Justice Gray for the first time. And that time is not now." So I waited for the opportune moment to present itself.

And that moment was Party With Palermo at DevTeach, November 26, 2007. An infamous moment captured on film by the Annie Liebowitz of software development :

Justice Gray and Kyle Baley.jpg
[ed: blog author's favorite photo of himself and Kyle]


Anyway, all this build-up doesn't really answer the question, "What does Justice Gray mean to me?"

The answer is not a simple one, as befits its subject. One could throw out words like Faith or Hope or Restraint or Reserved but these are such short words. So easily bandied about. And so lacking in the essence needed to describe Justice Gray. One cannot describe Justice Gray with mere one-word adjectives. If you must use one-off characterizations, a minimum of three words and ten syllables is required.

So we turn instead to more appropriate phrases. Phrases that cut to the very core of Justice Gray: "Extravagance and imprudence personified", "Reckless and incontrollable good-lookingness", "Wanton and all-encompassing aphrodisia", "An uninhibited, unabashed, unadulterated, unrepressed and unbridled lust for software development"

These are but crude beginnings of who Justice Gray really is and what he means to me. (Although after reading that list, I should add that I mean that in a purely heterosexual way.)

But mostly, he just means well.

Kyle the Reticent

Saturday, January 12, 2008 #


[ed: ah, forget it.  I don't know what I could add. If you're really desparate for a bio of the Igloo Coder, I can tell you without a shred of bias this is the best one out there!]


I first met Justice at a Christmas party that, in poor planning, had the misfortune of combining an invitation for me with an open bar.  I’ve never been sure if I found Justice to be bearable that night because of the fact I had someone spill a glass of red wine on my khakis or if it was because I over indulged in the open bar.  Being a bit of a gambling man, I put my money on the over indulgence and I haven’t been sober in Justice’s company since.

 

Not long after meeting Justice, myself and few other Edmonton based software developers decided to start a User Group.  In the interest of maintaining some technical and social credibility, Justice wasn’t invited.  As we became more and more serious about starting the User Group, conversation naturally (for a bunch of lonely computer geeks) started to shift to determining how we could get women to come to our meetings without feeling intimidated in the monthly sausagefest.  It was first pointed out that Justice would most likely be attending and thus our female quota would be filled, but counting on Justice to attend is like counting on him to be serious (for those of you that have English as a second language, or are from Winnipeg, that means it’s risky to put the chromosomal makeup of your group in his hands). 

 

Oddly it was about this time that we had an opening become available on our newly formed leadership board.  I say oddly because, as we sat in the pub finishing off another round (and watching paramedics drag our friend’s still warm corpse out the door), Justice came back from the washroom asking if any of us had seen the nail file that he’d left embedded between the corpse’s shoulder blades.  Anyways, once we were served with another round (and had become completely enthralled in Justice’s powder blue, velvet shoes) we decided that we should make Justice the Vice President of the user group.  The logic was simple.  With him as Vice President, women would attend the user group meetings and think “If they can have a woman that is that ugly as the Vice President, the guys will be all over me”.  And so, with the raise of glasses (and one bottle of Fruli – yah, you’ll never guess who was drinking *that*) our decent into mediocrity and incompetence began.

 

Unlike other people who have simply been shown Justice’s Transformer dolls (dude, they’re not action figures or just figurines), I’ve been honoured to have my own Transformer created by none other than Justice himself.  In a moment of clarity, Justice realized that he really needed to create the ultimate Transformer and that I was to be his muse.  The resulting creation had the Asian market lining up to buy their own copy of Sexmagnitron.  I’ve never formally thanked you for it Justice, but your melding of my stunning good looks with cold hard steel has filled my social calendar for the remainder of my life. 

 

Unlike the other guest bloggers you’ve had here, I’m not going to heap you with praise for Justice.  I’m going to be brutally honest as I wrap this up.  Your days are numbered buddy.  I’m not 100% sure if it’s because you’re going to stabbed in a dark alley by a gang of WorldVision orphans vowing revenge for your consumerist manipulation of Jaturapat, or if it will be when your wife is cleaning and she mistakes your hair for a furball and tries to suck it up with the vacuum.

 

That last sentence has left me feeling tingly all over.  Maybe it’s because I feel like I’ve finally poured my heart out about you or it could be because I’m starting to sober up.  Either way it’s time for a scotch.

Thursday, January 10, 2008 #


[ed: Continuing our seeming theme of bloggers who need no introduction, today we are featuring a guest post by none other than the infamous Caffeinated Coder Russell Ball.  Russell's blog and the Caffeinated Codey awards that come with it are some of the funniest articles currently on the web today, and I'm not just saying that because I am nominated in several categories for his "Best of 2007" awards! 

You might note that the majority of the links here today (save one) actually go to Gray's Matter articles rather than Russell's blog.  This (and the link to Russell's big crush) are entirely his doing and not mine.  I would also note that all images are Russell's creations; I take no responsibility for any unwanted arousals or orgasms you may experience upon viewing them.  Certainly this is a cunning gambit to try and take the prize of "Greatest Guest Post".  Will it succeed?  Only time will tell.]


Despite what I consider to be an unreasonable restriction on the use of genitalia shots, I decided to take Justice up on his guest post offer and share what the North America's Metrosexual Development Hero means to me. Justice, like a cubic zirconia, has many shiny facets, but here are the ones that mean the most to me.

Justice the Superhero

Justice Gray - Superman
Who’s faster than Scott Bellware* with a Microsoft conspiracy theory? Who’s more powerful than a hot agilista at a developer conference? Who can leap tall stacks of developer books in a single bound?
Let’s just say they don’t call him Justice for nothing.
Wherever there is a conference abstract that needs to be “sexed up”, he will be there.
Wherever there is a meeting request devoid of exclamation points, bold fonts, and superlatives, he will be there.
Wherever ridiculously hot people are being discriminated against, he will be there.
He may be just a mild-mannered (but extremely good looking) developer by day, but at night when he puts on the giant gold chains and arm tassels he becomes a crime fighter extraordinaire who causes evil-doers everywhere to wet themselves in fear.
With his wild, lustrous mane of hair and his uncanny fashion sense, he protects the world from evil by matching wits with all sorts of villainous characters like the Master of MVC Mayhem, the Mad Mexican, and the Igloo Coder.

Justice the Kung Fu Master

Justice Gray, Hidden Dragon
In my naïve state of grasshopperness, I once searched aimlessly for answers to the following questions.

What do Han Solo plush dolls have to do with strong typing? How would spinning rims on a bicycle bring me true happiness? 

How could David Laribee’s nametag magically appear in a person’s suitcase?

Then I met my metrosexual sensei and all my questions were answered.

He schooled my grandma and me in the nuances of globalization, weak typing, or the GAC. He initiated me in the secret ways of AIBO robot dogs.  He made me train from sun up to sun down until I was able to exfoliate and tweeze while blind-folded, standing on one leg, and performing a Celine Dion rendition of the Canadian anthem.

I learned to listen to master Justice. His wisdom is thread-safe and never throws OutOfBounds Exceptions.  

Justice the Patron Saint

Justice Gray - Font of Wisdom
Have you ever wept for a beloved pet that had been ravaged by a scripting language?

Have you been tempted by the sinful promises of independent consulting?

Have you ever been sickened by the thought of the poor, deprived children in third world nations who don’t even have a copy of Steve McConnell’s Code Complete book?

Have you ever witnesses the soul-wrenching agony of Martin Fowler being deprived of the object of his man-crush?

Well I have, and the only thing that helps me is to pray to the Patron Saint Justice for guidance. He will set you on the correct spiritual path and help you look damn fine in the process. Just don’t forget to send him a crapload of money afterwards.

Among his followers, autographed photos and the legendary "Potential Friend of Justice Gray" certificates are among the holiest of relics and have been known to cause developers to spontaneously speak in exotic tongues such as Ruby.  

Justice the Player

Justice Gray Fever
Finally, the side of Justice that I admire the most is his consummate playerness.

Like programmers everywhere, I have grown tired of being a smelly, poorly dressed, maladjusted geek with little chance of procreating.

What I want more than anything else is to be routinely mobbed by nubile young college co-eds and have female unmentionables hurled at me from every street corner.

In other words, I want to be just like Justice in all of his finely groomed majesty and oozing machismo-soaked glory.

With Justice Gray as my metrosexual role model, I am confident that I will finally break free from my developer impaired sensibilities and never again feel compelled to wear white socks with black pants.

Look out world, there will soon be another Justice Gray striking a pose on the catwalk of life.

In Conclusion


If anyone still has doubts about my deep-seated respect and admiration for Justice Gray, then may your nose sprout forth a giant outgrowth of bushy hair and may your giant walk-in closet be plagued with swarms of Armani suit eating moths.  

What else can I say other than…please hurry back from your vacation, Justice!

I fear that the world is on the brink of chaos without your raw metrosexual, super-heroesque, kung-fu-like, patron saintness to make things right.

We miss you.

* [ed: Yours truly has a very, very, *VERY* good idea of the author of the PurseFight blog, and it's not "The Bell". Since he has disappeared from the face of the planet, however, this is the only link that could be used.]

Monday, January 07, 2008 #


[ed: Ridley Thunder is not the real name of the gentleman who wrote this guest post and currently writes the "I am f**king 1000 dollar bills" blog.  However, it should be, as next to "Justice Gray" this is pretty much the coolest name anyone has ever had.  While Ridley is not a technical blogger he is a) hilarious and b) posts a picture of a naked or half-naked woman accompanying every single post he makes, thereby guaranteeing him being worth a look.  Ridley was actually the original inspiration for my getting into blogging a couple of years back, which means that
a) this blog has come full circle with this guest post
b) now you all know who is truly to blame
for my becoming a sexual hero to millions of North and South Americans.]

"There was a time..." Gandhi said that once. Or Bruce Willis, I don't know. But there was a time where believe it or not I did NOT know Justice Gray. I distinctly remember that era as "High School." I remember hanging around with the wrong crowd, scrounging money for things like Image's many alternate cover comic books and CDs of Kriss Kross (they made me wanna jump, jump). I couldn't find a date if I had many calendars. I was so gameless that if a girl was bent over and sighing "GIVE IT TO ME RIDLEY" I don't think I would know WHAT to give to her. Then I graduated, as virgin as the white snow of cocaine my uncles imported from "the madreland." Then .....Justice happened (actually it's more like Suresh happened, then Justice happened through a happening of a happen, but I digress)

I clearly remember his first words to me:
"Come with me...."
"Where?" I asked
"We'll travel through infinity"
Little did I know that "infinity" meant his collections of Transformers dolls. Nevertheless seeing a gigantic Megatron was pretty kick ass. But because of this fateful meeting my life would be forever altered. I had countless of viewings of the original Transformers Movie, which still brings a tear to my eye. Not because of the movie mind you but because Justice beat me with a belt fashioned out of an old Optimus Prime figure every time I finished watching it, screaming "WATCH IT AGAIN! When Optimus dies, CRY HARDER!" Sort of like A Clockwork Orange without the cool gang suits. A year later Justice would teach me what piece fits the with the other piece IF YOU KNOW WHAT I MEAN. That's right, Tetris! Justice forced me to play Virtua Tennis until my hands were bleeding, then cackled every time he beat me. He would quiz me with innane trivia like "If you have to pick one Autobot to have sex with, who would it be? Ironhide or Jazz?!" Then he scolded me because I would chose Ironhide, "WHAT ARE YOU? RACIST!?" I don't know what that MEANS. 

After a while I moved out of the country to try to get away from Justice, but he just kept emailing and emailing and emailing me. Even after I blocked him, he hacked his way in. He even bribed the police to laugh at me every time I reported him (who knew the UK Police Dept were such MacBookphiles). I really think he became a computer programmer so he could continue to hack his way into my email and send me viruses every time I didn't fill out one of his 100 question "Get to Know me better" emails. Every question ended with a sly nod to him being "Supremely awesome", like take question 95 of this email "So who is your SECOND most supremely awesome person in your life? a) It's just Justice Gray and only Justice Gray b) Do you really want another Trojan Horse?

So like a beat puppy I limped my way back into the fold. But then Justice got married, started a blog, and taught me how to play poker. Which I kick ass in by the way. Now I finally live a normal life. This is 8 years afterwards. The lesson in all of this? Well in between the 8 years of torment I graduated from University, got a sweet gig, wrote a sweet blog, made some sweet love, and have some sweet friends. So you too can also survive with Justice Gray in your life, just like me.

Except you will be better at poker.

~fin

Ridley is the writer of the "I am f**king 1000 dollar bills" blog. He also likes to be called "Staff Sgt Max Fightmaster" but the ladies can just call me "Staff Sgt".

Friday, January 04, 2008 #


Guest Stars In History
An example of a successful guest-starring role

If there's anything that this blog has stood for over the last couple of years, it is the spirit of shameless self-promotion.   It is with that spirit in mind that this blog is opening up to guest posting over the course of the Gray's Matter sabattical.  This means that from tomorrow until January 21st you have a chance to be a part of history in the making.  

As we all know, this blog holds itself to the highest standards of quality so there needed to be a method of ensuring that only guest posts of a transcendental level were accepted.  I'm pleased to announce I'm come up with a workable solution by locking down the topic of discussion.

Here's what you need to do if you want to have a guest post published in this space:

  1. Write a title of "What Justice Gray means to me, by [put your name here]"
  2. Write a post that discusses the title above.  Said post can be as long or as short as required to properly discuss the topic at hand.  Some of you are no doubt inspired to write a multi-part series, but for right now let's limit this to one post only!
  3. Write a *short* biography/description of yourself.  Include a picture if you feel it necessary.  No shots of genitalia please - this is a family-friendly web site!
  4. E-mail me your post!
  5. If there are images to be included in your post, either send them to me via E-mail (look for "E-mail Justice" on this site) or point me to their locations on the web.

I will then put your guest post up, complete with enough gratuitous links to your blog (if you have one) that it will almost pass for blog spam! 

As if the thought of becoming a living legend was not enough to inspire you, the best guest post will win a prize TBD, which will *definitely* include an autographed picture of myself along with a limited edition "Potential Friend of Justice Gray" certificate!  

2008 will be a year of many things to many people; make it the year you take 5 simple steps to guarantee yourself internet immortality!

Sunday, December 30, 2007 #


Coming Attractions

Can you believe that this blog has been in existence for more than 2 years??  How time flies.  And what better way to celebrate this two-year anniversary than by...

GOING ON HOLIDAY!

On Vacation
That's right, my laptop and I will be going on "blogging vacation" until sometime between January 14th and January 21st, 2008.  When I make my courageous, triumphant return you can look forward to:

  • the long-awaited, oft-demanded return of Hot Developer Corner!
  • the remainder of the reviews from my "Become a Better Developer in 6 months" list
  • speaking of goals, whatever happened to this promise
  • the complete retraction of an earlier post!!  Yes, that's right, public admission that I was on the wrong end of a debate
  • my grandmother and the Model-View-Controller pattern
  • an impassioned defense that will no doubt lead to yet another religious war in software development
  • my review of a recent Agile book, and how this ties into learning to talk like a normal human being
  • my public endorsement of various people for the Microsoft MVP program, which will probably result in them all being blacklisted for life
  • the revelation of what it is I actually *do* (finally, a response to Ben Schierman's post)
  • an open letter to INETA
  • a call to arms for all software developers

and finally, while I don't want to get anyone too excited, there is a *slight* possibility that in January you will be witness to the beginnings of the single greatest confrontation of 2008

"But it's barely even January!" 

Trust me, I know. 

I know

Next: how you can be part of the greatest year in Gray's Matter history!

Sunday, December 30, 2007 #


Jeffrey Palermo was recently featured as the 299th interview on .NET Rocks, discussing a topic near and dear to many of our hearts: the Microsoft MVC.  I  definitely recommend listening to it when you get an opportunity.  That being said, I know that:
Therefore I, as a public service to the reader, have edited the show down to contain *only* the important parts that were discussed.  Trust me when I say this is all you need to know about developing with the MS MVC, about software development, and perhaps even life in general.

The "Cliff Notes" version can be found below. 

JeffPalermo_NETRocks.mp3
Friday, December 28, 2007 #



Kyle Baley and James Kovacs join CodeBetter
The two newest bloggers at CodeBetter*

(The astute among you will note that this post and yesterdays are *not* a continuation of DevTeach: a saga in 17 parts.    I could tell you that there's just too many things for us to talk about in the next little while and not enough time to talk about them in, so its been put off for now.  This is a LIE.  The *real* reason for our sidebar is that you (yes, *you*) are just not ready to handle the tales that would come out of my recap.  Thus, the story of Jeffrey Palermo throwing me through a plate-glass window to end his presentation on the Microsoft MVC will have to remain shrouded in mystery, potentially lost forever to the sands of time.)


I would say that most of the people who read this blog likely also read CodeBetter, except that:
  • people come to CodeBetter to, well, code better
  • people come to Gray's Matter to...actually, I have *no idea* why people come here, but it's certainly not related to coding better

As popular as CodeBetter is for software development, it shouldn't surprise anyone that the end goal of the site was never to "help foster awareness of better practices, superior tools, proven methodologies and techniques within the software development community." or whatever pseudo-reason they give on their manifesto page to get free software.   Every move that CodeBetter has made in the last several months indicates that they are trying to get a more photogenic and diverse group of people so that they can fulfill Brendan Tompkins' *real* dream: to make a run at a new season of MTV's "Real World".  With the addition of Kyle Baley and James Kovacs to the fold, their chances are now as good as they will ever be!

While it's obvious to anyone who has witnessed my career that I am *not* affiliated with CodeBetter in any way, I *do* happen to have an "inside man" at CodeBetter who tells me that James and Kyle passed a rigorous screening process that consisted of:
  • being a developer
  • having either their first or last name starting with a hard "C" sound, so as to make "CodeBetter" a catchy nickname.  James "CodeBetter" Kovacs, for example, has a fantastic lilt to it.  Not so much for Jeremy "CodeBetter" Miller (I'll be surprised if that guy even lasts the year with the poor way that flows!)
Not everyone coming to CodeBetter will be familiar with either Kyle or James.  Luckily for you, as a fellow developer and Albertan, I am as *intimately* familiar with James and Kyle as one rampagingly hetero man can be with another group of relatively hetero dudes.

Kyle Baley

You wouldn't be blamed for thinking that a man with the nickname of "The Coding Hillbilly" would be targeting the one-toothed "You've got a purty mouth" segment of software development, finally giving some competition to all of the technical blogs from Winnipeg, Manitoba.  However, Kyle was not added because he is software development's answer to "Deliverance" - in fact, Kyle was selected because he is coding's answer to Mary Tyler Moore.  Kyle has had to overcome several crippling hardships in his life, such as:
This set of circumstances would kill a lesser person, but Kyle courageously persevered through all of this to a bright future at CodeBetter.  On receiving the news of his acceptance, Kyle was in fact seen throwing his hat into the air and singing "You're going to make it after all", truly a thrilling moment for software developers and middle-aged women alike.  His boundless energy, user interface abilities, and Catholic school girl naiveté now balance out some of the more curmudgeonly members of CodeBetter, truly making their group an ensemble cast for a sitcom if there ever was one. 

James Kovacs

Kyle joining helped recapture the "family friendly" audience, but there was still no one at CodeBetter to snag that coveted preteen girl demographic.   After all, every reality TV show needs its rebel without the cause, wanted equally by the police and the ladies.  Who better than the pimp-slapping, gun-running Agile Track Chair of DevTeach Canada?  10 million dollars and a case of malt liquor later, it was official: James Kovacs was on board the "ho" train.  The addition of James not only gives CodeBetter another fabulous presenter and brilliant mind, but allows CodeBetter to massively improve their "street cred" with the more "urban" software developers.  Fans of 2-pac, Biggie Smalls, 50 cent, and agile development will be right at home with a man who is no stranger to pistol-whippings, NHibernate, gold teeth, and limousine parties. 

In all seriousness, James and Kyle joining CodeBetter is pretty much a move of *NUCLEAR EXPLOSION* proportions in our industry.  Yeah, yeah, great validation of their talents, rah rah wider audience blah blah better for the community but let's cut through all that BS and get to why it's *really* important - the Alberta community is only about 3 or 4 more developers away from taking over CodeBetter.  Every decision CodeBetter makes as a group is determined by the votes of their members.  So if you care about code and also care about proving democracy is a failure, I encourage you to find some more Canadians and try to get *them* in there as well!  Will CodeBetter become a Microsoft suck-up site?  An "adults only" site?  A lolcats site?  An adults-only lolcats site with Microsoft popup advertising?  With Kyle and James as part of it, the future of CodeBetter is limitless - go over there and give them your encouragement today!

* that's an old picture of WHAM! before anyone gets any questionable ideas

Tuesday, December 18, 2007 #


ALT.NET Purse Fight

I think we all know which one is first in the hearts and minds of a generation, but unbelievably, the world finally has a close contender for second: the ALT.NET PurseFight blog

For the longest time, I believed that Justice's Third Axiom of Software Development

"When two developers have a slap fight, nobody wins"


would remain a truism until the day they shot my rotting corpse out of a cannon, but I am always happy to be proven wrong.  The ALT.NET Purse fight blog proves that when nerds start pulling each other's hair everyone else benefits from the hilarity that ensues.  I don't know who writes this thing, but whoever does, I salute you, your amazing genius, and no doubt your *incredible* good looks, because as we all know from Justice's Fifteenth Axiom of Life In General, "Only fantastically good-looking people are funny."


Tuesday, December 18, 2007 #


It seems that the excitement continues to ratchet up at DevTeach 2007.  In addition to some of the greatest presentations in North American history, it seems that Jean-Rene Roy and the rest of the executive have creatively added a brand new attraction that I've never seen at any conference yet; the presentation version of "Survivor"!!

At least, that's the only possible explanation I can see for what is literally a change from just *yesterday*...

devteach2007_before.jpg

to *today*...

devteach2007_nowwithpalermo.jpg

That's right, apparently only at DevTeach will you be able to see Jeffrey Palermo and I do nearly identical presentations on exactly the same topic!!  Forget about D'Arcy Lussier's claims that I am somehow going to have a throwdown with one of the castoffs from Color Me Badd!  It looks like Mr. Palermo has decided *he* wants to take aim at the sexiest developer alive.

I can almost visualize what transpired in a darkened room in Austin, TX:

"He has amazing shirts, fantastic hair, oozes machismo, and people rip their clothes off at the sight of him.  How can I get a piece of that action?  He's not even an MVP!!!  I need to know HIS SECRET!!!"  (slams hands on table)

(frantic pacing, weeping, follows for 30 min.  Then...)

"That's *IT*!!  He's presenting on the MVC and *that's* why he's routinely mobbed by hordes of college women!  YOU'RE MINE JUSTICE GRAY!! MIIIINE" (cue cackling maniacally as Jeffrey twirls his imaginary moustache)

Jeffrey's wife (knocks on door): "Honey, are you done in there?  It's time for dinner!!"

Jeffrey: "I said IN A MINUTE!!" (frantically puts his shirt back on and rolls up his Justice Gray poster)

Jeff obviously wants to harness some of that raw metrosexual joie de vivre for himself, and who can blame him?  I'd want to capture it as well if I were not already me!  Jeff, I know you want more than anything in the world to come home to your wife and children with a crate full of women's underwear and loudly proclaim, "This got thrown at me in Vancouver!!  In public!!"  but the MVC is *not* the path to being covered in frilly lace garments.  Do not blame my upcoming presentation on the MVC for my status as the focal point of society's carnal desires.  Instead, blame the *real* culprit: genetics.  If I can give you any advice as a role model to millions and a brother in Christ, it is that ridiculous good looks don't come from presentations on *any* topic; they come from the heart.  If I could give you any *other* advice it is that you probably won't be able to become a software development sex symbol when you're throwing extravagant parties full of dudes

I know some of you are disappointed to hear this, but there will be no octagon matches between Palermo and Gray at DevTeach where I end up stuffing him into a serving wench dress.  And that same some of you should probably seek therapy.  Jeff P presenting on MVC is good news for you at DevTeach, and it's good news for your freedom of choice!  Believe it or not, not *every* software developer wants to come to presentations involving Mexican wrestler masks, public intoxication, sexual harassment and the threat of potential lawsuits.  Some people want to see technical presentations with technical *content*; thankfully, I know Jeffrey Palermo can provide it in spades!!  For the rest of you, nothing changes at DevTeach on Thursday, Nov 29th at 3 PM...except your LIVES.

FOREVER.

Thursday, November 15, 2007 #


Yes.

Oh, yes.

Introduction to the Microsoft MVC Architecture...what side are YOU on??
Presented by Justice Gray

Everybody who is anybody is talking about the new MVC.  And when you've heard it mentioned, you've *also* heard the standard "We can all play nice together", "there's still room for choice", "this is just an alternative" and all those other phrases that likely also involve group hugs and the Care Bear Stare.  FORGET THAT.    The world is waiting for a man to take a stand - a name that people trust to start the next great religious war in software! So at DevTeach, North America's Metrosexual Development Hero is going to break his silence and show you why the Microsoft MVC is the *only* Microsoft web architecture you should be developing with.   Sure, Justice *doesn't* have the advance betas, lines of cocaine at every table, and free entry to shady massage parlors that Microsoft gives their MVPs, but he *does* have the ability to incite a full-scale *RIOT*!!  Why is this the most important piece of MS web architecture in ten thousand years?  What's the problem with traditional WebForms development?  How do the mysterious Page Controller and Front Controller patterns figure into this?  Why do Datasets suck?  Will Justice even get a beta in time?  Will you get laid tonight?  Who hit you over the head with that beer bottle?   The answers to these and *many* other questions can only be found in THIS PRESENTATION, so make sure you're there for the session that neither you or the local authorities will *ever* forget!!

Let's get ready to RUMBLE!!  HA HA~!

Friday, November 09, 2007 #


Two pieces of massive news, ladies and gentlemen:
1) The absolutely stellar sequel to the 2006 Edmonton Code Camp is less than a week away!! 
2) At this code camp, you have the chance to be part of a session unlike anything you've experienced at a Code Camp before or ever will again.  Here are the details, ripped straight from the sessions page:

Unlike most sessions you have participated in at conferences and code camps, this session will involve the entire room in the conversation. Anyone can take one of the five speaker chairs to ask questions, make statements or answer question. No one person will not be able to take control of the room as the fishbowl (group of 5 speakers chairs) will be constantly changing as people step in and out. Because of the dynamic nature of the people speaking, the direction of this session will be influenced directly by you, the attendees.

Come for the conversation that will make you want to change the world and *THEN* change your pants!!  *You* are the future of software development in Edmonton.  *YOU* are going to be the harbingers of change in our city, our community, and our entire industry.  So this is your session - an open dialogue with some of the brightest minds in Alberta...*and* perpetual tag-alongs Donald Belcham and Justice Gray!  If you can only attend one session at Code Camp...if you can only attend one session this *year*...heck, if you can only attend one session in your entire life, this is it!  If you have ever wanted to improve your team, your organization, your sex life, or Donald's fashion sense, this is the talk you can't afford to miss.     What happened at ALT.NET this past month?  How do we empower others around us to make change in their industries?  How do we demonstrate the value of agile development practices and tools to our management?  What gets you fired up like nothing else?  What is the future of the Edmonton .NET user group?  Come bring your voices and your experiences to the presentation as we come up with the answers to these and other questions that will guide the  


Yes, the abstract ends abruptly just like that; a stroke of brilliance.  Exactly what is it that we're going to be guiding here?  It looks like you'll have to attend this session to find out!!  However just for the readers of this blog I will kill the suspense and spoil it here: the results of this session will be guiding the Alberta .NET community for some time to come.

This is a conversation we have been wanting to have for some time, *with* the community's direct involvement.  You might argue this sort of session violates the "must be about code" rule, but I beg to differ.  A discussion like this is all about the code.  It's all about the code you and your teammates are writing every day.  It's all about the code that powers your companies.  It's all about the *real-world* code that we are putting into production systems every day.  Out of all the session at Edmonton Code Camp this year (and we have an amazing lineup, to be sure) I am the most excited about this one, because our community is the presenter.   I look forward to seeing and hearing you there this Saturday at the University of Alberta so that we can start changing the dev world together!! 

Monday, October 15, 2007 #


So the ALT.NET conference has begun, Donald Belcham is dressed up in his full-body plush dog costume and is apparently asking the remainder of the conference when the "yiffing" is about to start.  I suppose I should have informed Donald that "ALT.NET" was *not* an alternative lifestyles conference before he left, but I'm sure the results will be more entertaining this way.  There's been a lot of interesting technical topics discussed thus far but let's be honest, you don't *really* care about a bunch of developers hugging each other and singing Kumbaya every time someone mentions the word "Monorail".  No, you are wondering whether Martin Fowler has accepted his certificate yet!!   I have an update from my contact in the field:

"Hey, you wanted to know whether I talked to Fowler yet.  I came up to him at a quiet moment and said, 'Great news Martin!  I have a little something here from your friend Justice Gray'
'Justice?  Where is he?  He told me he was going to be here you know.'
'Um, Martin, he wasn't able to make it today.   But he did give you this certi...'
'HE PROMISED ME!!!!'
'I know, but he's not here and I...'  
Martin, shaking uncontrollably, bellowed 'You do something.  You take a picture of me right now and you send it to Justice - that way he'll see the kind of havoc he has wraught!!'  I fumbled for my camera as Martin, choking back tears, stared at me with the anguish of a thousand souls in torment."




"Martin refuses to speak to me and is now giving me the cold shoulder anytime I am near.  I don't know if I'll have a chance to give him this award but trust me, as a man who wears Linux-themed shirts in public I am no stranger to adversity.  I'll keep you posted."


Tom, I want to say thank you for trying to help the healing at ALT.NET.  It's nice to know that while some people representing Edmonton are running around in Snoopy costumes and dry-humping fire hydrants, *someone* is actually trying to take the first important steps of healing in our community.


Martin - don't run from the pain...embrace it!  Only then can you - and all of us - transcend it into something more.

I will keep you all posted with the *real* news of the conference as I get it...feel free to send or post updates as you have more pertinent info!

Saturday, October 06, 2007 #


Martin Fowler - the face of a broken heart
This is the face of the broken-hearted

Hey there Martin,

I received your messages - all 15 of them.  Some of them were angry.  Some of them were drunken.  Some of them were even musical (my wife was particularly fond of your rendition of Celine Dion's "All By Myself"), but all of them carried a common theme - you were hurt and angry that I will not be able to attend the inaugural ALT.NET conference after all.  I know that you are worried that
a) you will never be able to meet your "metrosexual hero" in person
b) you will never be able to thank me for the review of Refactoring that sent sales of that book skyrocketing
c) as a result of my non-attendance, ALT.NET will *no longer* be the greatest conference in North American history.

First of all, let me assure you that ALT.NET, despite the absence of one of the sexual giants of the software development industry, will still be one of the most amazing gatherings of developers ever.   Even if said bucket of machismo *could* attend, you might think Ayende Rahien's presence is not enough to make up for the absence of the man who wears North America's most seductive shirts.  I beg to differ; even without me coming, the conference is still filled with other Albertan luminaries like
Donald Belcham, Tom Opgenorth, and David Woods, just to name a few!  Second, you have an office in Calgary so it's never like we'll be all *that* far from each other.  Just drive up sometime!  Perhaps you could even do a presentation for Edmonton Code Camp, conveniently scheduled on October 20th of this year.  Even if you're too busy for that, I'm sure that two primal forces of the universe like you and I cannot help but one day collide.  Just trust your heart, Martin.

I know that you are angry.  Sure, not Scott Bellware "I'm going to walk into Bill Gates' office, defecate on his desk, and set it on fire" levels of rage, but nonetheless disgruntled and disappointed.  Martin, *no one* is more disappointed than I am about missing ALT.NET.  I was all ready to propose a session on "How to Tell People You Work in Software Development and *still* get laid", and maybe even a bonus on "Seduction Driven Development".  With you, myself, *and* Ben Scheirman
in the same place, we were poised for an incident of global proportions.  Alas this year it is not to be.  This situation was unavoidable and I made the only choice I could.  A year or two from now, Martin, you will understand that I made this decision for the greater good.  Will I have missed ALT.NET?  Yes.  But will I have saved the future of North American software development?  Almost *certainly*.

I know that you consider me to not only be a close personal friend but even a role model, so I am loathe to disappoint you.  Sure, maybe you'll tell people at ALT.NET, "I don't even *know* this Justice Gray!  He may be terribly good-looking, but he's loco!!" Don't bother.  The attendees at this conference are smart, insightful people and the Igloo Coder.  They'll all see through your clever facade to a man that is aching inside...aching for a friend.  Thus, I've come up with something for you that will make the days go by a little easier.

A while back, I mentioned the existence of the "Potential Friend of Justice Gray" certificate.  It pleases me to announce that you, Martin, are the *2nd ever recipient* of this coveted award, which I've passed along to my Albertan comrades to give you at ALT.NET.  Like the Golden Ticket in Charlie and the Chocolate Factory, this certificate is so rare as to almost be an urban legend - even peers of mine doubted its actual existence.  So I caution you to be careful with brandishing this certificate.  You may suddenly find yourself more popular.  You may suddenly find people throwing underwear and hotel keys in your direction at inappropriate times.  You might find yourself wondering if you are being used because of your association with me.  Don't worry - you *are*.  But enjoy it!  I know it is not the same as having me stand in your vicinity while you shout to passers-by "This is Justice Gray...my *friend*!" but it's pretty close. 

Even you hadn't been sobbing loudly into the receiver, I still would've known this weekend would have been difficult for you.  But remember, when it all comes crashing down and it hurts inside, you're got to be a man...don't let it slide.  You're a leader of the industry, for goodness sake!  People will be looking to *you* to be strong this weekend - to carry on as if there were not a gaping void in the hearts and minds of every person in attendance.  Just pull yourself together for this brief time - if not for yourself, then do it for everyone at ALT.NET!
 
I've sent a copy of this post with your certificate in the event you were too busy to read it prior to the conference.  If you require the certificate to be laminated please let me know but you will have to pay framing costs yourself.

Your brother in arms,
Justice Gray
Thursday, October 04, 2007 #


  Resharper testrunner results: failed -19, passed -1542, ignored 1
Monday, September 17, 2007 #



The Pragmatic Programmer: The Best Way to Pad Your Blog Content For 30 Dollars

Buy this book now!  Don't buy it because it's well-written and full of great advice.  Don't buy it because it's Dave Thomas' greatest creation since the Spicy Chicken Sandwich.  No, buy this book because you'll be paying a paltry $30 US for at least *two months* worth of blog content you can repurpose!   That's *50 cents US* per blog post! Heck, write your own book, swipe most of its topics, and make even *more* money!  You've seen how lucrative the book industry is!!  Have you wanted to look like an expert in your field after a paltry 1/6th of a year?  Then this book is for you!

I wasn't half this enthused when I first read The Pragmatic Programmer.  The book itself is a quick read with approximately 70 tips for becoming or continuing to be a successful software developer.  However, if you've read technical blogs for at least 3 months or taken a look at similar books in the field, you'll quickly realize you've read it *all* before.    How many posts have *you* read about "No Broken Windows"?  "Refactor Early, Refactor Often"?  Heck, "Care About Your Craft"?  Pretty much every blog posts something along these lines at least once in their lifetimes, and *this* blog will be no exception, except when I do you will *know* I'm liberally lifting from them and simply putting it in a sexier, sleeker, metrosexualler package! 

See, originally I thought that the Pragmatic Programmer was a waste of my money.  "Why does everyone love this book when all it does is regurgitate a bunch of blog posts I've read over the last couple of years?"  And then I found out why...because it was written in 2000!!  The Pragmatic Programmer is not the regurgitator, my friends...no, the Pragmatic Progammer is the regurgitee.  Blogs have been getting inspiration or outright *stealing* from this book for more than half a decade!  Why should *you* be left out? 

Regardless, the book is enthralling and you could pretty much read it in a day or even a couple of hours, if you are so inspired to do so.  My only complaint with the book: there's no easy reference to scan all 70 of the tips at a glance. the pull-out reference guide for the 70 tips is *buried* in the back cover of the book!!  Who's going to read through *indicia* and advertisements to get to that??  Who even *opens* back covers of books anyway, except for the admirable Avonelle Lovhauq?  Thumbs *down* for that!!

I'll warn you though, although you'll likely appreciate the advice (even if you do have a feeling of deja vu when reading), you'll likely get just as angry as I did when I read Martin Fowler's "Refactoring".  If this advice is pretty much common-sense *and* it's been around for 7 years, why the hell is the field of software development still in such a sad state on average 7 years later??   I've seen companies that were lucky if just *one* of the 70 different tips were things that their team took to heart.  

In the end, this book gets a 4/5 - for sure, I'd sleep with it at a moment's notice but reading the Pragmatic Progammer is more like sleeping with an aged, seasoned prostitute; you might've seen all the tricks before but likely they originated here.  Besides, you'll just take what you learn there, claim it as your own and then be hailed as the greatest lover in the world*! 

* Yours truly has never slept with a prostitute or *been* a prostitute, despite the fact women offer to pay him for sex ALL THE TIME**
** of course, yours truly is also happily married so put those $1000 bills away, ladies***

Wednesday, September 05, 2007 #


It seems that "Javascript doesn't suck, you do" has evolved from a catchy presentation title to a full-blown movement.  It's unfortunate that this movement hasn't seemed to have hit Microsoft itself yet, judging from Kyle Baley's review of John Bristowe of Microsoft's recent presentation on Microsoft Silverlight.  One particular Bristowe quote caught my attention:

"Early in the presentation, John asked, "Who *likes* working with HTML, CSS, and Javascript?"

My answer to this is a resounding I do, which brings us to

Answer #1: Phenomenally good-looking software consultants enjoy working with Javascript.

Now, you might not consider a man who spends his time posting about dinosaurs carrying grenade launchers and proclaiming his heterosexual and completely platonic love for Michael Bay to be the most credible technical resource.  But in addition to myself, here are some *other* people who like working with Javascript:

Kyle Baley, AJAX master and keeper of the most extensive "Women In Song" collection in history
37 Signals (in fact, they wrote a whole post about it)
Hamilton Verissimo of the Castle project (who also wrote a whole post about it)

Which brings us to
Answer #1A: Technical thought leaders in web development *and* phenomenally good-looking software consultants *and* people who like bolding fonts enjoy working with CSS and Javascript

So given statements #1 and #1A, we can likely conclude that:

Answer #2: People who *don't* like working with Javascript are either
a) not technically credible
b) not terribly good-looking
c) an unfortunate mix of both

d) a volcano full of irrational hatred

I believe that John lies in category d).  You see, this loaded question of John's has come up in *three* separate presentations about 3 entirely different technologies:
I'm not too sure what John Bristowe has against Javascript to have him deny Javascript three times before the rooster crows.  Perhaps Javascript burned down his house.  Maybe a former girlfriend left him for a web designer.  Even more likely, it *could* be that Microsoft has a bomb implanted in John's skull that will explode if he ever hints that he really has a soft spot for dynamic languages.  Wherever this question comes from, I still dislike it; it implies that Javascript is some ugly language that *no* web developer should ever get familiar with.  While not everything in Javascript is exactly how I would like it (there are definitely places where it looks like it was constructed by two or more entirely different teams), it is still a pretty formidable language.  

Now, I'm not anti-AJAX Framework and Silverlight.  In fact, I'm all in favor of abstracting away AJAX and DHTML-driven technologies so that people don't need to continually roll their own.  How many different Javascript-driven Datepickers does the world require anyway?  However, I do not like the seeming emphasis that web developers shouldn't know web technologies.  I've got news for web developers out there: if you want to be considered credible, some knowledge of the primary technologies involved in web development would be an asset.  Now, I know what some readers are thinking and you're right - knowledge of Javascript and CSS is not essential to developing a web application.  However, the following two statements are also true:
  • Real object-oriented knowledge (not "I wrote the word 'class' so I'm an OO developer") is not essential to developing a web application.
  • Proper architectural and design patterns are not essential to developing a web application.

Of course, try to develop a large-scale web application *without* either of the above, and see where that gets you.  

Perhaps Microsoft dislikes these technologies since it spent the last 5 years ignoring any sort of W3C recommendations, fostering massive display and behavioral incompatibilities for browsers (at least until IE7 hit), and simply views CSS and Javascript as inconveniences that should be abstracted away so it doesn't have to listen to all those whiny standards people.

I guess after typing all of this, I have my *own* questions of Microsoft and its presenters:
1) What exactly is your problem with the web and the languages in it? 
2) Why do you encourage people to be ignorant of the concepts and technologies that currently drive the web?  Can't we all just get along?

Tuesday, September 04, 2007 #




Anonymous Developer A: "So, Get Latest Version is broken"

Anonymous Incredibly Handsome Metrosexual Developer:  "Excuse me?"

"Get Latest Version from Team Foundation Server.  It's broken - we get build errors once we retrieve from the repository"

"I seem to remember Cruise Control sending us an E-mail this morning stating that the build was broken because someone did a check-in with a syntax error.  Did that get fixed yet?  Could that be the problem?"

"[name withheld] says that this isn't the issue, it's Get Latest Version.  Besides, we can't trust Cruise Control - TFS is broken on check-ins as well."

"Check-ins are broken too?"

"Yeah, sometimes we add a file to TFS but TFS doesn't *really* add the file.  Or we get a defect rejected because we asked TFS to check-in a file but TFS doesn't really check in the file."


"So you're telling me that Get Latest Version, Add File, and Check In Pending Changes are *all* broken."

"Yes, and merging too.  We have to lock the files when we check out because TFS merging doesn't work, it just overwrites changes for no reason."

"Wow, that is weird.  [Awesome Anonymous Developer] and I have been helping on this project with you guys for three weeks.  We've had to add files almost every time we've checked in, with no problems with the build *or* with resolving defects.  We have even managed to *merge* files without catastrophe.  There can only be one of two explanations for this miraculous occurence:

a) TFS isn't actually broken; it's just that [Awesome Anonymous Developer] and I have figured out how to use TFS

b) every possible function of source control in TFS is broken, but [AAD] and I possess magical powers.

Now, if you'll excuse me, I have to go put on my robe and wizard hat so I can see what's going on with the build."

Friday, August 17, 2007 #


Last week D'Arcy Lussier decided - in an attempt to stand out among the various proposed DevTeach 2007 speakers - to stop talking about .NET and focus on erotic book covers instead.  At least that was how I read the first image featured in "If Book Publishers Were Smart, Part Two", because on viewing the right half of his "Wrox" book mockup, I became powerfully aroused.  This despite my being *firmly* heterosexual!!  Truly I have never been so confused.

Now, D'Arcy's post was a controversial one for many reasons, not the least of which that he randomly selected three developers for the covers of these books, two of which just ended up there to fill space while he paraded the third around shamelessly as a sex object despite D'Arcy being married.  As the sex object in question, I want you all to know that I was not offended.  After all, nowhere is it more true than in the software industry that appearance == credibility.  This seems to be what fueled Scott Miller's comment stating that on average, Wrox features nothing but the homeliest of homely on their book covers and thus he felt no inclination to believe anything their authors said.  Jeff Julian, author of the Sharepoint Wrox book, threw out his heart-shaped Scott Miller locket in protest.  However, was Scott really that wrong?  Do *you* trust anyone who would wear a Microsoft polo shirt to a photo shoot?  Hell, do you trust anyone who wears a Microsoft polo shirt in public?   I think not.

It's plainly obvious to me that if Wrox wants to achieve any sort of technical respect in our industry, they need way more sex appeal on their book covers.  What you want here is technical competency mixed with oozing machismo.  D'Arcy's "Wrox" book cover is on the right track; it definitely will draw in the coveted female developer demographic while still having Donald Belcham there to provide some shred of technical credibility for the astoundingly few software professionals who actually buy books for the...*snicker*...content.  While a pair programming book featuring Donald and I teaming up would no doubt be the all-time best seller of Wrox's publishing history, there are still three major problems with it preventing it from outselling every other technical book combined

  1. the cover implies that Donald and I are a couple, whether it be the strange positioning that looks like I am giving him the eye, or the cover copy that states all of our pair programming is done in bed.  This is problematic not simply because both Donald and I are totally hetero (and I am married!), but also because you need your audience to think that they still have a chance at getting with us in order to guarantee sales.
  2. The cover copy does nothing to point out why Donald and I are credible software developers, in fact the most credible in North American history. 
  3. As Keith Rull pointed out in (once again) D'Arcy's comments, this cover is far more likely to sell with an "action" shot of me rather than my intentionally hilarious blog photograph.
As I am both a super-genius and an incredible graphic designer, I have taken the liberty of refactoring D'Arcy's original concept into something that solves all three of these problems at once: 

Beginning Pair Programming by Wrox - Donald Belcham and Justice Gray
artist's conception

Wrox, if you are reading, I just gave you a license to print money.  Feel free to contact me to start a new golden age of publishing!

Wednesday, August 15, 2007 #


Oscar - at DevTeach 2007

A fantastic idea came my way this weekend.  Given my history of undeniable brilliance in motion, this is hardly a surprise to all of you.  What will be a surprise is that unlike the automated Gino Vanelli car or the It's Too Soon To Tell You About That One, I did not come up with this idea entirely on my own.  Many of you are no doubt rushing to burn your "I <3 Justice Gray" pillowcase, but I plead with you to hear me out as I think the quality of this idea makes up for its partial lack of originality.

This weekend I discovered that I had won two different prizes:
a) a trip to the Bahamas that only required me to pay $800-$1500 Cdn to get the chance to hear a bunch of time-share presentations for a week and a half, which I graciously declined
b) two drinks of my choice from the Caffienated Coder, Russell Ball - one for winning the "Most Viral Post" award and another for winning the "My name is Justice, not Justin" award, both of which I happily accepted

Russell didn't know it when he wrote his awards post, but he had unwittingly inspired the idea that could change technical conferences forever.  Indeed, this could make the upcoming DevTeach 2007 conference not only the best technical conference in North American history, but the best gathering of any group of people anywhere in the entire history of the Earth.  Yes, even more than when over 93,000 fans packed the Pontiac Silverdome to witness Hulk Hogan bodyslam Andre the Giant. 

DevTeach awards night.

It's important to note that when I say 'awards night', I do *not* mean some excessively formal affair where we all politely golf clap everytime someone gets an award.  I mean a radical high-energy MTV-style awards night with awards like:

  • Most Seductive Technical Presentation
  • Angriest Developer
  • Best-Looking Laptop
  • Best Shirt
  • Best Blogger
  • Hottest Kiss
  • Best Developer Related Blog Rant
  • Breakout Male/Female Star
  • Sexiest Developer who isn't named Justice Gray
  • Best Presentation Blunder by a Developer
  • Best Nude Scene
  • Best Musical Performance by a Software Developer
  • The Mort Award for Career Service to the Industry
  • Lifetime Achievement
In-between these award presentations would be a variety of musical performances and talent shows!  Roy Osherove playing "Sweet Child of Mine"!  Jean-Luc David and Carl Franklin teaming up for a incredible piano duet of "Endless Love"!  Donald Belcham getting drunk and smashing instruments that he doesn't own!!  D'Arcy Lussier serenading John Bristowe with the old Divinyls classic, "I Touch Myself!"  Truly, my friends, this could *be* the night - the night to remember!!    It might even be the night...to end all nights.  

Who *doesn't* think this would be totally awesome??  Let me know so I can mark you on my "Dead to Justice" list!!

Wednesday, August 08, 2007 #


Sesame Street Count To Ten
Your one hint

Who produced the amazing snippet below?


'we need to check for blank spots
'THINK THIS WAY
'start date one
'end date one
'start date two
'end date two
'start date three
'end date three
'IF THERE WAS A PROBLEM WITH START DATE >= END DATE THEN WE'D HAVE MULTIPLES AND WEIRD ORDER


[300 line function follows - a function that is supposed to:
* take a collection of objects
* determine if one is trying to add an object with a duplicate key to the collection]

Was it:

a) a business analyst
b) a developer just out of school
c) a "software architect" with a decade of experience who routinely threw printouts of his code at business reps, saying "You try to understand this then, if you're so smart"?




Thursday, August 02, 2007 #


MrsL said:
What does this error mean? I'm trying to get into the Rogers page and I keep getting it:
MrsL said:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]General network error. Check your network documentation.

/include/DbOpenConnection_00.asp, line 7

J~! says:
HOLY CRAP YOU BROKE THE COMPUTER

Friday, July 27, 2007 #



That is one weird looking thumb on the left


Confirming that one other person aside from my wife listened to my scintillating and courageous interview with John Bristowe, our friend D'Arcy Lussier decided to offer his own review of the podcast.  In turn, I thought I would review his review of the podcast to clarify some statements he made...

"I can picture Justice lying in bed, listening to John speak his intro over and over and over...
"Oh yes John, tell me how wonderful I am again..."


Being happily married (*and* happily heterosexual, I might add), I don't actually lie on my bed swooning over some dude talking about how great I am.  Heck, if I ended up all giddy every time someone told me how amazing I was, I would be dead from excessive hypertension!  No, I think this was D'Arcys old friend, Mr. Vicarious W. Fulfillment.  "I wish John said that when he interviewed me!!"  D'Arcy, one does not call it an "interview" when you call John up at 3 AM in the morning saying, "Ask me if I'm wearing any pants right now!"  One calls that harassment.  

"Mem to spread"? What's a mem...?

What the hell is a mem?!

I pronounce "meme" the correct way - the masculine way, with the short e, instead of the ultra-femmy method of the long e.  Sure, the *dictionary* says D'Arcy is in the right, but hey, if you like to believe everything you read in the dictionary, be my guest. 

"OMG, total ass-kiss to a certain CodeBetter guy..."
"I should start counting how many times he says Boodhoo...he's dropping that like its hot!"
"
DROPS BOODHOO AGAIN! Seriously, he's dropped Boodhoo at least 5 times...James Kovacs, zero...awkward..."

Okay, I promised him I wasn't going to tell, but since I am getting pressure from D'Arc, I will tell you the true story of a conversation I had with JP Boodhoo the day before* this interview occured:

JP: "Justice, even though I'm internationally known, one of the CodeBetter bloggers, and women throw their underwear at me after I'm done one of my Nothin' But Net sessions, you're obviously far more famous than I am.  I'll give you two dollars if you namedrop me today during your interview with Bristowe"
"Well, JP, this is really flattering, but I really don't think I can compromise my integri..."
"5 dollars"
"SOLD!  And I'll do it five times!!!"

I hope that puts some of these scandalous statements to rest.

* may not have actually happened

Friday, July 27, 2007 #


That would be presentations by yours truly!

I am obviously no stranger to thrilling presentations, nor am I a stranger to writing thrilling presentation abstracts.  Despite how exciting my proposals were, however, I was frozen out of DevTeach 2007: The Montreal Years.  Sure, I got reasons like, "You're up against MVPs who are presenting similar topics" but I think we all know that the legitimate reason was that people in Montreal are frightened of too much rampaging masculinity.  As you all know, I am used to being shunned and hated for being this attractive, so I let it slide.

Things have changed.  DevTeach in November will *not* be in Montreal.  Instead, it is going to be in my favorite city of all time. In Vancouver, beauty and narcissism are not feared - they are commonplace; this alone ensures me an easier battle than the one I faced submitting to Montreal.

Like last time, I was warned that I'm up against stiff competition - people like Jeremy Miller, JP Boodhoo, and Ayende have all submitted talks that cover some of the same subjects I am.  I remain unfazed; while I do not possess an MVP or a book deal, I *do* possess unbounded charisma and unmatched sex appeal, which are of course far more important than technical credibility!   If that alone were not enough, two of my abstracts are team presentations that absolutely no one in their right mind would refuse.

I figure that my talks being accepted are a foregone conclusion and I'll be entertaining you all in Vancouver this November.  However, in the million billion to one chance that my talks are not included in the DevTeach presentations, I wanted you to all see the stellar material the DevTeach exec rejected.  This way, when you picket the conference with your signs and your rotting vegetables, you can know you are doing so with an informed mind. Here they are:

A guide to Resharper because I want a free license (300 level)


Forget about continuous integration and let's talk about continuous orgasm - that's what Resharper does for all those who dare to wield it.  You pretty much can't attend a .NET themed presentation without someone talking about how Resharper improved their development life, their family life, *and* their sex life.  Justice is here to give you the *details*, and show you exactly how Resharper can fix your code, fix your house, and even fix your dog!  If you've ever wondered what all the hype is about, this presentation is for you!  Presenters everywhere use Resharper, and *they* get free licenses from JetBrains...why doesn't Justice?  Will JetBrains pony up with the potential announcement of this presentation?  You'll have to attend to be sure!

Silverlight: We have seen the future and it is SEX (200 level)

Are you ready to redefine software development as we know it?  Are you ready for a new era of rich web applications?  Most importantly, are you ready to get laid anytime you *want*?  If the answer is yes, then *you* are ready for Silverlight!  Is this really the Flash-killer it is touted to be?  Will you ever need Javascript again?  The hottest new thing in software development gets presented by the hottest new thing in software developers as Justice Gray brings you the technology that may change EVERYTHING YOU KNOW about web development!

Scott Bellware: A Retrospective (400 level)

Why didn't Justice get his talks accepted at the last DevTeach?  No one is really sure, but he's definitely bound to get on the speakers list with the most obsequious presentation in DevTeach history!  See Justice suck up to Scott for 70 minutes straight!  We'll visit the laughter, the loves, the triumph and the tears of the most controversial figure in the .NET world today.  Is there any way Scott Bellware can justify vetoing over an hour of hero worship?  I don't think so either!!

.NET 3.5, the language that borrows from Ruby (300 level)

Everyone wants a piece of .NET 3.5, and for good reason; the latest iteration of the .NET Framework is bundled with a whole host of incredible features, including extension methods, LINQ, and lambda methods!  Sure, most of these were all in Ruby before but at least now they're in .NET!  Join Justice for an introduction to the language upgrade that might give you a bad case of deja vu, as we go through the major new features of .NET and where they *really* came from.  Bonus: watch Justice pick fights and start religious wars with random zealots in the audience!

IronRuby: It’ll make you cut yourself (200 level)

This is so bleeding edge that Justice needs bandages just typing about it!  The top-rated introduction to Ruby is back, with a *massive* difference: it's now in .NET!  All of the seductiveness, the sassiness, and Transformers of the original - only this time wrapped up in the DLR!  This just might be the last chance you have to get onboard the Ruby train before you're left behind...FOREVER!  IronRuby isn't out yet, but it *will* be out prior to DevTeach 2007 and that's all the time Justice needs to take you on a magic carpet ride through the ins and outs of Ruby's crystal persuasions!

27 books in 75 minutes (400 level)

Justice Gray had a lofty goal of reading 27 technical books in 27 weeks; by the time DevTeach Vancouver hits, that goal will be achieved!   But you're a busy person - you don't have 27 weeks!   Don't worry, Justice has read all of these books so that you don't have to!  With a whopping *3 minutes* per book, you'll finally know enough of the important points to pretend *you've* read them all as well!  "Learn C# in 30 days" has *nothing* on this, the hour that turns *you* into a software development expert!

Mock Objects Demystified (300 level)

No discussion of mock objects seems to be without an explanation of the Model-View-Presenter pattern and a lecture on why coding to interfaces is useful.  But what about a presentation on all the in-depth details and analysis on the mocking frameworks themselves?  Justice Gray provides you with the mocking presentation you’ve been waiting for without all the sidebars into pattern discussion.  Learn what mocking is, why mocking makes unit testing totally awesome, and most importantly, all of the details and differences between the three major mocking frameworks (TypeMock, Rhino Mocks, and NMock)!

Stop the Insanity: Refactoring for Fun and Profit (300 level)

Get ready to be completely indispensable to any of your clients, companies, family and friends!  Are you ashamed of the application you're currently working on?  Does your architecture make you want to break down in tears?  Do you think it would be nice if it looked like your application even *had* an architecture?  Then this is the presentation for you!  Justice is here to show you how to TAKE CONTROL of your codebase without simply tearing everything down and starting over!  There are countless applications with a tangled code-base that are *begging* for even a semi-talented software developer to come in and work their magic!  And if a clueless himbo like Justice can do it, just imagine what you can do with actual talent!!!   The road to sleeping on giant piles on money starts here!

Pimp Your UI With AJAX – Javascript doesn’t suck, but *you* do: a cooperative presentation with D’Arcy Lussier (300-400 level)

The Mad Mexican and the Mad Metrosexual pair up to give the presentation of a LIFETIME!  That's right, the red-headed stepchild of the development language family has finally had enough of being beaten across its backside with a Singapore cane!!  Now it's your turn!  For the first time in recorded history, D'Arcy Lussier *and* Justice Gray show you the wonders of closures, prototype and classic inheritance, JSON, private instance methods and *MORE*, finishing off with what everybody wants but nobody gets - deep exploration of the Javascript code beneath the ASP.NET AJAX Framework!!  If Javascript is good enough for Google and Microsoft, it's good enough for you, you thankless strong typers!
 

Drunken Design Patterns: now a team presentation with Donald Belcham~~~! (300-400 level)

Yes, you read that right - history will be made at DevTeach 2007 as Justice Gray and Donald Belcham JOIN FORCES for the biggest team-up since Michael Knight met KITT!  You've read Design patterns.  You've seen The Gang of Four.  BORING!!!  Sure, it's a good book, but we all know it is *tremendously* dry; this presentation is anything *but* dry!!  Have you wanted to learn design patterns but been put off by the academic tone of the GOF book?  Too ashamed to buy "Head First Design Patterns" because of the porn-star cover?    This presentation will give you all of the thrills of design pattern goodness but with Justice *and* Donald taking shots of tequila at 2 minute intervals!!!  Watch as the leaders of the Edmonton .NET User Group get progressively more inebriated, eventually degenerating into abusive rants at the audience, and finishing the presentation with Justice's spectacular projectile vomiting and Donald's awkward groping of front-row audience members!   Guaranteed to be the one presentation you will *NEVER* forget, no matter how badly you want to!!

How to be a better *looking* developer (400+++++)

Most of the presentations at DevTeach might help you get better at developing software.  But only one of them will show you the *other* way to stand out among your peers and get recognized by management - by being incredibly good-looking.  And who better to show you how to get there than North America's Favorite Metrosexual Software Developer?  Justice Gray is here to help in the session that will bring you closer to sexual encounters than you ever thought possible!  Silverlight and IronRuby are great to know, but all of your knowledge is useless if you keep wearing white socks with black pants!  Whether it's the wonders of basic color matching, the controversial topic of regular bathing, or a guide to shaving off that neckbeard, Justice has you covered!

Thursday, July 26, 2007 #


Microsoft's John Bristowe and I recently sat down for a conversation that featured:
  • my thoughts on being a better developer
  • my thoughts on the soft skills involved with being a better developer
  • a *LOT* of coughing
Thank you to those of you who expressed their concern for the well-being of my throat and voice; much to Donald Belcham's consternation, I am not dying.  However, I might be seriously injured after D'Arcy Lussier finds out about this interview and flies into a jealous rage

If you're interested in hearing the interview, head over to this post on the Canadian Developers blog!  Thanks again to John for taking the time to interview me, it was a lot of fun!

Wednesday, July 25, 2007 #




Now that I've gotten that negative review out of my system, it gives me great pleasure to tell you that "Working Effectively With Legacy Code" is to "Applying UML and Patterns" as a massive multiple orgasm is to a swift kick in the genitals.  Sincerely, it's that good.

Common responses I've gotten when I mentioned this book to people:

"You really need to read this book!  It is excellent."
"I really need to read this book! I hear it is excellent."
"I really need to read this book so I can write blog posts claiming all of the ideas inside as my own!"
"Reading Working Effectively with Legacy Code gets me so hot...if only you weren't married" (most members of the opposite sex)
"Reading Working Effectively With Legacy Code gets me so hot...if only you weren't married" (Donald Belcham in quite the awkward moment)

Now, if you're like me, you want to cut through all the hype and get to what really gives the book credibility: the author's physical appearance.  In this arena, Michael Feathers gets a thumbs up for being a total bad-ass - look at this photo and render!

Michael Feathers - bad-assMichael Feathers prepping for a freestyle rap

Arms crossed in the "G's up" pose, L.A. Raiders style jacket, and that pouty scowl all tell us that Michael is ready for either a fight or a freestyle rap at a moment's notice.  It looks like the development community has found the Eminem to James Kovacs' Vanilla Ice!

If for some strange reason you care more about the actual content inside the book, you won't be disappointed either.  "Working Effectively With Legacy Code" reads like a spiritual sequel to "Refactoring", following up on Martin Fowler's guide with more examples and advice on how to get a crazy, mangled code base under some semblance of test.  There's an even larger emphasis on testable code than in Fowler's book, but I suppose that's to be expected from the guy who wrote CppUnit.  Speaking of which, don't let some of the C++ examples scare you off; there are also examples in Java and even one or two in Ruby!  The concepts in this book are useful no matter what the language, although I do think people inheriting a C++ code base might find this book even more beneficial.  I know that I felt a lot more confident about my ability to tame wild code after reading it, and I'm pretty positive you will as well, no matter what code base you're working off; well, maybe not assembly but you get my drift. 

This book is infinitely valuable for *anybody* who works with code they've inherited from others dead and gone, but it's just as useful for anyone doing "greenfield" development.  After all, most of the code you write is eventually going to become someone else's legacy code - this book will help you see ways to ensure your code is testable in the first place and a great way to expand on what you've learned from Fowler's Refactoring.   That being said, I would probably read Refactoring prior to reading this book simply to get more familiar with some of the refactorings that Feathers discusses, and *why* Feathers has such an emphasis on testable code.

As you might imagine, this book has my highest recommendation (5 stars).  This means I would have ridiculously illegal sex with "Working Effectively With Legacy Code" at any opportunity.  Heck, given the content of this book it would likely even help improve my technique*!

* (that is, if it was not already SUPER-AMAZING)
 

Thursday, July 12, 2007 #


"It may help to drink some beer before trying to understand this."

"Your boss asks, 'What have you been doing all day?'  You reply, 'Logging in!' Is your boss happy?"

-from Applying UML and Patterns, by Craig Larman

applyingumlandpatterns.jpg

I feel no shame (nor insecurity in my heterosexuality) whatsoever when I tell you that I'm enough of a fan of the Daily Grind to have a Mike Gunderloy poster in the bedroom at our home.  I can't explain how I got it without violating the terms of the restraining order so let's just leave it at that.  You can no doubt imagine my reaction when I found out that the author of the Daily Grind, a blog I've been reading almost since its inception, actually linked to a post I had written.  Sure, he used the word "infecting" in the description, but when you deal with a cold, analytical mind like Mike Gunderloy's, you take whatever scant bits you can get.  

One notable aspect about Mike Gunderloy is that he has aboslutely nothing to do with Applying UML and Patterns.  However, there are two reasons for my seeming sidebar into nowhere:

a) With his link comes some renewed pressure and accountability.  The vengeful James Kovacs pointed out that my book list reviews haven't been publicly updated in some time.   This needs fixing, so today I have posted yet another book review.
b) Talking about Mike Gunderloy is *still* more exciting than talking about Applying UML and Patterns.

Many of you have noticed that a vast majority of my book reviews tend to lean on the enthusiastic side.  This review is not one of them, despite the interesting single curl drop-down hairstyle Craig Larman displays on the back cover.  Remember this footnote from my review of Refactoring?

"There was actually *another* reason I was near death, but you'll have to tune in next week to find out the answer".


Most people originally assumed I was just courageously recovering from a head cold, but the truth was far more sinister - reading this book nearly *cost me my life*.  Nothing makes you crave death more than slogging through about a 1/3rd of Applying UML and Design Patterns.

Beginning of the book with the best pitch for agile methodologies and an explanation of what the RUP really means?  Fantastic.

Latter half of the book with a description of various patterns and how they fit into UML design?  *Amazing*.

Inception?  SNORE.  And as someone who has read through the entirety of the GOF Design Patterns book, I *know* boring.  

Now, dissing the GOF Design Patterns book is hardly that unique - in fact, it seems like these days it is in vogue to rag on the classic blue book.  However, most developers who have read "Applying UML and Patterns" seem to want nothing more than to spoon with Craig Larman and whisper sweet nothings in his ear for writing it.  As I'm not one of those people (and not just because I'm rampagingly hetero), I can see that my opinion on this book won't be terribly popular with the masses - I can recommend it, but make sure you're not expecting an exciting read.  Thankfully, the latter half of the book or so almost makes up for the plodding nature of the text preceding it.  Larman uses two main examples throughout his book: point of sale and Monopoly.  I was a little disappointed that most of the emphasis went to the point of sale, but part of this is probably my own bias towards Monopoly.  To those of you that find point of sale examples to be incredibly sexually arousing, I'm sure you'll get quite a charge out of Larman's book and I also recommend you see a doctor.

I can't give this thing ***** in good conscience, and yet I can't give it 0/5 either; it does have some useful information and I do feel as if I'm a better developer for reading it.   The first part gets a 3.5 out of 5, the "abyss" pages get 0 out of 5 for nearly ending my existence, and the last half or so of the book gets 4 out of 5.  For those of you who are familiar with my ratings scale, this is like knowing a woman who was average/cute in junior high, gained a whole bunch of weight in high school, and then started working out and became a 20 year old hard-bodied, large-breasted stripper - sure, you'd kill to make out with her now, but would you really have gone through the dark years to get there?  Recommendation to read, but skip Inception if you'd like to keep your sanity! 

Wednesday, July 11, 2007 #


Some goals are best kept small
Sometimes it's best to start with small goals

Has it really been over 2 months since I posted about becoming both a better developer and a better developer who was  also 345 lbs of ripped muscle?  It's amazing how the time flies.  I haven't updated you all on my progress as much as I would like, but believe it or not I am *almost* on pace in both respects; expect a flurry of book reviews very soon!  But this post isn't about me and my heroic exploits...no, this is about me and how my heroic exploits have inspired a nation.

My original post tagged several different people, all of whom answered my call to technical arms!  Now that the last person has finally given a response, let's take a look at the original 5 candidates:

James Kovacs

James did not reply publicly on his blog, but I will share the E-mail he sent to me:

from      James Kovacs <kovacs69bitchhaha@hotmail.com>
to         Justice Gray <>
date      May 24, 2007 9:50 PM

'Sup yo? 

I appreciate the challenge, but I've actually decided to forego working on getting better at software development for the time being.  Instead, I am going to focus on my true passion - becoming the best white rapper in North America.  I truly believe there is a niche there to fill, being that Eminem is semi-retired and both Vanilla Ice and Snow haven't really been in the public eye for several years.  I'm also not a cracka-assed poser like those 3 wanna-be OGs.  All I need is one big break and you'll be telling people you received an E-mail from the white reincarnation of Tupac Shakur.  California bitch!  Trust me, the verbal smackdown I lay is going to make LL Cool J and Kool Mo Dee's battle look like a make-out session.   

"Thug Life", as the kids say,
James Kovacs, B.Sc., M.Sc., MCSD, MCT
Microsoft MVP - Solutions Architect
http://www.jameskovacs.com


Upon reading this, I did what any friend of James would have done and laughed hysterically.  Seriously, it takes more than wearing gold chains all the time and waving guns in people's faces for a guy to be a rapper.  Just because James Kovacs can pistol-whip someone at a moment's notice doesn't necessarily mean he knows how to drop the rhymes.  Thankfully, I am humble enough to admit the one time out of 10 million that I am wrong.  This was that time.  Congratulations to James for becoming the whitest rapper at Tech Ed (and perhaps ever) this year.  What a way to make a lasting impression on others!  This was extremely motivating for me; at the least I have contributed to someone fulfilling their long-held dream, and at best I've helped to create the greatest white rap sensation since I last busted lyrics in my Grade 8 year.

D'Arcy Lussier

The first person to publicly accept the challenge, D'Arcy has some aggressive goals involved getting a new web site up and running with webcasts, podcasts, and the like.  2 podcasts a *month*!  5 videos a month!  35 thousand chicken wings a month!  A presentation tour!  Working out every day for 7 hours!  Truly D'Arcy is taking things to the limit.   I can only hope he survives the arduous journey ahead! 

Jason Row

Jason and I have quite the embarassing history but we've put that behind us with his acceptance post!  Mr. Row is a house on fire, raring to blow apart the certification exams at Microsoft, doing some technical reading, and taking his "naughty developer strip show" from the mirror in his bedroom to unsuspecting user groups across his home province.  Forget about all of that though - Jason has become a better developer by receiving a Facebook friend request from none other than Scott Hanselman himself!  Who needs developer credibility when Scott is your friend?  Unfortunately, Jason never utilized his close personal friendship with "Scotty the Body" - as Jason likes to call him for some reason - to his advantage by tagging him directly in this challenge.  Thus he has lost some of the critical coolness points he once had with me. 

George Clingerman

George went beyond the call of duty in several ways:
* he posted a touching explanation of why it took him ten years to respond
* he posted an awesome list of things he is doing
* he then posted another great piece of advice a few days later, thus inspiring most developers to try and buck the trend in our industry and actually have real friends
* he tagged *quite* the list of people, including Rory Blyth and Jason Olson.  I'm pretty sure that Rory is too busy preening at himself in the mirror to accept this challenge* but it's the thought that counts, George!

Donald Belcham

Containing statements like "I've got to find myself", "I've lost my passion", and "I'm poison for you, Donna!", Donald's self-improvement post is cause for celebration; with this much emo in one post, the world doesn't have to mourn the loss of Dawson's Creek any longer.   Equal parts inspirational and melodramatic, I have no doubt Donald was listening to his Best of Backstreet Boys ballads CD while composing his magnum opus.  His thoughts on how to effectively blog are particularly good advice, but all of it is excellent reading if you can get past the image of him lying down drunk and crying himself to sleep after writing this.

I would be remiss if I didn't keep track of the people who had been tagged by someone else in the chain, so here are links to their own posts on developer improvement:


Maybe it's just the "new math", but I'm not sure how 5 developers tagged 4 people each leads to only 4 new people.  Thus in an attempt to continue our world-changing goal of self-improvement, I am tagging 5 other people with this challenge and then correspondingly, the challenge to tag 4 others:

Steven Rockarts
David Woods
Jason Haley (as apparently Donald's response to this challenge "hit close to home" for him; time to get it going buddy!)
Bil Simser
Terry Thibodeau

With the sheer number of links in this post, I'm pretty sure I'm going to get dropped off of Google's search index.  Don't let my sacrifice be in vain!

* I suffer from THE SAME PROBLEM as Rory, if only more intense because I'm drop dead gorgeous.  I can only get things done in rooms that don't possess any reflective surfaces.  I don't need your pity - it's my cross to bear!
Thursday, June 28, 2007 #


Scott Berkun recently listed off some new methodologies he discovered and asked the community if they had witnessed any of their own.  Now, I've seen all sorts of different practices out there, but to entertain you with my vast, near-omnipotent knowledge on the subject would take the entire width and breadth of the Internet.  Thus, I've reduced the number I'm discussing in this post from a million billion down to only four.  Read on for more details.

Resume Driven Development

You want to have an exciting career full of exciting accomplishments and nothing is more exciting than introducing exciting new technologies into a project!  But what do you do when the new technology has no business justification or simply isn't  the best solution for the problem as opposed to something less sexy?  That's the beauty of Resume-Driven: in this methodology, you don't care!  If you think XSLT is cool, how about using them to completely deliver HTML pages with static javascript inside?  Sure it's a maintenance nightmare but with XSLT on *your* resume, what does it matter?  You'll have left this project by the time it gets maintained anyway!  Building a static web page for an a capella band?  Why not use Microsoft Biztalk?  With RDD your career is only limited by your imagination!

Cut and Paste Driven Development

CutPaste
Definitely the most efficient methodology you'll ever see!  Combat Not Invented Here syndrome in the ultimate way and never write another line of code again!  Don't waste your time with any sort of refactoring strategies when you can simply Shift-Del/Shift-Ins your way to coding glory!  Why bother trying to get code reuse if you can simply copy a method here or there with a quick rename to get what you need?  I was lucky enough to work with someone who used this methodology exclusively, and apparently had become a master at it over the course of a decade-long career.  In fact, he had taken this to a whole new level where he would actually copy entire *projects* worth of code and do some quick renaming.  An underappreciated genius, he was removed from the project after our team discovered his practices.   The official reason was "ridiculous incompetence" but I believe the unofficial reason was "developer envy".  What developer wouldn't be jealous when someone can blow the speed of their development away with only two or three keystrokes?

Meeting Driven Development

As anyone in a high management level knows, meetings are the one essential part of any development project.   Nothing screams "skyrocketing productivity" than sitting in a 3 hour, 25 person meeting where your team listens to something entirely unrelated to their own work.  The best part about MDD is that the meeting becomes the solution to *everything*.  Bugs in testing?  Let's have a meeting.  Unit tests failing?  Let's have a meeting.   You think your time could be better spent practicing software development rather than sitting in a conference room for half of the day?  Let's have a meeting about it!  

[A warning - some people make the mistake of thinking that short, focused meetings (like 15 min standups) are adequate meetings for this methodology, and they most certainly are not.  How can you even get anything done in a meeting where people are standing rather than sitting?  Without a rambling meeting that spans hours and covers about 30 different topics at random, how you truly be sure you've covered *everything* that is important to a project, like your VP Development's opinion of the video he rented last weekend?  Remember, if you have a problem, "the big meeting" is your solution.  ]

Note: this is a close relative of checklist-driven development, where the solution to everything is to make a checklist.   For best results, try to combine both of these together and ensure that the end result of every meeting is that a new checklist is created!  Trust me when I say that design headaches or bugs in your application will soon be much less of a relative problem!

Masterpiece Driven Development

Gold plating - it's not just for metal anymore
Here comes the architecture astronaut!  No matter how simple the problem of "Hello World", it's nothing that several whiteboards full of object diagrams can't solve.  Some of your team might say that you're over-architecting, but sternly remind them that you are on a quest for *elegance*!  After all, the best architectures are never truly finished; they just get refactored again!  And again!  And potentially again.

A client will always forgive a project not hitting *any* of its delivery milestones if they know you've spent that time making the code infinitely flexible and pleasing to the eye.  Trust me, when your key stakeholder gets enraged because your project is late and you don't have any sort of functioning user interface, just show them the code to your elegantly refactored and re-refactored database adapter class and tell them that's what you've spent the last 2 months working on!  I guarantee you the client will be reduced to tears - tears because your code is just that beautiful.

Are there any other ones I'm forgetting here?

Friday, June 22, 2007 #


Donald recently wrote about how he brings new developers on his team up to speed, talking about wonderful things like pairing and coaching.  Of course, for Donald "pair programming" actually means Donald going up to a developer and saying,  "I'm busy stalking this one chick I met online - code up this feature for me or you're fired".  Say what you will about the Igloo Coder but he is a *master* delegator!   As he likes to paint a pretty picture, he also left out the part about "Tell your new developers they must suck up to you publicly as much as humanly possible or there will be consequences."  Thankfully Shane Courtille stepped up in comments to tell Donald, "Good job boss!!   Everything you do rules!  I made your coffee myself today...I hope you like it" (or something to that effect).  Shane, I can tell you with obsequious enthusiasm like this, your job is definitely safe with Donald.  


How Donald *really* handles new people

In all seriousness, it is good that Donald is involved with new hires to the extent that he is.  I find that a lot of companies forget about how vital it is to treat new people well in their first weeks/months at the organization .  Just as your new hire makes an impression on you in the first week, your company is also making an impression on the new hire.  If you want to ensure your new hire stays with your company or project for a while, it's best to make them feel that they made the right choice.    It's startlingly easy to do this; your company just needs to actually give a rat's ass about its new hires.  You would think this is common sense, but there's actually a wide divergence among organizations and the way they treat their new people.  Some samplings from my own past experiences:

  • telling the developer their computer isn't ready for their first day but to just sit and watch somebody answer E-mail for the next three days
  • Taking the developer out to the most expensive place in town for lunch and letting them pay for everyone when you forget the company card
  • "You know, it's good that you're here because we *really* need someone to come in over the weekend to fold some fliers for our marketing expo next week, and BTW I love the fact that you don't feel anything is 'not my job'"
  • And of course, the ever popular "RED ALERT!!  HOLY CRAP PRODUCTION IS DOWN PRODUCTION IS DOWN." 

In my career, I have only felt that possibly one or two companies I've worked for actually got the "new hire introductions" right.  As a team lead in my current gig, I'm the one who shoulders the responsibility of introing new people to our project.  What I do today and am sharing with you below is a composite of those good experiences.


Artist's interpretation of "newb"


1) Before the developer ever starts, ensure everything they need to get working is ready for them.


I should emphasize how important it is that the following things are ready for your new employee for their first day:

  • phone
  • computer
  • tools setup
  • proper software configuration
  • logins and access for everything needed to do their job (source control logins, etc.)

Note: I understand that in certain situations you may not have as much control over this as you would like, but try to do what you can to the best of your ability.  Although it's a bit underhanded, if you think IT is lagging have the developer take over your machine and simply tell IT they will be using it until a machine is made ready for them, so your own productivity is being affected.  Note that this won't work all that well if you're not productive in general, but then again if you're not that productive you're likely not being put in the position of introducing new hires.

2) The developer is taken around to be introduced to everyone in the company. 


I want to ensure the developer immediately feels that they are considered an integral part of the team (heck, if we're going to hire someone, they'd *better* be an integral part of the team!), so I will take him/her to meet and greet.  Note that this is not limited to developers - your new hire should be aware of all of the stakeholders in the project, from the lowest to the highest levels where possible. 

3) A document called "Newbie's Guide to the Company" is given to the developer

This can be in wiki or Word format or *any* format for that matter.  This explains the general technical team structure, some company policies, as well as commonly asked questions and answers.  For the first week or two of the employee's time, that employee is responsible for maintaining/adding to the document as they see fit.  If you're doing a document like this, I recommend it being light in both tone and in page count.  The best way to ensure that this document doesn't get updated or read is to make it 70 pages long and looking as if it was written by someone who's never gotten laid.

4) Pair programming

Presuming that we didn't hire this guy or girl on their ability to write scintillating documentation, the remainder of the week is spent doing off-and-on pairing with a developer on the project, as we handle a minor bug/feature.   While we are doing this, we also take the opportunity to give a small tour of the architecture through code and a discussion of how our general methodologies work.  Note that when I say off-and-on pairing, I do not mean show up for 15 minutes a day to see how the developer is doing and then running off to an important meeting.  For the first week, pretty much nothing should be more important then the time spent with the new developer, and this is something that management and the team should both understand. 

5) Lunch

I take the developer out to lunch once or twice depending on the time frame for the week.  Once is with the main team they'll be working with, and once is with me one-on-one.  Always pay for the new hire - if the company doesn't pay for it, cover it yourself.  Some people consider this too expensive, but I counter that the cost of one or two meals is nothing compared to the investment of my time and the team's time if this person leaves after only a couple of months. 

I'm always interested in self-improvement, so I thought I should ask a couple of questions of those that are reading:
a) Are there things you would change about the way I am doing this?  Too much?  Too little?  Not enough tips on stylish shirts and fantastic hair?  Should I get the new devs to go wash my car?
b) What is the worst experience you've had as a new hire?
c) What is the best one?


Tuesday, June 19, 2007 #


Confused?  Don't be!  I will explain!

Some of you E-mailed after my last posting asking one of three questions:

This last one was only asked by one person, so I will tell Tim Hibbard directly that the answer is no.

As for the answer to the first two, get ready, as this is a bitter pill to swallow.

I actually was not liveblogging DevTeach 2007 because I was not actually *at* DevTeach 2007

the_scream.jpg

I know - you are shocked, concerned, panicked, possibly hysterical.  For what reason would I have missed what has been pimped out as the premier Canadian development conference of the year?  Well, my friends, the answer is conspiracy.  A conspiracy against *what*, I cannot tell you, but a conspiracy nonetheless.  However, the disillusionment doesn't stop there.  Contrary to what you may have thought, I am far from the only person in North America who did not go to DevTeach 2007; George Clingerman and D'Arcy Lussier were not there either.  That's right, the Rat Pack of the software development world was not at DevTeach 2007 *at all*

the_scream.jpg
Don't let people fool you when they give you their conjectures and rumors as to why we couldn't be there.  When you have to tell your friends, your parents, your illicit lovers about why Justice Gray wasn't at DevTeach 2007, don't say "conflicting commitments", "other pressing travel the month following", or "intense negotiations".  Those are lies.  Tell them that sinister forces are afoot; do this and know that you are helping to spread the *truth* about my inability to attend.

I've tried to come to some completely unbiased and almost scientific conclusions about whether DevTeach 2007 was a worthy conference.  From what I have been able to gather from blogs and other anecdotes, I missed the following things at the conference:

  • great technical presentations
  • fantastic learning experiences
  • amazing networking
  • Donald Belcham throwing himself aimlessly at any woman with a pulse

Now, I'm sure for you Montrealers this was a big deal, but as a native Edmontonian I can tell you that I watch Donald throw himself at women almost every single weekend, so this is really nothing new.  So we have three *minor* plusses that are dramatically outweighed by the gigantic minus:

  • Justice Gray not in attendance

What we've learned from this exercise is that if Justice Gray is not seen at your conference, you don't have a conference.  It is with this I can safely declare that DevTeach 2007 sucked.  Am I trying to rationalize not attending?  Absolutely.  But let's move on to a conference that we know is well worth your time and money.  Yes, the conference that is *truly* going to change the software development landscape for ALL TIME...

DevTeach 2007!!!

What?

Yes, that's right.  DevTeach is happening *again* this year, but with two notable differences from the DevTeach that just concluded:

  • it will be in Vancouver, the greatest city in North America (as detailed previously on this blog)
  • yours truly will be there
What does this mean for you?  It means that if anything, DevTeach 2007 just got a hell of a lot sexier, and that's just from my showing up, let alone presenting!!  Before the developer world has a collective orgasm, I should clarify that I have not been selected to present on *anything* at DevTeach 2007, though I certainly have demonstrated that I have an *arsenal* of potential topics to choose from.  However, the biggest limiting belief about DevTeach is that you have be selected by committee to present!  Hardly!  You don't need *anyone's* approval - just walk into someone else's room during *their* talk and start your own birds of a feather session while they're talking!!  That's what I'll be doing at least once a day during this conference!

DevTeach 2007 - register early, and register *often*!!  This might be your only chance to see oozing machismo in action!!!

Friday, June 01, 2007 #


DevTeach 2007 - Where love goes to die

Clipped from a discussion with the apparently infamous Igloo Coder on the last day of DevTeach 2007:

9:50:21 AM  Justice~!:    So you've had a good week?
9:50:54 AM  Donald:    without a doubt i have had fun
9:50:58 AM  Donald:    last night was a hoot
9:55:19 AM  Donald:    had dinner & drinks with the
hot agilistas
9:56:26 AM  Justice~!:    When you say, "Had dinner", do you mean:
9:56:27 AM  Justice~!:    a) just you
9:56:34 AM  Justice~!:    b) you and another guy and the Agilistas
9:56:38 AM  Justice~!:    c) you and a room of 40 other people
9:57:45 AM  Donald:     25 other people
9:58:00 AM  Donald:     I hate you

(Donald has disconnected)


Saturday, May 26, 2007 #


(This is part 3 of my goal to read 27 development books in 27 weeks.  Yes, I know this is out of the normal order, but trust me when I say all will become clear eventually.)
Refactoring by Martin Fowler

This blog was relatively quiet over the last two weeks; it was not because I was fending off advances from Kathy Sierra, despite what you might expect after my previous post.  No, it was because yours truly had a brush with *death* that nearly took him out for good.  That's right, I had a horrendous cold; runny noses, sneezing, congestion -  it's a wonder I'm even here today, courageously telling my story of recovery.  I'm not afraid of death (after all, long-time readers know the kind of excitement that will ensue when that happens), but if I were to shuffle off this mortal coil, who would finish the 27 books in 27 weeks?  Who would become 375,000 pounds of ripped muscle by July 25th, 2007?  Who would be there to be that motivating force for Scott Reynolds?  More importantly, who would continue the long string of Donald Belcham jokes that have put igloocoder.com on the map?  Thus, I struggled valiantly to recover but all seemed for naught...until I chugged 1 or 2 L of extra strength Neo Citran and opened up Martin Fowler's Refactoring. 

"Refactoring" is not a book you read expecting to be angered, and its not a book you read expecting to have the room spinning around while your bed flies through the air.  However, that's exactly what happened to me as I opened its pages and read the story of a scrappy young Martin Fowler and one of his many contracts.  It turns out that Martin was on a project that required about 6 months worth of refactoring.   Martin then brought this information to his superiors.  Sadly, not even his terrifically groomed facial hair could convince his bosses that this was a priority.  Martin's advice was ignored with a "There's no time, we're committed to schedule".  One year later, the company in question ended up having to do a complete rewrite of the now unmaintainable software while Martin faced down a giant metal monster with a furnace for a mouth that was threatening all of New York City, or something like that; I don't really remember the minor details.  C'mon, I was gravely ill!  I'm just lucky to be *alive*!! 

The rest of the book catalogs different code "smells" that creep up on a project (pretty much anti-design patterns) and then the various refactorings that can fix them.  There's also a discussion of when to use refactoring and when *not* to use refactoring (yes, there are times).  These come complete with other examples of engagements that Fowler had, including the time Martin solved the mystery of the Flying Dutchman and the Revolt on Dimentia 5.  While I know this outs my inner geek, I have to say that even without some of these anecdotes, I still consider Refactoring to be riveting reading. 

As I alluded to earlier, reading Refactoring made me angry.  I'm not angry because I can't grow a 1970s style beard like Martin Fowler can; after some therapy I can safely say I've dealt with my lack of facial hair and put it past me.  No, I became angry because some of what Fowler writes, to me, is *common sense*.  Naming methods appropriately?  Embracing code reuse?  Come *on*!  But I'm not angry at Martin - how can anyone be mad at this cherubic face? 

Trust in Martin Fowler
No, Refactoring made me angry at our industry and its immaturity.  The fact that so many projects produce code that *requires* so much refactoring boggles my mind.  Have you ever met a developer who has managed to avoid working on at least one project that was coded incredibly poorly?  I haven't.   Why is this? 

But forget about all that.  You didn't read this review because you cared about Refactoring, or because you cared about making your project better.  You read this review because you cared if I felt better.  I can report that I do - and it's all thanks to this book.  Before I started reading Refactoring, I was coughing, in fits of agony, and laying on my bed waiting to die.  Two days after finishing Refactoring, my head was cleared up.  My cold symptoms had vanished.  In their place was a renewed sense of purpose.  I felt faster...stronger...more ALIVE.  What else could have caused this other than my reading Refactoring?  Was my recovery from this cold merely coincidental?  I don't think so.  Yes, my friends, reading Refactoring saved my life.  It can save your life too, and possibily the life of your project. 

You might have noticed that this review is not dripping with the same sexual tension that...well, pretty much *all* of my previous book reviews have had.  This doesn't mean the book isn't worth your money; every software developer worth employment should read at least the first chapter.  It does mean that Martin Fowler's resemblance to a 1970s porn star interferes with any level of arousal I would have if I were not *firmly* heterosexual (and I am).  My final rating therefore breaks down like this:

Refactoring catalog - *****
Anger-provoking development tales - *****
Story about Martins battle with Dr. Noah Boddy - **********
Martin's lack of hair and giant beard - MINUS **

Total score - 4.5.  This has hopefully taught everyone a couple of valuable lessons:

  • Cold medication can make any book better
  • If you have facial hair you will *NEVER* be perfect.  Sorry Martin - once you shave I will change my rating to 4.8 stars.  Besides, no one likes kissing guys with facial hair, except for Donald Belcham!   Trust me, Martin - quit hiding behind that mass of facial fuzz and let the world see as you truly are.  If you follow my advice you will never have to worry about "getting some" again!**

* There was actually *another* reason I was near death, but you'll have to tune in next week to find out the answer
**Well, in truth Martin doesn't have to worry about that now as David Woods still wants to make out with him, but I'm talking about *women*!


Thursday, May 17, 2007 #


(This is #2 of #27 in 27 weeks, referenced in my "How I am becoming a better developer" post.)

I have a massive schoolboy crush on Kathy Sierra.

There, I said it!  Whew!  It's like a massive weight has lifted off of me already.

Don't think I'm the only one who feels this way.  Steven Rockarts and Donald Belcham also think that Kathy Sierra == hottie.  The last time the 3 of us agreed on anything, the EDMUG executive became the most powerful force in the universe, so I'm pretty sure we're onto something here.  Donald has been pretty brazen with his affection (going so far as to pretty much ask her *on a date* at the tail end of a recent post...what a smooth operator) and Steven didn't mention it for fear of "falling down another flight of stairs".  I had my own reasons for keeping this secret.  Believe it or not, those reasons have *nothing* to do with my wife, the sexiest person alive and apparently the only reason some of you read this blog, according to recent comments.  She and I have agreed that Kathy Sierra can be part of my "Freebie 5", so Mrs L. and I are cool.  No, I have kept silent because this blog adheres to the highest standards of journalism.

Even a year ago, I knew that one day I would have to review Head First Design Patterns; but how could I review a book produced by someone on my freebie 5 and still maintain the complete impartiality you're used to?  So I did the only thing that I could do.  It was hard, but it was the only thing that was *right*:  I gave up on journalistic standards.

Now that I've made the ultimate sacrifice, I am telling you that Head First Design Patterns is *almost* as sexy as Kathy Sierra and is well worth your time and money.  Many of you are familiar with the thematic predecessor to this book, which goes under two titles:
"Design Patterns"
also known as
"The Most Boring Book Ever Written"

No one wants to say it, but I will - the original GOF book (though informative) is a guaranteed snooze.  In fact, the only way I ever made it through this book was by reading it on the crosstrainer at the gym so that I could not pass out.    Prior to the release of Head First Design Patterns, this was sadly the only book I could really recommend to developers for learning common design patterns.  Who wants to read a book written so academically as to almost purposefully alienate readers?  Where are the jokes?  Where is the *fun*?  Frankly, where is the *sex*?  I mean, let's take a look at the cover for Design Patterns:

Design Patterns

Wow.  A Möbius strip, a blue stripe, and what looks like a random smear of gray paint.  I think we can all agree that the above cover was designed by someone who has never gotten laid.  

On the other hand, let's look at Head First Design Patterns:

Head First Design Patterns


This is pretty much the stylistic opposite of the original Design Patterns in every way possible.  It's also far more readable; this is the second funniest development book I have ever read, right behind "The Dating Experiences of Donald Belcham".   It manages to be hilarious, memorable, and informative all at once.  How many development books feature crossword puzzles and "head-to-head" interviews with the Decorator and the Proxy nearly coming to blows?  Heck, how many development books even feature pictures??  Almost none.

As I enjoy witty books, consider design patterns to be an *essential* part of a developer's skill set, and consider Kathy Sierra to be a total fox, you'd assume that this book would get the easiest guaranteed action since Tom Opgenorth's presentation at Calgary Code Camp.  However, two things:

a) the Proxy pattern chapter goes a little too heavy into Java RMI.  Now, I don't care about the entire book being written in Java, given the book's examples are clear enough to pretty much be language-agnostic.  However, 2/3rd of the proxy chapter is spent talking about Java RMI rather than a more abstract example (such as I've seen JP Boodhoo show off from time to time). I would have preferred more emphasis on the abstract examples.

b) Kathy Sierra didn't actually write this book - she was "executive producer" (read: editor?) on this book and the credit for the wonderful writing actually goes to Eric Freeman and Elizabeth Freeman.  It's not fair of me to knock off stars for this given that the Freeman's writing is fantastic, but I need to note it nonetheless as having a crush on a couple rather than a single person made me a little dirty.

This makes the book's overall rating on my ratings scale oddly appropriate: 4 1/3 stars out of 5, much like being in a super-hot make-out session with someone only to have their parents barge in just as things were about to get good...in the end you're a little frustrated but you'd still do it all over again if you had the chance!  The Freemans have crafted an *amazing* book that is the best way to introduce yourself or others to common patterns of design, or to convince people outside of the industry that not all programming books are supremely boring.  Some people might just buy it for the cover like Jonas did - at least, that'd why he *said* he bought it.   Why would you buy a book for its cover if you're only going to tear the cover off and put it under your bed?  I don't get it.

And Kathy - if you ever want a "passionate user" to do some "pair programming", I'm right here baby*!!

* although I am HAPPILY MARRIED - I love you Mrs L**
** and apparently so is Kathy, but I didn't want to mention that and get Donald reaching for the scotch again.  ALCOHOL DOESN'T SOLVE ALL YOUR PROBLEMS BUDDY
Thursday, May 03, 2007 #


(My apologies...it took me a little while to post the final session of Calgary Code Camp because it took me *that long* to recover from Donald's choice of clothing.  As you will read below, you'll understand why.)

We're here for the final presentation of the day.  It's good that they put Donald's presentation on last, since his pre-conference preperation involves a lot of crying in the fetal position and
Shirt update: my shirt is...HOLY CRAP.  *Forget* about *my* shirt.

Listen, I don't even know what I can say except to tell you that you have *NEVER* seen an outfit like Donald Belcham's unlike you've been a fan of:

* Dallas
* The Beachcombers
* Knight Rider
* Highway to Heaven

Red and white shirt - *open almost to the navel*.  WTF?!?!  You've never seen billowing chest hair until you've seen Donald Belcham.  Seriously, *nothing* seen at any past Code Camp activities could have prepared me for this.  Is it 5 stars?  Is it -5 stars?  I just don't know anymore what I'm doing with my life.

Continuous integration - which you check in your source code to your source code repository, it will be checked out atuomatically and a build being run.  From a pure code standpoint, this allows *you* to know that things are okay.

"How many people should be on a team to justify continuous integration?" - Donald uses cruise control on his own server to check his builds.  He recommends continuous integration even if you're working alone.

Continuous integration is *bigger* than Agile to Donald.  It's a concept that should be done regardless of whether you're following all Agile all the time

Donald is taking the unusual step of doing his presentations in Notepad++ since Powerpoint is apparently alittle too complicated.  Actually, to be honest, I quite like the minimalist style.  Donald laughably says that this presentation has no flash and bang, despite flashing his chest at every unfortunate attendee of this presentation.

Uh oh - I seem to have lost my draw tickets!!    Where are they?

Donald ends up covering a couple of things:

1) Resharper - *again*

Donald pimps Resharper like *everyone else* today.  Resharper gives *intellisense* for XML attributes in NANT, etc.
Resharper allows you to also see all uses for a particular tag in NANT.  This was actually the best sell job of Resharper I've seen today (and considering absolutely everyone here has been pimping it, that is saying something).

Ah, someone asks Donald a question about NANT and is rewarded with Donald *throwing a water bottle into the chest of the woman sitting next to him*.  How do you misthrow to someone sitting 2 feet away?  *THIS* was the captain of the football team?

2) CCnetconfig

CCNetconfig allows you to configure Cruise Control through a GUI.    Nice and very slick editor.

3) Iteration-based labelling

CCnet.config will help you to label code at point of build.  This is a nice shortcut to determine iteration/release numbers and abstracting it away from the devs to some degree.   CCTray will allow you to put version numbers and iterations against the builds through altering assemblyinfo.cs.  I can't tell you how helpful this sort of stuff is to a *huge* amount of shops out there.  Heck, half of these places don't even use cruise control.
 
4) NCover

Donald demonstrates NDover, the coverage tool for .NET.    You're able to hook NCover into CruiseControl so that if the level of code coverage goes down , your build will fail.  This is awesome!  I've integrated NUnit into CuriseControl before but never thought to use NCover before.  Donald is doing this through NCover Runner, which produces NANT xml for integrating NCover into the build!

"Does anyone have a mouse 101 lesson?"
"JP says no mice Donald"
"well, JP says a lot of things...he makes a lot of promises...but he's always travelling...I...I...forget it."  Oh, here we go again.

Hmm, they're not in my extra pockets...

5) nantContrib
Some things from nantContrib - Who kicked off the last build?  Was it forced?
nantContrib's "codestats" tag can also tell you how much of your project is in VB and how much of it is in C#, for example, among other things.  It also tells how many empty lines are in the project and our comment lines as well.

Not in my side bag...

6) dashboard.config

Dashboard.config will help configure our cruise control display output.

"Do you use Simian, and how did you find it?"

Donald: "It was pretty good - Simian goes out and looks for similarities in code structure; it will notify you and tell you it's a possible refactoring point.  I think it's okay, but it's also the only one on this list that costs you money.  Relatively cool."

Donald has found ways to sniff cruise control servers and force builds.  "I've got a lot of time on my hands."  Sometimes Donald writes these cracks for me.

I think the guy behind me thinks I am on drugs, given how I am furtively searching through my bag to no avail.  Where the heck did I put those things?

7) limit test runs

Donald's entire suite of tests at work takes 20 minutes to run.  He'd like a way to limit what is running, and CC allows him to turn off certain tests.  

Okay, now I've successfully convinced everyone in the room that I'm high, as half of my bag has been quietly emptied off to the side.  Still can't find this stuff!!

8) assemblyinfo.cs

Donald normally removes assemblyinfo.cs during compilation.  Assemblyinfo.cs is essnetially a collection of attributes about your assembly.  It's a good thing to have it consistent across every assembly.  You are able to use CC to automatically generate your assembly info file - unfortunately we're not able to see this as Donald has apparently deleted said code!!  

Seriously, I will crap myself in public if my ticket number gets drawn and I don't have the tickets!!!  

9) C# inline

You're able to put C# inline code into your NANT files.  Donald finds out through this exploration that he actually *does* have his assembly info generation code.  

WHO CARES ABOUT THAT THOUGH??  I've found the tickets.  I'm going to revise my earlier statement and will now only promise to crap myself if I do not win any prizes.  DevTeach attendance, I am talking to *YOU*!!

10) deploy

Cruise Control can also be used for deployment.  NantContrib can be used for doing these deployments.


This presentation was *packed* with content - Donald was a man on a mission today!  I'm seen a lot of Belcham presentations, almost all of them ending in riots and tears (most of those tears being Donald's).  But he held it together for this one and it paid off - tons of content and lots of information for anyone who wants to be doing continuous builds.  Good job man!!

Now maybe next time we can work on buttoning up those collars...

Addendum:
I didn't win the DevTeach prize
Calgary Code Camp rewards me with nothing but LIES
Donald's presentation put him on the map
And now my pants are...no, no, I can't go on.  I can't go on.

Tuesday, May 01, 2007 #


Ah, finally the presentation we've all been waiting for - Steve Rockarts on the castle project!

I can't really rate Steve's shirt since he spends so little time keeping the thing on.  It *was* a grey cardigan number but now we are greeted to the sight of nothing more than pale flesh and the frequent questions of "Does anyone have any rock??"   

Rockarts has this presentation up as a screencast except the font size is making my eyes bleed in the worst way.  "Can you reduce the font size?"  "Uhm...no."  Uh oh...whoa, Rockarts is going LIVE WITHOUT A NET!!!!  This could get dangerous...

Okay.  Originally I was going to comment about a bunch of things in this presentation, such as:

  • One thing I really like about this presentation (along with every other one I've seen today) is that *everyone* is doing TDD.  I think it's a great way to reinforce that this is the way of the future.
  • Windsor has the concept of a lifestyle -  by default it is a singleton (Windsor returns a single instance back).  If we needed a new instance every time, we'd add the Transient lifestyle - no doubt a lifestyle many developers are intimately familiar with already.
  • Resharper somehow reminding me of Soylent Green

But all that went out the window when I heard

"I am not a fan of Macs..."

"My Mac sucks because..."

Kyle Baley was a psychic: he said that in 45 minutes time, I would call Steven Rockarts a LIAR.  

Steven, my friend, for a brief shining moment, you and I were brothers in Macdom.  You even seemed a little bit more attractive; I mean that in a totally hetero way.  But now that's all gone.  *WE* are gone.  Our friendship...gone.     What is it that causes you to do this?  Is it because your Mac isn't racing green?  Is it because people no longer pay attention to your oil-pouring antics and instead want to focus on the shiny sleek exterior of the sexy laptop case?

I...I just can't go on.  Well, maybe I can, but only in pseudo-iambic pentameter.

Betrayed, shattered, and stabbed in the back
This is how I felt after Rockarts' attack
On the glorious system that men call a Mac

What is it about you that made you this way?
Was it having to keep all those women at bay?
Seriously, Steve, are you feeling okay?

I counsel you, Rockarts, before it's too late
Before you're a shell of man from your unfounded hate
Take back your words and proclaim the Mac great.


Sunday, April 29, 2007 #


JP Boodhoo's company tagline is "Developing With Passion", thereby cementing his reputation as the Tony Robbins of the software development industry!   I should be able to concentrate more on JP's presentation this year, considering that Donald is not in the room - no clumsy attempts at seduction this time!!  

Speaking of seduction, I'm not too sure what to think of JP's "red bumblebee" sweater - at times alluring and at other times confusing.  Not sexually confusing like the shirt I am wearing today, but just disorienting.

"I should warn you I'm really tired today" - I'm hoping that's not an omen!

I think I see my agenda up there.  Oh, now he's just *TAUNTING* me!

"Being a TDD developer does not mean I shouldn't be at a whiteboard...but it does mean that I don't have to totally commit to a design once I start developing."

"A lot of time is wasted coming up with the perfect UML diagram!"

Words cannot describe the design of JP's sample web application.  

Holy cow, JP actually drinks some water!!  It's like he's a whole new person!

I have never seen anyone run faster through design pattern principles than JP.  Talk about a whirlwind.  It's the same difficulty that you run into with mock objects; there definitely is a reliance on earlier concepts/knowledge.  That said, it's nice to have some "deep" presentations that really delve into some of the innards.

Man, I could use some water myself...

MIT open courseware on interface-based programming.  What is the link for this?
 
"I know I'm *getting off* on tangents on there, but what pattern is this?"  Obviously Decorator!!   

Okay, *proxy*.  But talk about a *totally* innocent mistake!  I think *anyone* could make that mistake.  

Now JP is "getting off on a rant".  JP has now gotten off almost as much as John Bristowe at the previous presentation.

"I'm not saying we have to reinvent the wheel - but we need to understand how the wheel was made."   Rockarts behind me:, "Ya man..understand the wheeeeeeel...I CAN SEE IT"

JP gives a "small" diversion on MVP and dependency resolution.  

"How embarassing when the presenter leaves his phone on" - actually, I think it's more embarassing when the presenter has children's show theme music on his phone, but that's just me.  But at least it's not like he's got a bunch of girlie pop in his application!

As an aside, if you have not gone to a JP Boodhoo presentation before, you *definitely* should.  If you could ever say someone writes "sexy code", it would be JP.  The cleanliness/dumbness of his views (and I mean "dumbness" in the complimentary sense) and the logical separation of concepts is absolutely beautiful - every developer should aspire to have their code as clean as JP's tends to be.

JP is using Boo for the Monorail examples.  

The Monorail views don't use Page directives, etc. - they're quite clean.  They are (of course) very similar to Rails template pages, in that HTML wraps a declarative for page content.

Monorail is a true front controller for .NET.  

Interestingly enough, there are no System.Web references in MonoRail at all.   Monorail has an IHttpHandler that is a gateway to controlling the request.

How does Monorail know it should've shown a particular view?  Like Rails, it is all about a directory strucute.  When it sees a request, irs Front Controller looks for a controller (ie. if we're looking for "Home", it looks for "HomeController").  As you'd expect (once again), this is a Rails specific thing.  

I need to tell you all that this presentation probably will personally excite me the most out of these; I love the cleanliness of Rails implementations (and obviously, I quite like Ruby) but having the ability to have the Rails abstractions in .NET itself are a *HUGE* benefit to me (and anyone!) when loading applications.  N ow the *only* thing that the pages have to worry about is displaying information; largely adhering to the single responsibility principle.

The speed difference between Monorails' controller implementation and ASP.NET's controller implementation is *amazing*.  

"We can't get into view components today, but you can use them to write out your Javascript, etc."  I know, I know, it's something Rails does as well.  But having this sort of thing available for ASP.NET dev is fantastic for making applciations faster, better, and cleaner!!  Once I get into this more myself, I will throw up some posts around it.

Advantages/drawbacks:
New scripting languages to learn
Dropping of habits
Lack of good docs
Simplicity
Better separation of concerns

"If you want to use Monorail, you'll need to abandon the viewstate mentality entirely.  There is no concept of a postback"

JP is writing his new site in Monorail!!  Nice!

One other disadvantage of this is the ability to test views - although with Braille/Velocity you may not have compile time checks, but you're also able to run unit tests against the views.  

(This is one thing, as I was just discussing with D'Arcy, that may be a barrier towards business acceptance of Monorail - some people arguing against "yet another language" involved in these.  I could be jumping the gun here - I will definitely take this back after I get more exposure to it.)

"If you want to write true OO objects, Prototype and Scriptaculous are the best possible script libraries to do your work with it."  

"Monorail is inherently more testable than ASP.NET.  Have you ever tried testing Session or Context?"  Oh, some of us have.  Some of us still have the scars!!!

"Why are these things done in Braille/Velocity rather than C#, etc?"  

Ah, here we are. JP : "I'm not betting the farm on Monorail.  Two of the main languages in Monorail are Velocity and Braille, where Velocity hasn't had a lot of activity around it.  How long can Ayende remain committed to extending the source?  What happens if Ayende stops bothering to update?  Castle updating this is great - they probably won't let it die.  Castle has a huge community around it now.  Monorail itself won't go away, but I *am* worried about Monorail's view implementation."  

Whoa - did I just hear that JP is done on time??  It *IS* a new JP up there!  Drinking water, finishing before the time limit...it's like I don't even know which way is up anymore...

Once again JP shows us all how it's done
Showing new architecture that's easy and fun
Monorail's sexy and I am aroused
When viewing the framework in which this is housed




 





Saturday, April 28, 2007 #


My two major memories from Calgary Code Camp 2006 were being blinded by Tom Opgenorth's loud Hawaiian shirt and signing his gun registry application.  I'm assuming his presentation today will be equally as memorable!

We encounter a slight hiccup when Tom finds out OpenOffice won't recognize his file extensions!  Where's open source now??  John Bristowe (who has showed up at pretty much *every* meeting thus far - that guy is everywhere) saves the day once more by loaning Tom his laptop.

List of places writtten under Mono include Sourcegear, Wikipedia, etc.

Mono's name apparently originates because the author is Spanish, and the author likes monkeys.  Interesting choices.  It's also "interesting" that the author looooves monkeys that much, confirming my earlier theory that Linux users are either asexual or merely perverse.

I am a little disappointed that Tom is not wearing a Hawaiian shirt today.  Tom is all, "I'm bleeding edge". How bleeding edge can you be with the UNIX equivalent of an alligator polo shirt?  COME ON BUDDY

Mono supports C#, VB.NET, Java(??), IronPython, PHP, and Boo.  

Boo is a "wrist-friendly" language.  Yike.  I have no idea what that means but it sounds a tad disturbing.

Wow, Mono runs under a lot of systems.  Mono is a TOTAL WHORE!  *NOW* I understand why they named this sucker Mono.  

"Mono is everywhere you need to be and probably a few places you don't" - like that doesn't sound like a massive STD waiting to happen.

"Any of you use Web parts?  I don't want to say it's bad..." TAKE A STAND!!!  

"Mono implements things that people ask for rather than just mirroring Microsoft..."   Bristowe: "Watch it buddy!!" I know John is confident after the @$$-kicking he gave Donald Belcham last September but Tom owns rifles.   He might have bitten off more than he could chew here!!

Mono has .NET 2.0 support and a host of tool support:
Gendarme - FxCop equivalent
MoMA - Mono deployment

Oh man I am DIZZY

Mono 2.2 in Q4 of 2007 will have WinForms 2.0 and the first beta of Olive - which brings LINQ, WPF, WCF, WF to Mono.

System.Management and System.EnterpriseServices are not supported under Mono, as COM and the Management libraries are largely win32 calls that have not been done.

How do you write code for Mono?  

SharpDevelop
MonoDevelop (for MACS!!  Obviously this one is the superior one)
Visual Studio .NET

Tom loads up SharpDevelop IDE.  "There's a designer!!" - John Bristowe, looking intimidated.  Point for Tom!!

My head is spinning from *something*!  Maybe it's the IDE.  

Seriously where the *@#& is my agenda??

Bristowe -"I know there's two CLRs you can use here."  John is standing up now face-to-face with Tom.  

"I have other questions if you don't mind."   Oh my goodness - it's not fighting at all.  Bristowe is in love!!

"I think Bristowe is having a Mono chubby." - some anonymous developer. Actually, I think it's Tom that Bristowe is aroused by.  Holy crap: a Linux user has actually succeeded in arousing another human being for the first time in recorded history.  I'll never forget where I was when this occured.

Tom beings demoing MonoDevelop.  Jonas: "I wish I had Mono right now!!"

"What's the output of this?" - it's an EXE run using Mono!!  I'll be writing Hello World applications *all the time* in this!!

Apache web server can be run using mod_mono.

"Is mod_mono cross-platform?"  Nope.

Cross-platform tips:
Platform abstractions: Windows isn't case sensitive, but UNIX is. 
Path separators are different.  Use System.IO.Path.Combine and System.IO.PathSeparator rather than the slash.  Bristowe: "FxCop checks this as well."  Winks at Tom and smiles.  Awwwww.

Tom recommends:
Use a DataProvider Model for database abstraction
use Code Generation (myGeneration or others - TOm prefers mygeneration because it is free)
Use an O/R Mapper (nHibernate)

Many databases are case sensitive as well.

CLS Compliance: Bristowe: "ooooooh, that *sucks*".  

Non-standard builds: Debug symbols are not compatible and incremental builds are not compatible.

Infragistics and other third-party controls may not work with Mono.  

Wow, some parts of MessageQueue are in Mono!  Well, except for the Security part, which is admittedly a pretty big part.

Tom is now showing off applications he previously wrote in Mono that are slightly more than Hello World.

"It wouldn't be a LINUX box if it wasn't a Matrix background"

First demo: XSP (ASP.NET equiv) application.  Tom loads..and then BOOM.  Yellow screen of death!!  Bristowe: "Don't worry, Tom, it's just your config string."  Why does this sound disturbingly like some sort of Viagra ad?  "Don't worry honey, I'm sure it happens to a lot of guys?"

Bristowe is now standing *right behind* Tom, almost giving him a shoulder massage while he fixes the bugs.  I don't know what sort of "pair programming" this is but it's certainly a lot more...um, "intense" than I'm used to.

I hear a "John Bristowe" over in D'Arcy's presentation as it is ending - Bristowe rushes out of the room to investigate.  I'm not sure whether Tom is relieved or disappointed. 

References:

Mono - http://www.go-mono.com
Mono Mailing Lists - http://www.mono-project.com/Mailing_Lists
Race to Linux - http://www.devx.com/racetolinux/Door/33508
GTK# - http://gtk-sharp.sourceforge.net

Tom: "Thanks for coming out."  How oddly appropriate given this presentation!

Violets are blue, roses are red
I think Bristowe is trying to get Tom O. in bed
Mono is wicked, it's tools are phenom
Tom Opgenorths' demo: completely the bomb



Saturday, April 28, 2007 #


We begin code camp with Terry Thibodeau and mock objects, hopefully with a notable lack of french kissing content.

Terry's choice of a casual "I sleep in this" shirt is an unfortunate and unusual style choice for him.  However, he has earned instant credibility in my eyes from two things:

a) his preference of Rhino Mocks over NMock
b) his Tony Almeida soul-patch goatee - seriously, I don't think anyone here aside from say, yours truly, can top that level of sass.  I'm glad Jonas isn't here or he would be dry-humping Terry's chair.   

Mock objects came from the TDD world - help to isolate your testing and testing object ineraction vs. your state.

Is Terry going to actually drink an *entire pitcher of water* up there?  

Terry sets up an MVP pattern, complete with a mock view.  Terry remembers to use the all important Mocks.ReplayAll().  I once heard a story about a developer so retarded that he and his team spent a good amount of time trying to debug a mock only to find out that he forgot about ReplayAll()*.  Who hires guys like that anyway?

Terry, seemingly like everyone at this conference, is using Resharper to run its unit tests.  Man, this coffee was good stuff.  JOY  Hey, Resharper, I'll do presentations just on how great Resharper is if you can hook me up with a license!!  Is anyone listening??

Terry prefers RhinoMocks to NMock because any problems with the mock load will be caught at compile time, vs. NMock where the mock problem will be caught at run time (due to their typing).  Terry Thibodeau is a LIAR.  I happen to know that like me, Terry prefers RhinoMocks to NMock because the word "Rhino" is there.  "Rhino" conveys *POWER* and virility.  What the hell does "N" convey?  WUSSY.  That's what it conveys.  Think about it.  You're at the bar and trying to score a quick hookup and some girl asks you what you do your unit testing with.  Which sounds better?  NUnit...or RHINOUnit?   Case closed.

Man, that coffee WAS AWESOME.  I feel like I'm flying!!  Oh my goodness - I finally understand what it's like to be Steve Rockarts!!  

The guy behind me says "Setup and Teardown, hey?" and cackles to himself.  These Calgarians are a little too enthusiastic about their unit testing.

Terry is obviously from the JP Boodhoo school of presentation as he has an entire pitcher of water beside him and drank none of it.  JP asks me for my agenda.  I already gave it to him!!  Where is it?  Now he's grinning.  I'm suspicious that JP has *stolen* my agenda of today's events, but I can't prove it.  But why!?!?  What is JP's diabolical master plan?  How does it involve me?  Or does it just involve my shirt?   Is he laughing at me over there?   Holy crap, is that a DRAGON over there?  I'M NOT PARANOID

Mocks are awesome but presenting on them is sometimes hard because of additional concepts surrounding it.  You definitely require a knowledge of unit testing or TDD (which really isn't that difficult a concept to grok) but in this presentation it also requires everyone to be able to figure out MVP (again, not too bad but if you were new to it I could see confusion).  Terry has done a pretty good job considering there's a lot to cover when you are also throwing the MVP pattern at devs.  Terry elucidates on the benefits of mocking: you are testing explcitiyl to your interface, it helps you isoalte code, and then you are truly testing your actual code rather than also having to worry about your stub objects.

Although NMock and RhinoMock have the difference Terry alluded to earlier, TypeMock is even more different given it's not designed with TDD in mind, unlike the other two.

And of course, it wouldn't be Calgary Code Camp if I didn't summarize this event in poetry...

This presentation was cool, Terry's soulpatch is hot
"Rhino" tools rule, while "N' tools do not
Mocking and coffee make me feel like I'm high
My only question is WHY JP WHY?

* said developer might have been yours truly


Saturday, April 28, 2007 #


Everyone's favorite metro is here at Calgary Code Camp 2007, reporting *live*!  Yours truly is poised for the days events, especially given I have had about 4 hours of sleep and just chugged a litre and a half of strong coffee after not drinking any coffee for the last several years.  Both by brain and my intestinal tract are on FULL ALERT for this camp!  Things are very different this year, as instead of borrowing my wife's laptop (yes, after a year I can admit it - I'm secure in my manhood), I have the green monster here with me to report!  (Click here for last year's reporting and poetry)

At our welcome intro, James Kovacs starts off by telling...wait a second.  Is James wearing the *exact same outfit* he wore at last year's camp?  A brave yet consistent stylistic choice!!  James tells everyone that "the XBox stays *right here*" and then...uh...points at his crotch.  I'm not sure what this means but I can tell you I don't need an XBox360 *that* bad - it seems to have peaked Jonas Avellana's attention though.

Unlike Kovacs, yours truly is wearing a *brand new* shirt just for Calgary Code Camp.  I know this sounds hard to believe but this shirt is actually hotter than the one I wore to last years camp.  Since I know what you're really reading these posts for, I will keep you all posted with regular "shirt status" updates throughout the day.  I don't know whether it was the shirt or what, but Jonas just came up to me, said "Looking sexy, my friend", wheeled around, frenched some unsuspecting developer guy, and then pointed at Kovacs and said, "THAT'S FOR YOU JAMES" before being hauled away by security.   Is Kovacs' shirt truly that much more powerful than mine???

More to come...

Saturday, April 28, 2007 #


 As all of you know, Calgary Code Camp is tomorrow, and most of you know that Edmonton's own