Some of MY Programming Book Recommendations

Well, I shouldn’t say “recommendations,” since I’m just recommending one book: Testing Computer Software (Second Edition) by Cem Kaner, Jack Falk, and Hung Quoc Nguyen. This is an utterly invaluable book for anyone who ever aspires to be more than just a code monkey.

Technically speaking, this book was written more for “testers” and people who manage testing teams rather than “programmers” but as long as you keep that in mind it shouldn’t be a problem.

This book goes over everything that a good software testing team should do – from bug reports (including how a bug reporting system should be designed) all the way up to how to hire and manage a team of testers. There’s also a lot of stuff in there in regards to dealing with being a tester – because too often in a corporate environment, testers are really looked down upon, especially when finding bugs near the end of a deadline.

All in all, just a really great book.

Firefox Problems?

UPDATE: I’ve already gotten a very thoughtful reply to this post – check it out in the comments below.

Lately I’ve been having some trouble with Firefox 3 – basically, when you click a link in some 3rd party program (that is, not in Firefox itself) and it tries to launch Firefox (because it’s not currently open), it hangs. Apparently, it’s hanging while trying to show the profile manager.

The Firefox Profile Manager with 3 profiles

I use the Firefox Profile Manager to keep multiple profiles – I have one for when I’m working, one for me (personally), and one for Amanda – it’s nice because it keeps saved passwords, bookmarks, and so forth all separate, without all the hassle of full-blown Windows user profile switching. This way, I can exit the browser, get up, and Amanda can sit down and load her profile and her sites quickly.

I filed a bug on this, only to find out that it had already been reported (under a totally different description that no one in their right mind would have found without inside knowledge, but that’s neither here nor there) and fortunately it had been fixed and would be available in the next version of Firefox (3.1). The next version was not going to be released for a while yet, though, so I did some more digging on the issue.

After doing some digging and searching, I came across some disturbing comments:

Do not reopen this bug. Public opinion doesn’t really matter, it’s a design decision that has been made. (Comment 12)

Yikes. That’s really harsh – and not at all what I’d expect from an Open-Source project as high-profile as Firefox. In fact, it reeks of the same sort of developer arrogance that infected the Pidgin project not too long ago – and that ultimately caused a fork in the codebase over one very simple, minor UI change – but one that the user base and developers had very, very, very strongly held opinions on.

There’s also a lot of this sort of sentiment:

For windows XP and linux users, the typical users will presumably use XP login accounts to separate individuals.

Which, as I (and many other people) have pointed out, is a very narrow and incorrect view. Switching profiles in the browser takes a second. Switching user profiles in the OS can take much, much, much longer. And when all you want to do is separate browser profiles (not whole user profiles), why should you be forced to use the larger, more cumbersome method – especially when the more precise, quicker, easier one already exists?

Now, being incorrect is one thing – but a narrow view like this is bad, bad, bad. It’s this sort of thinking that results in UI disasters (having recently read The Design of Everyday Things has made me very cognisent of this sort of thing). When developers try to second-guess their users, they often get it (badly) wrong.

I don’t want to see this happen to Firefox. It’s not just about the profile manager – that’s just how it got started. I don’t want to see this sort of mentality infect the project, turning developers against their users (and vice versa). I agree with Jeff Atwood on the idea of “Strong Opinions, Weakly Held.” I can totally understand the technical reasons why the developers of Firefox would want to abandon the profile manager entirely – but being technically difficult isn’t an excuse that goes over well with users, who don’t care how complex something is on the inside – they just see how it works. And in this case, they’ve seen it work, used it, and like it. So there’s no excuse for trying to get rid of it, just because it has some difficult problems. Figure it out! Do something crazy! Re-work the entire profile system from scratch! After all, that was done with bookmarks in Firefox 3 – why can’t it be done with profiles?

Unfortunately I’m just a lowly user – I have no power within the Mozilla Firefox project (surprising, I know, for a community-driven, open-source project). I can only voice my opinion.

Which is just what I’ve done. Now, I just hope that the Firefox developers are still capable of listening…

UPDATE: In case anyone thinks I’m bashing Firefox or the developers here – I’m not. I’m just being… questioning… as part of keeping people on their toes. Sort of like how you should occasionally question your leaders. And if that doesn’t satisfy you, let me offer you this:

If we shadows have offended,
Think but this,—and all is mended,—
That you have but slumber’d here
While these visions did appear.
And this weak and idle theme,
No more yielding but a dream,
Gentles, do not reprehend;
If you pardon, we will mend.
And, as I am an honest Puck,
If we have unearned luck
Now to ‘scape the serpent’s tongue,
We will make amends ere long;
Else the Puck a liar call:
So, good night unto you all.
Give me your hands, if we be friends,
And Robin shall restore amends.

Windows Still Works for Me

I ran across this story from Ernie the Attorney today about a lawyer who was having trouble with Windows and got some rather strange advice from a “Windows zealot” in a discussion group:

The Windows zealot tells him that if he switches to a Mac just to avoid those problems he’s basically ‘throwing the baby out with the bath water.’ Then, after carefully considering the best way to solve all of the guy’s supposed problems, he offers this amazing solution:

“Do a fresh install of Windows XP. This will ultimately be quicker than trying to figure out what is going on exactly. Once installed update Windows until it will update no more.” (emphasis added)

Between that story and things like “How to install Windows XP in 5 hours or less,” it sort of got me thinking – what is wrong with this picture?

Let me just say from the start: I use Windows. I like Linux (both for its principles and for its intrinsic qualities) and I appreciate Mac OS X (being itself based on Unix), but I use Windows. That said, I do not recommend any one OS over another – it all depends on what you’re looking for. So let’s just say that I’m neither a zealot of any particular OS, nor a “basher” or “hater” of any particular OS, either.

When I hear stuff about the “Windows half-life” and the idea that having to completely re-install the OS on a regular basis is a “normal” thing, I just can’t understand it – because, frankly, my experiences have been totally different.

Let me explain:

The copy of Windows that is running on my current computer is the same one that was installed when it came from Dell’s factory – it has never been re-installed, ever. And I’ve owned it for almost 3 and a half years. My previous computer ran for nearly 6 years without an OS re-install.

Let’s also remember that I only own one computer, and I use it every day – and I do mean “use.” I do software development on my computer, I install beta versions of programs, I install games (admittedly not many, but still), I do some video editing, I do a little bit of music editing, I use bluetooth headsets and IP telephony, I use the Windows Media Center application… I mean, well, just look at a few of my start menu branches:

Get the picture?

Oh, and I should mention – my computer is running just fine after 3 and a half years, thank you.

In my experience, all that it takes to keep Windows in good running order is some common sense – don’t install junk, and just… use your brain (especially when it comes to email and some types of web sites), and you should be OK.

But… maybe I’m the exception to the rule? I am a software developer, after all – if I see trouble with a program, I’m liable to just fire up a debugger and dive right in and figure out exactly what’s gone wrong.

To me, when someone suggests re-installing the operating system as a “fix,” it’s like being slapped in the face with a dead herring – I mean, seriously, WTF? Oh, sure, it’s possible for malware and viruses to get their little tentacles deep down in your system so that the only reasonable way to get rid of them is to format & re-install, but if you use common sense, you wouldn’t have malware and viruses to begin with! (And I submit that if there was the same malware and viruses for Linux or Mac OS, you’d end up having to do formats & re-installs for those systems as well.)

Are people just getting lazy when it comes to taking care of their Windows PCs? Or am I the only one who has gotten long life from a Windows installation?

So Far, So Good (Mostly) With Mozy

So I’ve been using Mozy for a little over a month now, and so far I’m pretty pleased with it. It did take a while to do the initial backup, but that’s to be expected – I do have a lot of data to back up!

I liked the fact that I could schedule Mozy to run at “reduced speed” during the work day when I’m using my computer – that was, in fact, a deal-buster. I need all of my bandwidth when I work!!

That said, there was one minor annoyance with Mozy – although I didn’t realize it was Mozy at first.

I had noticed that when I selected several files in Windows Explorer, and went to right-click them, Explorer would freeze up for up to 30 seconds. At first I just thought it was because the files I was currently selecting were on a remote server, but later I noticed the same thing was happening with local files as well.

Well, I’m no stranger to troubleshooting strange things in Windows, so I broke out some tools – namely, Process Monitor and Process Explorer. With these two tools, I was able to see that… Explorer was taking a long time to process my request. Digging in a little bit deeper, I saw that it was a shell extension to Explorer that was consuming all the time. Tracking it down was a little tricky since I’d never done shell extensions, but eventually the trail lead to… Mozy.

OK, so Mozy is slowing things down. I could understand why – whenever I opened the configuration screen for Mozy, it always took forever to open. I don’t know why, but I can guess – it’s connecting to the on-line service and reading a whole bunch of stuff, both from the on-line service and from my computer (presumably refreshing the list of files to be backed up, which is quite extensive). Now, why it was doing this when I right-clicked I don’t know – after all, I don’t know how their shell extension is written – but at least I knew what was causing the problem. Now I just needed to figure out how to fix it.

A quick web search didn’t turn up much, but there were a few hints about other people having the same problem, and a solution that was mentioned, but wasn’t explained.

To save people the trouble of hunting for the answer, I’ll just come out and say it. I found the setting that needs to be turned off after digging around a bit – basically, you turn off the shell extension feature of Mozy. While this might be a turn-off for some, for me it’s not a big deal. I don’t need to restore files often enough that I’d need a shell extension for it.

You can find the option by right-clicking your Mozy icon and choosing “Configure.” Then, click on the “Options” tab and check “Don’t show restore menu in Windows Explorer.” For good measure, I also checked “Don’t show MozyHome Remote Backup virtual drive in My Computer.”

After making those two changes, the problem went away – my right-clicks on multiple files were as speedy as ever. And I don’t miss the functionality I turned off, so it’s all good for me!

Hopefully this will help other people who’ve experienced the same symptoms. And perhaps Mozy will figure out why it slows down so much and fix the problem – though I’m going to go out on a limb here and guess that it might not be easy – or even possible, given the circumstances. But oh well.

If you’re interested in my earlier post on Mozy, click here.

Speech Recognition and Artificial Intelligence

Every so often, I’ll get a little pissed off and start wondering aloud, “where the hell are my talking computers?”

Seriously, though – it’s 2008. Ten years ago, we were sure that by now, speech recognition would have surpassed the keyboard as the primary means of input. Hell, we’ve been predicting it for so long, it’s become somewhat of a hollow prediction – a lot like the “flying cars” argument.

But really, why aren’t we all talking to our computers? The answer, in my opinion, is that we haven’t developed artificial intelligence enough yet.

Why is artificial intelligence important for speech recognition, you ask? Let me explain.

We’ve had “basic” speech recognition for some time now. I have personally heard of “Dragon Naturally Speaking” as the be-all, end-all of speech recognition software since somewhere around 1998 – and I’m still not using it. Nor is anyone else – at least not on any large scale. And there’s a very, very good reason for that – it’s simply not good enough.

Now, I’m not saying that speech recognition isn’t getting better at recognizing words and so forth, but at this point, using your computer via voice commands is a bit like trying to operate your computer through the same interface as the original Altair 8800. Oh sure, each individual switch works quite well – but try teaching your grandmother to check her email by just flicking 8 switches on the front of a panel with a few lights on it. That’s about where voice recognition is right now.

You see, there’s a very important “missing piece,” which is context. Or, to put it another way, consciousness.

In order for a speech recognition system to understand instructions given by a human being in plain speech, that system needs to be able to understand plain human speech – which, more often than not, requires a lot of understanding of the context in which it’s used. And to understand context like that, you need a rudimentary consciousness – something that has awareness – not necessarily of itself, but of what it’s working with. And we simply don’t have that yet.

Take an example.

Imagine you’re composing a message. You’re going to send it to your friend, “Bob.” Here’s how you’d use voice commands today:

Command mode. Open Email. Compose message. Dictation mode. “Hi Bob comma how are you doing today question mark capital I am doing just fine comma we enjoyed dinner with you last week period command mode backspace word backspace word command mode” Alt, File, S, Tab, Tab, Tab, Enter. Close Program.

And that’s with minimal errors – in reality, you’d be using the “backspace” or “undo” command quite often. And because speech recognition has no context, no consciousness, you need to tell it explicitly when you move from giving commands about what to do with the computer (basically, using voice commands as a slow and unreliable mouse pointer) to “dictation mode,” where it just writes what you say – basically acting like a bad transcriber. It’s slow, cumbersome, and unreliable. And until it becomes faster and easier (and, to a certain extent, cheaper) than using a keyboard and a mouse, it will remain a fringe method of input.

Contrast this with a voice command session with a computer equipped with speech recognition and a rudimentary AI:

Computer, begin new email to Bob. “Hey Bob, how are you doing today? I am doing just fine, we enjoyed dinner with you last week.” Send message.

Which one do you think most people could adapt to quicker – the first one, or the second one?

Remember also that we haven’t even touched upon corrections. With AI, you could say “no, wait, make that ‘I’m doing just fine'” and the computer would know (based partly on your emphasis on “I’m,” and partly due to its awareness of the sentence structure itself and the context in which it was used) which phrase to replace. Just you try that with today’s speech recognition!

I’m not sure if AI research is being pursued as much as it should be – I have a sinking suspicion it’s not (probably due to fear of runaway AI and other ethical concerns). And maybe that’s a good thing, in the long run. But I’d like to see this sort of thing happen, and happen soon. Because I’m tired of typing – I want to talk to my computer.

I mean, seriously… it’s 2008! Wasn’t this sort of thing supposed to happen like 7 years ago, at least? What ever happened to “life imitating art?”

I’m waiting…