And the Winner Is...

I closed the polls on my contest at midnight (Pacific Time; apologies to my readers in Hawaii who thought they had three more hours to enter) on February 1. Next, I went through the 100+ entries and disqualified those that were over 100 words or lacked originality. I forwarded the remaining 26 to my boss, who volunteered to help me judge (she’s a sucker for a good contest: she also loves American Idol). She narrowed it down to eight, and from there I agonized over three. The winner of the free copy of Visual Studio 2005 Team Suite with MSDN Premium Subscription is...

John Dukovich of Green Moon Solutions!

It was a difficult decision. I like that John works for non-profit and socially-responsible organizations, and his company may actually be able to take advantage of Team System’s features.

Congratulations to John, and thanks to everyone who entered. Just a reminder that if you’re a teacher or student, you may qualify for free or dramatically discounted Microsoft developer tools through the MSDN Academic Alliance program, and if you run a software company, you can join the Empower for ISVs program.

permalink  7 Feb 06 12:42 AM · Comments (3) · Tags: .NET, Microsoft
Contest Update

It’s been three days since I announced my Visual Studio Team Suite / MSDN Premium giveaway. Since then, I’ve noticed that several other MVPs are planning similar giveaways. Come back often (or subscribe); I’ll alert you to any additional contests I discover.

I’ve received 67 comments so far and I have to say, I’m a little disappointed. The majority of comments say, essentially, “I really want it but I can’t afford it.” Come on, people! This isn’t a raffle; you need to give us a reason to choose you over someone else. A few have resorted to threats (“Choose me or else I’ll use Java/Linux”), promises (“Choose me and I promise to learn how to use it”), or pity (“Choose me or my children will starve.”) I was hoping to hear, “I work for this charity/non-profit” (I did get a couple of those) and/or, “I could really use these specific features of VSTS...”

There have been a few standouts: Aidan is working on an innovative Web project that deserves some attention. And I enjoyed Adam Wright’s poem. No promises, guys, but you made a favorable impression.

FYI, if you want the software because you’re a starving student or running a startup, Microsoft offers significant discounts to both academic institutions and software companies. If you don’t score a free copy from an MVP, you should check those out.

Update: Patrick Santry, owner of WWWCoder.com, is giving away several VSTS/MSDN licenses.

Update 2: XML guru Oleg Tkachenko has licenses to give away and is looking for ideas.

permalink  5 Jan 06 9:20 PM · Comments (5) · Tags: .NET, Microsoft, Microsoft
Contest: Win Visual Studio 2005 Team Suite with MSDN Premium Subscription

Microsoft has generously given me (and, presumably, other MVPs) a few licenses to Visual Studio 2005 Team Suite with MSDN Premium Subscription “to share with other individuals of [my] choosing in the community.” Now, I’m under no delusion that this is sheer altruism on Microsoft’s part; I’m sure they want to drive adoption of VSTS (and I want more readers!) Regardless of the motives involved, however, I have cool software to give away, and that’s where you come in.

In the comments to this post, tell me in 100 words or less why you should receive one of these licenses. I’ll keep the comments open until January 31, at which time a panel of judges (to be determined) will select a winner.

So, make us laugh, make us cry, give us goosebumps. Convince us that you deserve a free copy of this $10,000 software package (and in case you don’t win, start sucking up to other developer MVPs you know!)

permalink  2 Jan 06 10:02 PM · Comments (108) · Tags: .NET, Microsoft
Myth-Busting Busting

The Classic VB petitioners have posted a FAQ page explaining their goals and the motivations behind them. (Hint: Contrary to what you may have read elsewhere, the impending end of mainstream support for VB6 is not the primary issue!) On the lower portion of that page is a section titled, “Myth Busting” which includes a myth of its own:

To take a trivial example, there is no defensible reason why a QuickSort algorithm should need to be rewritten because you have a new compiler for a language targeting a new platform.

Is it true that a VB6 QuickSort algorithm must be rewritten in order to recompile it for .NET? Let’s see…

Here’s a VB6 QuickSort implementation I found on the Web:

Public Sub Quicksort(ByRef list() As Integer, ByVal min As Long, _ 
    ByVal max As Long)

    Dim med_value As Long
    Dim hi As Long
    Dim lo As Long
    Dim I As Long

    ' If min >= max, the list contains 0 or 1 items so it is sorted
    If min >= max Then Exit Sub

    ' Pick the dividing value
    I = Int((max - min + 1) * Rnd() + min)
    med_value = list(I)

    ' Swap it to the front
    list(I) = list(min)

    lo = min
    hi = max
    Do
        ' Look down from hi for a value < med_value
        do while list(hi) >= med_value
            hi = hi - 1
            If hi <="" lo then exit do
        loop
        if hi <="" lo then
            list(lo) ="" med_value
            exit do
        end if

        ' swap the lo and hi values
        list(lo) ="" list(hi)

        ' look up from lo for a value >= med_value
        lo = lo + 1
        Do While list(lo) < med_value
            lo ="" lo + 1
            if lo >= hi Then Exit Do
        Loop
        If lo >= hi Then
            lo = hi
            list(hi) = med_value
            Exit Do
        End If

        ' Swap the lo and hi values
        list(hi) = list(lo)
    Loop

    ' Sort the two sublists
    Call Quicksort(list, min, lo - 1)
    Call Quicksort(list, lo + 1, max)

End Sub

And here’s the same implementation in VB.NET:

Public Sub Quicksort(ByRef list() As Integer, ByVal min As Long, _ 
    ByVal max As Long)

    Dim med_value As Long
    Dim hi As Long
    Dim lo As Long
    Dim i As Long

    ' If min >= max, the list contains 0 or 1 items so it is sorted
    If min >= max Then Exit Sub

    ' Pick the dividing value
    i = Int((max - min + 1) * Rnd() + min)
    med_value = list(i)

    ' Swap it to the front
    list(i) = list(min)

    lo = min
    hi = max
    Do
        ' Look down from hi for a value < med_value
        do while list(hi) >= med_value
            hi = hi - 1
            If hi <="" lo then exit do
        loop
        if hi <="" lo then
            list(lo) ="" med_value
            exit do
        end if

        ' swap the lo and hi values
        list(lo) ="" list(hi)

        ' look up from lo for a value >= med_value
        lo = lo + 1
        Do While list(lo) < med_value
            lo ="" lo + 1
            if lo >= hi Then Exit Do
        Loop
        If lo >= hi Then
            lo = hi
            list(hi) = med_value
            Exit Do
        End If

        ' Swap the lo and hi values
        list(hi) = list(lo)
    Loop

    ' Sort the two sublists
    Call Quicksort(list, min, lo - 1)
    Call Quicksort(list, lo + 1, max)

End Sub

Can you spot the difference? (If you intend to point out that Integers and Longs are different sizes in VB6 and VB.NET, please include an example demonstrating how that difference affects the algorithm’s behavior.)

Here’s another:

Why not leave functioning code in VB6, and write new code in VB.NET?
That's a fine solution for the problems it fits. Many developers can indeed let existing applications linger in VB6 forever (assuming future OS changes don't break them), and concentrate all their efforts on developing new VB.NET-based applications. For the great majority of VB developers, however, there is continuing need to revisit and revise legacy applications. While Microsoft may no longer want to support VB6, great numbers of VB6 developers still intend to support their customers with ongoing bug fixes and application enhancements.

Ahem. What prevents VB6 developers from supporting their customers with bug fixes and application enhancements in VB6? Nothing. That’s exactly how my employer is supporting its customers’ VB6 code.

permalink 17 Mar 05 2:09 AM · Comments (5) · Tags: .NET, VB
Create Great .NET User Interfaces

I'll be speaking on the above subject at a meeting of the .NET Developers Association in Redmond, WA next Monday, July 12. Here's the blurb:

Even the most beautifully coded application will flop if people hate to use it. And they will, if its user interface is not designed with their goals in mind. What makes a great UI? How can you apply the principles that work so well for the guts of an application to its front end? I'll show you specific techniques (with code!) that you can use immediately to reduce complexity for your users and improve your presentation layer's efficiency and maintainability.

More details here. Next Monday is also my first day at a new job, so it'll be a busy day: work until 3 p.m., drive to Redmond, give my talk, drive home, and go to work Tuesday. Yikes!

permalink  9 Jul 04 10:16 AM · Comments (1) · Tags: .NET
Department of Redundancy Department

I first learned of the release of Visual Studio 2005 Beta 1, as well as Express Editions and the MSDN Feedback Center, shortly after midnight this morning. Since then, I've seen it reported by dozens of bloggers, and the day is young. ('We blog more by 8 a.m. than most people do all day.') If you're a .NET blogger and you haven't yet written about today's new releases, please don't!

What is the thought process that leads one to blog about an event of this magnitude? 'If I don't blog this, nobody will hear about it!' Or perhaps, 'Ooh, if I hurry and blog this, I'll be the first, and I'll get lots of links and notoriety!' Please.

Before you post (not just today, every day), I urge you to peruse the home page at weblogs.asp.net or do a search at Technorati. If you don't have anything to say that hasn't already been said several times, do us all a favor and step away from the keyboard. Thank you.

permalink 29 Jun 04 8:31 AM · Comments (7) · Tags: .NET, Blog, Rants
I have a dream...

Julia Lerman laments the VB.NET stigma and C# elitism being perpetuated by the trade press. In particular, she refers to this editorial in asp.netPRO magazine. I found that editorial troubling as well. In it, Elden Nelson writes:

Whether it's just or not, C# developers make more money, get work more easily, and enjoy more prestige than VB developers.

He then recommends that VB.NET developers learn C# at their earliest opportunity, presumably to cash in on the cachet.

Now, I don't disagree that it's a good idea for VB developers to learn C#. But I do object to asp.netPRO's tacit endorsement of language bigotry. What if the editorial had said:

Whether it's just or not, white developers make more money, get work more easily, and enjoy more prestige than minority developers

(Or, as one of the commenters on Julia's blog suggests, "...male developers make more money, etc. than female developers")? If the situation is 'not just,' as Nelson implies, why isn't he working to change it?

permalink 15 Aug 03 9:22 AM · Comments (1) · Tags: .NET, Rants, VB
A Solution to the VB.NOT Crowd

Unhappy with the state of VB.NET? Here are two things you can do about it:

permalink 14 Jul 03 3:42 PM · Comments (1) · Tags: .NET, VB
Readers Respond to "Is Inheritance Overrated?"

I've received some good feedback from my article, "Is Inheritance Overrated?" The real issue, it seems, isn't inheritance, but rather strong typing. One of the requirements of this project is that it be more or less self-maintaining: new content types will be added fairly often; my bosses don't want me to have to go spelunking in the code every time that happens. An advantage of my generic framework is that the app's users can maintain the system simply by creating templates and editing data; few (if any) changes to the underlying code will be required. David Bayley thinks the generic framework will be more difficult to maintain than a strongly-typed object model. What do you think?

permalink 29 Nov 02 5:08 AM · Comments (1) · Tags: .NET
Is Inheritance Overrated?

I had looked forward to using implementation inheritance for the first time in my current project. Is it just me, or is inheritance more trouble than it's worth? [Read more]

permalink 27 Nov 02 5:49 PM · Tags: .NET, VB