Just to make VB.NET developers feel better...

From Don Box’s blog, I found the following post describing why C# might become irrelevant.  Think of the fun if the VB6 petition was replaced by classicCSharp.org (note to self…register that domain).  Would each of the points have to end in a semi-colon?  Would each objective be surrounded by curly brackets?  Enquiring minds want to know.

Philosophy, Debugging and Star Wars

I find it amazing how certain quotes stick with you over a much longer period of time then they probably should.  Allow me to give two examples.  The first is an oft-repeated phrase spoken by Yoda in the second (or fifth, depending on your numbering system) Star Wars movie:  "Try not.  Do or do not.  There is no try'

Yeah, I know.  I simultaneously dated myself and added a geek label to my business card.

The second quote is a little more professional and, unfortunately, I don't know the origin. "Debugging is the process of discovering how many invalid assumptions you made during  the design and implementation of your program".

While cruising my blog roll today, I came across this post from Ted Neward that links these two apparently unrelated quotes.  Nice work and something to keep in mind the next time you're faced with a challenging problem in your code.

VB6 Support Coming to an End

Courtesy of Julia Lerman, I am reminded that mainstream support for VB6 comes to an end on March 31.  Now contrast that fact with the results of a survey that found over 50% of shops are still using VB6, a fact I blogged about here.  Does anyone else see a problem with this picture?

The problem of telling people who are currently running VB6 why they might want to move their applications has been at the front of my brain for a little while.  The biggest roadblock is that there really is no direct compelling reason.  Put it to you this way. You have an application currently working in VB6.  It took a couple of man years to build, but everyone is comfortable with it.  Both your developers and users can use and extend it as they need to.

Along comes someone saying that the company needs to convert to VB.NET.  This is a working application, not a broken one.  There is a cost to doing the conversion, not just in the effort, but in the efficiency of the development team.  As someone who made the move from VB6 to VB.NET about 4 years ago, I can tell you I was quite frustrated by how much my productivity dropped for the first few weeks (or months).  And what does the company get on the other side?  An application that (hopefully) works. Not really the ROI that one would hope for.

The problem is that the benefit to moving to the .NET platform comes about in the future.  A well designed .NET application is much easier to extend.  Using widely accepted software design processes (like unit testing and FXCop) are more easily accomplished using .NET.  Meaning that the quality of the software produced increases. So over the life of an application, the company will definitely make back its investment.  Or, more accurately, is quite likely to make it back.  But the argument is a difficult one to make to an executive with their eye on the financials of a company.  Invest potentially tens and hundreds of thousands of dollars for what return? 

I'm still thinking about how to crack this nut.  Any suggestions that you have or stories that you've run into would be helpful, so feel free to send them on.  And I'm sure I'll come back to this in a later post.

Pure Math III - The SHA Also Rises

While perusing SlashDot, I came across an entry saying that the SHA-1 hashing algorithm has been broken.  If you have any familiarity with cryptography, you'll realize just what this means.  After all, SHA-1 is at the heart of SSL, digital signature and (wait for it) strongly named .NET assemblies.  So does this signify the end of days?  Total anarchy? Cats and dogs living together? 

Not so much.  From a practical perspective, what has really happened is that brute force is no longer the best way to find a string that will hash to a given value. Consider for a moment what the job of a hashing algorithm is:  to take a given string of arbitrary length and convert it to another string of a specified length (160 bits for SHA-1).  The properties of the hash are that there should be close to a one-to-one correspondence between the initial string and the hashed string.  It should also not be possible to regenerate the original string given only the hash.

Of course, complete one-to-oneness is impossible.  There are more strings of arbitrary length then there are of a specified length.  When two strings hash to the same value, it is called a collision.  And it means that when either of those strings are used, for example, as part of a digital signature, the results will be the same.  If it were easy to go from a hashed value to any string that would generate the hash, the algorithm would be poor.

For a few years, it was believed that the best way to find the collision for a given hash was brute force.  That is, randomly generate strings until a collision was found.  What it means to say that SHA-1 is broken is that brute force is no longer the fastest way to a collision.  The researchers have described a technique that reduces the effort by a factor of 2000.  Now that means that instead of 280 calculations, only 269 are required. Still not a meager number, but quite a breakthrough. 

A more complete description of the implications can be found here.

Getting ahead of the Whidbey Curve

It is likely that, given the relative proximity of the release of Whidbey and Yukon, you will be inundated with information about these tools/products in the next six months.  And it's already started.  ObjectSharp (in conjunction with Microsoft) is in the midst of giving a series of week-long training sessions on Whidbey and Yukon.  If you haven't signed up already, it's actually too late.  The last two sessions (Calgary and Montreal) are already sold out.   

But that's not all.  As well as the Whidbey/Yukon talk, ObjectSharp (again, in conjunction with Microsoft) is presenting a series of day-long, hands-on workshops on Visual Studio Team Systems (at a cost of $299).  Five cities (Montreal, Vancouver, Calgary, Ottawa and Toronto), two seminars (with a good chance for a third) each. You heard that right. Hands-on. Right in your backyard. Believe me when I say that VSTS is one of the cooler parts of the next wave of products.  Now you get a chance to try it out, first hand.  Interested?  Click here.  If you do it now, you'll actually be ahead of the crowd.  This series has just been officially unveiled, so not even the masses have heard about it.  And you though there was no real benefit to subscribing to this blog. ;)

The cost of no hockey season

This is a (for me) rare trip outside of the realm of technology in my blog.  So if that's what you're hear for, feel free to skip to the next entry.

For those of you still with me, how about $1 billion.  That's a 1 followed 9 zeros.  More than chump change, even BillG. And yet, that's roughly what the NHL players will *not* be paid this year.  Check out Mark Cubans blog (always a fascinating look into the business of sports) for the rationale and why he puts Bob Goodenow into rare company. 

Putting it into Perspective

One of the dangers of being a consultant, especially one who focuses on cutting edge technology, is that it's easy to get wrapped up in a small, insular world.  In my case, that would be .NET. And at this moment in particular, Whidbey, Yukon and Indigo. Why is this a problem?  Because sometimes it blinds you to the problems that the majority of the programming world is working on.  To get a look at the world from the perspective of the 'masses', check out the results of this survey (thanks to Dino Esposito for the link).

One of the more interesting points is that almost 50% of the respondees come from 1-2 person shops.  Because I don't know the methodology behind the survey, I am suspicious of the accuracy of the percentages.  However even allowing for a large margin of error, I find that percentage significant. And I have no doubt that you will have to pry VB6 (if I can borrow a phrase) from their cold, dead fingers.  After all, small shops like that don't normally have the luxury of fooling around with new technology.  There is too much real work to be done.

That having been said, I have seen many times how great an improvement in developer productivity can be obtained through the proper use of the .NET Framework.  And these small shops would probably benefit the most from the productivity gains, if they can just be pushed to the top of the learning curve. My question is:  what is the best way to introduce these people, who are already hugely productive in their tool set, to the benefits of .NET?  Any suggestions out there, because I'm certainly open to them.

Getting your Message Across

For those of you who have ever had to deal with the 'how to get your message across' part of every presentation's creation process.  Enjoy (thanks to Chris Sells)



Why I write

Just came across (via Kent Sharkey and Gina Smith) a quote that very accurately describes the path that I took to get to where I am right now with my writing. 

"Writing is like prostitution. First you do it for love, and then for a few other close friends, and then for money." Moliere

Only a little bit for the money, at this point. But there's always hope ;)

So it has started - the auction for Aceh Aid, that is

The 10-day eBay auction for 30 world-famous .NET developers got under way less than half-an-hour ago.  Check out the auction at http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=5552696499