Category Archives: Lessons

Things I learn on my own and from others

About open community – a tale of two tools

When you take a step back from a community for spell after being in the thick of it for some time, it’s interesting to see what you find upon return.

In this case, I’m referring to the .NET community and there are two stories that I want to highlight:

  • Documentation automation
  • Decompilation

Town of NDoc

Once upon a time, there was NDoc, a convenient tool to help developers produce reference-level documentation for their .NET assemblies and solutions.

A force from the Pacific Northwest determined that there was much value in NDoc, and Sandcastle was born. (Note: The chapter on NIH isn’t covered here, nor are the alleged actions of an individual in the NDoc “community.”)

Sandcastle was more about the command line than NDoc, and eventually Sandcastle Help File Builder arose:

Sandcastle was originally created by Microsoft back in 2006. The last official release from Microsoft occurred in June 2010. Until October 2012, it was hosted at the Sandcastle project site on CodePlex. In October 2012, Microsoft officially declared that they were ceasing support and development of Sandcastle. The Sandcastle tools have been merged into the Sandcastle Help File Builder project and all future development and support for them will be handled at this project site. The Sandcastle tools themselves remain separate from and have no dependency on the help file builder. As such, they can be used in a standalone fashion with your own scripts and build tools if that is your preference.

Assuming that Kevin Downs and others who originally contributed to NDoc are happily pursuing new ventures (and satisfied to see their initial efforts validated by SHFB et al), it seems like documentation automation is alive and well in the .NET community.

City of .NET Reflector

Once upon a time, Lutz Roeder authored and maintained the most excellent .NET Reflector decompilation tool for the .NET developer community. At its prime, I didn’t know a .NET developer who wasn’t actively using the tool and who wouldn’t readily nominate Lutz for knighthood.

But then .NET Reflector’s future changed

Red Gate will continue to provide the free community version…

Well, until they didn’t!

Other than referencing ZDnet’s coverage at the time, I’ll leave you to Google the rest of the flames that resulted from this decision. Suffice it to say that it got ugly, and the $35 price is now no less than $95 and as high as $195.

The severe curve in price hikes tends to indicate a sharp drop in demand. Furthermore, the original Reflector add-ins portal seems to have been abandoned, which is a shame–lots of solid contributions were made therein that I use to leverage frequently (er, once upon a time)…

So, in the face of a tool that was free but now costs almost a benjamin for the basic version, what to do?

Two potential alternatives quickly present themselves: Telerik JustDecompile and JetBrains dotPeek. Let’s start with dotPeek

I’ve had some experience working with JetBrains in the past to establish a more open stance. Unfortunately, that didn’t result in any great or lasting success:

It’s interesting to see other potential similarities, too, between the Omea progression and the dotPeek progression. For example, JetBrains originally realized Omea by hiring Dmitry Jemerov who authored Syndirella–ironically an open source project. More recently, the first dotPeek plug-in author, Matt Ellis joined JetBrains as a .NET development tools evangelist. Assembly list support is already baked into dotPeek 1.0 directly.

As I remarked on Twitter, I sincerely hope that JetBrains has embraced open development for dotPeek; otherwise, I fear reactions to dotPeek such as this one for Omea.

Switching to JustDecompile, one of my first (positive community-oriented) impressions came from reading the (timely) comments on this blog post.

Even the blog’s first criticism–needs registration for download–has been addressed. I agree that this was a bit heavy-handed, but now you can download JustDecompile straightaway and only provide/create account information if you want support for the free tool (during JustDecompile installation).

Telerik has posted two, free plugins, which installed easily (after I realized that you have to expand the .sflb files for JustDecompile to find the entry points as otherwise instructed). (Telerik, please update your instructions to make this clear.)

Time will tell if the .NET community will rally around this tool by submitting new plugins. It’s clear that Telerik is listening to the community it has (e.g. this feature came directly from the UserVoice site for JustDecompile), and that is a good start.

I wonder if things would have worked out differently if GitHub had been around at the time the original transitions for .NET Reflector and NDoc had occurred. (Lutz is on GitHub, just not including .NET Reflector due to its aforementioned transfer.)

Is it too late for .NET decompilation to become truly open, supported by a vibrant community?

In the tale of two tools, the formative city of decompilation could take some cues from the happy town of documentation.

Suggestions to improve conference scheduling

So, I finally was able to complete my PDC sessions scheduling. It was a bit more “involved” then I expected, and I have a few suggestions for, in this case, Microsoft as they prepare for future conferences:

  • Enable Outlook (ICS-based) scheduling sooner
  • Include the online session home page as a link in the ICS file
  • Default to “no alert” in ICS files (e.g. avoid creating noise from multiple sessions of interest all vying for my attention on my smart phone)
  • Add a map link to help guide attendees to where sessions are being held (i.e. nowadays location-aware service is expected, IMHO; so, allow users to opt-in where correlating to present location (device GPS coordinates) is concerned)
  • Promote session hashtags (e.g. help guide the use of Twitter et al by going beyond just #PDC09)
  • When you post a location and date/time, and you change it, indicate the change more prominently (e.g. maintain version history)

Next year, I’d love to say something like, “I’m a PC. PDC10 scheduling…was my idea.” :-)

Inoculating a Reply All plague

The “Reply All” feature of most email programs like Outlook is a convenience ripe for abuse. Unfortunately such abuse seems to occur about once a quarter or so where I work. Folks add an alias to their message (To or Cc) that ends up involving a multitude of folks who could care less about the message just received.

So, unfortunately (!), what many folks do in reply is Reply All, yet again. :-(

When you Reply All to a Reply All asking not to Reply All, you defeat your purpose. Instead, be surgical and just educate the offenders. That is, be sure to remove all aliases from your reply–if you really feel the need to reply in the first place–and communicate solely with individuals on the To line of the diseased message.

Surely there is a way in Outlook to establish a rule as follows:

    Apply this rule after the message arrives
    with INOCULATION_KEYWORD(S)_HERE in the subject
        and move it to the Deleted Items folder

If you really feel compelled to Reply All, then at least do others the favor of changing the Reply-To address in your message to something less hideous (e.g. (in Outlook) Options | Direct Replies To | Have replies sent to: no-reply@…).

Getting Twitter


Yeah, I know that Twitter lately is all about Oprah, CNN and Ashton Kutcher, but it’s also about brief remarks, gripes and triumphs related to products and/or services that you send into the world wide market. (And if you were waiting for The Tipping Point, it’s already occurred for Twitter, IMHO.)

BTW, before I go any further, I’m @craigsmusings on Twitter. (Thanks, Dan.)

If a tree falls in a forest, it always makes a noise–regardless of your presence there. There are social conversations that occur online (e.g. Facebook, blogs, wikis, Twitter, newsgroups, IIRC, etc.), and they will continue to occur regardless of your presence there, too. However, that’s an especially risky position to take these days–see the conversation but not engage.

Consider the following conversation on Twitter:

Very disappointed in _YOUR_PRODUCT_HERE_, does not appear to have very much to it at all….if anything!
12:10 AM Apr 23rd from TweetDeck

@johnsmith Did you see a live presentation or play with it,
4:45 AM Apr 23rd from TwitterBerry

@janedoe Had a play with it, will blog later this week, does not seem to give us anything to use as an accelerator
4:52 AM Apr 23rd from TweetDeck in reply to janedoe

@johnsmith Ouch! That’s the point in theory.
4:58 AM Apr 23rd from TwitterBerry

So, what will John Smith blog exactly? He’s indicated that his post is forthcoming but also that there may be time to engage him–understand his concern and possibly influence him after listening by demonstrating value.

Jane appears to be an interested party, too. Is Jane a known advocate, possibly trying to reach out on your behalf? Is Jane known to be skeptical?

How can you “see” this conversation?

I use TweetDeck, an Adobe AIR-based Twitter client, for my tweeting, etc. It works equally well on both MacOS and Windows. (There are many other clients out there, too!)


TweetDeck allows me to do a number of useful things.

  • For example, the leftmost column/pane is a group. (You can read that tiny font, right? ;-) ) In my case, I filtered All Friends (i.e. those I follow in Twitter) into just the subset that tweets about content management. (You can see that there is a horizontal scroll bar on the bottom, and the default “All Friends” column/pane is off to the far right (where I moved it to reduce seen UI changes).)
  • The “Replies” lumn/pane is just what it implies–tweets in reply to me from others.
  • The “Direct Messages” column/pane contains DM’s from me and DM’s to me.
  • The two rightmost columns/panes in view above are searches. Since these are Twitter-based searches–one for tweets containing “CMIS” and another for tweets containing both “EMC” and “Documentum”–I receive traffic updates that apply in near realtime (unlike, e.g., a Google search that requires one to hit Refresh to see new results).

Anyway, I can visit John Smith’s Twitter profile to learn that he has a 70:30 ratio (i.e. he’s following 70 twitters and 30 twitters are following him). Clearly, Mr. Smith is not a “rock star” by Twitter standards. (Certainly, I am not either!)

However, consider the junior high campfire song’s sentiment: “It only takes a spark, to get a fire going…” This goes back to my point above: there may be time to engage him–understand his concern and possibly influence him after listening by demonstrating value (and create a positive fire–however big or small–about your product or service).

The truth is that, although I’ve been blogging for awhile now, I’m relatively new to Twitter. Fortunately for me, I have great resources in my “2.0 type” EMC colleagues and elsewhere online. For example, I recommend that you check out Gina Minks’ Twitter Cheat Sheet. (I understand from Gina that a v2.0 release is due out in time for EMC World, too.)

I recall during last year’s Microsoft Strategic Architect Forum (SAF) that a good industry colleague of mine suggested a “I don’t get Twitter” topic for the open space segment of that afternoon. I egged him on to make the suggestion; so, of course I attended…and I think that everyone learned a fair bit in the process.

Since then I’ve only recently begun to seriously tweet. Already that engagement has paid dividends, and due to the fact that most of my cross-domain architect colleagues don’t yet tweet, I thought I’d humbly offer this post to get them to “dive into” Twitter, too, in a way that’s both meaningful to them and meaningful to their communities. (You know who you are. :-) )

For those who weren’t at or don’t know about SAF, Microsoft worked with Mindjet to mind map the open space sessions. Here are the notes from the “I don’t get Twitter” session in mind map form–just click the following image for the .mmap (MindManager 8 format) file:

SAF08 topic - 'I don't get Twitter' (notes as mind map)

So, what do you think of Twitter? If you find it useful, how do you receive value from it?

Update 4/30/2009: Gina Minks just published a new cheat sheet for tweeting from your phone.

Recovering well

Last month I revealed that I suffered a basketball injury (i.e. a high rupture of my right Achilles tendon, requiring surgical repair). Yesterday marked the six-week point since surgery. Today I completed my third week of physical therapy and being out of a cast and in a walking boot. This afternoon was my three-week follow-up with my surgeon.

Those professionally helping me in my recovery say that I’m making excellent progress. Given where I am calendar-wise since the injury, my range of motion is great and my strength is good, too. Perhaps next week, I’ll be able to spend time out of my walking boot in a regular shoe assisted by a crutch. This will allow me to work on re-establishing my normal gait.

Already this experience has been rich in life lessons for me:

  • When you listen to your care givers, good things can and do happen! (Wish I’d learned this in my twenties.)
  • I still have a ways to go until I’m a consistently patient person. (Sometimes, I’m not a patient patient!)
  • I value my independence, and I have a hard time asking for help.
  • Handicapping injuries offer a great opportunity to slow down and experience the subtler, finer points of life (e.g. wonderful family moments).
  • When operating on a single crutch, the crutch goes on the strong side, not alongside the injury. (My physical therapist had a good laugh–and said that it’s not uncommon to see patients operate incorrectly.)
  • I thrive on communication (e.g. interacting with colleagues at work). While I’m grateful to be able to work regularly from home–even more so since my injury–there is simply no substitute for face-to-face communication.
  • Be conservative in your recovery goals, allowing more opportunity to be pleasantly surprised. Don’t confuse this with owning your recovery, being confident and taking initiative.
  • The human walk is truly elegant. It seems so simple, but there’s a lot to it when you have to deconstruct and re-learn it. Coordination requires more effort and focus than strength requires.

You may have noticed that I’ve been light on blogging this month, after starting the year off at a better pace (for me, anyway). Needless to say, I’ve been focusing my spare (and non-spare) time on my recovery. Let’s see…post a blog…regain ability to walk…blog…walk…hmmm… :-)

Suffice it to say, for now, that plenty of good things are happening where my professional life is concerned, too (e.g. cool new software features and products forthcoming from EMC). More on that later.

In the meantime, thanks for all the well-wishes and support. Cheers…