bradygaster.com

fewer resources, less time, more features

Brian Hitney's Enterprise Guild MVC Presentation

August 26 2008
Posted to: ,

Tonight I attended the local Enterprise Guild's ASP.NET MVC presentation by Brian Hitney. I don't know if I've ever given a review of a colleague's presentation (so this might suck) but I feel one's in order.  Brian's doing his best in this area for Microsoft to spread this and other information and I want to take a moment to recognize, suggest some critique of, and applaud his efforts.

Brian's an excellent speaker and a major contributor to the .NET and Microsoft community in the southeast. He was patient, careful, and did his best to keep things on track without pandering to or disregarding the audience when they requested more information be given to specific areas of interest. He has a way with any collection of subject matter; he adds humor to the presentation, keeps the pace moving along, and overall seems to feel really cozy in front of a crowd. A truly good presenter knows the value in saying something akin to "I don't know, dude, that's an interesting point you bring up," and Brian's not afraid to do just this thing. I think that may be his biggest strength as a developer evangelist - he doesn't preach and he isn't a know-it-all.

I got the impression that most of the people in the audience tonight benefitted from the presentation, which covered some fundamental aspects of the MVC "idea," rather than focus on some of the lower-level points concerning the actual execution of a coding experience using the ASP.NET MVC framework. So when Brian made it clear that the presentation would be covering the "why's" and not the "how's," I have to admit my colleague and I had a mutual eye-roll. MVC isn't an easy concept to grasp, I know. It took me about 3 years to really understand how it's supposed to work. Even now I still struggle with some of the innerworkings of the approach. So that portion of my review is, I admit, somewhat selfish in nature. I would've like to have seen more low-level discussions of the technicalities. 

During the initial chat, Brian brought up Inversion of Control and Dependency Injection. I think a better approach for Brian when dealing with these more complex and abstract concepts would've been to defer to the audience's willfullness to learn more on them; maybe say something about them being important ideas that are "outside the scope" of the presentation (because, well, they are outside the scope of a presentation like this). Instead, Brian gave a few examples of IoC and/or DI. One in particular was to use the event model - a button-click event handler, to be precise - as an example of IoC. I don't claim to be a guru at IoC, but I am positive that I can't think of how IoC could be represented via such an example. I really can't, and I tried. My co-worker agreed with me on this matter, too, so I know I'm not nuts (or that I have a partner in my misunderstanding of something). That's my one major "you didn't capitalize the 'N' and the 'E' and the 'T' when you put '.NET' on your resume'"-type complaint with Brian's presentation. My guess is that Brian understands all of these ideas quite well and could discuss them rather fluently under the appropriate context. In that, when he put them on the slide he had excellent intentions that completely escaped him when he was in front of a crowd of geeks. It happens. 

There were a few technical items of note during the presentation. The first was when Brian created an ASP.NET MVC project in VS2K8. When the "do you want to create a test project" screen was presented and the MS Test the only option in the "what type of test project do you want to create" drop-down, Brian said "If you install NUnit you'll see it in here too." I have both VS2K8 installed and NUnit, and I don't see an NUnit option. So I conclude that there's some additional schnizzle that I need to download and install to tie NUnit to VS2K8, that I haven't yet read that particular blog post (note no link, feel free to hook me up in the comments), or that his statement was incorrect. Brian? Bueller? Anyone? What is it? How do I get NUnit to appear in that list?

Later occurred what I think was the only major and potentially heinous blunder of the presentation. A question was raised about the variance between ASP.NET MVC's behavior on IIS6 and IIS7. It was late in the presentation when an audience member asked about the differences between the two server versions. The meeting was in a new room, started late, and had a huge crowd, so I'm sure Brian was exhausted and ready to call it quits. So, when this question was asked, Brian's answer was simply to state that there was no difference in the way the routes had to be set up and that it'd all work just fine under either version. I'd been bitten by this variance myself (and I have a complete lack of being able to keep my trap shut) so I raised my hand and commented that this wasn't the case. For the record, I said this not to call Brian out and make him look like a dimwit but rather to make sure the correct information was given to the audience. I mean, that's why we're all there, and it is called a community group so I figure that's the best thing one could do in the situation. I specifically mentioned the approach taken in the Kigg framework, and how it seemed to accomplish this for both versions pretty elegantly. The crowd seemed generally cool with this and we moved on, Brian relatively unscathed. No harm, no foul, but I urge (read: plead with) Brian and the rest of the evangelists - don't forget that many of us in the community hinge on most of the things you say. If you tell me it works, I think it works, and when it doesn't work I think it's something I did. When I find out it's something you guys did and that I've wasted many hours trying to make something work that just isn't supposed to work, I want to forget I ever loved coding I get so irritated - nothing plagues a coder like time lost on poor documentation, so just keep doing your best to keep the facts straight. The whole with great power comes great responsibility speech is implied here. 

My favorite moment during the presentation was when Brian talked about the collection of form data in the "new MVC way." He specifically mentioned getting back down to basics and dealing more directly with the Request object. I'm a huge fan of this, and of removing a lot of the gunk between me and my HTTP protocol, so I was all about this commentary. Additionally helpful was his code example demonstrating form-collection using the BindingHelperExtensions class. This has been one of the things I've not yet learned how to do with MVC - dealing with forms. I've been more focused on link-based approaches using MVC and on JSON transmission, so the traditional forms approach had been something that'd eluded me. Brian's example of this was great. 

Brian did mention Phil Haack's ASP.NET Routing Debugger during his presentation, which I'm so downloading tomorrow it's not even funny. Thanks for that, Brian and Phil

Overall, a good presentation. I would like to see a round two of this presentation (or to provide it, as sometimes the requirement of teaching something enables/forces you to learn it pretty well) or to be provided something comperable to Brian's presentation on a more technical, "how-to" level. I look forward to his evolution as a DE, his upcoming travelling show with some of the other guys in his squad, and to learning more about ASP.NET MVC. 

Comments Email Permalink Bookmark and Share kick it

Comments

8/25/2008 7:13:12 PM #

blogs.msdn.com/.../...mework-integration-demo.aspx is what you are looking for. MbUnit and xUnit.NET both integrate out of the box. Charlie is taking a little more conservative approach - probably just waiting for it to stabilize.

Cory Foy

8/26/2008 1:42:03 AM #

Hi Brady!  First, wow -- thank you for the review!  I appreciate the feedback and the constructive nature of it -- exactly the stuff we love to hear!

Here are some fairly random comments:

In hindsight, I'd whack the IoC/DI slide.  The other times I've given this talk, I didn't bring it up.  But recently, I've seen some more advanced MVC presentations and I've been finding that people are just confused by them.  It was an 11th hour add in, literally an hour before the meeting.   The analogy of event-driven programming and delegates being a type of IoC was really about trying to put people at ease -- like, "Hey, you _know_ this, but didn't think you did."  In hindsight, though, it didn't work that well.  Maybe next time around I'll add something to the end of the talk?  

Regarding the IIS6/7 blunder -- right on, man, that was a big goof.  There really isn't a good excuse except that we juggle so many topics... but, what bugs me about this one is that I did know the answer, I just didn't get the brain cache-hit on it.  Let me say though -- AWESOME to jump in like that.   Was in no way taken as a smack-down, on the contrary, I prefer conversation-based presentations that encourage audience participation.  

Testing framework -- yep, I thought that might come back to me as well.  Smile   I realized after I said it that it may come out like, "Look, it's magic!  All testing frameworks are there!"  Rather, the more correct thing to say is: it's pluggable, we're working with the Nunit/Mbunit/etc. folks where possible.  

Content depth:  this is the ultimate struggle for us.  My biggest fear when starting a talk like that is seeing many people raise their hands when I ask, "Who has been using ASP.NET MVC?"  This is because I know those folks will crave more info and likely be bored, but on the flip side, there are folks who are barely comfortable with webforms, so it's a tough balance in a user group presentation.  I've made the opposite mistake in the past of going too deep, at the consequence of losing folks.

Lastly, just wanted to say thanks again for the feedback -- it's really great to get such feedback.   I'll be following up on some ideas in an email!
          

Brian

8/26/2008 1:43:27 PM #

Glad I didn't offend you man. I know that I tend to be the problem guy in the back of the room from time to time but that's out of my continued frustrations with lack of good information on certain topics. When people like you step up to provide the info you do us a gigantic favor in pushing things along. I don't hold feet-to-flames because I'm a hater, I do it because I've been in both positions (audience and instructor) and I know the frustrations for each position and the responsibilities for each, too. It's my responsibility as an audience member to ask questions and to call bluffs so that the other members of the audience get the correct info. I don't know how many times I've said something lame during a presentation only to be called out on it 20 times before I can take my post-presentation bathroom break. So it's always productive and aimed at bettering the situation for everyone, not to dog someone and make them look stupid. In the end it was informative and engaging and answered some teensy questions with which I'd been plagued. I now need to figure out how to use this awesome stuff in something other than "how-to practice projects."

brady gaster

8/26/2008 7:21:03 PM #

I was sitting next to Brady during the presentation, and generally echo his sentiments.  Great presentation from a solid speaker.

The only thing I'd add is that Brian said something that hints to ASP.NET MVC not being a priority for MS.  Specifically (please correct me Brian if I misquote you):

90% of you will never need ASP.NET MVC [over webforms].
[ASP.NET MVC] prohibits you from using the benefits of the event model available in webforms.

While I'm no where near the web developer that Brady is, I am a pretty quick study on these things, and after experiencing MVC I cannot justify choosing webforms for anything beyond the simplest of "datapult" apps.  To his credit, Brian did point out several times in his talk that webforms is fragile, difficult to test, and to a large extent unmaintainable, while MVC is tight with the REST of us, simple, flexible, and easy to test.  

Frankly,  I'm surprised that the MS DE isn't pushing the MVC framework harder.
          

jimbo

9/10/2008 4:22:08 PM #

Jim --

Yeah, good thoughts.  First, regarding the 90% thing.  Realize that there are a LOT of sites running ASP.NET webforms.  Getting even 10% of them to switch to MVC would be a monumental/gravitational shift.  (Good/bad, you decide!)

When releasing a new technology, there can sometimes be vast confusion ... "is this replacing the old technology?"  We hear that a lot, for example, with WPF and WCF.  The old king is dead, long live the king.

With MVC, we really, really, really want to underscore this is an alternative, an option, and it's about choice.   Webforms isn't going anywhere.   Also, since we're still pre-beta, I'm just reluctant to push anything harder at this point.  Don't get me wrong, I love ASP.NET MVC, and I'm excited about it.  But it's still a bit early in scope to start driving it too hard (IMHO).

For some folks (perhaps like you guys) MVC has been around for awhile.  Some have done Java and Struts, some Ruby and Rails, some have used MonoRail.   For the vast majority of folks used to Webforms development, MVC is a new concept.   So we begin gently.  Smile

          

Brian