Tuesday, February 26, 2008

Want a Copy of VS 2008? Attend the DevGroup Meeting on 2/27!

We're giving out 52 copies of Visual Studio 2008 at tomorrow's meeting (2/27) of the Dayton .NET Developers' Group.  These are eval copies; HOWEVER, you'll get a key which you can use to unlock the software, turning it into a full blown copy of VS 2008 Pro.

Meetings are held at Max Training's Miamisburg facility and start at 6pm.  I look forward to seeing you there!

Friday, February 22, 2008

Speak Up at the Central Ohio Day of .NET!

The Central Ohio Day of .NET is 19 April, which isn't all that far away!  If you've got a topic you're smart on, passionate about, or interested in, I encourage you to grab a submission form and toss your hat in the ring for one of the presentations. 

If you're interested, but are holding back because you've not spoken before, then consider this: Code Camps / Days of .NET are a great venue for folks to get their feet wet.  The crowd's friendly, the audience is interested in helping you succeed with your presentation, and you've got a bunch of other speakers who've been there and done that and are happy to share their experience with you.

What are you waiting for?  Go and submit an idea!

(Feel free to contact me via the sidebar link if you need to bounce some ideas off someone or are looking for help/advice in writing up your abstract.)

How Does A Tools Nerd Pack?

In response to Brian's challenge, here's how a tools nerd would pack for a move:

Packing is so 2000.  You have stuff.  There are tools to help you move that stuff, and you're likely to find that the right set of tools will enable to you to completely forego packing, bringing higher productivity and lower maintenance costs to your move.

First, your tiny little trinkets you've collected over the years.  I'm talking stuff like those Dot Net Rocks! mugs you picked up at various spots, or the nearly useless USB-crappy-writing-pen combo kits, or the stupid pokey things you use to hang stuff on the wall of your Dilbert cubicle.    Think consolidation.  Think compression.  There must be eight or ten tools which let you smash all those little trinkets together.  Find the first three from Google or download.com and install them.  All three, and maybe a fourth written by some guy in Uzbekistan just because his name sounds cool and the widget integrates into Explorer shell's context menu and it's the cat's ass when your Explorer context menu is 57 lines long.

Next, let's move on to memorabilia.  I'm talking those AttaBoy! certificates, test certification certificates, "Praise Him Because He Saved Us From Certain Death at the Hands of Pygmy Frogmen Headhunting Managers" certificates, etc.  Think filing utilities.  SourceForge and Tigris must have at least three each.  Pick the first hit from SourceForge, the second from Tigris, and generate a random prime number higher than 1,252,183 to select where you get your third.  Deinstall that last one because you find it doesn't play nicely with 64-bit Vista.  Now that you're thinking about it, go back and remove that Uzbekistani archiving utility because you're noticing Explorer seems to be crashing with alarming regularity.

After that, look to your geek gear.  Your computer, your monitors, your mouse (because you work for a cool company that actually buys you a mouse instead of making you buy your own), and possibly your external hard drive.  While any sap can grab bubblewrap, I'd say there's got to be at least 3.2 suppliers of Sorbothane geek device cushioning packs.  Look 'em up and get quotes from the 3.0.  Drop the second quote, because it's your friend from Uzbekistan who has given up on writing Explorer shell add-ins and is looking to expand into a new line of tools.  Manufacturing tools.

Finally, the righteously important stuff: your furniture.  My once skinny butt sits in an Aeron chair which I paid my own $$ for.  You may envy me.  Maybe not, because you've likely got more cash in your pocket after not springing for an Aeron.  Regardless, you need to transport that baby to the new office, but you first must ensure your transport layer's working properly.  Go download a packet sniffer.  Find some stub drivers that you'll need to ensure your NIC is properly smacked into promiscuous mode for working with that sniffer. 

Now you realize that maybe that wasn't such a good idea because your system is completely locked up, the activity light on your system's solid red instead of the occasionally orange blinking state, and the usually incredibly pleasant network lady is running up and down the hall yelling "Hey, which of you jackasses is fooling around with a packet sniffer and a promiscuous mode driver?"  You're also realizing that that Uzbekistani guy left the Sorbothane gig (Something about missing supply locker supplies.  That and the missing donut fund money, plus there was the whole thing about the Russian Mafia hanging out in the parking lot, too, but that was overblown) and has had his nefarious fingers on the keyboard that was involved in that promiscuous mode driver.

At this point your system, overloaded with cool tools, has become about as productive and unstable as a blogger writing a post at 12:30am when he's due to get his kids out of bed for the school bus in 5.5 hours.  The only recourse is to repave and install fresh from new media.

You can start that right after you finish packing for the move.

(Did I mention that Uzbekistan guy used to work in the plant where your Vista DVDs were burned?)

Sunday, February 17, 2008

The Problem With Dynamic Labels

LinkedIn has no business telling me whether or not I know Christ.  My Christianity (despite the occasional profane rant here on this blog) certainly isn’t the business of some social networking group. 

Oh, wait.  That’s not what they meant.

Maybe having that label’s text dynamically generated wasn’t all that great an idea…

Book Review: SharePoint 2007, The Definitive Guide

SharePoint 2007: The Definitive Guide, by James Pyles, Christopher Buechler, et al.  O'Reilly, ISBN 0596529589.

This book's very broad in its coverage of SharePoint 2007 and sacrifices depth for that breadth.  While there are several chapters on development-related topics, development isn't the book's forte.  Rather, the book's really targeted to giving a lot of background and foundational information for folks wanting to implement Windows SharePoint Services (WSS) or Microsoft Office SharePoint Server (MOSS).

11 different contributors make some parts of the book difficult with their wide range of voices, and there are a number of clunky parts and some flat-out errors.  (One minor example: A diagram of server topology switched the labels between the web front ends and application servers.)

Those nits aside, the book's well done and a solid resource for folks moving in to the WSS/MOSS arena.  The sections on architecture, installation, and topology are all fine bits for discovering the broad strokes.  The remaining chapters hit functional jobs like site design, managing workspaces/discussions/groups/libraries, etc. as well as mid-level views of business intelligence, Excel Services, Forms Services, and security.

Each chapter does a nice job of covering its topic with good introductory passages and a nice summary.  Most chapters have a plethora of well-done, targeted screen shots backing up the content for that chapter.  From time to time the particular author will call out pitfalls (nicely denoted with a trap graphic) and discuss issues surrounding that problem.  I also like that the authors didn't try to push "Best Practice!" fluff throughout the book.  (My biases come up here since 1) I hate the phrase "Best Practice" since it may be "Best" for you but completely "Suck" for me and 2) MOSS/WSS is too new to have solid, industry-wide guidance anyway.)

Overall, I've gotten some very good value out of the book and wouldn't hesitate to recommend it to others, aside from making sure it's understood that the book's not one for understanding the mid-level or more complex areas of WSS/MOSS.

Saturday, February 16, 2008

Shout Out: Looking for IoC/DI References

I had a reader contact me asking if I knew any good books on Inversion of Control/Dependency Injection.  I don’t, so I thought I’d see if any of you readers knew good reading materials on IoC/DI.

Don’t limit yourselves to books — I’d love to see what blogs or other reading material you’ve found useful for IoC/DI.  Also, don’t limit it to .NET stuff.  I’d be happy to get good content references regardless of language!

O'Reilly Webinar on LINQ with LINQPad

O’Reilly’s putting on a good-sounding webinar on LINQ.  More details here.  The webinar’s on 20 Feb at 5pm Pacific (2200 GMT).

Tuesday, February 12, 2008

Lost Your Virtual PC Console?

It seems like two or three times a year I run into this problem where the Virtual PC Console won't display when you start VPC.  It may or may not display on the task bar, but regardless you can't get the little rat where you can use it.

Thankfully Jason Follas figured this out some time ago and has the answer.  His fix has always worked when VPC decides to go apes#it on me.

Free eBook on Virtualization

Realtime Publishers is offering up a free copy of The Definitive Guide To Virtual Platform Management.  Hit the link above, then enter your e-mail address to register.  You'll be able to download a copy of the eBook.

I've not read through much of the book, just skimmed the intro chapters and table of contents.  I like what I see in the TOC so far, and hey, the price is right.  Tough to argue with $Free.95...

(Pointed out to me by my boss.)

Friday, February 08, 2008

Displaying Items in the MOSS Table of Contents Web Part

I ran across a silly configuration issue today when creating a Wiki page library for our group's collaboration site.  We don't use the Quick Launch left nav sidebar, instead favoring the Table of Contents web part.  I created the Wiki library, but it didn't appear in the web part -- it should have shown up under the "Documents" section below.

What's up here?  A quick check of the navigation settings (under library settings -> Title, description, and navigation)

...revealed the silly error I'd made.  I mistakenly set the display on Quick Launch to "No" instead of "Yes."  I flipped that switch:

... and things are now displaying as they should.

Just because you don't use the Quick Launch doesn't mean you shouldn't make items available via it...

Why I Wear My Car for 2.5 Hours A Day

In case you didn't know, I am an aspiring crusty old fart.  I've been in the workforce for a fairly long time, and I've been through the wringer (several times) we all go through as we're figuring out what we want to do when we finally grow up.  I've had a number of very cool opportunities open up to me over the last several years, and I've had a bunch of great choices to make for career direction. 

So with those opportunities in mind, why do I drive back and forth between Dayton and Columbus each day?  As my 3.5 year old son would say, "Lemme tell you."

I joined Quick Solutions back in April, 2007 because I'd long wanted to work for Brian Prince and all the smart folks he's rounded up in his posse.  Smart folks like Alexei, James, Jon, Arnulfo, Monish, and all the others who I'm not listing because I'm too lazy.  I was of the opinion that the environment at Quick must be a great one because those folks are all smart and accomplished enough that they could work anywhere in Columbus, yet have been at Quick for some time now.

The last several months have only confirmed that opinion, and have cemented in my feeling that commuting 2.5 hours back and forth each day to work is a Good Thing when you're driving to a company with a supportive, enthusiastic environment.  While things like Quick's amazing support of CodeMash and the developer community in general carry great weight with me, the absolute nail in the coffin has been the backing and help I've had while trying to rescue a project gone badly wrong.

If you've worked on more than one project in your career you've likely had some variant of the same situation: difficulties communicating with the client, changing expectations, technical issues on the delivery side, etc., etc., etc.  All those add up to a bad spiral.  You get in a spot where you and your team are working as hard as possible but still can't get things on the track needed to satisfy the customer.  (Be clear: as with all death spiral projects, problems were on both sides of the aisle here.)

Things on this project were at a point where the client relationship was, at best, uh, difficult.  I was working exceptionally long hours trying to meet a moving target and get the technical side of things back on schedule and it was wearing me down.    Neither the PM nor I were having any success trying to get the relationship with the client calmed down, and it finally got to the point where we needed to escalate and get higher-level involvement.

That involvement came in a form I never expected: management immediately assembled a team to jump in and give us exactly the help we needed to get the project back on track.  A high-level director took over all client communication, giving the PM and I a much-needed respite from a nearly poisonous environment.  He also insisted on concrete direction from the customer, enabling us to focus on a clear goal instead of shifting expectations.  When things were calming down he handed off all communication and PM responsibilities to our delivery manager who kept things clear and on track.

Additionally, a group of QA folks were handed off to us, filling a bad gap since the client hadn't been fulfilling their responsibilities in that area.  The QA folks nailed down user and acceptance testing, helping us devs to shore up weak technical areas.  (Never, ever let anyone tell you that good unit testing eliminates the need for a solid QA team.  Ain't so.)

It took a couple months of hard work, and there were a number of difficult sacrifices made, but we got things nailed down and back on track.  The client got back in Happy Face mode.   The dev team finally got a commitment to a firm, unchanging set of features and was able to complete them well ahead of our estimates.   The system, a complex technical manual viewer, got finished and rolled out to the pilot phase.  That last point is especially important to me since years ago I was on a multi-year technical manual viewer effort which ended up getting shelved because of politics at the client's organization.  (There's a long story around that one, and why I was so emotionally invested in it, but I'll save that for a different venue.  Like over a beer if you're interested some day.)

Yesterday one of the devs and I had a successful handoff of the last bits for this phase.  My sales manager forwarded on a mail from the client indicating they've accepted the system and are closing out this phase.  That's just huge.

So here's one of the biggest things about all this:  Not once, not once, was any blame ever directed at anyone on my team.  Management, all the way to the top, simply said "Mistakes have been made on both sides.  Move past that, get the job done."  

I have no doubt that at several prior employers I would have been thrown under the bus.  Instead, what I got was calm and rational support, with never even a hint of finger pointing.

So there you have it.  Companies like this are few and far between.  That's why I drive 167 miles round trip each day.  I wish it was less, but I'm happy to make the drive when I go to work with and for such great folks.

(While this post wasn't meant as a recruiting pitch, contact me via the sidebar link if you're interested in working at Quick.  Especially if you work in Dayton and want to carpool...)

NUnit Snippets for Visual Studio

In James's and my book Windows Developer Power Tools we included a great snippet collection for NUnit tests written by Scott Bellware.  Scott compiled a bunch of very useful snippets for everything from adding NUnit attributes to existing classes to creating individual tests.  He also paid attention to small details like cursor placement after the snippet expansion.  Very cool.   Scott had wrapped all those snippets in a Visual Studio Installer package and posted this to his blog on CodeBetter.com some time ago.  I think this was one of the more useful contributions he'd made to the community.

For whatever reason Scott decided to delete his entire blog from CodeBetter.  Not just stop blogging or deactivate it, but completely delete it.  Ergo, no more snippets.

Until now, that is, because I uploaded the package complete with a snap of his great documentation to my website.  Go grab the zip if you're interested in some great snippets to speed your NUnit development.

Scott didn't include any copyright or licensing with his original package, so I'm uploading this on the assumption that it's public domain because he'd originally shared it on his blog.  If you use or reference these files, please make sure to give full attribution to Scott.

Thursday, February 07, 2008

Book Review: C# 3.0 Design Patterns

C# 3.0 Design Patterns by Judith Bishop.

This is a good rehash of the Gang of Four patterns, reworked in C# 3.0.  The book's fairly concise and most patterns are clearly laid out with a simplistic example to demonstrate the basics of the patterns followed by a more detailed example in a semi-real world implementation.

The articles are nicely done, there are a good set of exercises about each pattern, and there are some good comparisons between similar patterns.  As an example, there's a bit comparing the Builder and Abstract Factory which details that a Builder is concerned with how things are built while an Abstract Factory is concerned with what is built.

A couple things bothered me in the book, namely the lack of a clear overall summary of patterns, and an annoying batch of sidebars on fairly basic concepts.  While each pattern has a summary of when you would use it, you're forced to dig through the entire book looking at each pattern trying to figure out if it will solve a problem for you.  A consolidated list of the uses of each pattern at the start or end of the book would have been a great help.  Regarding the sidebars: do I need a patterns book to lay out fundamental concepts like accessibility modifiers or indexers?  These detract from the book's main purpose, which isn't to teach C# 3.0, but show how patterns are done in C# 3.0.

Those annoyances aside, I found the book to be a good read and a useful addition to my bookshelf.

Handy Home Office Gadgets

Two gadgets that have been very, VERY handy for me lately: a label printer and a sheet scanner.

The Visioneer Strobe Xp 220 lets me scan entire pages on one swell foop.  It's fast, and its one-click scan software is a thing of beauty.  The Visioneer, coupled with PDFCreator, lets me quickly make PDF images of contracts, documentation (feh!), and various other multi-page documents. For rapidly scanning in multiple pages it's head and shoulders over the ScanJet 6200c flatbed scanner I use for other tasks. 

Next cool toy: the Dymo LabelWriter 400.  Slick, easy to use, and fast.  It spit out 100+ mailing labels for Christmas cards in just over a minute.  Tie this printer together with mail merge and you're sitting very, very pretty.  The included software makes merges with Access or Excel very easy, and it's also simple to do one-off labels.  (There's a Turbo model with which I have no experience, but if it's got a turbo then it must be better.)

Both these gadgets are pretty inexpensive and have gotten a LOT of use around here.  I thought I'd pass on a shout out about 'em in case they may help you out.

Wednesday, February 06, 2008

Code Camp I Mean Day of .NET on 19 April!

The third annual Dayton-Cincinnati Code Camp will not be held this year.  Instead, we've renamed the event to the Central Ohio Day of .NET.  The name change brings us under the umbrella of great Day of .NET events throughout the region.

The CODODN will be held on 19 April at the Roberts Centre in Wilmington, Ohio.  That's off exit 50 on I-71 just south of I-35 between Columbus and Cincinnati.  The new venue has a lot better facilities for us, and it's equidistant between Dayton, Columbus, and Cincinnati.  We hope to draw in more folks from C-Bus than in prior years.

Interested in speaking?  Grab a copy of the speaker submission form and toss your hat in the ring!

Make sure to join us at the event.  The prior two camps were terrific and I'm sure this one will be even better!

Playing with NDepend

One of the first articles I wrote for my and James's book Windows Developer Power Tools was on NDepend.  I can't remember the exact version I covered, but it was right as Patrick was moving from his 1.x series to the 2.x version.

NDepend is a great metrics/code analysis tool.  It generates a wealth of metrics on your software, and it's fairly easy to use.  Scott Hanselman has a podcast on it which is well worth listening to, but in the meantime, here are a few of the high points about the tool.  (And I wrote about it before Hanselman, so neener neener.)

First off, love the startup screen: you can install plugins for Visual Studio and Reflector.  Wooo!


Secondly, after you run an analysis pass (select the assemblies you want, fire it off), you get a neat grid giving you a breakdown on dependencies in your code.

There's also an interesting graphical display for quickly visualizing potential problems in your code.  This view shows Lines of Code per type.

Clicking on one of the areas shows you specifics for that item.

All the above happen within the NDepend UI.  There's also a separate HTML report generated which gives you a metric crapload of detailed specifics on afferent and efferent coupling, complexity, stability, and other items. 

Patrick's also come up with a great query language to let you pull up potentially troublesome areas which a stock metric might not identify.  This one shows types with high cohesion and a large number of methods and fields.  Each section has a link to the NDepend site where you'll find more descriptive text.

NDepend was great in earlier versions; this newest version has a bunch of great features to offer.  It's a commercial tool, with licenses starting at around $400 and dropping as you buy more copies.  (A free license for Academic/Open Source projects is available.) This isn't a tool everyone on your team needs, but will be of great benefit to your tech leads or software architects.  It's a great tool and it's come a long, LONG way since the 1.x version I played with!

Disclaimer:  First off, I got a copy of this free as an MVP.  Secondly, Patrick's given out a copy for my .NET group to raffle off.  Neither of those mean I've been bought off for this glowing review.  Besides, the MVP license is only for "personal" use, so while I pointed NDepend at a project from work to play with, I won't be able to use it on a daily basis.

Saturday, February 02, 2008

Book Review: The Art of Agile Development

The Art of Agile Development by James Shore & Shane Warden.

I've been working through this book for the last five or six weeks and have been loving it.  Usually I do a deep skim read of most books -- the kind of reading you do in college where you need to get the gist of a book and some of the pearls -- but this one's grabbed me into an intense period of reading, reflecting, and re-reading parts.

Warden and Shore have written a fantastic work here.  The book covers all aspects of Agile from planning to delivery, and each aspect is broken down into sensible sections.  It reads like a series of great articles on very granular components of Agile such as Refactoring, 10-Minute Build, or Stand Up Meetings, but it's so well-written that all the articles mesh together perfectly leaving a smooth path through the book.

Each article (and that's my description, not theirs) lays out a specific practice or component of Agile, walks you through the benefits of it, details how that practice fits in the larger picture, shows you how to implement that practice, and discusses how to identify when you might need to implement or rework the practice.  Each article is extremely well done and approaches its topic from a very pragmatic view.  There are also cross-references to other practices elsewhere in the book that can help you solve related issues.  Additionally, there are great references to other books, articles, and web posts.

Overall the book's just terrific.  It's easy to read, it's pragmatic and practical, and it's thought-provoking.  Art of Agile Development can be used by newcomers interested in moving into Agile practices, but it's also absolutely applicable to Agile pros looking to improve their own system.  It certainly got me fired up with a number of ideas on how to improve our process even more.  Perhaps that's the best endorsement of this book.

Subscribe (RSS)

The Leadership Journey