Rants, rambles, news and notes from another geek

Yet Another Religious War: Keyboard vs Mouse

OK, I admit it. I’m a keyboard zealot. I run my Visual Studio environment almost entirely with keyboard shortcuts. I have all of the docking panels collapsed and can open any of then with a keystroke. I prefer gvim to notepad because then I can use the ‘h,j,k,l’ keys to navigate and don’t have to take my hand off the home-row.

I wasn’t always this way, however. I used to be firmly in the point-and-click camp (back in the heady days of Windows 3.11 and VB3). But then I saw a few different developers who absolutely amazed me with their ability to “drive” using the keyboard alone and I decided to switch.

I have successfully “converted” a few others to my religion along the way, although I have to say I never actually resorted to my favorite threat: “I’m going to cut every mouse cord on this team.”

But there are also people, some of whom are actually very good touch typers, who swear by the mouse. In fact the reason I’m writing this post at all is because of an article I found on CodeProject called Go Back Add-in for VS.NET 2003. I surfed over to the article after seeing James Avery’s blog post about it. James’ comment stating that&nbsp_place_holder;“the author of the tool is pretty passionate about what he wants” peeked my interest so I went to take a look.

While the add-in is interesting and is in fact different than the built-in Navigate Backwards command, imagine my horror when I saw this:

The Navigate Backward command is the replacement for the “Previous Location” command in VB6. It is an improvement, but has several quirks (that I don’t like). Specifically:

  • It is not available on the editing context menu (so it’s either move the mouse pointer up to the top of the VS window to the standard toolbar or take your hand off the mouse to type Ctrl+-), which is inconvenient.
  • Every text insertion point is recorded, so the navigation history gets rather long as you click around in a source file

Wow. I admit that I’m being a bit of a keyboarding hard-liner, but I can’t believe people work this way.

I should know better, of course. I once worked with a guy who actually taught himself to use the mouse left handed&nbsp_place_holder;and learned to type with his right hand alone. “That way,” he said, “I don’t have to take my hand off the mouse to type.” He pointed me to the site aboutonehandtyping.com&nbsp_place_holder;where the author claims, “I do from 40 - 80 wpm (depending on how much coffee and sleep I’ve had) with just one hand on a standard NORMAL keyboard.”

Now that is cool. I must admit that if I could use the mouse in one hand and type 80wpm with one hand, I might consider doing it. But how likely is that? I’m having a hard enough time getting past 40wpm with two hands. But, of course, I only learned to touch type this year, so give me a break.

Geek Notes 2005-03-23

As I said this morning, I haven’t been reading blogs much, so I haven’t had much to say in Geek Notes, but I have been collecting things in my “Geek Notes working copy” in BlogJet that you might enjoy, so here’s what I have today.

  • MakeMeAdmin Follow-up - Aaron Margosis has posted an important follow-up to his MakeMeAdmin tools and also explains some very important issues regarding the “default owner” issues on Windows XP. A must-read post if you are running non-admin.
  • iTunes SDK for Windows - As I mentioned the other day, I’m doing a lot of bittorrent downloads of live music. The goal for me is to get it into iTunes so I can get it into my iPod Shuffle. The conversion from FLAC/SLN to MP3 is easyΓǪ a quick batch file and I’m done. But I wanted to do the iTunes import too. Looks like it may be possible with the IITLibraryPlaylist::AddFiles method. We’ll see. [via Dan Crevier]
  • Skeleton Sketches - This is a cool gallery of sketches done Michael Paulus. “I decided to take a select few of these popular characters&nbsp_place_holder;[Ed: from 60s cartoons] and&nbsp_place_holder;render their skeletal systems as I imagine they might resemble if one truly had eye sockets half the size of its head, or fingerless-hands, or feet comprising 60% of its body mass.” [via AaronX]
  • Giant Steps - My good friend Karl Hungus (sic) sent this to a mailing list we are on together. It is an amazingly cool Flash animation put to the music of John Coltrane’s Giant Steps.
  • How Not to Teach Your Kids About Gun Safety - I can’t believe this guy kept going with the demonstration after shooting himself in the legΓǪ or is it a fake? Looks pretty real.


Thursday last week I went in to get my vasectomy and spent last weekend laying down as much as possible. A number of friends had warned me to be prepared for some serious pain, but honestly it wasn’t that bad. The procedure took all of 15 minutes and I was in the car on the way home less than an hour after arriving at the doctor’s office.

The doctor used an interesting “no scalpel” technique which the nerd in me had to research. I found an article at the Texas Medical Center website which explains it pretty well. My dad had the same technique done on him and like me didn’t have a lot of pain or issues.

Anyway, instead of spending that time reading and writing blogs, I chose to watch a bunch of movies (the entire LOTR Extended Edition DVD set and The Incredibles) and started programming a game in Ruby using RUDL.


Comment Spam Returns

Interestingly, my CAPTCHA solution to comment spam seems not to be sufficient any more. I’ve seen the probing comments for the past few weeks and then this morning I got hit by two spam messages.

I need to review my logs, but the question I need to determine is: Did they get around my CAPTCHA with an OCR solution or did they come in via the CommentAPI endpoint?

I’ve been wondering how long it would take for the spammers to realize that the CommentAPI is a ready-built spam API. The fact that they were using HTML forms was obviously due to their lack of understanding of the new technology. But why push to a form when you can just POST and XML document to a webservice?

Once I figure out what they’re doing I’ll post a follow-up. If they are coming in throught the CommentAPI endpoint, then I’ll have to close it down. Sorry. I will not start moderating comments. I just don’t believe in that approach.

Lyrics Quiz

Ever listen to a song a hundred times and not really catch the lyrics? Well it happens to me all the time.

I caught these tonight while listening to my iPod Shuffle and loading the dishwasher. Cool words.

Without using Google, I wonder if anyone (other than Brad Wilson) knows what the band/album/song is?

The music of the future
Will not entertain
It’s only meant to repress
And neutralise your brain

Soul gets squeezed out
Edges get blunt
Gives what you want

Now the sound of music
Comes in silver pills
Engineered to suit you
Building cheaper thrills

The music of rebellion
Makes you wanna rage
But it’s made by millionaires
Who are nearly twice your age

Good luck!

Comments on the EntLib/Log4Net Feature and Performance Comparison

I’ve been pinged by a few friends and former colleagues regarding Loren Halvorson’s comparison of the EntLib Logging Block and log4net.

As a response, the EntLib Product Manager, Tom Hollander, has posted a write-up on his blog. Go take a look.

In summary, Tom says:

ΓǪit is obvious that in the particular scenario that was tested, Log4Net has some efficiencies over EntLib. I’m not disputing this, and there may well be some opportunities to optimize EntLib in the next version (which we’re working on now - you can submit your ideas as comments to my earlier blog posting). Still my point is that you cannot draw any conclusions from this test on whether this makes EntLib or Log4Net better for your app - the only way to get this information is to do your own homework, taking your own app’s functional requirements and perf goals into account.

Now playing: Phish - Runaway Jim

The .NET Guy Takes the Red Pill

Man, this has been hard to keep under my hat. Brad Wilson&nbsp_place_holder;is joining the patterns & practices team. As he says in his announcement post:

When Peter left for the PAG group at Microsoft, I confidentially told him that he had to let me know when the next opening came around. I had to leave the startup I’d been working at for 2 years right around that time. I took a contract with NewsGator, and set about to start finding something that was in line with my career goals. I talked to a few places about getting into corporate developer training. However, PAG was the ideal job for me, so I was over-joyed when Peter told me they would be hiring an SDE.

And, as I blogged a while back, we had an opening for an SDE slot. Brad sent in his resume, interviewed, was offered the position and has now accepted.

Very cool. We are really looking forward to having him.

Geek Notes 2005-03-11

Whew. Been kinda busy finishing up an internal tooling project lately, so I haven’t really kept up with the blogs well. A few well placed “Mark All Read” and I’m back in control.

On the personal side of things, my wife has become an active blogger. She is one of the funniest people I know and I’m glad she’s back sharing her stuff with the world. The kids are doing well. Hadley had her third birthday last weekend and I think this was the first one where she got it. She’s already talking about what she wants for her next birthday. And the boy, Finn, started crawling sometime in the last week or so. But he’s so damn stubborn that he yells when he has to crawl. He wants you to hold his hands so he can stand up! I suspect he’ll be walking before his first birthday if he keeps this up.

  • Source for a C# Compiler in C# - It compiles itself, which is pretty darn cool, eh?
  • Generic Delegates and Generic Methods - Christian Nagel shows some very cool things you can do with generics in .NET that are a bit more than strongly typed collections.
  • Bittorrent Simulator - I found this thing after Googling for “How bittorrent works”. I’ve been playing around with various bittorrent clients, not for anything illegal, but for downloading (legal) live music “bootlegs” from bands like Phish, Widespread Panic and moe. (Yes, Aaron, I’m back into that phase again.)&nbsp_place_holder;Anyway, fire up this java applet and add one seed and three leechers. Wait for a while. Watch how they move the colors around. Then add some more leechers. Watch a while. Etc. Very educational.
  • Processing&nbsp_place_holder;- This is the language/environment that the Bittorrent Simulator was built in. Very interesting. It seems to be a java-like language focused on teachinng the fundamentals of computer programming in a visual way. I’d like to come back and take a further look at this some day.
  • Would You Like Some Religion With Your Politics Today Sir?&nbsp_place_holder;- Personally, I agree with Brent on this. There is too damn much “my lord and savior” in politics these days.
  • Screw the RIAA and the MPAA - I do believe that artists should get paid for their work, but instead of dealing with that issue, they have chosen to go after the technologies behind P2P. Check out this legal brief from the Grokster case where the author lights into the RIAA and MPAA. [via Boing Boing]

And last but not least is this: The Industrial Chicken Catcher. Unfortunately, it looks like they’ve pulled the video, which was really the best part. It showed this thing gobbling up a room full of live chickens like a Dyson Animal sucking up dog hair. Maybe someone has a .torrent for it?

Visual Basic 6.0 Source Code

Ever since I ran across this group of MVPs who are petitioning Microsoft to re-establish development and support of VB6, I’ve been thinking about what the right answer is to their request.

For the record, I don’t think what they want is a good move for the Microsoft development community at large. Here is some of the text of the petition:

We ask that Microsoft further develop VB6 and VBA, in order to meet these objectives (in order of perceived importance):

  1. Preservation of assets

Future versions of VB6/VBA should:

  • Use existing VB6/VBA projects without extensive conversion;
  • Support the core VB6/VBA Visual Basic language and syntax;
  • Compile existing projects and produce identical results.
  1. Continued support for the Visual Basic language

Microsoft should demonstrate a commitment to the core Visual Basic language. This core should be enhanced and extended, and changes should follow a documented deprecation process.

  1. Ease of migration of unmanaged VB/VBA code to VB.NET

The decisions of if, how, and when to migrate code to .NET should lie with the customer. Some may choose to remain with unmanaged VB, especially for legacy code bases. Some will use only VB.NET, others a mix. A future version of VB6/VBA should treat all these options as valid, while making it easy to move among them.

Now, while this may feel like&nbsp_place_holder;good idea to developers who just want to draw forms and drag and drop databases, my first response is, you can do that in .NET and my second response is, you shouldn’t be doing it anyway.

But that isn’t really what I want to propose. Rather than asking Microsoft to release and support unmanaged VB.x into the future, how about thisΓǪ

Petition Microsoft to release the source to VB6. Why not? We (MS) are done with it. And there have been discussions of releasing the WinForms code, so why not?

There is one significant problem with this idea, of course. I’m guessing that the VB6 source was written in C/C++, so they will have to find some other group of people to maintain the source for them.


Maybe that wouldn’t work after all.

DISCLAIMER: I do not work for the Visual Basic team. As far as I know, there are no current plans to release the source code for VB6 to the public. Sorry.