Tuesday, June 05, 2007

A Laundry List of Failed IT Projects

The Times Online has an article detailing several IT projects which have cratered in the UK over the last ten or so years.  Some of the systems were pretty critical, like a system to track screenings of teachers — its failure left child molesters unchecked in public school systems.

It’s always discouraging to read about these train wrecks because it appears we as an industry aren’t getting a lot better about solving complex problems.

Ugh.

Saturday, June 02, 2007

Licensing 101, or How Not To Handle Disputes

I’ve been back and forth on the ongoing train wreck between Jamie Cansdale and Microsoft over TestDriven.Net’s support for Express editions of Visual Studio.  I’ve finally come to the opinion that Jamie’s in the wrong, and I think his arguments are a bit specious and hollow.

At the end of the day it comes down to the fact that Microsoft’s been clear that Express isn’t intended to support add-ins.  All of the other thousands of companies developing VS add-ins understand this.  What’s up with Jamie?  What’s not clear about this? 

Spending his time arguing over whether TestDriven.Net’s support uses public APIs is futile, IMO.  The bottom line is that folks at MS fought hard to get Express versions released out for hobbyist use, and there were some mandates put in place to enable that — like Express not supporting any add-ins or plugins.

Jamie runs a business and makes money off TestDriven.Net.  I’d think he’d understand the need to control certain revenue streams — after all, Jamie himself took TestDriven.Net from a freely available tool to one you have to pay for.  I don’t think he’s open to folks trying to pore through his EULA trying to find loopholes for using the hobbyist version in a commercial role.

So, with all this said, I’d like to vent my spleen on Microsoft’s handling of the matter.  Frankly, you guys suck.  Not renewing Jamie’s MVP over the flap is understandable, but not being up front and plainly saying “You’re out of luck specifically because of your position on TestDriven.Net” is foolish.  I also have a very low opinion of the style of communication coming from the initial contact person at MS.  Read through the e-mails linked on Jamie’s post and see what you think.  (Interestingly, that same Microsoftie was a roadblock to James’s efforts with Visual Studio Hacks.  Note to MS: Maybe you should consider having someone else handle interfacing tasks…)

At the end of the day I’m irritated by both sides.  MS’s handling of the matter is completely stupid, but seems to be right on line with the 1000Lb gorilla approach they’re using for the patent issues so prominent in the news.  On the other side, Jamie’s taken a stance that’s fundamentally wrong.  I can’t imagine he’d appreciate the same sort of behavior with folks using his commercial product.

Maybe this train wreck will clear up in a nice fashion, but I doubt it.

(By the way, I’m a huge fan of TestDriven.Net.  I used it when it was free, got really pissed when he started charging for it, then plunked down the $$ to continue using it.  I also showcase it during my talk on Open Source Test Tools, even though it’s not open source.)

Thursday, May 31, 2007

Another Great PowerShell Book

Hristo Deshev, one of the many smart folks at telerik, blogs that he’s writing a book on PowerShell. Hristo wrote a couple articles for Windows Developer Power Tools and his writing was clear, concise, and spot on.

Hristo’s PowerShell book is being published by Apress and should be out around January, 2008. I can’t wait to read it!

MSI Error #2869

Getting errors when trying to install an MSI package on your system?  If you’re receiving errors like "The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2869" then try these two tricks:

1) Ensure no other instances of devenv.exe are running.  That means use the Task Manager and kill any procs which might be running in hidden corners.  Make sure to tick the box “Show processes from all users.”

2) Try running msiexec /i <YourMsiPackage> from a command line prompt as the admin.

Wednesday, May 30, 2007

Great New VSTS Book

I just got a copy of Visual Studio Team System: Better Sofware Development for Agile Teams in the mail and I have to say it’s got me almost as excited as when my copies of Hellboy showed up. 

A quick browse through the table of contents, foreword, and initial chapters gives me the impression that this book’s done right.  The topics in the TOC hit all the usual suspects (pairing, embrace change, automatic builds and continuous integration), plus a wide range of important issues off the regular “Here’s how you do XP” beaten path: setting up spike folders in your project, working well with source control, and a passle of other goodies.

I’m also VERY happy to see FIT covered in a book (other than Cunningham’s book on FIT, that is.)

I’ll report in more detail on this very soon, but right now it’s looking like a great book.

Looking for A Cool Working Place? Come to the Quick Solutions Open House!

Quick Solutions, Inc., the cool place I work at, is having an open house on June 13th from 5pm to 8pm. We’re opening our doors to potential candidates who are interested in chatting with Quick about opportunities. You’ll get fed and have the chance to talk with consultants and recruiters in order to find out more about Quick, our benefits, the business model, and the environment. We’re looking for .NET developers/architects/engineers, Java geeks, Program Management and Quality Assurance folks. Interested? Drop me a note via the contact link on the sidebar.

Sunday, May 27, 2007

Serious Geeksville Keyboard

Carl Franklin and Jean-Paul Boodhoo are both talking about the very cool-looking Data Hand keyboard system.

This keyboard seems to be a huge jump forward in the ability to drive your computer aound while being able to minimize the risk of repetative stress injury.  I like the lap adapter for it — I’m having problems at work where I’m using an ergonomic keyboard that’s resting too high on a table top.

I’d love to jump in and give one a try; however, the tarrif’s pretty steep: $675.

As a psuedo-side note, a good keyboard is only part of an ergonomically sound workplace.  You need a good chair (I dropped the big $$ for Aeron chairs), good monitors (note the plural), and a keyboard tray which lets you get your keyboard at the perfect height.  I’ve got one from Humanscale at home and it’s a joy: rock solid and extremely adjustable.

Friday, May 25, 2007

Why Didn't Phil Haack Tell Me Steve McConnell Has a Blog!?

Oh, he did.  And oh, he does.

If you haven’t read McConnell’s Code Complete then do yourself a favor and go get a copy right friggin’ now!  The book is life-altering, and I’m not kidding.  CC, 2nd ed. was a watershed book that (combined with my experiences at SD West and hooking up with a few key people) got me to change the path of my career and life.

Orcas/LINQ Dev Care Materials

The materials from my presentation today at the DevCare event in Columbus are located here on my site.

The zip’s got a text file with the links I mentioned in the presentation, but I’ll post ‘em here

DNRTV -- Barry Gervin on LINQ
http://shrinkster.com/p8z

Dustin Campbell blog w/Lambdas, other techie stuff
http://www.diditwith.net/
http://shrinkster.com/pad

Bill Wagner (minor diety of all things C#)
http://shrinkster.com/p90

Additionally, here’s a link to the Orcas Demo session from MIX07.

Everything You Wanted to Know About & nbsp ; Entities

There’s actually a FAQ on working with the “& nbsp ;” entity and why it can be a PITA to deal with.  The first item goes into seriously gory, deep details.  Useful and interesting

Update: Duh.  My trickery to try and get the nbsp through didn’t work.  Fixed.

Wednesday, May 23, 2007

Cygwin, Vista, and UAC

Cygwin rocks.  Cygwin under Vista with UAC enabled?  Less so.

It’s back to admin accounts in Vista not really being admins, but there’s a hack workaround for it.  Read about it here.

You may have concerns about enabling the Administrator account (which is disabled after Vista’s set up), but it’s a tradeoff, IMO.  Having access to this Administrator account means I can do basic stuff like chown operations, so that’s a plus for me.  Besides, I only switch to that account when I really need it.

HTML Tidy Goodness

I’ve used HTML Tidy for a looooong time and have always loved its power. 

Need to clean out the crap older versions of MS Word tosses in when you save a document as HTML?  Tidy to the rescue.  Need to check HTML syntax, correctness, or proper authoring practices?  Tidy’s your tool.  Want to just get a human-readable, nicely indented file from SGML/HTML/XML input?  Tidy’s just the thing.

Tidy’s long had the ability to convert HTML, even files which aren’t well-formed, into XML.  That’s a pretty sweet feature, and newer versions of Tidy will even spit out lovely XHTML.

Tidy’s got billions of handy config options, like getting all those stinky elements properly indented or wrapping text automatically at a specific column.

I just grabbed the latest Win32 version this morning as part of some work I’m doing converting badly structured HTML into XML as part of a migration to DocBook format. 

In a very, very weird karmic wheel of life experience I’m once again working on a technical manual viewer — awfully similar to the Air Force Common Viewer I worked on nearly a decade ago. But I digress.  (Which is a frequent occurance around here, but I digress further yet.)

To the point: Grab Tidy if you’re ever in need of checking or manipulating XML or HTML files.  It’s a sweet little tool.  It’s awfully simple to use, but I see there are even GUI front ends for it if you feel the need.

Tuesday, May 22, 2007

Upcoming Speaking Gigs

I’ve got a couple short-notice talks I’ll be delivering this week.

Thursday, 24 May, I’ll be presenting my Open Source Test Tools talk at the Central Ohio .NET Developers Group starting at 6pm.

Friday, 25 May I’ll be talking on Visual Studio Orcas and LINQ at the Columbus DevCares event.  This one will be fun: I’m just jumping into both Orcas and LINQ right now and am loving what I’m seeing so far.  (Thanks to great folks like Bill Wagner and Dustin Campbell who’ve been putting up terrific articles on LINQ!)

Nice Utility to Clean and Zip Source Folders

Jeff Atwood ran with a neat utility that Scott Hanselman pointed out that someone else wrote that was inspired by someone other than that someone else. 

Confused?  Then forget that first sentance and go grab Atwood’s Clean and Zip Source utility.  Install it and you’ll get a nice, new item on the context menu which will troll through a subdirectory structure, remove all the bin and obj dirs as well as source control files and binding info.

Very handy, very shiny.  My only complaint is that I can’t configure it to ignore the files ReSharper tosses in my project tree, but that’s a minor nit.

Monday, May 21, 2007

Book Review: Principles of Beatiful Web Design

The Principles of Beautiful Web Design, by Jason Beaird. Published by SitePoint. ISBN 0-9758419-6-3. 170 pages (full color).

This is perhaps one of the best books I’ve read in a long time, mostly because it’s targeted specifically to folks like myself: those who are technically sound but graphically impaired.  My solid skills behind a camera translate not at all to good site design and layout, so I was really excited to look through this book when I first heard about it.

Beaird has written a very concise, gloriously illustrated work that does a tremendous job of covering everything from layout/composition to textures and color.   Throughout the book Beaird uses real-world examples of sites that illustrate the particular point he’s working on.  Sitepoint’s willingness to spring for full-color printing helps nail down Beaird’s content.

The book clearly discusses layout fundamentals like balance, grid theory, and symetry/asymetry.  The chapter on color hits color psychology (“Feeling a bit blue today?”), palatte selection, and the value of using color wheels to pick complementary and contrasting colors.

The rest of the book is every bit as golden, hitting texture, typography, and imagery.  There are a number of terrific resources for fonts, colors, and images with a mix between free and commercial resources.

This isn’t a book to find out the details of how blocks flow and clear in CSS, nor is it a book to learn about the latest and greatest in AJAX/Javascript.  What this book does cover, and covers well, are the higher-level, vital concepts you need to grok before you start wiring up AJAX controls and laying out <div> elements.

The Principles of Beautiful Web Design isn’t just for lame design folks like myself.  I imagine even accomplished web designers could learn a thing or two from it.  It’s that good.

Sunday, May 20, 2007

Contact Link Fixed

The XDI contact link on my right sidebar (“=JimHolmes”) was busted.  Now it’s fixed.  Feel free to drop me a note if you’re looking for questions/answers, info on the .NET community in Ohio/Michigan, rose gardening, or some of the recipes I occasionally post here.

(Ask work-at-home parent questions at your own risk…)

Back from West Michigan DODN

Chris Woodruff did a helluva great job organizing the West Michigan Day of .NET.

There were a lot of great sessions, including a terrific one on Rhino.Mocks by Chris Brandsma.  I breeze through Rhino in my Open Source Test Tools gig, but Chris really got into the depths of Rhino and showed some tricky stuff like mocking events.  I’m going to steal a few bits of his concepts to refactor my own coverage of Rhino in future gigs.

I gave my OS Test Tools talk and also Real World SharePoint where I talk a bit about some of the hard knocks I’ve been through with a couple MOSS projects.  (Actually, it’s hard knocks learned from a bit of my work and lot of Rus’s work when I used to be at NuSoft…)

Materials from the event will be posted up shortly at its site.

Friday, May 11, 2007

Fixing the Dual Monitor Bouncing Monitor Thing in Vista

I’ve been pretty satisfied with my Vista experience so far, but running dual monitors on a laptop is a complete hassle.  Vista helpfully turns off the external monitor feed every time you disconnect your laptop from a docking station, pull the external cable off, or change displays using a KVM switch.  The last one is particularly egregious for me since I have a four-way KVM at my home office.

Thankfully Arnulfo found the trick: Disable the Transient Multimon Manager task.

Go read his post on how to fix the problem.

Two things to keep in mind: 1) the configuration will stay live when you disconnect, so you may have to move apps around.  Alt-Space -> M -> Arrows will do that trick.  B) TMM was in the MobilePC task folder on my laptop, not the Windows one.

Now Playing:  Guster — Lost and Gone Forever.

Thursday, May 10, 2007

New SharePoint Users Group in Cincinnati

If you’re interested in MOSS/WSS and you’re in the Cincinnati region then you ought to show up for the first meeting of the Cincinnati SharePoint Users Group.

MAX Training is hosting the event which is on 14 May at 6pm.

MOSS is a huge, tough product.  Groups like this will be a vital part of being a successful MOSSer.

Wednesday, May 02, 2007

Contact Info

It looks like XDI.org is having some issues, which sucks because it's a great service to help cut spam. Ergo, please go ahead and contact me directly if you're interested in my post on job opportunities at Quick Solutions. You can reach me at Jim AT IterativeRose THEDOTTHINGY com. I hope XDI isn't going the way of the dodo. I've certainly been happy with their service!

Monday, April 30, 2007

Looking for Work? Consider Coming Onboard with Quick!

Quick Solutions, the company I work for, is looking for sharp, passionate folks in a number of areas.  We’ve got openings for .NET, Java, and BizTalk developers, and we’re also looking for good project managers, business analysts, and quality assurance/tester folks.

Quick has two sides of the company: a terrific staffing side and the solutions group which I’m part of. 

Quick’s staffing model is a lot different than other staffing companies I’ve been around: Quick is dead serious about their folks keeping their skills honed, and they back that up with dedicated mentors and ongoing training.  Quick is very serious about keeping folks productively employed and off the bench, and they’ve got a great process to ensure that’s the norm.

The solutions group does amazing work in a number of cool areas and is involved with technologies including SharePoint 2007, Windows Communication Foundation, SliverLight, ASP.NET, and a passle of other cutting-edge cool things.  Yes, we still do our share of older legacy development, but we’re serious about putting new things to use where they make business sense.

Quick’s full of amazingly smart folks (James, Arnulfo, Monish, Alexi, of course Brian, and a passle of others too)  who are great at what they do, and Quick is an amazing supporter of the development community in the region.  They’re deeply connected with the .NET crowd and have done amazing things in the Java and Ruby communities as well.

I jumped at the opportunity to move to Quick when the chance came up earlier this month.  I’ve been fortunate to have a lot of doors open to me over the last year or so, but Quick was the one I’ve long wanted to go through.  Everything I’ve seen in the last three weeks has backed that up: carefully chosen folks who are great at teamwork and who are very passionate about what they do.

It’s a great place to work!  Drop me a line via the link on my sidebar if you’re interested.  We’d love to talk with you!

Sunday, April 29, 2007

Vista Screen Rotation on Laptop

My new Dell D820 laptop freaked out the other day when I hooked up an external monitor to it: the display on both monitors went in to portrait mode.  Portrait mode’s awfully nice on my tablet PC when I am writing notes and the such, but it’s quite a hassle on my laptop because I have to tilt my head 90 degrees to the left and the dual monitor display is a little odd since it’s to the left and not under the laptop.

It took me a bit of poking around, but I finally found the solution.  Vista, even on a non-tablet PC, has a Tablet PC section under control panel.  Head there and you’ll find screen rotation settings where you’re able to pop the display back to landscape. 

In my case the second monitor remained in portrait, so I had to head over to the Mobility Center and have the Display section re-detect the external display.

After a couple annoying flickers everything was back to normal, and it’s remained so for a couple days.

What a relief!

Friday, April 27, 2007

Book Review: Windows Forms 2.0 Programming

Windows Forms 2.0 Programming, by Chrfis Sells and Michael Weinhardt.  Addison Wesley.  ISBN 0-321-26796-6

Windows Presentation Foundation has been released and we will all immediately stop doing WinForms development and move to the latest and greatest technology.  Right.  WPF may take over the world — but not right now.  Plenty of folks will still be doing Windows Forms development for some time.  Ergo, this book is a great resource to have on the shelf.

The writing style’s clean, clear, and concise, and the examples all show the right level of detail.  Graphics throughout the book are good, and there’s even a full-color section in the middle of the book to show off how nice various WinForms displays can look.  (Although I should note some of the figures there aren’t particularly interesting.)  A very handy “New” marker in the margins highlights features and functionality new to the .NET 2.0 framework — a great benefit for folks experienced in 1.1 development who are looking for quick exposure to what’s new in 2.0.

The book’s content is terrific and extremely useful.  There’s a solid introduction which hits all the important fundamentals of WinForms development and also hits the right features you’ll need in Visual Studio.  There’s awfully good coverage on basics such as form lifecycle, MDI basics, data validation, and why/how properties are important in WinForms development.

The authors do a very solid job laying out other important concepts like data binding and validation.  There’s also a great amount of background on localization through the entire book, and I found the chapter on resources particularly informative.  The bits on components and custom controls were also a very good read.

Overall it’s a solid book and very useful for folks still working in WinForms development.  (That would include me…)

Tuesday, April 24, 2007

Because You Should Never Break The Build

Automated builds are great.  Automated builds with status indicators like CruiseControl.NET’s dashboard are better yet since you get a quick visual indication that something’s gone seriously wrong.

Best of all?  A bunny which complains with remarks like “The build is still broken.  Get your act together, people!” or complains “This sucks” when there’s an exception.

I wonder if I can tie this in with the Team Systems server we’re running on now…

(Via Ben Carey)

Thursday, April 19, 2007

Managing WF-related Permissions in MOSS

Sahil Malik’s got a great blog post on the steps you’ll need to think about taking when configuring security for a MOSS site and list for workflows.

Wednesday, April 18, 2007

IE Search Provider for .NET Geeks

I heard Dan Appleman on DotNetRocks talk about a great thing: Google custom search.  Dan’s an amazing brain and he’s worked out a killer resource for .NET geeks: SearchDotNet.com.

This site uses Google’s custom search functionality to limit search crawls to a specified list of sites.  In this case, SearchDotNet.com’s search list is a bunch of sites specifically chosen by Appleman because of their high-quality content.  It’s awfully cool to get a search source hand-picked by someone like Appleman.

Along those lines, one of Internet Explorer 7’s coolest features, IMO, is the ability to chose and load different search providers.  You can even create new providers — like using SearchDotNet.com.

Here are the main steps on how to do this.  First, start IE 7, then pull down the menu by the search field.

You’ll land at the search provider creation page.  Note the area for creating your own provider. (Boxed in the fancy curved-corner box.  Ooooohhh.)

Open up a new tab in IE, navigate to SearchDotNet.com and enter ‘TEST’ in the search box.

Click the Search button, then nab the URL from the search results page and paste that back in the box on the Add Search Providers page.

Name the provider, click Install and you’ll be asked if you really want to add the provider. (Because, like, clicking “Install” wasn’t definitive enough…)

You’re now rewarded with IE displaying your shiny new provider as the default one.

Now you’re defaulting to searching .NET-related content from the best brains around.  How sweet is this? 

Flickr Uploader

The Flicker Uploader is a great tool for getting stuff up to Flicker.  Unfortunately, I always forget where the heck it is when I repave a system, and Google never seems to find it.

Ergo, I’m blogging the location of the Flickr Uploader for posterity (and ease of me finding it again…)

Saturday, April 14, 2007

Book Review: Information Dashboard Design

Information Dashboard Design by Stephen Few.  Publisher: O’Reilly.

I’ve been poking through this book for the last several months as I’ve been starting to get my head around KPI and dashboard capabilities in SharePoint Server 2007.  The book’s a great bit on figuring out the best ways to concisely display critical summary information on a single screen for an at-a-glance overview.

The book’s broken out into solid chapters covering dashboard history/background, uses, design mistakes, and the value of simplicity in dashboard content.  The style of the book is clear, and it’s concise and well-written.  There’s also great use of color which is terrific because so much of dashboards is about helping give quick visual impacts via smart use of colors.

The intro chapter gives a lot of examples of dashboards, but I found it disappointing in that it doesn’t really lay out clear opinions on whether the author liked or disliked the boards.  That weakness is limited to the first chapter, though, because the rest of the book does a great job of laying out problematic dashboards and talking about the fundamental issues behind those problems.  Few hits a lot of common things like making dashboards which require scrolling to hit all the parts of a dashboard, or fragmenting dashboard content into multiple screens accessed through tabs.

Few’s writing style is very clear, and he’s got great insight into many details about what makes a good dashboard — small details like prefering bar charts over pie charts in all but a few cases, or ensuring that you’re setting the proper context for visual information.

I’m definitely not a great visual design guy, so this book’s been a great help to me in thinking about how to best represent critical data.  Frankly, I think the book’s a great aid in helping figure out not just dashboards, but how to best represent any critical information in a clear fashion.

Catching Up On Old Book Reviews

I’ve missed reviewing several books I’ve gotten a lot of good use out of over the last year.  Here are bits and pieces on four good ones.  I haven’t completely read through all of them; however, I’ve gotten enough out of them to feel comfortable with scratching out a few remarks on each.


Deploying .NET Applications: Learning MSBuild and Click Once by Sayed Y. Hashimi and Sayed Ibrahim Hashimi.  Publisher: Apress.

I picked this one up as I was working on the MSBuild article for Windows Developer Power Tools.  The book’s concise and hits a number of good points on MSBuild, Team Foundation Server/Team Build, and ClickOnce.  I really didn’t spend a lot of time in the TFS or ClickOnce pottions — I was busy using the MSBuild parts to try and get my head around that particular technology.

The coverage of MSBuild includes some comparisions to NAnt and a number of the make variants. (barf)  There’s a good example walk-through of MSBuild and a nice bit on writing custom tasks for MSBuild.  While the MSBuild parts are well-written, the explanations really didn’t click for me, but that’s probably due to my serious bias in favor of NAnt and my background with Ant.  I had a tough time getting past those biases and grokking any advantage of MSBuild over NAnt.

Overall I think the book would be useful, it just didn’t quite click with me.  That said, I’m looking forward to revisiting this book as I dive in to TFS and Team Build starting next week.  I’ll also be using this book for the SmartClient bits.


Microsoft Windows Communication Foundation Hands On! (Beta Edition) by Craig McMurtry, Marc Mercuri, and Nigel Waitling. Publisher: Sams.

This book was out well before the RTM of WCF and I’m amazed at how great a job the authors did being so far in the lead of the wave of WCF books.  The entire book is really a set of explanatory articles walking readers through introductory topics, general knowledge, and deep dives into specific areas of WCF.

The writing style is clear and to the point, and the exercises are great for demonstrating the specific bits they’re talking about.  The authors managed to keep all the code examples up to date via constant update releases on a companion website.

There’s also a bonus chapter covering InfoCard, its background, and how it ties in with WCF and some nice example code.

(This is also one of the very few useful books I’ve found from Sams.  I generally dislike their offerings, but this one’s a winner.)


Programming ASP.NET, 3rd ed. by Jesse Liberty and Dan Hurwitz.  Publisher: O’Reilly.

This is a massive work covering a broad range of topics for ASP.NET.  I found Fritz Onion’s book on ASP.NET a better work for the basics of ASP.NET such as page lifecycle and state; however, this book walks though a great number of detailed discussion on basic and advanced controls.

There’s also solid chapters on tracing/debugging/error handling, and validation, plus other chapters on user controls, web services, and a number of other topics.

I’ve used this book mostly for occasional reference — I do very little ASP.NET development, so it’s been a boon when I’ve needed a good example to point me in the right direction.


C# Cookbook, 2nd ed., by Jay Hilyard & Stephen Teilbet.  Publisher: O’Reilly.

Another book that’s great as the occasional reference.  This is another huge tome and it’s chock full of topics from generics to security to XML.

Each topic is a recipe in a Problem/Solution/Discussion/See Also format.  The solution is a snippet or set of snippets to solve the specific problem and the discussion is s walkthrough of the ins and outs of both the problem and how the solution fits the bill.  Occasionally there’s a good discussion of the pros and cons of solutions.

This isn’t a book for reading cover to cover, but there’s a lot to be learned browsing through the recipes, and you’re sure to get answers on a wide range of topics including solid use of generics, exception handling, I/O, web bits, and networking.  The chapters on security and reflection are particularly useful because they offer up good insights on approaching secure coding correctly and good techniques for dealing with reflection.

Thursday, April 12, 2007

Bragging on My Brother's Photos

My brother’s about sixty years older than me and has treated me horribly my whole life.  The stories I could tell you would turn your knees to jelly and your hair white.  He got me any my sisters stuck in the neighbor’s potato field decades ago, bounced me around the back of his Bronco durng four-wheeling sessions, and I won’t even go in to the chocolate covered ants he fed me when I was a mere three or so years old.

Actually, he wasn’t completely rotten.  He made me learn how engines worked as part of earning rides on his motorcycle.  He and my Dad were great examples in Scouts as I was growing up, and he taught me no-nonsense safety rules when handling firearms.  Throw in a few other things like being a pillar of honesty and amazing example of hard work’s rewards and you might see that I’ve almost come to forgive him the ant thing after 40 years.  Almost.

One of the things my brother passed on to me was a great interest in photography.  Dan’s been an amazing photographer for a long, long time, and I was always amazed by the magic he made with a camera.  His love of photography was a direct cause of my involvement with yearbook and newspaper photography during junior high and high school, and an ongoing interest in photography in the decades since.

I’ve had a link to my brother’s photos on my sidebar for some time.  My stuff is worthless dreck compared to my brother’s work.  He’s progressed from serious amatuer to semi-pro, and is in the process of cutting back hours from his “real” job to head off and work full-time at something he’s loved for decades. 

Dan’s gotten quite a bit of recognition through a few awards and shows in his hometown of Ventura.  Now he’s gone and gotten himself quite a spread in a wonderful magazine.  You can check out the online version of the magazine in a very, very cool display here.

Amazing stuff, Bro, and I’m proud of you!

(But I’m stll not completely over the ants.)

Friday, April 06, 2007

CodeMash v2.0 Timeframe Feedback

We’re looking for your feedback on when the next CodeMash should be held. CodeMash v1.0 was in January, but that’s sort of risky weather-wise. Moving around to different dates can drastically impact the room prices — the $88 per night rate was pretty fantastic and was a big draw for the venue. We’ve gathered up room rates for a range of dates from early November through March, and we’re looking for feedback from attendees, speakers, and sponsors on when the best timeframe would be. Check out the “Timeframe for Next CodeMash” thread in the CodeMash group on Google. Let us know your $0.02!

Thursday, April 05, 2007

Book Review: SharePoint (Building Office 2007 Solutions in C#)

Microsoft SharePoint: Building Office 2007 Solutions in C# 2005

Scot Hillier

ISBN: 1590598091

This book’s a critical resource if you’re doing development on the SharePoint 2007 platform.  The book hits a solid overview of the many features of Microsoft Office SharePoint Server (MOSS) and also gives you good dives into many of those same features.  The book also deals with Windows SharePoint Services (WSS) and lays out differences between WSS and MOSS.

Hillier does a great job of covering the gory details of MOSS and hits the pros and cons of each feature.  One example would be the hideous XML you have to hand-generate for working with the Business Data Catalog.  He also does a great job discussing one of my recent pain points: workflow.  Hillier lays out the strengths of the feature (workflow’s power of process automation), then talks about the warts of the feature (design difficulties, numerous issues surrounding SharePoint Designer, etc.).  Hillier is also honest about where MOSS features fall short, such as the note laying Hillier’s preference for the K2 workflow engine over that of native Windows Workflow Foundation on MOSS.

The book is structured in a concise, highly usable fashion.  Hillier discusses topics, then uses clearly written examples to walk you through the topic.  All the examples are implemented in an environment that Hillier focuses an entire chapter on setting up.  That chapter (#2) is one of the book’s gems since it shows you how to get an entire development infrastructure set up and configured using Virtual Server to host three separate machines.

If you’ve already had exposure to MOSS then the book may not have a lot of extras for you.  The dives into each feature aren’t necessarily extremely deep dives, but they are good enough to get you well-versed with the concepts.

Hillier’s book is an absolute must-have if you’re looking to move in to any sort of work on the MOSS platform.

 

Serenity Voted #1 Sci-Fi Film

SFX magazine polled 3,000 fans on their favorite science fiction movie and found that Serenity beat out Star Wars.

Even if you’re not a sci-fi fan you may enjoy the depth and complexity of Serenity, so it’s well-worth checking out from the library.  You should also take a look at Battlestar Galatica (the “reimagined” version from the SciFi channel), another sci-fi show which has broad appeal due to its great storylines and complex characters.

(Via one of the few useful articles on Slashdot these days.)

Saturday, March 31, 2007

Goodbye NuSoft, Hello Quick!

Friday was my last day at NuSoft Solutions.  It’s been a great eight or so months at NuSoft, but a terrific opportunity that I’ve wanted for years suddenly opened up.  Come Monday, 9 April, I’ll be starting work at Quick Solutions in Columbus.

I’m pretty stunned at the quality of folks I’ll be working with: James, Jeff, Arnulfo, Alexi, others, and of course Brian.

This is a great change for me, and I’m really excited.  I’ve got a week off to catch up on some sleep and chores around the house, then I’m diving in to the deep end of things.

Yipeee!

Wednesday, March 28, 2007

Great Site for Ordering Badges/Badge Holders

We used MyBadges.com for both CodeMash and Code Camp badge supplies.  They had a great selection of badges and holders, and furthermore were cheap and FAST

You might wanna consider using them if you’re putting on an event that requires badges.  (Yes, feel free to shout out that line about steenking badges…)

Disclosure: I get no kickbacks or recognition from them.  They just gave us great service.

Tuesday, March 27, 2007

Assembly Name or Codebase Invalid Errors

So I've finally recovered from a self-inflicted wound that's lost me more time than I'm willing to admit.  I’m working on a custom field type for MOSS and had been running in to issues when trying to create the field.  I kept getting the error:

The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)

What was the cause?  See if you can spot the difference between:

<Field Name="FieldTypeClass">

    NuSoft.LinkedStandardsCFTField,

    LinkedStandardsCFT,

    Version 1.0.0.0,

    Culture=neutral,

    PublickKeyToken=9f4da00116c38ec5

</Field>

and this:

<Field Name="FieldTypeClass">

    NuSoft.LinkedStandardsCFTField,

    LinkedStandardsCFT,

    Version=1.0.0.0,

    Culture=neutral,

    PublickKeyToken=9f4da00116c38ec5

</Field>

Yes, it’s the missing equals sign in the version part.  OK, so I’m the dumbass who mistyped that, but wouldn’t it be great if the tools helped you figure out those sorts of errors before you build and deploy?

Leaving these sorts of important bits and pieces in free-text elements just doesn’t make sense to me.  Why not have them in a schema-defined structure, either as their own elements or attributes?

Bah.

Monday, March 26, 2007

Code Camp v2.0 a Great Success!

The second annual Dayton-Cincinnati Code Camp was a great success! Mike Wood did a terrific job this year, and we had another great list of speakers this year.

(On a somewhat sideish note, I wish more folks would clue in on the non-.NET speakers we have.  Catherine Devlin is a great Python guru, and Jim Weirich gives keynotes at international conferences.  Both had tiny, but interested audiences.  The folks that missed these two particular speakers missed some significantly accomplished luminaries in their fields.  Grips, folks!)

I was a bit disappointed in my two sessions.  “Real World SharePoint” was OK, but I had a blue screen of death before I even got to the second slide.  I guess I recovered OK, but then my workflow demo from the MOSS SDK wouldn’t load and execute properly.  Grrr. 

My “Open Source Test Tools” was fair — I shot myself in the foot and didn’t bring the correct VPC image with Fitnesse already configured.  I was scrambling around to get things set up prior to the gig, but things just didn’t gel together.  That stinks, because I think Fitnesse is a tool that can completely alter how developers work with customers to create tests and specifications.  There’s a pretty big “Wow!” factor when you paste in values from a spreadsheet your domain experts filled out, then show how little code it takes to wire those values as tests into your code.  A lovely green table appears on the Fitnesse page to prove you’ve done things right.

My pissy whining aside, it was a terrific event.  I FINALLY got to see Dustin Campbell speak for a bit.  His “Back to Basics” presentation is just incredible — he spent a few minutes on an important topic we don’t think about enough: how to learn well.  He hit some really salient points on that such as relaxing to digest what you’ve read, learning a new language every year, and getting involved with community.

Many thanks to all the sponsors I mean contributors we had, and many thanks to the speakers, staff, and attendees who made it such a great event!

Thursday, March 22, 2007

Finally Using Telerik's r.a.d. Controls

If you don’t know them already, Telerik is a tremendous supporter of the developer community.  They provide scads of licenses of their software for raffles at user group meetings and code camps, and they’re extremely generous with sponsorship funding for those same things.

I got a copy of their r.a.d. controls for ASP.NET over a year ago when they began the relationship with our .NET group; however, I’d not been in a spot to put the tools to the test until now.

I’ve been working on developing a custom field type for MOSS.  The type involves reading in a tree of information from a single table, doing some manipulation and display of the node data, then saving out an XML fragment of the tree’s state.  I was looking at the work involved to handle loading up the heirarchy from the database and manipulate it in a regular TreeView control and I wasn’t overly thrilled — my ASP.NET experience is, uh, well, not extensive.

So being a lazy SOB at heart, I took a quick look at the telerik RadTreeView control — and quickly convinced the manager I’m working on this project for that the control made great sense.  In the space of a few hours I had a fleshed out prototype done that had most of the functionality I needed wired in.  It would have taken me several days instead of several hours had I written all this by hand.

For full disclosure’s sake keep it in mind that telerik gave me these controls when they started sponsoring our group.  That said, I’d be ebullient about the controls regardless of whether I had to spring for them or not.

I’m looking forward to making more use of these tools in the near future.

(Also, telerik’s got several other lines of controls for reporting, WinForm applications, SharePoint, and DotNet Nuke.)

Wednesday, March 21, 2007

DeskJet 952c Under Vista

I’d been unable to print to my HP DeskJet 952c from either of my Vista boxes.  The printer’s shared from an XP system, so tonight I poked around the driver settings on that box.

Sure enough, two drivers for that printer were available.  I changed to the second one and Poof! things were happy again.

Flickr Uploader

I lose this URL everytime I repave my machine, so I’m documenting for myself the link to the #(*&@!! Flickr Uploader tools.  (Which is, in a completely illogical fashion, www.flickr.com/tools.  Rotten SOBs for making it so plain.)

Killer Headphone Amp

I’m sitting here listening to some of my benchmark music (The Who’s Who’s Next) and am in complete awe at sound coming out of my new gadget: a Total AirHead mobile amp from HeadRoom at Headphone.com.  This cool little amp weighs hardly anything at all and isn’t much bigger than my iPod.  It runs off four AAA batteries or a little power adapter.  A provided cable hooks to your iPod or other mobile player.  You plug your headsets into the amp — there are even two jacks.

The folks at HeadRoom are very, VERY serious about their amps.  Do some reading on the site and you’ll probably be pretty impressed with their knowledge and attention to detail.

My Sennheiser HD-580 cans sound just amazing with this amp plugged into my iPod.  They sounded terrific before, but the improvement in dynamic range is stunning.

I’ve been looking forward to getting this amp for some time now.  I’m glad the wait’s finally over!

Better yet, Headphone.com is running a sale now, so the amp was $50 off!  Woo!

WARNING: Note it’s headphone.com as in the singular.  There’s some knockoff site at headphone_s_.com — they even snarfed headphone.com’s color scheme.  May the fleas of a thousand camels infest their armpits.

More MbUnit Goodness: Test Private Methods!

MbUnit continues to do great things.  I just stumbled across a discussion on the MbUnit Google Group talking about a new feature in 2.4.143: the ability to test private methods via some nifty-looking reflection work.

Whoof!  This is just plain amazing stuff, and a terrific benefit.

Sure, you can get in to the discussion about whether or not you should be testing private methods at all, but 1) some folks have to deal with poorly designed leprosy I mean legacy systems, and 2) sometimes you just end up with code which has private methods you’d really like to test separately from their invoking public methods.

So there.

Friday, March 16, 2007

Recent Presentation Materials

I’m finally catching up with uploading a couple slide decks for recent presentations.

My DevCare presentation on the Office 2007 UI and Workflow in Windows SharePoint Services 3.0.

My talk on Windows Developer Power Tools given at MAX Training on Wednesday, 14 March.

Thanks to the folks who’ve attended those talks!

Book Review: Windows Vista Pocket Guide

Yet another handy pocket guide from O’Reilly: Windows Vista Pocket Reference: A Compact Guide to Windows Vista.

This is a concise guide to most of the features in Vista and I’ve found it very helpful so far.  Its brief nature keeps the book at a great size for leaving in one’s travel bag, which is where I’ve got my copy.

The book makes great use of its small size.  There’s a nice grid comparing the different versions of Vista, and scads of little articles on features ranging from the control panel to User Account Control.  The articles aren’t very deep, but give you the necessary info to quickly get the gist of a topic.  Where pertinent, there are also useful links to more detailed information on a given topic.

I particularly like that the book doesn’t go too far around the bend with its coverage of the multi-media features of Vista.  I’m also happy to see separate chapters on registry tweaks and use of the command prompt — plus many of the articles give you the command prompt usage for features.  Those two particular chapters aren’t for everyone, but I’m sure many geeks like myself appreciate their inclusion.

Overall it’s a great book for quickly finding bits you may not know about Vista, or refreshing yourself about bits you may have forgotten. 

(As always, read my disclaimer for books I review.)

Wednesday, March 14, 2007

Bill Wagner on "Lean Software Development"

Bill Wagner, one very smart fellow and a great supporter of the .NET community, has a few very good remarks about Tom and Mary Poppendieck’s book Lean Software Development.

Two things about Bill’s comments.  First, I’m always interested to hear how other companies are dealing with agile contracts, so it’s good to read Bill’s thoughts on that part of the book.  Secondly, and more importantly, Bill and Dianne (SRT’s principals) are buying copies for each and every one of their consultants, as well as some of SRT’s customers who are trying to get their hands around agile.

I think that’s a pretty solid endorsement of the book!

(I reviewed the book on Slashdot back in August, 2005.)

Monday, March 12, 2007

Virtual PC Networking

I found that my VPCs weren’t able to see my host system’s wireless adapter after repaving my host and making the jump to Vista.

The fix?  Make sure the host system adapater has the Vitual Machine Network Services item enabled.  Find that under the Network and Sharing Center properties for the connection.

(Thanks to Eric Charran.)

Changing Microsoft's Culture

Sara Ford, a very nice, very sharp lady at Microsoft, is part of a great team which develops and releases lots of great widgets for Visual Studio.

Think everyone at Microsoft is anti-open source?  Go read Sara’s blog.  (Subscribe to it, too.)

(BTW: Sara was nice enough to write a couple articles for Windows Developer Power Tools.)

Thursday, March 08, 2007

IE 7 Runtime Errors

I’ve been running in to annoying crashes in IE 7 where I get a bothersome dialog “Runtime Error! This application has requested the Runtime to terminate it in an unusual way.”

One of the cool tricks with IE 7 is that you can start it without any add-ins enabled, at least under Vista.  (Start -> Search -> Internet -> select “Internet Explorer (No Add-Ins)” )  Once you’re at that point with IE up and running, select Tools -> Internet Options -> Programs -> Manage add-ons.  Disable the add-ons you think might be troublesome and re-enable them one at a time.

I finally isolated my particular issue to the Omea plugin from JetBrains.

Phew.  At least one productive thing solved today!

Lovely SharePoint Books

I’ve just loaded up on three books that look to be very helpful in my continuing work in the SharePoint domain. 

Scott Guthrie (what does he know anyway) recommended a couple at his blog:

  • Developer’s Guide to Windows SharePoint Services 3.0.  This has been a great bit so far.  Clear explanations and a very good section on custom field types.  I’ve not read anything from the publisher yet, but am very impressed and will be looking more up from them.
  • ASP.Net 2.0 Web Parts in ActionManning Press rocks.  They didn’t use to have much .NET stuff, but were loaded with gems about Ant, Hibernate, and other goodies.  Now they’re catching up with a vengance in the .NET world.  Yipee!  (Actually haven’t gotten in to this book yet, but I trust the publisher.)
  • Microsoft SharePoint: Building Office 2007 Solutions in C# 2005.  Scot Hillier’s other books on SharePoint are gold.  I am sooooo stoked that this one finally arrived!  I’ve only brushed through it, but am awfully impressed with everything so far.  His intro sections on SharePoint architecture, fundamentals, and user management are very impressive — as are the bits on establishing a development environment.

FYI: I actually shelled out my own hard-earned $$ for the first two books.  Hillier’s book was a review copy given to me by the publisher.  See my disclaimer if you’re concerned.

Sunday, March 04, 2007

Stuck? Write a Test. Any Test.

I’ve been beating my head against a hard wall the last several months trying to get my head around working with Microsoft Office SharePoint Server (MOSS, or as my colleague Rus and I occasionally call it,“*&%@#!!”).

The latest hill I’m starting to climb is that of custom fields.  They’re a very useful construct, but, as with many other things MOSS-related, the documentation’s a bit sketchy.  There are a number of useful blog posts around, but most of them are very much along the lines of “Here’s how I did this one thing.  It worked for me.  Figure it out on your own if you need variations.”  The SDK isn’t particularly helpful, and Scot Hillier’s new books on MOSS aren’t avaiable yet which really stinks.

I was getting pretty frustrated with being unable to figure out a direction to head off in, so I fell back to something that’s served me well for a couple other things: Write a unit test to poke some bit of functionality in the topic you’re trying to grok, even if it’s completely trivial.

In my case I’m looking at a field to store a collection of Guids which will identify items pulled from a database.  The simple test I wrote was nothing more than constructing a collection of Guids, handing that off to the field control’s Value property, reading it back in and verifying that the contents of the returned collection matched what I’d passed in.

Woo.

OK, so that’s not rocket science, but it benefitted me in a couple ways.  First, I had some success, even rudimentary.  Seeing a green light in ReSharper’s unit test plugin module is a big deal when you’ve been reading skimpy dox for a couple hours and are still saying the equivalent of “Huh?”  Secondly, I got a better feel for the bits and pieces I needed to interact with.  Lastly, I found out that my initial approach of using generics to pass data back and forth wasn’t going to work — the Value property is overridden from the SharePoint SPField base class, so you’re not able to change its signature.  Duh.  My idea of a collection will work, just not a generic one.

So at least at the end of a few hours of frustration I still had something to show for it, which made me feel somewhat better.

Keep that in mind the next time you’re stuck in a rut.  Give yourself a bit of success, even if it’s contrived.

Tuesday, February 27, 2007

SharePoint Development Tip: Watir + WatirRecorder++ == Goodness

Much of SharePoint development is sheer drudgery.  Watir and WatirRecorder++ to the rescue!

Need to remove and re-add a workflow to a document library or list?  That’s a lot of PITA keystrokes and clicks, and a lot of awful screens of “View Source”.  Use WaterRecorder and drive your IE session around the actions you need to repeat.

Tired of recreating steps in a workflow to get to one step where you can begin debugging?  See above.

Watir and WatirRecorder have been a nice breath of fresh air in an otherwise miserable several weeks of MOSS development.

Next up: Trying PowerShell to see if I can get any speed improvements!

Sunday, February 25, 2007

SharePoint Workflow Project Template Problems

If you’re using the SharePoint Workflow templates you may want to make one change to the PostBuildActions.bat file.  Currently the batch file deletes the old feature, copies over the new bits, and then deactivates and uninstalls the feature.  This can leave you with orphaned bits and pieces around if you’ve been doing things like renaming or removing content types, InfoPath forms, etc.  You’re hosed because the batch file, as is, doesn’t get rid of the old bits on SharePoint before killing things off the file system.  Not good.

Here’s a suggestion (which it should be noted I’ve not actually tested yet…):  Alter the PostBuildActions.bat file in the project template files, located normally in C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\CSharp\SharePoint.  Open up the seqcs.zip and smcs.zip files therein, extract and edit the aforementioned batch file, then add it back to the template zip files.

You’ll need to grab the lines

ECHO.
ECHO Deactiviating and uninstalling the feature...
ECHO.

%STSADM% -o deactivatefeature -filename %PROJECTNAME%\feature.xml -url http://localhost
%STSADM% -o uninstallfeature  -filename %PROJECTNAME%\feature.xml

and move them up above the lines in the section “Deploying the feature:“.

Regional .NET Conference 28 April

Save 28 April, 2007 on your calendar if you’re in the Ohio/MI/PA/IL area.  The second-annual Day of .NET in Ann Arbor, MI, is on its way!

Last year’s event was terrific and I’m sure this year’s will surpass last year’s!

(Plus you’re able to hit Zingerman’s Deli while you’re in town…)

Saturday, February 24, 2007

Book Review: The Old New Thing

The Old New Thing: Practical Development Throughout the Evolution of Windowsby Raymond Chen, ISBN: 0321440307

This book is full of highly-entertaining articles on everything from why you can’t install Windows via XCOPY to the evolution of Win32 dialog templates.  OK, maybe I don’t find the bits about dialog templates so interesting, but the rest of the book is full of very interesting topics on how Windows has come to be what it is.

Chen has been in the Win32 world at Microsoft for a very long and really, really knows his stuff.  He’s very skilled at what he does and is very forthright about what he doesn’t know. His show on DotNetRocks was much along the same lines as this book: lots of very deep dives into areas of his expertise with clear disclaimers “That’s out of my realm.”

So what use will this book be for folks who are outside the Win32 arena?  First, it’s a nice background on some basic Windows behaviors like why the Shutdown option is under the Start menu, what overlay icons do, why registry files are called hives, and odds and ends about internationalization.  There’s also a lot of content which is applicable to folks in any domain: taking appropriate care with world-writable files, the impacts of server paging, or general bits about developing sort routines.

Secondly, the book is just plain entertaining.  Chen writes in a light, humorous fashion and manages to make most of his articles very interesting.  (It’s impossible to make a couple pages of example machine code immensely exciting, but Chen comes close.)

Overall the book’s a good skim for folks like myself.  I’d say it’s extremely important if you’re involved with Win32 development — and that means .NET folks who are doing a large bit of Interop programming.

His blog, the Old New Thing, is a good read as well and gets a lot of great discussion in his comment threads.

(As always, see my standard book review disclaimer.)

Tuesday, February 20, 2007

A Few Quick Thoughts on SharePoint Development

My colleagues (Rus and Ana [no blog, yet]) and I have been working hard at trying to be productive in the MOSS/InfoPath/Workflow space these days.  It’s a very powerful envrionment with some great capabilities, but it’s also a very difficult environment to work in.

Test Driven Development?  Forget about it.  Clear logs with easily understandable error messages?  MOSS scoffs at thee.  Looking to avoid lots of tedious, error-prone hand coding of text fields which get no checking during compilation?  I think not.

We’re having to focus on breaking every task down to tiny pieces, lock those down, and move on to the next bit.  I lost a scad of hours trying to chase down why my task InfoPath forms weren’t reading in workflow data — it turns out I’d had a simple casing error in the ItemMetadata.xml file used to define the structure for the secondary data connection to the IP form.  No errors anywhere to be found, and no indication in IP or even traffic across the wire.  (Yay for Fiddler!)

Despite all this frustration, we’re getting some good work done and we’re starting to get a good handle on the right way to approach things.  Some seemingly simple fundamentals really pay off:

  • Naming matters.  Use clear names for your activities, tokens, properties, and fields.  “Task1Token” isn’t anywhere near as sensible as “ContractSubmissionTaskToken,” nor is “OnTask2Changed” as clear as “OnAdditionalReviewerChanged.”
  • Keep solid software practices in mind, despite what you might see in example code.  The samples in the SDK seem to like using public fields to expose data.  Huh?  Forget that, Vern.  Go read Wagner, McConnell, or just about any good book on development.
  • Source control is your friend.  Nail down one bit of functionality.  Check in your changes.  Move to the next bit.
  • Tools are your friend.  XMLDiff, WinMerge, Fiddler, Cygwin, and a few other pals have made their worth well-known to me in the last month.  Logparser is something I’m quickly heading off to check in the hopes it can help me tame the copious logfiles MOSS produces.
  • Lock down a process and automate it.  Developing on MOSS is an exercise in numbing repetition.  Build a solution.  Copy files to a folder.  Run stsadm to install a feature.  Activate the feature.  Restart IIS.  Remove old workflow from library.  Associate new workflow.  You really want to do all that by hand eight billion times?  I think not.  Make use of the power of batch files, NAnt, and PowerShell scripts — or likely some combination of all of those.  We’re only at the start of this part, but we’ve got some good ideas on how to press on.

There’s been plenty of pain on this journey so far, but I think we’re seeing the light at the end of the tunnel now.  Hopefully it’s not a train.

Oh, yeah.  The most important thing that’s paid off for me: The folks who are working with me are a lot sharper than I am.  That’s always a great help!

Monday, February 19, 2007

Dev Books for Non-Dev Managers?

OK, so you’ve seen me review thousands of development-related books (ok, maybe 20) but I’ve been posed a very interesting question by a manager who’s not a developer: What are good books for a technical manager who’s not currently in the development arena but will be overseeing a staff of developers? 

Some context: This fellow is a sharp guy in the infrastructure arena (think serious skill in the Exchange, SMS, MOM, servers, etc. domain) and is a fast learner.  He also gives a rat’s ass about getting things done right and wants to know what makes developers tick, a bit about the technology (we’re a .NET shop), and something about how developers go about doing their work.

My recommendations so far are David Chappell’s Understanding .NET: A Tutorial and Analysis and Andy Hunt/Venkat Subramaniam’s Practices of an Agile Developer.  I like the former because it’s very short and hits things from the CLR/CLI to languages to web services.  The second is my bias to Agile things and how I’d like my work environment to be set up.  Come to think of it, I should toss in Peopleware because that’s such a killer piece on environment in general.

What books would you recommend to expose someone to the basics needed to effectively lead a group of developers, both from a high-level understanding of the technology as well as understanding what/how/why developers work? 

(Let’s not go off the deep end with Effective C#, Code Complete, or the Gang of Four book, OK?)

An Evening on Windows Developer Power Tools

Interested in finding out how you can increase your development productivity and boost your software’s quality?  If you’re in the Dayton/Cincinnati/Columbus area (or are willing to drive here), then come to Max Training in Mason, Ohio, on Wednesday, 14 March, for an hour-long discussion of open source and freeware software development tools.

I’ll be talking about a few of my favorite tools from Windows Developer Power Tools, plus I’ll be giving away a few copies of the book after the talk’s done.  The event’s co-hosted by the nice folks I work for at NuSoft Solutions and the great folks at Max Training.

Register for the event here.  Pizza and sodas provided after the event, which means you have to sit through my spiel before you eat.  Snore quietly, at least, please.

Friday, February 16, 2007

Thursday, February 15, 2007

Book Review: Windows Vista -- the Missing Manual

Windows Vista: the Missing Manual, David Pogue.  ISBN 0596528272

This is the second book in the Missing Manual series I’ve gotten my mitts on (the iPod one being the first) and I’m extremely impressed with the series so far.

This book does a great job of covering topics that everyone from novice through experienced mid-level folks can use. The format, writing style, and layout make the book easy to browse through, and the great table of contents and nicely done index make it fine as a reference.

The content ranges from basics such as how to tweak your system’s appearance to more technical topics like delving in to the search infrastructure in Vista.  There’s also an entire section of five chapters guiding you on details surrounding networking in Vista, plus there’s a separate appendix dedicated to details on installing Vista.  If you’re feeling very frisky there’s yet another appendix on “Fun with the Registry.”  The section on Vista’s multi-media capabilities is particularly well done and has given me some very interesting ideas for ways to better use my Vista-based home systems.

I think the book does a great job of filling in gaps for newbies to mid-level users.  Advanced users probably won’t get much out of the book, but the depth of content is sufficient enough to keep everyone else happy.

Put another way: I’ve got access to scads of Vista-related material through Microsoft courtesy of my MVP status and my company’s Gold Partner relationship.  I’m keeping the book around as a handy guide.  It’s that useful!

If You're Not Reading, You're Not Reading

The vast majority of candidates I speak to answer my question of “What good development-related books have you read lately?” with something along the lines of “I haven’t read much lately” followed by any number of rationalizations for their lack of drive for self-improvement.

Reading is important, folks.  Not just blog reading, but diving into good books written by good authors.  I’m working on updating my list of what I consider to be essential books for developers at different levels to glom on to.  My list is based heavily off of the Contrux Reading Ladder.  I figure Steve McConnell probably knows a thing or two about what to read — although that list is old and includes nothing on agile methodologies, so I’m adding in some of what I think are critical works from that area. 

I’m also including a few things from Sam Gentile’s .NET list. Sam’s list has a bunch of terrific content on it, but is very different from McConnell’s list.  McConnell’s list is all about the broad fundamentals of development.  Sam’s is all about the nitty-gritty of .NET specifics.

I’ve come around to the idea of two categories of books: general development and technology specific things.  I think books from the latter list tend to last a shorter timespan than those from the first, perhaps as little as a year or two.  Hiller’s Advanced SharePoint Services Solutions book is a critical read for someone working in SharePoint 2003, but we’re now past that and on to SharePoint 2007 (MOSS, or my loving nickname “PITA”.) 

You need those technology-specific books to get over short-term hurdles: getting up to speed on a technology, figuring out how to solve particular problems for a project or two. The general fundamentals are just as critical, perhaps even more so. 

Grokking out Wagner’s Effective C# ensures you’ll be doing your C# development properly and avoiding some subtle pitfalls.  Whacking the contents of Agile Principles, Patterns, and Practices in C# into your head means you’ll be approaching your design from the right angle.  Sleeping on Code Complete until it melds into your subconcious ensures you’ll think about construction as you’re doing your coding.  Devouring some classics like Programming Pearls, The Practice of Programming, or Conceptual Blockbusting helps guarantee that you’re looking carefully at how you approach your software.  Then go read Peopleware and figure out how to improve the envrionment you’re working in.

Not reading?  Get to it.  No excuses.  If you’re not reading, then you’re not, uh, reading.

Tuesday, February 13, 2007

Book Review: Debugging

Debugging, by David J. Agans. AMACOM, ISBN 0814474578

This book is absolutely indispensable for anyone working in any job where things occasionally work in an unexpected manner.  It’s concise, funny, well-written, and full of immensely useful tips on how to go about debugging problems. 

One of the great things about this book is that it’s generalistic in nature, not specific.  Agans’s decades of troubleshooting experience has given him great insight on how to go about debugging in all sorts of environments, so he lays out nine rules for approaching any problem:

  1. Understand the System
  2. Make it Fail
  3. Quit Thinking and Look
  4. Divide and Conquer
  5. Change One Thing at a Time
  6. Keep an Audit Trail
  7. Check the Plug
  8. Get a Fresh View
  9. If You Didn’t Fix It, It Ain’t Fixed

You can get a poster of the rules online at Agans’s site, too, but if you get just that you’ll be missing out on the great insight for working with those rules.  Agans backs up each point with humorous examples and war stories, plus some very good logic about how to move forth in each step.

Debugging isn’t an art performed only by folks with some odd genetic disposition, it’s a critical craft which can and must be learned.  I was fortunate to have some good troubleshooters as mentors during my days working radar inflight, but I’ve fallen out of many of the good practices those folks beat^H^H^H^Hinstilled in me.  Agans’s book is helping me pull out of the thrash and churn mode of debugging.

This book’s only 175 or so pages long and is well-worth adding to your library.  Actually, substitute “a critical addition” for “well worth adding”.  I’m also going to make sure this book gets added to the professional development reading list I’m working on creating. 

Sunday, February 11, 2007

Another Podcast Show

James and I had another interview about Windows Developer Power Tools, this time from Michael Lehman and Bob Walsh of Channel 9’s MicroISV show.

Holy smokes, making it on to Channel 9 is a bit like making the cover of the Rolling Stone!  (OK, so now that song is stuck in my head…)

Friday, February 09, 2007

SlickRun Losing Its Mind

SlickRun rulz.  I luvs it something fierce, but today the version I have running in my development VPC lost its entire list of Magic Words, something that vexed me to no end.

I popped open the file holding the Magic Words (SlickRun.srl in your home directory under Application Data\SlickRun) and found this bit of oddness at the head of the file:

[]
Filename=""
Path=""
Params=""
Notes=""
GUID={6CCD4780-D4E5-4F8F-BEE8-D3777722DBC5}
StartMode=5

I got rid of it and Voila! everything is back shiny and happy.

Wednesday, February 07, 2007

Book Review: Mastering Regular Expressions, 3rd Edition

Mastering Regular Expressions,3rd. ed. by Jeffrey Friedl, ISBN 0596528124

I was a proud owner of the first edition of Jeffrey Friedl’s great book on regular expressions and like so many other readers I found it to be a very profound work which drastically changed how I approached all manners of text-related tasks.  Regular expressions are a vital piece of being able to do amazing work with blocks of text.  Need to transform CSV tables from one format to another?  Easy.  Need to parse out content from logfiles?  Easy.  Need to prototype an SGML to XML converter?  Not so easy, but doable.  (I know, because I did that some time ago…)

Friedl’s book is very conversational in tone, and he’s great at explaining all the minutia in regular expressions which can positively bite one in the keester.  Friedl’s adamant that the book isn’t a reference, it’s a tome for mastering regular expressions.  That’s emphasized repeatedly throughout the book, almost becoming annoying at times.  You really do need to start at the beginning and work your way through the book in order to get the best out of it.

What I find particularly interesting and helpful are the very clear explanations of the differences between the various regex implementations.  I cut my regex teeth in the *nix world via sed, grep, and a bunch of other similar fun tools.  Then I moved into the .NET world and completely lost my mojo where regexes were concerned.  Friedl’s clear explanations of how regexes work in .NET are making my regex mojo feel much better these days. (But I still happily fire up GVim to get powerful regex work done.)

Mastering Regular Expressions really is a vital addition to one’s bookshelf.

(Standard book review disclaimer.)

Tuesday, February 06, 2007

Book Review: Essential C# 2.0

Essential C# 2.0, Mark Michaelis

Addison Wesley, ISBN 0321150775

Essential C# 2.0 is somewhat introductory in nature, but there’s enough coverage of more advanced topics to make it useful for experienced .NET developers as well.  What’s really different about this book is its tremendous visual impact.  This book has perhaps the best visual layout of any I’ve seen, and it’s so well done that it really helps the book get across the points Michaelis is making in this book. 

Each chapter starts out with a mind map, one of my favorite tools for getting across highlights of a topic:

There’s a very nice deliniation of topic levels within chapters as well, with beginner and advanced topics being clearly separated out:

The code examples get some great markup, too, with bits inside code being clearly marked so you quickly see what the author’s focusing on — and the font for console output is way cool, too:

OK, so that’s all the visual stuff which would be simply eye candy bling and rather useless if the content of the book didn’t back it up.  It’s nice that the content does back it up.  There’s solid coverage of all the important topics: value vs. reference types, how the CLR/CLI works, basic object-oriented programming aspects of C#, and nice bits on delegates and events.  C# 2.0 features get good coverage, and there are two nicely done chapters on threading.  There’s also a chapter covering interoperability via P/Invoke and unsafe code (pointers), a topic I’ve not seen covered in any other book.

Michaelis’s writing style is clear, and he’s nicely concise in the book. I appreciate that he kept the focus on C# and didn’t try to span out into ASP.NET, web services, and a raft of various other topics that always seem to get lumped in with language books.

Overall I think this is a terriffic book and I’m happy to have it on my shelf!

(See my standard book review disclaimer.)

Sunday, February 04, 2007

SharePoint Workflow Project Errors

Here’s a tip if you’re getting errors akin to "the project type is not supported by this installation" when you try and create new SharePoint Workflow projects: Install the Visual Studio 2005 Extensions for Windows Workflow Foundation.  SharePoint workflow relies on Windows Workflow, so maybe you should get that installed first, eh?

Not that I’ve made that error myself, mind you.  I just heard about someone who did…

Podcast Interview on The Book Posted!

Michael Kimsal at WebDevRadio has just posted his podcast interview with James and me.  The interview was my first ever and was a lot of fun.  Michael’s a very easy-going fellow and did a great job of marshalling James and me through the show.

Check out the ‘cast and let me know what you think.  (Aside from the part about me being a ranting maniac, that is…)

VPC Woes

I’m rapidly becoming less and less enamored with Virtual PC.  I used VMWare Workstation for a number of years both on Linux as well as Windows and loved its speed and stability.  VPC?  Not so much.

At least three times in the last couple years I’ve completely lost VPC systems after bogus error messages like "an error occurred while processing the command line options."  I always back up data and projects to locations outside the VPCs, so I’ve not lost data or projects (or much), but the real pain has been having to spend chunks of time reinstalling and configuring the VPC again.

I never had these sorts of issues with VMWare; however, the VPC price (free via my MSDN subscription) has always been attractive.  That attractiveness is now gone, as I’m going to lose a chunk of my family time today reconstructing my environment to get back working again.  Argh.

Friday, February 02, 2007

Upcoming Speaking Engagements

I didn’t realize how busy I am this next month or so with presentations!  Here’s a list of the events I’ll be at through March.

(At least I hope I’ll be talking at the Dayton-Cincinnati Code Camp.  James and Mike are the other two folks on the content selection committee, so my sessions may get voted off the island.)

Subscribe (RSS)

The Leadership Journey