The Dilbert Principle and Emotional Context

April 16th, 2008

Ted Neward posted a great article today “Do you fall prey to technical folk etymology?” in which he suggests (correctly) that we based our technical decisions on emotional context.

Ted is a fine writer, and his points intelligently argued. I am perhaps a bit more direct (crass?) and less politically correct, so I thought I might elaborate a bit on his thoughts. It is not just that our technical decisions are influenced by emotional context. In fact, the Dilbert Principle applies - we are all sometimes idiots.

As technologists we delude ourselves into thinking that we make clear-headed decisions based on logic. Nothing can be further from the truth. Not only are we influenced by emotional factors, they are often the dominant factor in our technical choices.

I remember noticing even as a kid how fads would come and go in our neighborhood. One week it would be spinning tops, another paper airplanes, another endless games of Monopoly (today’s equivalent would be video games and web sites - and I date myself intentionally for reasons that will soon become apparent). Technology fads operate in much the same way, though the time span is measured in months and a few years instead of weeks and months.

The C# vs. VB .NET debate has been raging for years, with the VB .NET folks claiming (correctly) that it’s a fine language and raging that Microsoft insiders refuse to give it the support and respect it deserves. Meanwhile the C# folks feign obliviousness (oh, we didn’t provide VB .NET support or samples for that new SDK? Oh… well… uh… we didn’t have the resources?).

This misses the point entirely. The C# vs. VB .NET dilemma is purely emotional. The VB .NET folk (of which I am one) will continue to use the language because, gosh, it really is a bit more productive than C#. Besides, any good VB .NET programmer can read C# examples or even code C# if necessary because we know it’s all about the framework, and any half competent VB .NET programmer can do C# in a matter of hours, if not days.

Meanwhile the C# developers within (and outside of) Microsoft will ignore, denigrate or avoid VB .NET because, let’s face it, it gives them something to feel superior about. When a C# developer says “VB .NET is the language of idiots”, by implication that developer is not an idiot. That’s a strong emotional statement - especially given that the rapid pace of technology change means that each and every one of us spends more and more time feeling like an idiot (which we are, in the sense that the percentage of available knowledge that we know continues to decrease because what there is to learn increases faster than anyone can possibly learn it - I’m just one of the relatively few people willing to admit it openly).

If a C# programmer, can gain some emotional comfort to offset this by labeling VB .NET developers idiots, who can blame him or her?

I’ve reached a point in my career where many working software developers are younger than I am (many of my contemporaries have become managers or architects, and while I do some of that, I still write lots of production code - mostly because coding is what I enjoy most). I’d always bought into the idea that software development was a “young person’s game” and wondered how long I’d be doing it - but I’m beginning to wonder if that too was an emotional belief unfounded in truth. I’ll write more on that later.

What I do know, that many younger programmers don’t, is that the amazing “new” technology that they are excited about that is sure to change software development forever is, more likely than not, just another fad. Moreover, I also know that most of the new technologies coming from major vendors (including Microsoft), though always labeled as “new technology that is going to change the way people develop software or use technology” is, more likely than not, just marketing hype that is trying to create another fad.
Ok, that’s phrased a bit cynically - because it makes it sound like they are being manipulative. They aren’t (mostly) - it’s just that they, like everyone else, are viewing the technology through an emotional lens. My emotional lens is scarred and cloudy, not because I’m a pillar of reason (I’m not), but because after you’ve lived through enough fads you get better at spotting them. Or put another way, once you’ve been burned often enough you start thinking twice about what part of the technology furnace you shove your hand into.

I don’t know that I’ve gotten better at making reasoned technological choices - but I’ve gotten a lot better at avoiding emotional and unreasonable technological choices - and in figuring out when it is ok to make a technology choice based on emotion.

Ted asks at the end of his post:

“In short, I actively seek to defeat technical folk etymology, if only in the small area I personally can affect.

Do you?”

You can’t defeat it - emotions will almost always trump reason. But sometimes you can co-opt it. Fads aren’t defeated by reason - they burn themselves out naturally only to be replaced by the next fad. Just remember that when you’re trying to prevent someone from making a terrible choice based on emotions, it’s not enough to use sound reasoning - you need to come up with an emotional argument as well if you hope to succeed.

The Email Encryptor Reborn

March 2nd, 2008

Email obfuscation using Javascript is a popular way to hide Email addresses from spam-bots. One of the most popular of these was written by Jim Tucek at the Academy of Science at St. Louis. Unfortunately he hosted it on one of their student pages, and the other day (during a website move), all of those pages were taken down, leaving web developers unable to create new Email addresses for sites that use the script. After getting a panicked call from a friend (who has many clients on the script), I decided to step in and see what I could do to help. The result can be found on my new Email Encryptor page.

This actually posed an interesting challenge. Jim used RSA encryption (about 10 bits) to encrypt the strings. I’m not sure why he chose an asymmetric algorithm instead of a symmetrical algorithm - as the primary result of this choice is to make it hard to create new Email addresses (in a symmetric algorithm you could use the decryption key to encrypt as well - so the loss of the original page would have had little impact. In an assymmetric algorithm having the decryption key offers no help). Fortunately, the algorithm itself is reasonably simple and widely published. Though I use cryptography a great deal, this was actually my first time doing the math, and translating some of the mathematical requirements into computer algorithms took a bit of thought. It was also the first time I’d really thought about modulus math. Finally, there was the Javascript coding itself. Though my primary expertise remains VB .NET and C#, I’ve gotten to do quite a bit of Javascript in the past couple of years (both in web projects and some Ajax work), so that part was relatively simple. By the way, I love the Visual Studio 2008 Javascript debugger - it doesn’t get much attention, but it’s very cool. As a side-effect I also got a nice prime number example to use next week at SD-West when I talk about the TPL, I mean “the Parallel Extension to the .NET Framework”.

So ultimately I was able to get it to work. It’s now live and hopefully will serve as a good resource to those left stranded when Jim’s page went down, and the rest of us in our never-ending battle to fight spam.

Call Me Nostradamus

February 1st, 2008

See, I knew it all along: http://www.danappleman.com/?p=56

Coding Time

November 2nd, 2007

They say life is a balancing act. Certainly one I share with most of you is figuring out how to balance time between learning new technology and actually getting work done. This is particularly challenging for those of us who spend all or part of our time writing or teaching others - especially at times when another version of Visual Studio and the .NET framework is heading towards us with the inevitability of freight train with no brakes.

Lately things have been a bit quiet here. I haven’t posted much on my blog. I don’t speak at too many conferences (though I will be at devconnections next week and probably in Spring - it’s actually a very cool conference, so I do encourage you to consider it if you’re looking for one to attend). I’m not writing much.

Why?

Well, I know this may sound odd coming from someone who obviously (if you look around this site) has very diverse interests. But the truth is that despite the time spent writing, speaking, developing other sites (like searchdotnet.com), I’ve always been and continue to be primarily a coder.

Read the rest of this entry »

This Old Machine

June 6th, 2007

I’m still looking for the perfect portable computer.

When I’m traveling on business, I’m like most “road warriors” - I have a full featured powerful laptop that can handle not just the basic Email/web stuff, but development work, run virtual machines, etc.

But sometimes I travel for fun, even take a short vacation now and then. And on a vacation, a developer laptop is like a sailing with your anchor dragging behind you. You’re constantly worried about it getting lost or stolen, or breaking. That’s not much fun.

My needs for a casual laptop are different. It has to run Windows and be full featured, but doesn’t have to be fast - I won’t be doing any serious development work on it. It has to be light, maybe a few pounds. Oh, and it has to be cheap - so if I lose it or it breaks or is stolen, it’s no great loss.

There are some very nice ultra-portables out there, and more coming, but they aren’t cheap. In planning for this summer, rather than shopping for something new, I decided to explore another alternative. I have a Thinkpad 240 lying around that I hadn’t used in a while. Could it be brought up to date?

So for those of you who are interested in a nostalgic trip into ancient (2000) technology, or picking up one yourself ($75-$125 on Ebay), read on…

Read the rest of this entry »

The MSDN Time Machine

May 27th, 2007

Just posted this new article on SearchDotNet.com.

Microsoft + Yahoo = Microhoo?

May 4th, 2007

Every now and then a news item comes by that I find just hysterical. Not so hysterical, mind you, that it couldn’t happen. But funny nonetheless.

I could not resist speculating on the consequences of a merger between Microsoft and Yahoo, to be named, I presume, Microhoo. First, the new company will need a logo, which will inevitably look something like this:

Microhoo Logo

The advantages of such a merger is hard to deny. I can easily picture Steve Ballmer in a cowboy suit yelling “Microhoo!” in their T.V. commercials, while a chorus of CGI characters chant “where do you want to search today?”.

Frankly, it’s hard to see the benefits to Microsoft of such an arrangement, other than to provide the Office folks with a model for yet another completely new and incompatible user interface for Office 2009, this one with each application so full of custom user definable configurable widgets that the only thing missing will be space for the actual application content (not to mention the incorporation of annoying popup and layered adds that will appear on documents while you work on them).

The benefits to Yahoo, however, are undeniable and should strike terror into the execs at Google. With insight from Microsoft’s marketing folks, Yahoo will quickly be able to launch a new search service modeled after Microsoft’s product development techniques - one that is able to search sites that will not be launched for several years yet.

Will Googleclick (Google’s new name after purchasing DoubleClick) be able to use it’s total knowledge of the intimate details of every person’s life be able to overcome the challenge of Microhoo’s total control over every piece of computer hardware in the universe?

Only time will tell..

Microsoft and Blogging

April 27th, 2007

I’ve often stated that the single most important technical innovation at Microsoft was the MSDN library. Many of you probably can’t remember the sheer pain of developing under Windows before it existed. Manually searching through thousands of pages of reference guides and books slowed things down to a crawl. Today, MSDN is our primary reference - even if most of us use Google as its front end.

But over the past couple of years a quiet revolution has happened at Microsoft that is starting to have a huge impact - especially on more advanced developers or those working with newer technologies. An impact on discoverability that is perhaps second only to MSDN itself.

We all know about Microsoft’s initial love-hate relationship with blogging. And of course, former Microsoft evangelist Robert Scoble was probably the single greatest driving force in getting Microsoft to recognize the value of blogging as a communication tool. But Robert was an evangelist, and while he may have exposed us to interesting technology, that’s not where the really important change happened. The really key change is that at some point it became common (encouraged?) for Microsoft developers to blog about their work. I suspect Robert helped bring about this change as well.

When I started working with Microsoft technologies, the developers lived in an ivory tower (with individual offices, of course), and it was extremely difficult for anyone not at Microsoft to actually communicate with them directly. Worse, anything they knew about the technology they created could only be released to the world after going through the filter of the product documentation group, whose expertise often seemed more in the area of obfuscation than communication.

Now, a few years later, the bloggers on the developer team have generated a substantial body of work. And while they do talk about all kinds of things, many of the posts are about the technologies they are working on - and as the ones who wrote the code, the information you’ll find there can be incredibly valuable.

It’s for that reason that when I built searchdotnet.com, one of the first sites I added was blogs.msdn.com - and that I tagged the entire site as “by experts”. These blogs don’t always come up on the top of the results, but I’ve found that the tougher the problem is, the more likely it is I’ll end up there, reading some incredibly detailed explanation of why a particular design choice was made and as a result what I’m trying to do can’t possibly work.

DotNetrocks, Gadgets and a Facelift for SearchDotNet.com

April 17th, 2007

It’s been a busy couple of weeks for SearchDotNet.com. It started late last month when I was interviewed for DotNetRocks.com while at the DevConnections show in Orlando Florida. The topic of the interview was mostly about discoverability - how we as developers go about discovering information and existing solutions to problems. We did stray into various other topics, including some stories about earlier adventures (misadventures?) from way back when….

Shortly after the interview, a listener (at least I believe it was) posted a comment on my post describing the launch of SearchDotNet.com where he noted “A little Google homepage widget would be a nice addition”

What a great idea. Of course, I’d never actually written a “gadget” for Google, but it turned out to be remarkably simple, at least as far as simple gadgets are concerned. First I wrote a “Universal” gadget from use on custom Google Homepages. These were also supposed to work on Google’s desktop, but it turns out the latest version has a bug that prevents this for now. So I went ahead and created a Google Desktop gadget, that’s a somewhat trickier process.

While working on the gadgets I also realized that the site still had the minimalist (i.e. ugly) user interface I’d thrown together on the day I launched. It may seem odd that I hadn’t noticed this, but while I use searchdotnet.com all the time, I actually use it from the browser search box (the site has implemented OpenSearch from almost the beginning, so it’s always available as one of the search providers on my browser).

So I spent the past few days cleaning up the site. Not that I’d call it beautiful, but it’s quite a bit better than it was. More important, it now makes proper use of both CSS and .NET master pages, so I’ll be able to more easily update the design later.

I’d also like to take this opportunity to thank readers who have recommended additional sites for searchdotnet.com - I didn’t add all of them (there’s a new section of the site that discusses inclusion criteria), but I did add many of them, particularly some great new experts sites.

Upgrading to Vista - Beyond Developers

March 8th, 2007

Perspective is important. I recently commented on Vista migration from a developer perspective. But as developers, we are often asked for advice from others who have different perspectives. So I thought I’d take a few minutes and elaborate further on the Vista migration story.

As a developer, the computers I use have certain characteristics that I think are common among most software developers - at least those in the Windows world. My machines tend to be reasonably powerful, and reasonably new. The software I use also tends to be very recent - in may cases pre-release. Older software, especially that used to perform builds, is relegated to stable systems or virtual machines.

When advising others, whether they are general users, small businesses, or enterprises, I take into account that their needs and perspectives are very different. Their systems may be older, and they often have favorite or legacy software which can be difficult, expensive or impossible to upgrade.

In my previous post I said:

Read the rest of this entry »