Saturday, December 15, 2007

Book Review: Designing Web Navigation

Designing Web Navigation: Optimizing the User Experience by James Kalbach, published by O'Reilly.  ISBN:0596528108.

This is a book about design, not implementation.  You may have grokked that from the title...  The book's beautifully laid out with lots of shots of real websites scattered across full color pages to help illustrate important points.

This book's really targeted to make you think about how to make your site's visitors best able to easily and repeatedly find content you deem important.  You won't find bits on CSS, Javascript, or Ajax.  Instead you'll find out things such as selecting appropriate navigation menu styles for given contexts, information architectures, the impact of tagging systems, and some of the complexities around search.

The first chapters are pretty academic and can be pretty dry, but they provide good information on content/information architecture.   The rest of the book is an easier read, but that doesn't mean you should skip the first chapters.  Lots of good sidebars call out specific topics -- accessibility is a hot topic throughout the book and gets a lot of sidebar treatment.

The book's full of gems such as how you should consider workflows in navigation (think shopping cart systems, e.g.), or the differences between "lingo" and vocabularies.  There are also a bunch of great references to other works, and each chapter has some nice exercises which are actually pertinent and helpful in making the reader more aware of that chapter's points.

I was surprised that globalization/localization didn't get more treatment in the book, but there are quite a few example screenshots and discussions around international websites.

Overall it's a very interesting, thought-provoking book.

Monday, December 10, 2007

Renaming NHibernate-Persisted Classes

If you rename classes that you're passing through NHibernate, keep in mind that you've got several places you need to do that rename at:

  1. The business class itself, i.e. Schema -> Schematic.
  2. Inside the Hibernate.cfg.xml file, where you'll have a mapping resource element pointing to the class and its assembly.
  3. Rename the mapping file, i.e. Schema.hbm.xml -> Schematic.hbm.xml
  4. Change the name of the class within the mapping file's class tag.

That last one's bitten me a couple times and I always lose more time than I should over it.

Forget any one of these and you'll run up against the infamous "Could Not Compile Mapping Document" error.

First CodeMash Podcasts Up!

Michael Kimsal of WebDev radio did an interview with me a week ago about CodeMash and has posted the ‘cast up on his site.

Chris Woodruff also did an interview with me about the history of CodeMash, my current role in CodeMash, and what attendees can expect to find at CodeMash this year.  That’s posted as the first ‘cast on the CodeMash website — Chris will be posting a series of podcasts interviewing speakers, attendees, and others around CodeMash.

I’m never pleased hearing myself speak in any media, so I’m definitely not a good judge on the quality of these.  I know I had waaaaay too many “uh”s in the interview with Chris.  That aside, we covered a lot of interesting topics so I think they’ll be useful and interesting to listeners.

Check ‘em out!

Saturday, December 08, 2007

CodeMash Badge: Wear It!

For some stupid reason I’ve forgotten to put up my CodeMash badge on this blog.  Rectified now.

If you’re heading out to CodeMash, please add the badge to your blog or site.  You can find HTML for the badge at the CodeMash registration page.  Every bit of exposure for our community-driven event helps drive attendance!

Good Series on Collections in NHIbernate

Billy McCafferty has a nice series on collections in NHibernate.  I like his discussion of good places to put particular retrieval methods (FindAllByDateRange is his example).  His thoughts on separating out responsibilities between the data access layer and domain layer are thought provoking and well-reasoned. 

McCafferty walks through some various scenarios of where such methods could live and lays out good pros and cons along the way.  His article's really about how you can work solve problems around collections, but the general point of where and how to implement accessors is an important one too.

Wednesday, December 05, 2007

Nice Blog from O'Reilly's Publicity Folks

The publicity team at O’Reilly has a great blog talking about releases, conferences, and a lot of other good stuff relating to O’Reilly.  I just stumbled across it today and found it pretty interesting!

Another Reason CodeMash Rocks

Reason #152 why CodeMash and its crowd of homies is awesome: The CodeMash Song.

Read the rest of the thread for a great discussion on the pending jam session at CodeMash.

Saturday, December 01, 2007

Ironing Out the CodeMash Schedule

I’m looking at the tentative schedule for the CodeMash sessions we’ve selected and it’s shaping up to be a pretty amazing lineup! 

Jason Gilmore and Dianne Marsh have done the really, REALLY difficult job of the initial session selection: 120 submissions were received, all of which were of high enough quality to be selected at any code camp or other regional conference, most of which were solid enough for national level conferences!  They had to cut out almost 80 selections to pare down to 42 sessions.  That was a hard, hard bit of work, particularly since we know all of the submitters and it’s tough to tell friends “Sorry, maybe next year.”

Now comes the next hard part: slotting those sessions into a schedule where we can try and build momentum at the start and avoid too many obvious conflicts.  Not an easy task, and I’m very glad that Jason and Dianne did all that initial work and then tossed the list over to me for a review!

Dianne, Jason, and a few other folks have confirmed two great keynoters (Brian Goetz and Scott Hanselman) and have a third nearly nailed down.  I’d love to tell you who it might be, but I don’t want to sink the process.  Trust me, you’ll agree it’s a cool catch if we get him!

CodeMash isn’t far away at all — 10 January’s not many squares out on the calendar.  Go register.  Now!

The Importance of Good Task Granularity

On Tuesday's DNR the guys read a letter of mine I'd sent them after hearing a comment on one of their shows about burnout due to a perceived lack of progress when working on vague, esoteric, or difficult features. 

Carl and Richard didn't read my whole letter, which is understandable since they've time limits.  (And no, it wasn't particularly long-winded, either!)  Unfortunately, they left out the main reason I wrote in: The importance of breaking those large or vague tasks into smaller, more concrete chunks, and a creative way to do that. 

My letter included my explanation of how I tried to keep some sanity around a poorly scoped, vague feature I had on my plate during a project.  The feature was estimated at three days and ended up taking three months.  Ouch.  There's a long story behind that, and the huge overrun was largely due to the client making some very sensible changes based on good business decisions for them.

Regardless, I had one feature card that remained on our working wall for three months without any visible sign of progress.  It was frustrating for me since my teammates were wracking up completed features, and I also felt it left upper management the impression that no progress was being made on the feature.

The right thing to do in these cases is go back to the drawing board and rework that feature into a number of smaller, more granular tasks.  You should bring in the client to ensure you're getting the right things broken out and aren't missing any necessary pieces of the larger part.  Those new decomposed tasks should then be broken out as their own features and tracked.

For a number of reasons that wasn't feasible (theory versus real world), so what I did was handle all that myself using one of the best technologies known to mankind: Post-It Notes.

I broke down the larger task into smaller parts and wrote those up on Post-Its.  Those stickies went up on a couple different sheets of paper to categorize their status (limbo, in the queue, working, complete).  I used these Post-Its to help keep me focused on specific tasks as well as reminding myself that I was indeed making some progress while the others on the team were wracking up a large number of feature completion dots each week. 

Small things like green lights on a test or completion dots on a feature chart may seem simplistic or silly, but they are much more significant than you might think.  We all crave satisfaction in some fashion, and these sorts of things help salve that need.

When the Feature From Hell finally got finished I decided a regular dot (we use the round labels) wasn't quite expressive enough of the effort I put in to the feature, therefore I got a marker and made a dot that indicated the significance of the event:

Two important things about this:

1) Break down a large or vague task into smaller chunks so you have better scope and can see better progress.

2) Use some form of BVC to help keep that progress visible.

Burnout due to a missing sense of accomplishment on long, esoteric,  or vague tasks is a real risk.  Help yourself out by doing something, anything to show progress on those tasks.

Wednesday, November 28, 2007

Readability, Accuracy, and Maintainability of Chained Calls

The ability to chain together a bunch of calls is a handy thing, but it can easily lead to a number of issues in your code.

Readability's an awfully critical thing when you're writing code.  How many times have you read or heard that in almost every case you're writing code not for the compiler to read but for other developers, either yourself a few days/months/years down the road, or some other guy who has to work with your code at some point.

I'm working on a bug in some code which looks like the example below.  It's meant to return a stream of a file on the filesystem.  That file is pointed to by the Path property of a biz object we use, instantiated as contentFile in this example below.

   65 return new MemoryStream(File.ReadAllBytes(ConfigurationManager.AppSettings.Get("DataDir") + contentFile.Path));

 

A couple things hit my brain as I'm working on this.

First, the line is nearly 140 characters long with a bunch of chained calls.  That's hard to read simply because it extends well past most windows.  (At least if you're using multiple monitors and splitting windows.)  I much prefer a width of around 80 chars and won't ever go past 100.

Secondly, I much prefer having return statements returning something you've already built elsewhere.  To me that's much clearer.  Refactored and split up, the code looks like:

   65 MemoryStream contentFileStream =

   66     new MemoryStream(File.ReadAllBytes(

   67                         ConfigurationManager.AppSettings.Get("DataDir") +

   68                         contentFile.Path));

   69 return contentFileStream;

The next item is to clean up the chaining a bit.  It takes way too many brain cycles to break all these calls on lines 66 to 68 into their composite pieces.  The semantics of what you're trying to accomplish easily gets lost in all those chained calls.  A quick refactor turns this into 

   65 string filepath = ConfigurationManager.AppSettings.Get("DataDir") +

   66                   contentFile.Path;

   67 MemoryStream contentFileStream =

   68     new MemoryStream(File.ReadAllBytes(filepath));

   69 return contentFileStream;

Better, but there's still a problem in that we're using string concatenation for the construction of the filepath.  Evil since we shouldn't rely that the DataDir app setting value was properly terminated with the correct directory separator.  The lovely Path.Combine() method can help out here because it will smash together path and deal with the separators in the correct fashion regardless of whether they're there already -- and it's handled with the correct separators for whatever platform you're writing on, too.  Let's change that a bit:

   65 string filepath =

   66     Path.Combine(ConfigurationManager.AppSettings.Get("TKOPublishedFilesDir"),

   67                 contentFile.Path);

There's also a glaring error in that we're not using any guard to check whether or not the file actually exists on the system!  Let's fix that with a quick check:

   68 if (! File.Exists(filepath) )

   69 {

   70     //handle error

   71 }

Obviously you need real stuff instead of "//handle error", OK?   Also, I'll often build my test variable before the if statement but this File.Exists() is short enough that it's very readable as is.

Right now the tweaked method looks like this:

   61 public Stream GetFile(long id)

   62 {

   63     ContentFile contentFile =

   64         PolicyInjection.Create<EntityFactory<ContentFile>>().Find(id);

   65     string filepath =

   66         Path.Combine(ConfigurationManager.AppSettings.Get("DataDir"),

   67                     contentFile.Path);

   68     if (! File.Exists(filepath) )

   69     {

   70         //handle error

   71     }

   72 

   73     MemoryStream contentFileStream =

   74         new MemoryStream(File.ReadAllBytes(filepath));

   75     return contentFileStream;

   76 }

There's a bit of other cleanup which should happen here, such as wrapping the creation of the memory stream in some guards to catch exceptions, etc. I also realized that I don't like the name I gave the memory stream object, but I can will refactor that after I post this.

The main point of my post is that call chaining, statement chaining, or whatever the heck you want to call it, is a powerful thing, but it's something that easily morphs into something that leads your code into a place where it's difficult to read, hard to maintain, and susceptible to errors.

Use it with care.

UPDATE:  In the comments Troy points out that this is actually nesting, not chaining.  He's absolutely correct.  I wrote this post and the entire time was thinking "That's not the right word."  Thanks for the good feedback, Troy.

No Fluff Just Stuff Podcasts

The folks at the No Fluff Just Stuff conference (authors and editors of the great book No Fluff, Just Stuff) have a nice series of podcasts on various topics that have been presented at their shows.  Some of the podcasts seem little more than marketing slicks to whet your appetite for signing up for the conference, but all have at least some useful bits in them.

Neal Ford's talk on Metric Driven Agile Development was one particular cast I wish would have gotten more into details.  Venkat Subramaniam's Open Source Agile Tools is another short one, but has some goodness on specific tools -- the specific tools he talks about are Java tools, but a number have .NET equivalents.

The series is available via the site or iTunes subscriptions.  They're nice fillers for my commute and well worth the download.

Wednesday, November 21, 2007

A Great Addition To The Team

Steve Harman's joined our AppDev team at Quick Solutions, the great place I drive 2.5 hours back and forth to work at. Steve is a wicked smart guy, passionate about all things techie, and a great proponent of open source tools.

Matt and I were joking that the AppDev team is quickly becoming filled up with folks that are a lot smarter than us -- and that's a Good Thing. It's great to be a part of a team where I can turn to any number of resources for answers on the vast number of things I don't know.

Quick is always looking for folks to add to our team, either on the staffing side or on the AppDev team. Drop me a note via the contact link on my sidebar if you're interested in talking with us.

(And our "staffing side" is a much, much different business model than other companies. We actually back up promises of mentoring and training, and the employee owner environment of Quick is unlike any other place I've worked.)

I'm really, REALLY looking forward to working with Steve, and not just because he can tidy up all the crappy code I've written.

Update: Fixed busted URLs. Something seems to have changed at Blogspot and now I'm forced to qualify URLs with "http://" instead of just the site. Feh.

Monday, November 19, 2007

Fixing TFS Report Problems

I've had a problem with TFS reports where the Active (Cumulative) number of bugs had fallen to zero for a week or so.  While I like that number, it wasn't true -- we had bugs > zero.

Turns out the warehouse update wasn't working, and errors were pointing to issues with a bunch of zero byte files in the working directory.  Ugh.  Thankfully Russell Seymour had the answer on how to fix the problem.

Now the report shows a true number of bugs, but at least the progress I'm showing is honest...

Sunday, November 18, 2007

CodeMash Keynoter: Scott Hanselman

We have scored SOOOOO big time this year!  Scott Hanselman will be coming to CodeMash for a keynote!

Not to imply that ScottGu, Neal Ford, and Bruce Eckel weren’t big folks for last year’s keynotes, I’m just excited because Scott’s “never found a geek tool I didn’t want to check out” and “Open Source software is cool and fills solid business needs” philosophy is right along my line of thinking.

Scott’s keynote, and the other two great names we’re working on, will flesh out what is an amazing lineup of breakout sessions for v2008.  I got a little crazy pushing our content/speakers staff this year and we ended up with six or seven concurrent sessions going for a total of 42 breakouts.  (Of course, I’m the guy who, with his co-author, completely lost control when writing a book and covered 176 tools in a book that weighs in at over 1200 pages…)

What?  You still haven’t registered for CodeMash?  Get thee to the registry and fill it out!

CodeMash v2.0.0.8.  It’s da bomb.

Wednesday, November 14, 2007

Dayton DevGroup Meeting Tonight!

Justin and I are teaming up for a presentation on all things testing tonight at the Dayton .NET Developers Group.  I’m hitting a quick overview of unit testing, Justin will hit mocking in depth (mock objects, not heaping scorn on me), then I’ll wrap up with a quick bit on Fitnesse.

Stop by for some good content, free pizza and soda, and general visiting with a lot of smart, passionate folks.  Meetings are held at Max Training’s Dayton/Miamisburg facility and start at 6pm.

It’s also election night, and the finale of our membership drive.  Bring a friend and get an extra ticket for the raffle.  You get as many tickets as friends you bring with!  If we hit 40 folks at the meeting tonight then we’ll raffle off an XBox!

Tuesday, November 13, 2007

Book Review: Visual Studio Team Systems: Better Software Development for Agile Teams

Long overdue with a review of this book…

Visual Studio Team System: Better Software Development for Agile Teams (Microsoft .Net Development) by Will Stott and James Newkirk.  ISBN 0321418506, published by Addison Wesley

This book covers a wide range of cool things in VSTS wrapped up in a solid introduction to and roadmap through agile practices.  Read the book and you’ll get great guidance to working with agile planning, test driven development, refactoring, agile modeling, and a number of other topics.

I have two small gripes with the book.  First is that it includes the seemingly mandatory, maddening “meet the development team and walk through each day in the project with them” storyline.  This book does no better than any of the other weak attempts at the novelization of a working team.  Leave that stuff off for novellas and focus on the technical aspects instead.  My second gripe is the book’s organization.  Planning is way back in section 8, modelling’s in 6, etc.  It seems a bit disjointed.

Those gripes aside, the content in the book is just great.  The walk-through of test driven development is solid, and the emphasis on having an environment and code base that can rapidly change to requirements is very nice.

The technical side relating to Team Systems is also solid. The guidance on using source control is well-written, and the section on working with team build is as good as it can be (I’m NOT a fan of team build).  The section on using and working with the process frameworks are solid, although I wished they’d covered the process editor add on.

I’m also very happy to see that the Framework for Integrated Testing (FIT) was included — I’ve been a long-time proponent of FIT and love seeing it in more books.

Overall this is a very solid book.  I like their approach to discussing agile, and I like their tie-ins to VSTS/TFS.  They gloss over some of the things I don’t like about VSTS/TFS, but hey, those are more my issues, not theirs.

This book is a good addition to your bookshelf if you’re looking to do agile in the VSTS/TFS world.

Book Review: Implementation Patterns

Implementation Patterns by Kent Beck.  Published by Addison Wesley, ISBN 0321413091.

This book is a wonderful, concise book on writing code that others can understand.  I love Beck’s premise in his intro: “Actually, this book is based on a rather fragile premise: that good code matters.  I have seen too much ugly code make too much money…”  A pretty amazing blurb, but Beck goes on throughout the book to prove why you should care about good code and how you can do a better job of writing non-ugly code that others can more easily grok out.

The book’s chapters run a short gamut of great topics from programming theory to frameworks.  One of the more intestesting bits I found was his discussion on symmetry, the idea that methods and classes should be well balanced.  Methods such as “Add()” should be balanced by “Remove()”, and that ideas in sections of code should be expressed in the same style, i.e.

void process() {

input();

count++;

output();

}

 where input() and output() are intentions while count++ is an implementation.  Esoteric, but the flow is much cleaner and clearer when you read the snippet below instead.

void process() {

input();

tally();

output();

}

I like the discussion in this book is on good naming styles, something I’m passionate about — and am still not happy with my own practices in that area.  There’s also great text on state, behavior, and different ways to look at methods.

This book’s an easy read.  Beck’s writing style is absolutely approachable, and the book’s quite short at 155 or so pages.

Beck’s book helps me to better consider how to rephrase my code so its intent is clearer and it’s more maintainable by myself and others on my teams.  Highly recommended.

Sunday, November 11, 2007

Why CodeMash Rocks (and is Fun)

I’m working through editing some of the sessions we’ve accepted for CodeMash and am thouroughly enjoying the task, simply because the speakers we have firmly grasp how to write cool abstracts and bios.

From Catherine Devlin, about her talk on Python: “This session is suitable for anyone who'd like to get started with Python, or who just likes seeing planets blow up.”

From Bruce Eckel, on his talk about Python: “’Why is Python so great?’ As any Python programmer will tell you, the easy answer is ‘because it doesn't hurt.’”

From another speaker’s bio: “In his off-hours he enjoys watching bodybuilding and Broadway musicals, but not at the same time.”

From Dustin Campbell’s talk on F#, the very cool functional programming language: “Note: no object-oriented programmers will be harmed during the session.”

From Neal Ford’s talk on “Engineering” & Polyglot Programming: “This presentation also engages in a real conversation about ‘software engineering’ and what that really means. And, it tells how we can get other engineers to stop making fun of us.”

Like those?  Go register and then you’ll be able to hear it directly from those great folks.

Saturday, November 10, 2007

SharePoint Connections: Final Day

I’m winding up my last few hours in Vegas sitting in a workshop for developing on MOSS.  It’s being taught by Todd Baginski, which is great because his other sessions have been terrific.  He’s being assisted by Dustin Miller, also of SharePoint Experts, and Heather.  (Missed her last name.)

The session’s just OK, solely because at least half the attendees came completely unprepared.  Prerequisites for the course were to have a working dev environment set up, either by building your own or grabbing the MOSS VPC from Microsoft and finishing up installs of Visual Studio and the SDKs.  I think the conference registration folks really put Todd, Dustin, and Heather in a bind because they didn’t make the prereqs clear to attendees.  As a result we’ve lost most of the morning trying to get attendees up to speed.  The three instructors are dealing with it well, with Dustin and Heather scurrying around to get folks set up while Todd hits a lot of great content and demos. 

Update: We’re now bagging the hands on labs in favor of having Todd run through more content and demos.  That’s a fairly good compromise since we’re moving forward and we’ll have all the lab materials anyway.

I had an interesting short conversation with Todd about testing in the MOSS world.  It’s readily apparent to me that nobody’s seriously addressing any form of unit testing for MOSS development, and certainly not anything about test driven development.  I think this may be an area I start writing some content on because there’s a serious need for it.

Overall impressions of the conference has been generally positive.  The downsides have been some throroughly mediocre speakers who leave tiny fonts on the screen, mumble, cut sessions extremely short, etc. 

The upsides have greatly outweighed those cons: I’ve met a large number of folks who’ve been influential in my professional life or community — thanking them face-to-face is a Big Deal for me.  I am still staggered that I got to get up on stage for a panel discussion and sit together with Rob Conery, Phil Haack, Joe Brinkman, and Jon Galloway.  I’ll probably wake up and find out that was a dream and instead I’m in the drunk tank downtown with some guys named Earl, Bubba, and Adolf.  I’ve gotten a great amount of solid expertise and practical tips and tricks from experts like Todd, Neil Iverson, and some other folks.

As I’ve said on this blog many times before, my last major conference was SD West in 2003 and that turned into a hugely life-changing event for me.  (Thanks, Josh, Steve, and Michelle!)  This conference hasn’t been as big an impact, but only because I’m already on the career track I want — and that was definitely not the case in 2003.  That said, I’ve gotten some great motivation to step a few things in my career up a notch.  We’ll see how well that pans out over the next six or so months.

I’m looking forward to getting out of here this afternoon and getting home.  My wife certainly needs a bit of a break seeing as we’ve continued the pattern of things blowing up when I travel.  Last year during a trip a chipmunk got in the house for a couple days. Picture a two-year old boy wandering around the house with a flashlight looking under couches all the time saying “Monk?  Monk?”  This time it was the neighborhood power transformer blowing up and throwing the house into the dark.  That was followed by my daughter coming down with strep throat.  Roses and chocolates may be in order…

Final Update: I just got home now and am winding down a bit after a long day.  The family’s asleep and since it’s 2:30AM I plan to follow their lead shortly.

Thursday, November 08, 2007

SharePoint Connections: Day 4

First off, some highlights from yesterday which I didn’t hit in my Day 3 post: I spent most of my evening at an MS-hosted party for speakers and MVPs chatting with great folks like Phil Haack, Jon Galloway, Neil Iverson, and Jay Flowers. People milling about in other corners included Juval Loewy, Michelle Leroux Bustamante, Carl Franklin, and a passle of other Big Names. I am soooo small fish in a big pond! Phil and Jay both wrote articles for my book so it was a lot of fun finally meeting them in person. Neil and Jon are both passionate, wicked smart folks who were just great to gab with — and I got a lot of great thoughts on MOSS things from Neil. I think I also managed to ask Christian Weyer if he was Miguel Castro, who I was trying to hunt down since he’s speaking at Dayton in December. Sorry Christian. That’s rather embarassing, especially because I was sober… This morning I sat through the first half of a two-part session on InfoPath forms and workflow in MOSS. Very informative, but the presenter finished up 45 minutes into a 75 minute session. What, was the session duration a surprise to him? I wish he would have filled up the entire session, particularly since he was rather snarky about attendees holding all questions until the end. Yeesh. The second session of the day was actually a very cool surprise for me: I got to sit up on stage with Phil, Jon, Joe Brinkman, and Rob Conery for a panel discussion on open source architecture. Seriously small fish, big pond. I’m still surprised event security didn’t run in and grab me off the stage. That discussion morphed into a lot of different directions which was quite cool. We talked about building a community around contributors and commiters, marketing OS projects, dealing with bugs and features, and yes, architecture. It was a lot of great conversation, and it was very, VERY cool to be up on stage with four guys who are industry leaders. Right now I’m sitting through a good session on virtualization for MOSS environments. There’s a lot of great info so far. The only downside is that the speaker has decided that sitting down and hiding behind the monitor is a great way to present. Ugh. (Maybe he’s got mobility issues, in which case he should have at least moved his chair out from behind the table.) Also turns out he had only enough material for 45 minutes. Grrr. The short session on virtualization actually turned out to be have a golden lining: I went over and listened to Joe Brinkman talk about PowerShell in the DotNetNuke environment. I caught the last 20 minutes or so of his talk — and saw his very cool concept of fronting PowerShell in an aspx page. This gives you full access to all the PowerShell goodness on the hosting machine. That is very cool. There are some trust issues he still needs to work around, but it’s a killer concept and I’m going to steal it for some MOSS work. The final session today was Neil Iverson’s PowerShell for SharePoint. Gold. Sheer gold, and a great kick to get my lazy ass in gear and get serious about rolling back into exploring PowerShell. Neil’s a great speaker and it was great to hear him both because he’s sharp and also because he covered PowerShell which is sort of esoteric and off the beaten path. The closing session was a complete goat rope. It was supposed to be Q&A with a panel, but turned in to a group of attendees griping about everything from lack of video recordings to break time to session duration to a lack of wireless. Hey, dumbasses: The panel up on the stage had Kimberly Tripp, Juval Loewy, Rocky Lhotka, Steve Smith, and a bunch of other internationally known experts. Do you think you could perhaps get over your pique and direct those complaints to the event planners and ask one or two intelligent questions of these great experts? Yeesh. (Actually, I’m probably just being whiny because, as usual, I didn’t win anything in the swag.) I’ve got a bit of work to wrap up tonight, then it’s time to prep my VM for tomorrow’s MOSS development workshop with Todd. I'll have to leave a bit early to catch my flight, but it ought to be a great few hours.

Subscribe (RSS)

The Leadership Journey