Friday, December 22, 2006

The Book Is Out!

It’s here!  Woo!

Pretty amazing to come home from an errand and find a massive box on the stoop!  (I have to use “stoop” because a new hire is a UK expat so I’ve got to learn the lingo.)

Wednesday, December 20, 2006

CodeMash: The British Are Coming!

We’ve actually had two folks from a firm in the UK register for CodeMash!  They’re coming over specifically for CodeMash and hope to tie their visit in to a client site visit, but the client work is secondary.  They’re looking at CodeMash as a very unique forum for networking and “getting some cutting edge ideas.”

Let me tell you: if you’re whining about having to drive four hours up from Cincinnati to attend CodeMash then I don’t want to hear it!  These two are travelling over an ocean to attend!

One of the travellers remarked on the motivation for attending CodeMash: “…there’s nothing like this in Europe at the moment.”  How amazingly cool is that?

CodeMash: Go register now.

Monday, December 18, 2006

CodeMash: Low Room Rates Extended!

If you haven’t yet registered for CodeMash, then I’ve got good news for you!  The great folks at the Kalahari Resort in Sandusky have extended the great room rate of $88 until 28 December.

The agenda for CodeMash is finalized and it’s loaded with amazing stuff regardless of the language or platform you’re currently involved with.

Looking to learn more about what’s happening in .NET?  Look up the sessions on Smart Clients, Closures in C# 3.0, Data-Driven Applications with LINQ, or Tips and Tricks for ASP.NET 2.0 and AJAX.

Want to find out things on some of the “newcomer” languages you’ve not explored yet?  Check out the sessions on Enterprise Python Architecture, Rails and Ruby Introduction, or Caffienated PHP.  (And some of those languages are older than Java, BTW…)

What about you folks who are happy with the language you’re in and aren’t interested in expanding that envelope?  Then you need to attend larger-scope talks on design, architecture, and methodologies from great minds in the industry.  Check out the keynotes and sessions like Lean Software Development, Beyond Test Driven Development, Source Code Management with Subversion, and The Productive Programmer.

The conference fee is $149 and rooms are $88 per night.  That’s an insanely cheap price to hear folks like Neal Ford, Scott Guthrie, Bill Wagner, and Bruce Eckel talk.

Go register!

Sunday, December 17, 2006

CodeMash: Early Bird Discount Ending!

The Early Bird discount for CodeMash ends tomorrow.  That means you’ll have to pay $149 instead of $99 for the conference rate, and you’ll lose out on the killer $88 rate for the great rooms (and waterpark access!) at the Kalahari Lodge.

I’ve blogged the heck out of this event because it’s going to be an amazing one.  Don’t lose out on your early bird rates — get on top of things and get cracking!  Go register now!

Exciting New PowerShell Book!

Manning Press always impressed me with their books I gotten in the past.  Java Development with Ant is a terrific book if you use any automated build system because the book lays out a great methodology for approaching and implementing automated builds.  Hibernate in Action is critical if you do any work at all with O/RM systems and specifically if you work with Hibernate or NHibernate.

The only problem with Manning was that they were slow to get into the .NET space.  That’s changed, however, and now they’re slowly building up a nice catalog of good-looking books on great topics.

I’m particularly excited about the early release copy of Windows PowerShell in Action I just got.  I haven’t gotten far in to the book, but it appears to do a great job of laying out the basics and nitty-gritty of PowerShell.

I fooled around with PowerShell as part of working on my book, but left off playing with it months ago.  PowerShell in Action will push me to do more playing with Monad I mean PowerShell, and perhaps even get some real work done.

Thursday, December 14, 2006

Testing Events with Anonymous Delegates

Phil Haack has a nice post showing how to use anonymous delegates to test the source of events.  Anonymous delegates are something I’ve only scratched the surface with, so it’s nice to see a great, practical use for them.

Tuesday, December 12, 2006

Book Review: Agile Principles, Patterns, and Practices in C#

I’m not completely through this book yet but it’s such a great one that I wanted to plop out a quick review of it to pass on the word.

Are you sick of books on XP which seem too much like mystical hand-waving with really shitty lousy examples of paired programming sessions?  Are you sick of books on patterns which are too convoluted and abstract to make any sense at all?  Are you sick of books full of silly, contrived examples which don’t make any real-world sense?  What about books on UML which approach it from a near-religious dogma direction with no room for any deviation or common sense?

If so, then you badly, badly need to read Agile Principles, Patterns, and Practices in C# .  This book, written by the father/son team of Robert and Micah Martin is part of the impressive Robert C. Martin series on Agile from Addison Wesley/Prentice Hall.

This book is amazingly great from start to finish.  All the basics of good agile development are covered clearly and sensibly in the first section: what agile is, how to go about it, why testing and planning are so critical, and where refactoring fits in all of this.  Design and general patters are hit in the second section, again in a clear, concise, and sensible fashion — and with common sense thrown in. 

The final two sections cover a real-world case study implementation of a payroll system.  Here the rubber meets the asphalt: walking through use cases, building transactions based on smartly-chosen patterns, discussion of what patterns make sense where and why, implementation, packaging, and evolution.

I found myself shaking my head in wonder as I read this book and stumbled across one nugget of gold after another.  Some bits of goodness pop out in the middle of nowhere simply because the authors are so well-versed in their domain that they’re letting fly wisdom even when discussing other topics.  An example of this is in the XP pairing session episode where some discussion of increment operator side effects is tossed in the middle of another discussion stream.  You read that section once and pass over it, only to do a head check, bounce back and re-read it while nodding your head and saying “Yeah, that’s absolutely right and I might not have caught that otherwise.”

As an aside, this book had the first XP paired programming episode I’ve ever read which didn’t make me barf.  Other example episodes were so contrived and smarmily written that I thought for sure I was going to heave.  This pairing epsiode is real life stuff, complete with some strong discussion between partners, good examples of refactoring and patterns, and also shows the developers making and recovering from various mistakes.

Another bit of greatness is the chapter on UML.  The authors are emphatic about keeping UML tightly in check and using it only in specific cases where it makes clear sense.  Mountains of UML diagrams are not the answer; the authors show where a few concise diagrams make perfect sense.

More goodness can be found throughout the book in the gems relating to any number of design issues such as a small example of a problem the authors put forth to students of their various design/patterns courses: build a coffee maker.  The authors go through the most common result they see and show the specific problem areas of that solution — and then show a solution that is amazing in its simplicity, elegance, and maintainability.

Micah Martin, the co-author and son of the other co-author Robert Martin, makes a great statement in his introduction to the book.  He talks about his father’s first edition of the book (winner of the 2003 Jolt Award) not making much of an impact on the .NET community.  This new edition, specific for C#, certainly should make a tremendous impact on the .NET community.  If it doesn’t then we have ourselves (or our colleagues) to blame for not caring enough to improve ourselves by reading seminal works.

This book is a critical read for folks at any level of experience.  I’m going to do my best to make sure it gets on the required reading list for developers at my company.

(Go register for CodeMash, by the way.)

Good Series on Building a Web Site

Dan Hounshell, a good buddy from the Dayton .NET Developers Group, is writing a series of blog posts on a site he’s architecting.  Dan’s a very smart guy and writes very well, so his series should be well worth reading.  Dan’s focusing on building his skills in a few new tech areas and is using the site as a vehicle for that learning.  His series is a great idea and I’m looking forward to watching it progress!

Win a Zune!

Want to win a Zune?  Drew Robbins came up with a great contest: Blog about CodeMash and have a chance to win a Zune!  Details on the CodeMash site.

Six days left for you to register at the early bird discount rate — and get the insanely low price of $88 per night for rooms.

For you procrastinators: Be advised that after 18 December you won’t be able to get the discount rate, and you may not be able to get a room at all.  Kalahari Lodge sells out fast this time of year and the block of rooms they’re holding for us goes away after the 18th.  Move fast.  Move now!

Book News: Off to the Printer!

I’ve just gotten word from my editor today that Windows Developer Power Tools is going off to the printer on Thursday.  It will hit warehouses (and the doorsteps of contributors) around 20 December. Wow!

I’m not sure when orders will head out from places like Amazon, but I’d think it will be shortly thereafter.

James and I started off on this adventure nearly a year ago, writing up the proposal some time around February and getting underway in late March.  (I think.)  It’s been a heck of a ride and I’m really looking forward to seeing the end result land on my doorstep in a few weeks.  Whoof.

Monday, December 11, 2006

CodeMash: Spread the Word Via a Flyer!

So I’m sitting in a nice cottage right off the beach in Vero Beach, Florida with nothing better to do than sip a little bit of Iron Horse bubbly and clean up after a nice dinner eaten while looking out at the Atlantic ocean.

Yeah, my life sucks.

But back to more important things: Help spread the word about CodeMash!  We’ve got a great flier which talks about CodeMash — print that out and hang it up around your workplace or share some copies with colleagues and other interested geeks.  Also, a few days ago I wrote a post that highlights the value of folks attending such a conference.  This is great fodder for convincing your boss to either let you go to CodeMash or better yet pay your way there.

Thursday, November 30, 2006

Off for Vacation!

Notice to all: You’ll be spared more rants about CodeMash for a bit: we’re taking off for a long vacation to celebrate my wife’s retirement from the Air Force.

I’ll be hard at work on a Disney Cruise for the next chunk of days.

OK, maybe not so hard…

But while I’m gone you really should go register for CodeMash.  Really.

Wednesday, November 29, 2006

Why Conferences Matter, and How To Pitch To Your Boss

So my blog has been 90% CodeMash of late.  Go figure.  If you’ve read my blog for long you know that I consider good conferences as potential watershed events in the career of geeks.  Software Development Expo West in 2003 was such an event for me, and I’m passionate about pushing Code Camps and other conferences as great ways to improve your skill level and explode your passion about your field.

But how do you convince your management that attending conferences isn’t just them tossing money away without any chance of a return on their investment?  Below is a pitch that might help out.  Yes, it’s framed in CodeMash terms, but that’s becase CodeMash is an insane value when you consider who you get to interact with for two days. 

Maybe try this approach if you’re getting pushback on the cost of a conference.  It may just work for you.

So on to the pitch:

Your developers are a critical asset to your company, relied upon to help solve tough problems in your business and bring value to your bottom line.  To effectively do their job, these developers must possess an odd conglomeration of skills, including problem solving, artistry, engineering, and mystical hand waving.  Keeping those skills honed is vital if your developers are going to remain at their best – but how can you provide skills development for those folks without breaking the bank?

One of the best ways to keep your development staff at the top of their game is through ongoing education, and one of the best venues for ongoing education is software developer conferences.  Conferences provide a tremendously motivating, educational environment where your technical staff can attend sessions from industry leaders, hear keynote addresses from luminaries who drive great changes in their domains, and gather with peers to discuss everyday problems.

CodeMash ( is a unique conference for software developers in and around the Heartland region (MI, OH, KY, IN, IL, PA), and is being held 18-19 January, 2007 in Sandusky, Ohio.  CodeMash will bring together a large number of developers from the Java, Ruby, PHP, .NET, and other communities for this ground-breaking event.  CodeMash features some of the software development industry’s greatest minds who will present sessions on a wide range of topics.  

CodeMash will feature keynote addresses from three industry leaders:

·         Scott Guthrie, Microsoft Developer Division Manager

·         Neal Ford, noted author and Architect at ThoughtWorks, Inc.

·         Bruce Eckel, industry leader and CEO of MindView, Inc.

Attendees will be able to select from a wide range of more than 40 sessions presented by nationally and regionally recognized experts on a wide range of topics such as:

·         Curry Favor with Closures: An Introduction to Functional Programming in C# and VB.NET (Bill Wagner, Microsoft Regional Director, Microsoft MVP and author of “Effective C#”)

·         SOA as a Conversation (Ken Faw, Regional Practice Director, Perficient, Inc.)

·         The Productive Programmer (Neal Ford, editor “No Fluff, Just Stuff”)

·         Let NHibernate Be Your Data Access Layer (Dave Donaldson, Microsoft MVP)

·         Lean Software Development (Mary Poppendeick, internationally recognized expert on agile/lean development and author of “Lean Software Development”)

·         Maximum Velocity MySQL (Jay Pipes, North American Community Relations Manager, MySQL)

·         Improve Your Testing with Open Source Test Tools (Jim Holmes, Microsoft MVP and author of “Windows Developer Power Tools”)

·         EJB3 – What’s New? (Joseph Faisal Nusairat, author of “Beginning JBoss Seam”)

·         Ruby on Rails for Java Developers (Rob Stevenson, Quick Solutions, Inc.)

Normally conferences can be a costly proposition, running thousands of dollars for registration and hotel fees.  However, CodeMash is a community-driven, non-profit event run by volunteers – which means the event’s prices are incredibly low: $99 registration fee (early bird, expires 18 December), and  room rate of $88 per night at the fabulous Kalahari Resort (

You’ll need to act fast, though: CodeMash’s early bird discount ends 18 December, and the special room rate of $88 isn’t guaranteed past that date.

CodeMash’s payoff to your company is tangible: improved developer skills and motivated, excited teams who are fired up to solve your tough business problems.

CodeMash: Scott Ambler is Speaking!

Holy friggin’ smokes.  We just got news that Scott Ambler will be coming to CodeMash to give a couple talks.

I am completely flattened at the amazing quality of industry-leading talent we’ve got lined up.

Scott Guthrie.  Mary Poppendeick.  Bill Wagner.  Jay Pipes.  Bruce Eckel.  Neal Ford.

And now Scott Ambler.

You are missing one great opportunity if you don’t go register now.

Why Some Folks Object To Agile

Elisabeth Hendrickson is a Very Smart Tester who writes a lot of good stuff on her blog.

One of her latest posts talks about why some folks object to Agile out of fear, ignorance, whatever.  One particularly salient bit: “Most of all, I wonder when those people with so much to say against Agile actually listened enough to figure out what it is.”  I once had to deal with a guy who insisted that Extreme Programming was simply “hacker coding.”  It was readily apparent that this guy was simply scared of being losing some of his control freak turf.

Elisabeth’s post is short and well worth reading!

'Tis The Season

Christmas is nearing, that’s for certain.  Forget the Black Friday sales insanity.  There’s one certain indicator Christmas is right around the corner: A Charlie Brown Christmas hits the airwaves.

That’s where we spent a half-hour tonight, and there’s no better way to tamp down one’s stress level than to watch such a classic with two small kids, a nice wife, and a bowl of popcorn.

Tuesday, November 28, 2006

Dayton-Cincy Code Camp Registration Open!

The second annual Dayton-Cincinnati Code Camp is now open for registration!

The camp will be held on 24 March, 2007, at the Wingate Inn in West Chester, Ohio. 

The Code Camp will be free and full of great content.  Make sure to take advantage of this terrific event!

Sunday, November 26, 2006

CodeMash Session List Is Close to Finalized!

We’ve been working tremendously hard on lining up sessions for CodeMash and we’ve got a pretty amazing list of sessions so far.  We’ve had something close to 100 submissions and have winnowed them down to around 30 so far.  We’re leaving some room for expansion since the submission deadline is November 30th, but we wanted to get content up on the site to show how great this conference is going to be!

In case you’ve just started reading this blog, let me recap what CodeMash is all about:  CodeMash is a community-driven, non-profit conference for software developers being held 18–19 January, 2007. It’s a cross-platform, cross-language conference meant to bring together folks from a wide range of software development communities.  The energy and knowledge transfer that happens at such events is really pretty staggering, which is why we’re so excited about CodeMash.

As a side note, I went to SD West in 2004 and it was a life-altering experience.  Seriously.  I got to hear folks like Josh Holmes, Steve McConnell, Elliotte Rusty Harold, Alan Holub, Scott Meyers, Michelle Leroux Bustamante, and a bunch of other amazing folks from a lot of different knowledge domains.  It was a completely transforming experience that was directly responsible for me completely changing the course of my career.  I’m not saying that CodeMash will be the same thing for you, but I can certainly hope it is!

Back to CodeMash.  We’ve got technical content from Gadgets in Vista to EJB3.  (That’s Java stuff for you .NET folks.  Duh.)  We’ve got methodology stuff from Test Driven Development in Python to Lean Software Development.  We’ve got platform agnostic stuff from Open Source Test Tools (by, cough cough, yours truely) to The Productive Programmer.

Looking for stellar, industry-leading speakers?  How about keynotes from Scott Guthrie of Microsoft, Neal Ford of ThoughtWorks, and Bruce Eckel of Mind View?  Still not good enough?  How about hearing Mary Poppendeick, Jason Gilmore, Bill Wagner, Chris Judd, or Jay Pipes present sessions?

Still not good enough?  How about some of these session offerings:

  • Building and Deploying Smart Clients with Visual Studio 2005
  • Building Enterprise Smart Clients using a Services Oriented Architecture
  • The Productive Programmer
  • Ruby on Rails for Java Developers
  • Real World Continuous Integration
  • Let NHibernate Be Your Data Layer
  • SOA as a Conversation
  • A Tale of Two Web Toolkits: TurboGears and the GWT
  • Selenium radically simplifies testing Websites!
  • Ruby on Rails for Java Developers
  • What makes Rails possible: an introduction to the Ruby language
  • Lean Software Development
  • Introduction to Ajax
  • Beyond TDD: Exploring the benefits beyond testing.
  • JRuby - Wonder Twin Powers, Activate!
  • Curry Favor with Closures: An introduction to Functional Programming with C# and VB.NET

Perhaps one of the neatest things about the conference is its venue: the Kalahari Resort in Sandusky, Ohio.  The Kalahari has great rooms, a great venue, and an indoor water park to boot!  (You can see photos of the Kalhari at my Flickr site.)  The Kalahri’s also given us a tremendous break on rooms: $88 per night.

This conference is going to be terrific, and I hope you’ll register now.  It’s going to be a terrific event!

(Also, please consider passing on word of our sponsorship opportunities — companies will have a great chance to reach out to a pretty unique group of motivated geeks!)

Wednesday, November 22, 2006

More Firefox Vulnerabilities

Firefox 2.0 appears to have a pretty major security issue with its password manager.  As always, discussion in the Slashdot article’s comments thread is pretty funny, ranging from usual excusatory whining to some ascerbic, point-on blurbs.  An example of the latter, from a comment titled “I sense a disturbance in the force”: though millions of Firefox users were laughing at IE users, and were suddenly silenced.
Cue "still more secure" arguments now.

I love me some Firefox, but I’m not blithely accepting that it’s nirvana for security.  One of the few things I disliked about the otherwise terrific book Building The Perfect PC was their ABM mentality on how everything Microsoft was evil and awful and you’d be sooooo much more secure by just installing Firefox and Thunderbird.

Sorry.  Not the case.

Make smart choices in how you go about using your software, and don’t naievely think you’ve got a silver bullet just because the crowd says so.

Tuesday, November 21, 2006

Spread the CodeMash Love!

We’d love to have you help spread the word about CodeMash — so we’ve made that a bit easier: We’ve posted up a one-page flyer which gives the elevator speech for CodeMash.  (“Dude, it’s just coooooool.”)

Feel free to grab that, print off a billion copies and plaster them all over boards at work, telephone poles in your city[1], your neighbor’s garage door, or any other spot where you think interested geeks might see them. (“What about those psyche wards where all those COBOL and assembly language guys ended up in?”  Quiet, you!)

Monday, November 20, 2006

More Community Goodness: Dayton-Cincy Code Camp Call for Speakers!

Do NOT listen to what the heathens from Cincinnati say.  The proper name of the Code Camp slated for March 24th, 2007, is the Dayton-Cincinnati Code Camp.

Last year’s event was a smashing success, and this year’s going to be even better.

If you’ve got an interesting topic to talk about you can help make it better by heading over to the speaker submission page and submitting your ideas for a session.

CodeMash in January, the Dayton-Cincinnati Code Camp in March.  Man, what a great lineup!

CodeMash Sessions So Far

We’ve got the initial 15 sessions approved for CodeMash.  Check out this most impressive list!

  • Intro to WCF (Josh Holmes)
  • SOA as a Conversation (Ken Faw)
  • Improve Your Testing with Open Source Testing Tools (Jim Holmes)
  • Introduction to Ajax (Greg Huber)
  • Using the Microsoft AJAX Library (Greg Huber)
  • High-Velocity MySQL (Jay Pipes)
  • Building and Deploying Smart Clients with VS 2005 (Keith Elder)
  • Building Enterprise Smart Clients Using SOA (Keith Elder)
  • End of Tier-Based Architecture (Owen Taylor)
  • Scripting for Java (Chris Judd)
  • Beyond TDD: Exploring the Benefits Beyond Testing (Ben Carey)
  • Lean Software Development (Mary Poppendieck)
  • Real World Continuous Integration (Joe Wirtley/Dan Hounshell)
  • Let NHibernate be your Data Layer (Dave Donaldson)
  • Building Gadgets for Windows Vista (Drew Robbins)

Add to that two sessions extra from Scott Guthrie and potentially a couple more from Bruce Eckel and Neal Ford — and we’ve still got scads of great abstracts to wade through for Python, SOA, PHP, and more.


Go register now.  Just do it!

Good Paper on Microsoft Security

Michael Howard referenced a very interesting read from ESG: a white paper detailing the security benefits of Microsoft’s adherance to their Software Development Lifecycle for SQL Server 2005. 

This year MySql and Oracle had 60 and 70 vulnerabilities reported against them, respectively, in the National Vulnerability Database.  Microsoft, with their whimsical, uncaring approach to security, had four. 

Re-read that.  The behemoth Borg from Redmond had a fraction of the vulnerabilities of MySql and Oracle.

Microsoft’s far from perfect, and they’ve taken some well-earned bashing for their past attention to security — but you’re going to have to work long and hard and have a lot of non-tinfoil hat evidence to convince me that they’re not deadly serious about security these days.

Friday, November 17, 2006

Terrific Upcoming Presentation for Dayton DevGroup!

Dustin Campbell of Developer Express will be heading down here to Dayton next month to give his “Back to Basics” talk.  Bill Wagner wrote a nice review of Dustin’s talk — and I can’t wait to hear it.

I’m all over this kind of stuff: keeping solid fundamentals while making best use of the nifty technology that’s around you.

CodeMash: Learn About Writing A Book

The organizing committee is beating around a seriously cool idea for CodeMash: a moderated session where some of the many authors who will be at the conference gather together and talk about what’s involved with writing a technical book.

I was knocked over by the suggestion!  I’m all over sitting in the same room and listening to some of the highly accomplished authors like Bruce Eckel, Jason Gilmore, Bill Wagner, and similar folks talk about how they’ve done their books.

This still hasn’t been completely fleshed out yet, but I’m certain we can make this one work.  It’s a terrific concept!

I'm Speaking at CodeMash!

I got the word yesterday that I’ll be talking at CodeMash too!  I’ll be giving a variant of my Open Source Test Tools talk, this one geared a little more to the general testing community, not just .NET.  I’ll still cover a few of my favorite things (MbUnit and Zanebug), but will make some things a bit more general — like talking about mock objects at a higher level while still gabbing about Rhino.Mocks.


What?  You’re still not signed up for CodeMash?  Get off your duff!  Go sign up now!

Wednesday, November 15, 2006

Book Update: QC1 Review Done!

Whoof.  I’ve just, literally, sent off the last comments on the first round of final proofs for the book. This round is called QC1 and is where the Word documents we’ve been working on for the last nine months are sent to O’Reilly’s Production department and converted into their final production format.  (I think it’s some variant of Frame, but I’m not sure.)

The conversion process is a bit unweildy, so we had to do some close checking for problems with figure and section placement, but it’s pretty amazing to see the book’s pages so close to what they’ll really look like.

I also found myself re-reading things I’d forgotten about.  (Hey, it’s 1200 or so pages and I’ve been writing for nearly nine months now.  Give me a break!)  All the chapters are good, but the chapters on testing, code metrics, and Windows utilities are particularly special.  The testing chapter (122 pages!) is really terrific with articles on mocking tools, test frameworks, test runners, and several other goodies.

If everything proceeds on schedule you’ll be able to find the book in stores just in time for Christmas.  Woo!

My eyes are bleary and the espresso I had a couple hours ago has finally worn off, but I’m happy to have passed another milestone in the book’s production!

Tuesday, November 14, 2006

Calling All Python Geeks!

Are you a Python Geek or Geekette?  Passionate about your language of choice?  Feel like talking to a large crowd of folks interested in learning more about Python?

Go over to the CodeMash Call for Speakers page and submit an abstract for a session!   We’re short on Python sessions and would love to add some content to the line up.

Keep in mind the general mission of CodeMash: promote cross-technology education and community growth.  Sure, we’re very interested in 300–level sessions for true geeks, but 200–level gigs explaining the ins and outs of your technology and how to best apply it are a big part of what we’re shooting for.

CodeMash Sessions Going Live!

We’re starting to approve abstracts for CodeMash sessions, and the first two are simply killer ones!

Mary Poppendieck will be giving her Lean Software Development talk, and Dave Donaldson will be talking about the killer goodness of NHibernate.

We’ll get a schedule up in the next few days, but in the meantime, keep your eyes posted on CodeMash’s homepage where you can read news announcements.  Subscribe to the RSS feed there if you’d like and you’ll be kept appraised of all the latest developments.

This is going to be one great conference!

(Man, I can’t believe we scored the Poppendiecks to do a talk!)

Monday, November 13, 2006

iTunes 7 Stinks

Just a bit of a rant on the latest version of iTunes.  It sucks.  Massively slow, causes all kinds of grief and lousy sound quality on my system.  Lots of lovely music I’ve loaded in to the cursed thing and I can’t listen to crap because every new song hangs, skips, and gurgles for 20 seconds until this crappy software gets itself straightened out.  All this while I’m crashing on a reviewing deadline for my book — and I need  my music for that!

Version 6 was lovely.  Version 7 is a steaming pile of dung.


(I figure I’m suffering about it, so why shouldn’t you?)

Friday, November 10, 2006

Great NHibernate Resource

I used to blog about NHibernate quite a bit a year ago, but haven’t used it in some time.  Not because I’ve lost interest in it, but I kind of had a book take over my life and suck out any development time.

My pissy, tangental whining aside, Dave Donaldson has release an absolutely killer resource for you who use NHibernate: NHibernateRepository, a configurable assembly which gives you a terrific access point in to NHibernate.

What?  You aren’t using NHibernate?  Go check it out and think about how nice it would be to get great db performance without having to write any stored procedures — and get away from those eeeeeevil DataSets.

(OK, DataSets make good sense in some places.  But NHibernate’s still wicked cool and wicked useful.)

CodeMash Registration Live!!

Do you want to hear some incredible folks like Scott Guthrie, Bruce Eckel, and Tom and Mary Poppendeick talk about great topics?  Do you want to go to a two day conference at a tremendous venue?  Do you want to hear regional greats like Bill Wagner, Jason Gilmore, and Drew Robins put on some great sessions?

Do you want to pay almost nothing for it?

Then go register for CodeMash.

It’s taken us awhile, but we’ve ready for you to sign up (and pay!) for the coolest, most bestest software development conference in the Midwest.

Go get Mashed.  Go register.

What, you’re still here?

Thursday, November 09, 2006

MOSS Workflow Problems -- Generic (Useless) Error

Running in to generic “There was an error” kind of messages when trying to create workflows in Windows SharePoint Services or SharePoint Server (MOSS)?

Found this nifty trick at the Microsoft support forums: execute

 stsadm -o reconvertallformtemplates
at the command line.

Problem solved!

Tuesday, November 07, 2006

Great Free Unit Test Runner

The way smart folks at JetBrains have released a free unit test runner: UnitRun.  This is the same nifty widget in ReSharper which lets you run and debug unit tests — and now you can get that bit of goodness on its own should you not have ReSharper.

This is a handy bit of functionality, particularly since Jamie Cansdale took TestDriven.NET to commercial-only.

Nice move, JetBrains!

Sunday, November 05, 2006

CodeMash Venue Photos

Several folks from CodeMash’s organizing committee visited the Kalahari Lodge where CodeMash will be held.

This venue is going to be simply amazing!  The Nia Conference Center at Kalahari is brand new and is loaded with all kinds of technical goodies.  We’ll have loads of bandwidth for speakers, staff, and attendees, plus there’s just an incredible amount of infrastructure that will be a great help for putting on a terrific conference.

The session rooms are huge and can get loaded up with scads of tables and chairs, plus we’ll have a huge banquet room for keynotes and dining.  The hall where we’ll have sponsors is nice and large with plenty of room for booths — and there’s scads of electrical outlets so everyone should be happy happy.

I and my family stayed overnight in the hotel and we were very happy with the facility. Nice breakfast buffet (better than average hotel food), comfy rooms, and a very nice set of stores in the hotel itself.

Of course there’s the water park and arcade…  The water park is a blast!  I spent most of the time playing with my two year old son in the toddler pool or chasing my daughter around the river that circumnavigates the park.  (Note to self: six year olds don’t understand that “Lazy River” means you float around and relax.  They think it means it’s a racetrack.)  There are also a bunch of huge slides so big kids can have fun.  The Zip Sled is lots of fun, but may be a bit too intense for smaller kids.  (Fear not, she wasn’t permanently scarred, plus she got a toy out of the deal for indulging her Poppa.)

This conference is going to be a blast for any number of reasons, and the venue’s no small part of that!

Photos of the visit are posted up on my Flickr site.

Friday, November 03, 2006

Book Review: Accelerated C# 2005

I'm almost done with Trey Nash's Accelerated C# 2005 and I've got to say it's one of the best books I've read in some time.  The chart on the book's back cover bills it as something to read before Troellson's Pro C# 2005 and the .NET 2.0 Platform, but I think it's actually more advanced and much more readable than that book.

Trey's work is extremely well-written and comes in at a concise 400 pages.  He covers a wide range of topics in those pages, hitting everything from syntax to CLR underpinnings to generics to multi-threading.  His coverage on the workings of how assemblies get loaded and behave in the CLR is perhaps the best I've read on the topic.

The book is a great balance of small, fundamental details and more complex issues.  Examples of the first would include his clear explanation of the difference between using constants and readonly variables -- particularly since he clearly shows the impacts of making a decision for either kind.  Examples of the more complex issues would include his very clear, very understandable treatment of threading in C#. 

His discussion of the more complex topics are aided by solid examples which often start out showing how not to do things (highly useful) and moving to better ways of doing things.  (I should note I found one or two errors in the examples, but the general gist was always clear.)  He also scatters a number of good practices or solid design idioms throughout the book such as why Bridge patterns can be helpful in various situations.

Trey also makes occasional, pertinent examples with IL to discuss particular issues, such as how coding things two different ways might end up generating the same IL.

Additionally, there's some good design-level items in the book.  There's a lot of pro/con discussion on a number of issues such the drawbacks to inheritance, and there's a VERY good discussion of implementing contract-based design via interfaces as compared to abstract classes.

Overall this is one of the best C# books I've read.  I'd put it at a level close to Bill Wagner's Effective C#: 50, which is pretty much the pinnacle of C# books as far as I'm concerned.

Saturday, October 28, 2006

Blog Publishing Tools

I was trying to add the badge for Windows Developer Power Tools to the sidebar of this blog and was running in to problems with's template editing "feature." This reminded me why I don't use that part of very often: it sucks.

For me, a much better interface for editing my template is w.bloggar, an neat little freeware blog interface gadget.  It edits posts, it does your template, and it’s got a bunch of nifty little features.  Supports about a billion different blog engines, so it’s got that going for it.

My general posting tool of choice is BlogJet, but I only use it more than w.bloggar because I paid for it.  BlogJet’s goofy problems with keyboard shortcuts (or lack thereof) and its inability to use alt-Key commands for the menu drives me apes#it.  I do like BlogJet’s ability to easily dive straight to the HTML — always handy when you’re trying to clean something up or get picky about formatting.

Yes, yes, there’s Windows LiveWriter too.  It’s nice and pretty, but it scatters stupid crap all over the place which is completely insane.  But it’s pretty.  Oooohhhhhh.

Update:  It appears the latest version of BlogJet has fixed the shortcut issues, so I sit corrected.

Friday, October 27, 2006

CodeMash Site Is Live!

CodeMash – I’ll be there!

This is simply going to be the coolest event in the Heartland region this year: CodeMash.

You can now submit abstracts if you want to present and you can pre-register to hold your spot in line. Official registration should be open soon and will cost only $99 for a two-day event!

Why should you attend? 

Because we’ve got amazing keynoters like Bruce Eckel, Neal Ford, and Scott Guthrie already lined up. Because we’re lining up an amazing array of speakers from the Java, Perl, PHP, Ruby, and .NET communities.  Because we’re having it at the really cool Kalahari resort in Sandusky, where you’ll be able to get tremendous deals on rooms for the two day event.

You should attend because it’s a great opportunity for you to hear amazing stuff from amazing speakers.

See you there!

Thursday, October 26, 2006

Great Presentation at Tonight's DevGroup

Two members of our .NET group, Dan Hounshell and Joe Wirtley, put on a great talk at tonight’s meeting: Real World Continuous Integration.  Dan and Joe are two very smart folks who have some great experience moving in to a CI environment for their development projects.

Their talk was nicely done with great examples and full of concise, on target content.  By far the best bits of this gig was their emphasis on the real world issues.  They talked frankly about what hadn’t worked for them and some problems they’d had to overcome — and they had plenty to talk about regarding benefits of moving to a CI process.

Terrific show, guys!  I hope you seriously think about doing that at more venues!

(Slides and code will get linked to from the DevGroup’s site within a few days.)

Tuesday, October 24, 2006

Terrific Upcoming Webcasts

Drew Robbins, our terrific Heartland region Developer Evangelist from Microsoft, has put together a great series of webcasts from really smart folks in our region.  Webcasts will happen about every other week and they’re free of charge.  This is a terrific FREE way for you to learn great technlogy — all while sitting in your chair with your favorite beverage.

The next webcast is from Bill Wagner, author of Effective C#, and covers LINQ.  Bill’s been posting prolifically about LINQ on his blog and he’s exceedingly passionate about its benefits.  (LINQ, not his blog.)

Details on the cast:

Date: 11/6

Time: 12:00PM EST


Event ID: 1032314537

Be sure to take advantage of this!

Monday, October 23, 2006

Windows Vista and Office 2007 Intro Events

My company, NuSoft Solutions, is teaming up with MicrosoftMax Training, and ASAP Software to put on a day-long event covering Windows Vista and Office 2007.  The event is free and lunch is provided, so it may be worth your day to head over to one of the events in Cincinnati on 28 November or Cleveland on 30 November.

Register by following either link above, or call Todd Davis at (248) 813-7200 x264.

The Vista and Office 2007 sessions are presented by two of NuSoft's practice managers, Jason Clishe and Adam Wilburn, plus you'll also get to hear Steven Haack, Microsoft's Strategic Security Advisor give a keynote address on various security matters.

Obviously I'm biased about this event, but I think it's a terrific opportunity to get exposed to some terrific technology and ask questions of very sharp folks.  (Plus there's free lunch...)

There are going to be a significant number of events like these coming up as the launch for Vista and the entire Office line nears.  You may have caught my earlier rant about keeping ownership of your career.  Events like this are a great part of keeping yourself current -- and finding out how to pitch cool technology to your bosses so they'll understand there's a significant return on investment for moving along with such things.  (Plus you should go join a .NET group.)

Sunday, October 22, 2006

Carnival of the Recipes

The Carnival of the Recipes #114 is posted up at Nerd Family.  My posting for my BBQ Ribs made this week’s list, but there’s plenty of other tasty stuff to read about, so head over if you’re looking for some good recipes!

You can find a full listing of Carnival of Recipes at Blog Carnival.

Nice List of Free Fonts

Brian Prince, all around smart guy, pointed me to this post which in turn points to this list of 25 free fonts.

The list doesn’t include my all-time favorite P22 Typewriter which I use for my presentations.  (Brian likes to call it the “Unibomber font”)  Despite that, the list is nice and a good resource if you’re wanting more fonts to shine up your whatever.

Friday, October 20, 2006

Testing Helper Methods

I'm working on some code that ended up having some moderately complex helper methods.  I don't want to expose these methods on the public API because I want to keep my class's public face as simple as possible.  Something I heard Scott Meyers talk about some years back at Software Development Expo has always stuck in my head: “Make your code hard to use incorrectly.” 

That’s always in my head as I’m deciding what bits and pieces of functionality should be exposed.  Helper methods are generally internal bits, not something your class’s consumers should have to worry about, so why should you then expose them on the public side of an API? 

Easy. You shouldn’t.

The issue is how do you create those helper methods when you're doing Test Driven Development?  My first approach was that I just had to figure out all the test cases to drive execution through the various paths of the public function plus its helper function.  That got too complex, but I really didn't want to change that helper to public visibility in order to test it directly.

A few moments with my Thinking Cap on and I came up with this solution: Use the preprocessor and the DEBUG constant.  This lets me have the helper method's signature exposed with a public scope during testing and changed to private when I'm building for release.

 #if (DEBUG)

        public int ProcessGlobalMessages_NoSubscribers(DateTime lastSendTime,

                                                       DateTime thisSendTime,

                                                       bool isEmergency)


        private int ProcessGlobalMessages_NoSubscribers(DateTime lastSendTime,

                                                       DateTime thisSendTime,

                                                       bool isEmergency)


Now I can surround test cases for that method in similar #if blocks and they'll only appear when I'm building Debug releases:



        public void CheckProcessGlobalMessagesNoSubscribersReturnsCorrectCount()


A quick check in Reflector proves things worked as expected in the Release build assembly:

OK, so I’m not 100% happy with this workaround because it’s a fundamental design smell to me in that I can’t get the test coverage I want without a bit of trickery, but this seems like pretty fair compromise between doing my design in a TDD fashion and keeping my class’s public API as simple and clean as possible.

Thursday, October 19, 2006

Book Review: Extreme Programming for Web Projects

Knocking off another from my stack of books to review.

Extreme Programming for Web Projects by Doug Wallace, Isobel Raggett, Joel Aufgang

Addison-Wesley Professional (2002)

ISBN 0201794276

This book's premise is an interesting one: Does XP work for web projects, and if so then how does one go about implementing it? The authors are up front about the first question in the opening to Chapter 1: "Sort of" they say. The book's entire content struck me as a continuation of that statement.

The book attempts to be a bit too general in many aspects: there's a lot of high-level coverage of XP tenets without much utility specific to web development. The general coverage of XP is nice, but you'll find better content in other works; however, the authors didn't intend for this to be a seminal work on XP anyway, so that's not a big issue.

Several sections do provide good information specific to XP in web development, such as Chapter 8 (Graphics Design) and its emphasis on how to wrap customers in to the process early. Another example would be the discussion in Chapter 11 (Planning) on how the "customer" in web development differs a bit from what XP usually considers a "customer."

There's also a lot of good discussion at a high level on how the use of XML vice static HTML as data can greatly benefit the development process. There are good overviews of XML in general, XSLT from 30,000 feet, and a nice blurb on how the Tidy tool can help you keep out of trouble.

The downside of this book is that too often it stretches too far to make the connection between XP and web development. It's not detailed enough as a reference for implementing XP practices, and it doesn't do a good enough job of tying web development into XP for those looking to solve that problem.

The book is concise and well-written, but that doesn't make up for its fundamental weaknesses.

(As always, keep in mind my review disclaimer.)

Wednesday, October 18, 2006

Book Review: ASP.NET 2.0 -- A Developer's Handbook

I'm long overdue on writing up a blurb on this book.  I've had it and used it off and on as a reference for months and months...

ASP.NET 2.0: A Developer's Notebook, Wei-Meng Lee, O'Reilly Press, June 2005, ISBN 0596008120.

This is a well-written, easy-to-use book hitting the main points of ASP.NET 2.0.  I've never read it cover-to-cover, but have gotten great use from it as a reference manual when I need to quickly figure out how to do something new in ASP.NET 2.0.

The book's laid out in a clear fashion and has a solid index, so it's easy to find the material you need to solve a problem.  Each "lab" in the book is task-oriented, so you'll find things like "Create a Master Page for Your Site" which details the steps necessary to accomplish the task.  Sections are nicely done and full of tips and tricks, plus there are plenty of short sidebars noting smaller bits of interest such as content pages being limited to having only one master page. 

I've found the breadth of coverage quite nice.  The author hits everything from Master Pages/Site Navigation to Security to Profiles.  There's also a nice section on Performance which talks about site precompilation and caching.  (I even nabbed one of the author's labs for one of my talks on .NET -- with attribution, of course.)

The book's very nicely done.  It's concise and clear, and I like its style, both content and visual.  Some folks might complain about the examples all being in Visual Basic 2005, but as Dr. Phil might say, "Build a bridge and get over it."

Advanced ASP.NET developers probably won't get a lot out of this unless they're completely new to 2.0, but beginning and intermediate developers should find the book very helpful.

So far this book's been very useful.

Tuesday, October 17, 2006

NIMBY (Politics)

This article by the Washington Post sure gives an interesting view of the international complaints about Guantanamo Bay prisoners.  There’s been a long, loud outcry from any number of nations including Great Britain, Germany, and of course France.

Yet none of those nations will allow prisoners we’re looking to release from Gitmo to return to their homes in those countries.  Amazing.

I’ve got my own set of objections to Gitmo (“Club Gitmo,” as Rush Limbaugh would call it), but this article certainly shows a  lovely display of the two-faced nature of politics at the international level.

(“NIMBY” stands for Not In My Back Yard, if you’re not familiar with the term.)

Cooking: Jim's BBQ Ribs

It’s been awhile since I’ve posted up any recipes.  My cooking adventures took a bit of a break during the months I was crushed on the book.  That sucked for any number of reasons: my family missed the neater stuff I did when I had time and wasn’t grumpy about the book, and I certainly missed the creative energy I get from tinkering around in the kitchen.

So on to this recipe.  Ribs are wonderful things, if nothing else for the wide range of styles they’re cooked in.  Ribs are very much a micro-regional thing around the US: they vary greatly from the southwest to the south to the midwest.  I’m no expert, but I enjoy them and have tinkered around with a number of different variations.

This is the simpler version of several recipes I make.  I'll often make a dry rub of sugar, ancho and chipotle chili powders, ground cumin, dry mustard, salt, pepper, oregano, and whatever else strikes me.  This simpler recipe uses Galena spice rub from Penzey's Spices ( which is a terrific treatment all on its own.

I use a charcoal grill heated with a mix of Kingsford briquettes and hardwood lump charcoal.  Lump charcoal's important as it gives a noticeable improvement to the food you're grilling.  Get a hot fire started with the bricks, then dump on a pile of the lump and get that good and hot before slapping the ribs on the grill.  I've also got a passle of lava rocks in my grill to help evenly spread the heat around.  These are usually for gas grills but I've had great results in my charcoal one.

I also use hickory chunks soaked in water for an hour or so to retard their burning.  Toss one or two large chunks on the fire to give a very light touch of smoke flavor to the ribs.  A lighter hand with the smoke is greatly preferred to piling on scads of hickory and covering up the flavors you get from the meat and spices.

Lastly, toss a few springs of rosemary, sage, or thyme on the fire throughout the cooking.  I've got a herb garden where I grill, so I'll just reach down and grab a bit each time I'm moving the ribs around.  A light hand with the herbs is preferred.  (Skipping the herbs is fine if you don't have any.)

I don't use a gas grill, but the general process will be the same - you'll just have to figure out how use a tray for the smoking chips/chunks, although you could skip that and it wouldn't be the end of the world.

  • Pork baby back ribs
  • Galena spice rub  (
  • Beer or apple juice or orange juice

Start four or five hours before you plan to serve the ribs.  Coat the ribs front and back with a healthy dusting of the spice rub.  Wrap in plastic wrap and leave in the fridge.

Two hours before serving remove the ribs from the fridge and let them come to room temperature.  (I've generally had better results working with room temp ribs vice cold ones, but it won't be catastrophic if they're not at room temp.)

90 minutes before serving start a medium-hot fire on one side of the grill using the briquettes.  When they're good and hot add the hardwood lump coal.  Place a small aluminum tray right next to the coals and pour in a beer or some apple or orange juice.  This liquid's important to help keep the ribs moist as they cook.  Beer's good, apple and orange juice work fine and lend a slightly different flavor to the ribs.

Sear the ribs over the direct heat, then move them off the heat to the other side of the grill.  Cover the grill and cook for 45 - 60 minutes, moving the ribs around occasionally.  I cooked eight or ten racks of ribs at once on my large Weber by standing the ribs on their sides and frequently moving them from direct heat to indirect heat, making sure that no racks were burning.  You’ll need to pay careful attention if you’re juggling this many ribs at once!

Important: when the ribs are cooked, remove them to a large tray/platter, cover with aluminum foil and several layers of towels.  Leave to rest for 15 minutes.  This resting period is critical because the juices from the ribs settle down and the meat finishes its cooking.

Monday, October 16, 2006

Book Review: Implementing Lean Software Development

Implementing Lean Software Development, Tom and Mary Poppendieck.  (Addison-Wesley, 2007, ISBN: 0321437381)

This book is a great follow-on to the Poppendieck's "Lean Software Development" book.  That book gave readers "an Agile Toolkit" for understanding what lean and agile are all about.   This book is similar to its predecessor both in tone and content with practical examples of what works and what doesn't.  Much of the book is still framed by lessons learned from Toyota's manufacturing system and Mary Poppendieck's experience at 3M. 

That said, the book isn't just a rehash of the earlier, seminal work.  This book seems to have a solid core of how to get the most out of development teams with two sections specific to people and partners.  There are also terrific sections on knowledge-sharing, speed, and how to get the highest quality while delivering in a rapid and lean fashion.  Some things aren't covered at all, such as the fundamentals of value streams or Pareto charts, but those areas are by far the minority.

I’ve seen comments remarking about the lack of anything specific to Extreme Programming in this book, but I think that's missing the point a bit: this book isn't about a specific implementation of agile/lean/whatever, it's about the general approach to the principles of lean development.  The book guides readers to explore what's not working in their own environment and alter bits and pieces to improve production.  An example of this is the closing section to each chapter where a "Try This" section guides readers to examine how their own environment is working or not working.

Folks who have done plenty of reading on agile/lean concepts may not find anything earth-shattering in this book, but it's a terrific read for anyone regardess of their exposure to and involvement in agile.  Well-steeped readers will find lots of head-nodding stories and a few provoking exercises and topics.  Newcomers will have their eyes opened by a wealth of riches.

Huge Regional Event In The Works

Drew Robbins, Josh Holmes, Jason Gilmore, and a passle other folks way smarter than me are working together to put on a huge regional conference in January, 2007. 

What’s the topic?  How about bringing together industry-leading speakers in the Java, Ruby, PHP, and .NET communities for a two-day conference?

The event is CodeMash, and I’m part of the group organizing the event.  We’re swinging for the fence: we’re hoping to bring in 400 – 500 folks to attend somewhere between 35 and 40 sessions put on by top-notch speakers.

How’s this for a starter list of keynote speakers: Bruce Eckel, Neal Ford, and Scott Guthrie?  We’re also looking to nab one of the top leaders at a certain company which has been the predominant force behind Java.  Can’t say more yet because I’m still coordinating with the folks from Sun I mean a certain top company.

The list of speakers will be pretty dang impressive too: think about the weath of riches we’ve got in the region simply in the .NET domain: Brian Prince, Josh Holmes, Bill Wagner, Tim Landgrave, Dave Donaldson, James Avery, and Drew Robbins, just to name a few.  We haven’t even begun to hit the Java, Ruby, or PHP folks yet.

This event is going to be tremendous for a great number of reasons.  First, who wouldn’t want to hit an indoor water park in the middle of January?  Second, the energy at such events is simply stunning.  I was at Software Expo several years ago and it was a life-changing event for me.  Seriously.

Interested in attending?  Our registration site at will be going live shortly.

Interested in speaking?  Look for a call for papers/abstracts to go out very shortly.

This is going to be sooooo cool.

Dayton DevGroup: New Home!

Heads up to readers who are members of, or interested in, the Dayton .NET Developers Group: We’ve got a new home!

Starting with this month’s meeting on October 25th we’ll be meeting at Max Training’s Miamisburg facility.  We’re excited about the move and are looking forward to our future home!  (Not to mention they’ve got a great pizza source nearby.)

You can find directions to Max’s facility at their site.

I hope to see you at the next meeting!

Friday, October 13, 2006

Yet Another New Technology

I spent Monday through Friday afternoon in the Boston area getting spun up on several interesting new technologies for some future work.  I was there with four other geeks from NuSoft as part of a team getting ready for some implementation and integration work.  We're forming a relationship with a company full of very clever folks who are doing some very cool things with a couple different business rule engines from the folks at InRule and Active Endpoints

I'm still not sure how much I can talk about regarding the main company; hopefully our partnering agreement will let me blog about who they are and how we'll go about solving some very neat problems.

One general issue we're running in to is testing of business rules.  Active Endpoint's product is based on the Business Process Execution Language, an XML implementation/specification targeted at, well, business processes.  It's been a tough concept to get our heads around, but a few things are becoming clearer as we're continuing our work.  I've found a couple interesting things which may offer us some guidance and tool/test framework help:

  • Ben Carey's MSDN webcast on Test Driven Development in BizTalk
  • BizUnit, a framework for testing BizTalk and processes in general
  • Towards a BPEL unit testing framework, a white paper on the Association for Computing Machinery's digital library.  (I still haven't read this one, but the abstract looks promising.)
  • Fitnesse.  I think has terrific potential in that we're able to have the customers specify inputs and expected results for each process -- plus we'll be able to use those test results as documentation.

It was a very challenging week, and we've still got an incredible amount to learn, but I think exciting times are ahead of us.

Sunday, October 08, 2006

SQL Server Restore 101

Need to find out what processes are still attached to your database, thereby preventing you from restoring it?

Use SQL Server Managment Studio and check the Activity Monitor under the Management folder.  You'll get a nice list of all the oddball processes you've got which are hanging on to your db.  Right-click on the leeches and kill 'em off to get your DB in a state where you can restor it to.

(Uh, of course, make sure those procs aren't anything overly important first...)

Thursday, October 05, 2006

iPod Woes: Overcome!

It wasn’t short or easy, but I’ve got my iPod 4G back working from the troubles I’ve already talked about.  It took the nice adapter mentioned on Command-Tab’s blog, plus a combination of SpinRite and WipeDrive.

I popped the iPod’s case apart using a putty knife — you’ll need something thin and absolutely rigid to pop the case.  After that it’s a matter of carefully separating the two halves and folding them apart since there’s a thin ribbon cable connecting the two.  The mini-drive gets separated from its connector and attached to the adapters referenced above.  Now you just need to get an IDE cable and power connector free to hook your iPod drive into.

Eight hours later, I’d successfully run a level 4 pass with SpinRite and used WipeDrive to make sure all contents were scrubbed from the disk.  SpinRite didn’t find any outright bad sectors on the drive, but its reformat/refresh always seems to help out cranky disks.

The bottom line is that my iPod is back up and running, and I’m much happier for it.

Now I just need to get a new receiver in my car so I can jack the iPod directly in.  I’ve got a Belkin FM transmitter which lets me get iPod content into my receiver, but it’s crappy fidelity and you have to constantly change channels if you’re driving any distance.  I’ll be spending some time at Crutchfield to sort out the right unit.  I’ll share that when I’ve figured it out…

Wednesday, October 04, 2006

Two Handy Tips for Coding Windows Services

I've been doing some development on Windows Services the last couple days and found two handy bits of info.

First, always make sure to close the Services management console when you're installing or deinstalling services.  The Services console can keep a handle open on various parts of the registry, causing you grief when your service is being removed.  An attempt to install a new version of the service will give you an error "The specified service has been marked for deletion."

Secondly, if you're working with multiple services in a single executable make sure to add each to the list of services to start:

ServicesToRun = new ServiceBase[] { new NormalMessageService(), new EmergencyMessageService() };

(Sorry about bad formatting -- CopySourceAsHtml 2.0 is giving me some grief today.  I'll get it noodled out.)

Tuesday, October 03, 2006

Want a Free Copy of Our Book? (Rough Cuts Draft Online)

If you’re interested and you’re quick to respond, you can have a coupon giving you free access to our book on O’Reilly’s Rough Cuts program. 

Coupons entitle you to completely free access to the book as long as it’s available on Rough Cuts.  You can even download PDF copies of the chapters so you’ll have a local copy for when you’re offline.

I’ve got eight coupons to pass out on a first-come, first-served basis.  E-mail me via the contact link on the right sidebar. 

Rules of Engagement:

  • I’ve got eight coupons and that’s it.  Once they’re gone, they’re gone.
  • No strings attached.  Of course I’d very much like to hear what you think about the book, regardless of whether it’s good or bad.  Feedback of any sort is greatly appreciated.  It would be cool if you blogged about the book, but it’s certainly not required or expected.
  • Sorry, offer not good for folks who contributed to or reviewed the book — y’all should have gotten a coupon for access already!

So there you have it.  Zap me an e-mail and I’ll shoot the first eight folks a coupon and instructions for its use.

CodeKeep Wins a Great Award

Dave Donaldson, a way smart guy, developed CodeKeep a couple years ago as a wicked cool way to handle snippets inside Visual Studio -- the beauty of it is you're wired up to an online, searchable repository of snippets.  CodeKeep is a thing of beauty and a great productivity booster.

Dave's hard work on a very innovative project was recognized as top dog in Microsoft's Visual Studio Extensibility contest in the add-in category.  Dave says he and his wife are taking advantage of the prize and heading off to TechEd Europe for some geeky fun.

Many congrats, Dave!

Monday, October 02, 2006

Tracking Short Task Lists With SlickRun's Jot

SlickRun is just plain shiny.  You’re seriously missing out if you’re not using it to ease your way of life by launching apps, URLs, folders, and any number of other things with just a few keystrokes.

One neat feature I’d missed in SlickRun was its Jot feature.  Jot is a simple scratch pad that persists between your logon sessions.  It’s accessible via the “Jot” Magic Word, or by the Win-J key combo.  That makes it perfect for me to keep tabs on simple tasks I need to knock out on a development project like in the following shot:

How did I find out about Jot?  Eric Lawrence, SlickRun’s wicked smart creator, was kind enough to write an article on his tool for our book.

Friday, September 29, 2006

Overly Large Solutions

There's been some interesting discussion on having too much in your App_Code folder as well as dealing with solutions holding large numbers of projects.  I find it pretty amusing that some folks are complaining about performance in Visual Studio when they're working in solutions containing 50 to 70 projects.

50 to 70 projects?  That's Just Plain Bad for any number of reasons.  First, you're definitely degrading your build times in Visual Studio.  Secondly, you're probably killing your performance in Visual Studio as Guthrie mentions in his post.

More important is the impact on your ability to keep your head wrapped around what's going on with your code.  My initial query to folks running solutions with that many projects in them runs along the lines of "What the hell are you thinking?!?"  It's nuts to have that many projects wrapped in to one solution.  How in the world are you going to be able to wade through all that code and keep everything straight?

Do yourself a favor and look hard at breaking out chunks of those projects into sensible blocks of separate solutions.  Worried about dependencies between components you've broken out into different solutions?  Use NAnt or MSBuild to manage your build process and keep all those dependencies straight.  (You ought to be using one of those anyway, especially for larger systems!)

Sure, there are edge cases where something really funky might force you to work with a silly number of solutions in one project -- but those are few and far between.  Do your work up front and think how such a massive system should be laid out.  Do your refactoring as you work and move out logical chunks of functionality to external libraries.

Your life will be much simpler and you'll have better performance in your development environment.

Tuesday, September 26, 2006

Book Review: Effective Use of Enterprise Library

I haven’t made it all the way through this book, but thought I’d go ahead and scratch out a quick review on it anyway.

Effective Use of Microsoft Enterprise Library by Len Fenster.  Addison-Wesley, 2006, ISBN 0321334213.

This book covers the June, 2005 release of Enterprise Library, but it’s still a worthwhile read.  It’s concise and clearly written, and it’s well-structured with each chapter laying out the background, design, and usage of a particular library block such as Configuration, Data, or Logging.  The examples are in both C# and Visual Basic, and the examples are to the point and usable instead of some throw-away, unrealistic snippet.

Fenster does a nice job of talking about the configuration advantages of EL blocks, such as the ability to define your logging in code, yet have an administrator use configuration files to control how and where logs are actually handled.

I’ve found this book a solid intro to Enterprise Library, even though it’s already outdated.  It’s a good starting point for reading before jumping into the docs for the latest release of EL.

Monday, September 25, 2006

Tell Me Again How Firefox is More Secure?

Via Slashdot, an interesting article on the number of security vulnerabilities in Firefox and Internet Explorer.  I luvs me Firefox, but have never, ever bought the argument that it's a much more secure browser than IE.  Firefox is great stuff, but its marketshare, and corresponding exposure to hackers, has been much smaller than IE's.

As usual, the commentary from ABM (Anything But Microsoft) folks in the /. community is pretty hysterical.  There are an amazing amount of excuses for Firefox's numbers in the Symantec study.  Dudes, be honest about your (and my) browser of choice: it's a great tool, but it's not some Holy Grail or universal panacea.

Good SharePoint 2007 Tech Refresh Resources

Keeping up with patches and updates to beta software can be a PITA, particularly when a lot of different products are wrapped around each other like Microsoft Office SharePoint Server (MOSS), Windows Workflow, etc. are.

The Tech Refresh for MOSS was released a week or two ago.  Installing it can be a bit tricky, but the SharePoint Team Blog has a great list of resources, including walk-throughs of the install process complete with screenshots.  Useful stuff!

Saturday, September 23, 2006

Working Through iPod Woes

My iPod has been crapped out for several months and I’ve not taken time to try and get it running.  It won’t update, the Updater’s Restore function bugs out, and life is generally unhappy.

SpinRite is a killer disk tool for non-destructive, hard-core disk repair.  I’ve used it since something like its version 2.0 back in 1990.  It’s time-consuming, but it’s recovered data from drives I was certain were dead, and it’s ressurected drives I was certain were bound for the waste basket.

Unfortunately I’ve had bumpkis for luck trying to get it to run on the iPod via USB.  I’ve gotten boot disks built to recognize the iPod via USB, but SpinRite barfs and hangs despite my best efforts at tweaking CONFIG.SYS file settings.  (Man, it’s been a long time since I’ve done that!)

I’ve got a couple nifty adapters on the way to let me hook my iPod’s drive to an IDE connector, so I’m hoping that will let me get this thing back in working order!  I’ve got lots of road time back and forth from Cincinnati for work, so I’m desperate for some nice podcasts to listen to.  (Not to mention my cuts for The Black Keys, Longwave, Molly Hatchet, Prokofiev, and Gordon McRae, among others)

I knew there was a secret disk diagnostics menu around, but never could find it until I stumbled across this post at where I also found great info on the adapters for hooking up the iPod’s disk to my computer. 

Hopefully I’ll get this little beast back in working order quickly!

Book Review: Visual Studio 2005 Unleashed

Visual Studio 2005 Unleashed by Lars Powers and Mike Snell (Sams, 2006, ISBN 0672328194)

This is a pretty impressive book, albeit a bit lengthier than it needed to be.  There's tremendous coverage of everything, and I mean everything, in Visual Studio 2005.  If you're new to VS 2005 then you'll find this a great guide to getting the most out of your environment.  If you're fairly familiar with VS 2005 then you may still find a few goodies hidden away here too.

One thing I didn't care for the was the large amount of material that would have been better summarized or flat out omitted.  Did I really need pages and pages of screenshots of each and every menu in Visual Studio?  Probably not.  Did I really need to see six pages listing a single project file, with little discussion on the details of it, or three pages of code auto-generated by the forms designer?  Probably not.  There's a lot of this kind of stuff, but in reality it's an annoyance and not a fatal flaw.  ("Dude, didn't you just finish writing a book 1300 pages long?" Uh, let's leave that off for now, eh?)

What you'll find in the book is a wealth of details on useful stuff like moving around your document with bookmarks, getting the most from VS2005's search capabilities, or how to best use features like the XML editor -- which is discussed in great depth with examples in the Data View and Schema editor.  The book's smattered throughout with useful tips on avoiding gotchas, such as dealing with issues in the Refactoring's Promote command.

Several of the chapters, such as the ones on VS's Automation Object Model and Writing Macros, left me a bit underwhelmed; however, the majority of chapters give great value.  The chapter on Refactoring, in particular, is a terrific walkthough with great examples.  The chapter on Debugging is another good walkthrough, with a nice discussion of setting up for debugging a modestly complex scenario of a web application.

The sections on Team System features are a nice introdocution to getting the most out of the three VSTS products (Architect, Developer, Tester).  There's also solid coverage of working with issue tracking, VSTS's source control, and dealing with VSTS projects.  The information here is from the basic useage viewpoint, so you'll need something like Guckenheimer's Software Engineering with Visual Studio Team System to get the most out of VSTS.

Overall this is a solid book that's very useful introduction for novices and intermediate VS2005 users.

Friday, September 22, 2006

I've Written Another MbUnit Piece

The Greater Dayton IT Alliance is a great resource trying to boost the Dayton-region's IT base.  They do a lot of great things in the region and have been a great help for our .NET DevGroup here in Dayton.

They also put out a monthly newsletter with business and tech-related articles.  I wrote an article on reducing unit test complexity via MbUnit for this month's newsletter

I think I did a good job on the article, but made one of my most-hated grammar errors and used "it's" as a possessive instead of "its."  Feh.

Changing Jobs? Evaluate Where You're At (And Fix It!)

Over the last week I've been doing a lot of interviewing of potential candidates (yes, while I was sick -- but via the phone) for some of the open slots we've got with NuSoft in our Cincinnati office.  The task has made me reflect on the journey I've been taking over the last couple years as I set out to get back into fun stuff like development instead of the QC, customer relations management, and project management roles I'd been in.

Several years ago I decided I wanted out of that line of work, but I had to take a hard look at my skillset and fess up that, well, it sucked.  Furthermore, the environment I was in offered few opportunities for me to instigate a sea change in what I was doing and how the folks I worked with were doing their development.  I knew I needed to start getting some facts and cases together, so I began exploring new things by doing a great amount of reading.

That reading led me to discover a wealth of new horizons, all of which were completely unknown in the environment I was working in.  Test Driven Development?  The guys I was working around weren't even writitng unit tests and had no clue what any of the xUnit frameworks were. (Nor were they overly interested.)  Agile or lean development?  I was in a horrid, process-bound environment that valued production of mountains of documentation more than production of solid code -- one of the hazards of having to deal with department of defense agencies.

All of this reading kicked me in the butt.  I was letting others have far too much control over what I was able to do with my skills.  You are the one who controls your life, and you have control over what you can do to better position yourself as you look around for an escape from the environment you're currently in.

Suggestion one: Your skills suck?  Get reading (books).  Do the folks around you not care about quality development?  You're in a lousy place and you need to get yourself out of there, but you'll need to get yourself exposed to some critical works on writing good code like McConnell's Code Complete, Kernighan and Pike's Practice of Programming, and Maguire's Writing Solid Code.

One of the best guides I found was the career ladder at Steve McConnell's company Construx (registration required).  This is an old version, but the works listed there are gold, absolute gold, and can get you pointed to many other works as well.

Don't leave off at writing solid code.  Continue your reading by hitting some of the great works on methodologies: Beck's Extreme Programming, Subramaniam's Practices of an Agile Programmer, and Beck's Test Driven Development or Newkirk's version in the .NET world.  Learn how to change your development practices, even if the folks around you can't or won't.

Suggestion two: Your skills suck?  Get reading (blogs).  You're already here so at least you know what a blog is.  You're wasting time if you're not using an RSS reader/aggregator, so go look at something like Omea, Bloglines, or any of the other tools.

Use your time in blogs wisely.  Think hard about forcing yourself to do an end-of-month purge of your blogroll: cut one or two every month, forcing yourself to keep only the cream.

Suggestion three: Your skills suck?  Get involved.  Find a user group in the technology you're interested in.  You'll be surrounded by other folks who are passionate and interested in good software.  You'll (hopefully) get great presentations tossed at you to spark your interest in learning even more.

No good user groups around you?  Start one.  I started the Dayton .NET Developers Group because I got tired of driving over to Columbus to hit the Central Ohio .NET group. 

You need some additional motivation to keep increasing your skills?  Run a User Group and stand in front of a group of folks once a month.  There's no better motivation to boost your skills than the motivation to avoid showing your ass...

Suggestion four: Your skills suck?  Get developing.  You can't get your management team to buy off on moving to newer technologies?  Well, they may not see the value proposition in that, and that's certainly their perogative.  But you need something to cut your teeth on to help you boost your skills.

Go find a great open source project like MbUnit, NUnit, NAnt, TortoiseSVN, or any of the many other great tools around.  Grab the source code and start digging through it.  Learn how Really Smart Folks like Charlie Poole write code.  Take the next step: join the development team and see if you can't start out helping knock off some low-hanging fruit.  Can't do complex stuff?  Maybe you can do smaller tasks that let the more experienced folks focus on that complex stuff.

You'll be learning, and you'll be boosting your resume with some good work.

Suggestion five: Your skills suck?  Get writing (or presenting).  I'm a firm believer in the adage that you don't really know something until you can teach it to someone else. 

Start a blog.  Write about some tech geeky thing that interests you.  Write about how you're solving problems on the open source stuff you're helping develop.  Write about what you're learning.

Write an article.  I was lucky enough to hook up with James who invited me to start writing pieces for his site.  Find your own places to submit articles to.  Code Project, O'Reilly's various sites, any number of other places.  Who knows what will happen?  Maybe you'll get lucky like I did and fall into a serious writing project.

Want to really learn the guts of something?  Develop a 60 - 90 minute presentation around it, complete with good technical demonstrations.  Give that at a User Group and answer the questions that pop up about your talk.  Showing others requires you to have your stuff seriously together!

Suggestion six (the last!): Your skills suck?  Get real.  Take the long view, set priorities, and set goals. 

My skillset dropped because my wife and I decided our priority was to have me home with my daughter instead of in an office cutting code ten hours a day while my wife travelled extensively for her job.  That would have meant my daughter would have been in way too much daycare for our tastes.  Because of that I had to take positions I wouldn't have otherwise.  Some of them weren't exactly what I wanted to be doing, but I've found they've given me a great breadth of experience in everything from extensive writing to project management to estimation.  I spent a lot of time in front of customers which has turned out to be invaluable.

Keep your priorities straight.  Maybe life won't let you make a change right now, but you can certainly start building your foundation so that you'll be ready when life lets you.

Keep your goals set, and within reach.  Dreams are great, but goals are what let you reach those dreams.  Set goals for finishing books.  Set goals for learning bits of technology.  Set goals for certification tests.  ("Hey Jim, how's that MCSD coming along?"  Uh, we'll talk later.)

In Closing...

All this has been bouncing around in my head for quite some time; long before I started my new job.  I hope I've managed to convey a few important bits and pieces in this post.

You've got to take matters into your own hands if you're going to break out of whatever rut you're currently in.

I'll turn off the Doctor Phil mode now...

Subscribe (RSS)

The Leadership Journey