Firefox 3.5 Available Today!

June 30, 2009 No comments »

Excitement! Adventure! Really wild things! Firefox 3.5 is officially released today!

logo-wordmark-version-400

I’m quite excited about this new release – this is, quite frankly, a really big release for Firefox that includes a lot of really cool, neat things, including (but not limited to):

  • Support for the HTML5 <video> and <audio> tags (including native support for Ogg Theora encoded video and Vorbis encoded audio) – this means Firefox 3.5 can display video and audio natively in the browser, without the need for plugins like Flash or Quicktime. (Sweet!)
  • Private browsing mode
  • Much improved JavaScript performance thanks to a new JavaScript engine (which means websites that use JavaScript a lot – like GMail and other “web apps” – will run faster!)
  • Location-aware browsing (handy for searching for things “nearby”)
  • Faster rendering of web pages (always nice)
  • Web worker threads (use that fancy dual-core CPU to make your browsing experience faster than ever!)
  • A whole bunch of new support for web technologies like downloadable fonts, CSS media queries, and a whole bunch more

If you want to see everything that’s new, just check out the Firefox 3.5 Release Notes.

If you haven’t started using Firefox yet, now’s a great time to switch! Firefox is fast, safe, easy-to-use, and totally customizable – and that’s just the tip of the iceberg, as there’s a whole bunch of other reasons to switch.

So what are you waiting for? Get Firefox 3.5 right now and be part of the future of the web!

Why Does Software Break?

June 14, 2009 No comments »

It’s only natural to wonder why, after all this time and our collective experience, that we still produce buggy, brittle software that breaks and crashes. It’s also only natural to point at “software engineers” and then the other kinds of “engineers” – as in, the people who build bridges, skyscrapers, cars, planes, etc. – who can build things that work for years and don’t (generally) break down and crash, and ask “why can’t we do the same thing with software?”

To answer that question, it’s important to make a distinction between the physical world of bridges, skyscrapers, planes, and such, and the “thought-stuff” world of software.

While software is, to use the words of Frederick Brooks in The Mythical Man-Month, made purely of insubstantial “thought-stuff,” it is, ultimately, made by man – and as man is fallible, so to are the things that he creates. (After all, some bridges fall down, some skyscrapers collapse/leak/shake in the wind, and some planes crash.)

There’s also the “layer” aspect to keep in mind – software may be “thought-stuff,” but it doesn’t exist purely in a vacuum. It relies upon the perfect function of millions (or billions) of tiny, often microscopic physical components, which have been engineered with great specificity and tight tolerances. A few cosmic rays (or a clumsy user pulling out a cord) can screw up the perfect balance of all these components in unimaginable ways – sort of like pulling out the main support for a bridge, or blowing out the tire of a car. (Or, perhaps like having a few large birds fly into the engine of a plane!) When these sorts of things happen, the system – be it bridge, plane, car, or computer – fails, often spectacularly.

So, it’s less accurate to think of a computer system (hardware and software together) as being like a bridge, and more accurate to think of it as being like a giant clockwork mechanism – a huge Rube Goldberg-type device – with hundreds of finely inter-meshing gears and sprockets. If just one gear pops out of place, or one sprocket cracks a tooth, the system stops working properly – perhaps just a little bit, or perhaps so much so that more gears are forced out of place, and more sprockets are broken, until the entire thing collapses in a pile of ruin.

To carry the bridge metaphor in the other direction (as it were), it might be more accurate to think of a computer system as being like a bridge that not only functions like a bridge (gets people from one side to the other), but also functions as a musical instrument capable of producing both classical, jazz, and electronic/techno music; predicts the weather; washes your clothes; generates electrical power; can be quickly reconfigured into a skyscraper home for people or a hospital, as needed; can float up and down the river to a new crossing (dynamically expanding or shortening its length as it goes, of course); and can also fly, carrying everyone on it to a new river, with new road signs that instantly match the new language and traffic patterns of the new location. It also has to do all this while not disturbing the environment around it, while simultaneously accepting any impact its environment puts on it, even if such impact might cause it to function in a manner contrary to the one for which it was designed.

If you were to try to build a physical bridge to do all of these things, it would probably break in much the same ways that software does.

To use a different analogy, consider the difference between a typewriter (a machine designed to do just one thing – type words) and a computer. No one would argue that the computer is a more reliable typing instrument – after all, the typewriter is fairly simple, and because it is designed to do just one thing, it can do it well. Also, when the typewriter fails, the cause is generally immediately apparent (e.g., out of ink ribbon) and can easily be understood – and fixed – by the user.

On the other hand, the computer – while on the surface just the same as the typewriter (keyboard on which you type words), is infinitely more flexible. There is almost an infinite number of other things that the computer could do in addition to typing – it could play music, calculate your taxes, c0ntrol millions of tiny light-producing elements to display an interactive 3D environment – or a photo of your dog, talk to you using a synthesized voice, control complex machining equipment, participate in a global network, and almost anything else you could imagine.

When you consider that, it’s no wonder that computers have so many ways in which they can break. It’s exactly because they are so flexible that they are so fragile at times – their flexibility is their greatest strength, and at the same time, their greatest weakness. Because they are so generalized, getting them to do any one specific thing involves a lot of re-building of concepts (we call them “metaphors” in the world of software) just to get any useful work done, never mind actually taking care of the main task at hand.

In the end, software breaks because it (and the computers on which it runs) are general purpose machines which we ask to do an enormous number of things (some often contrary to one another!), and even though we might only be asking it to do something simple at the surface (e.g., type a few words onto the screen), in reality there are innumerable hidden complexities involved in getting a general-purpose machine to do something so specific (and, we would hope, do it well) that it’s only natural that there will be errors – both human induced and artifacts of the system itself.

In other words, softare breaks because computers are fantastically flexible general purpose machines that, by their very nature, require complexity in order to do anything specific – and no layers of abstraction, big-M Methodologies, frameworks, or whatever else we come up with – are going to change that simple and immutable fact.

Desktop Madness Vol. 74

June 9, 2009 No comments »

I admit it, I’m a sucker for fractal-based wallpapers. I just think they’re absolutely lovely – and being fractals, they’re endlessly interesting – literally!

black fractalIncidentally, this one rotated onto my desktop this morning, which is what inspired me to do today’s post. It’s really quite a striking picture, don’t you think?

Trying to Upgrade from Vista to Windows 7 – Take 2

May 30, 2009 2 comments »

So this weekend I set aside a block of time (roughly 5 hours) when I wouldn’t need my computer so I could take a stab at trying to upgrade from Windows Vista to Windows 7 (again).

This time, I moved my Documents, Music, Pictures, and Videos (which constitute the bulk of my user profile) into a separate folder on my 2nd hard drive for safe keeping, and then used a 2nd user account to delete the directory junction that linked my user profile to my 2nd hard drive. Then, I moved my (now much smaller) user profile back on to the boot drive (C:), and began the upgrade process again.

The last time I tried this, I thought that the reason the upgrade failed was because of my use of a directory junction to put my user profile onto my 2nd hard drive. So this time, I thought I’d have better luck, since the link was gone and everything was back where Windows probably expected it to be.

Unfortunately, the result of this second attempt was the same as my first attempt: FAILURE. The only difference is that this time the upgrade didn’t take as long (probably because my user profile was so much smaller). However, it still failed in exactly the same way – it got all the way to the very last step of the installation, and then quit, saying:

“The upgrade was not successful. Your previous version of Windows is being restored.”

It then spent some time rolling back the upgrade, leaving me back where I started. When my desktop came back up, I was greeted by this message:

“This version of Windows could not be installed. Your previous version of Windows has been restored, and you can continue to use it.”

No clue as to the reason for the failed upgrade – that’s my next task.

I don’t want to admit defeat (i.e., do a clean install) – an upgrade from Vista Ultimate 32-bit to Windows 7 RC 32-bit should work just fine. I guess I’m going to have to spend some time spelunking through arcane log files to see if I can find out the root cause of the failed upgrade – wish me luck!!

The Etiquette of E-Mail Signatures

May 20, 2009 2 comments »

Back in the old days, your signature (or “.sig”) was a statement about who you are – and in some places (such as forums like Slashdot), it’s still used for that purpose. (In a way, it’s like having an electronic bumper sticker!)

Recently though, I’ve been thinking about signatures, and whether or not they were still useful in the context of email – specifically in the context of business emails. I mean, really, when was the last time you actually found someone’s email signature useful?

I’m talking, of course, about those huge, obnoxious, totally unnecessary email signatures that seem to be the norm nowadays. The ones that contain pictures, six different phone numbers, an email address (often a different one than the one in the email itself!), a picture, a long title & company name, colors, pictures, flashing lights… okay, maybe that last one was made up.

I’m much more old-school in my opinion of what a signature should be, mostly in the fact that I don’t think an email signature should have any formatting at all – it should be plain text only. I also think that shorter is better. I think 3-4 lines is about the max you’d want – any longer than that and your signature starts being significantly larger than most of the emails you’re sending!

Really, all your email signature should be is:

  • Your name
  • Your company name
  • Your phone number

Why is that? Because:

  • I already have your email address (or else how would I be seeing your email??)
  • I already have your web address, by virtue of your email address (we’re talking about “business” signatures here, so I’ll assume you’re not using Gmail or Hotmail or something like that, and that your email address’s domain name is the same as your web site’s domain name)
  • If you’ve got other methods of contact (IM, Twitter, blog, whatever), then you can just tell me those in the body of your email. There’s no need to repeat them to every single person you send email to.
  • Any flashy graphics or pictures just distracts from your message, and in all likelihood will not look right for at least some people (so why take the chance?)

While some people think of their email signature as being like their business card, I think that comparison is a little off for one major reason: people don’t have to look at your business card every single time you talk to them. On the other hand, they do have to look at your email signature every time you send them an email. So it’s important not to overdo it. After all, “less is more,” and simple is always tasteful.

The alternative – for those that feel that they absolutely must give out all of their contact information at once – is to have a signature you use when you first email someone, and then a smaller signature (or none at all!) for follow-up emails after the fact. The problem with this is that you’ll forget, and eventually you’ll just fall back to sending the big signature to everyone.

I think of an email signature as being like “fine print” – the less of it there is, the better. And conversely, the more of it there is, the more… formal, harsh, corporate, and impersonal your email will sound.

There’s another aspect of email signatures as well – the closing line.

Some people include a closing line in the signature block that their email client auto-attaches to every email – which I find annoying, since every single email from them has the same “yours truly” or whatever attached to it and it sounds like I’m talking to a robot.

People who add closing lines like “yours truly” or “sincerely” tend to come from the world before email – that is, the world of physical letters & correspondence. Email is not a direct replacement for old-fashioned mail (for better or worse), and I think it’s inappropriate to try to “force” things that were meant for a different medium onto email.

Although I do sometimes like to close my emails with outrageously formal and archaic closing lines, just for fun – I have been known to use “I have the honor to remain / Most Sincerely Yours.” But that’s for special occasions, not for everyday use.

Other people will close emails with less formal, more casual phrases, such as “ciao” or “cheers,” perhaps hoping to lend a little “international” flavor to their message. My opinion on these sorts of closing phrases is mixed – they tend to be hit or miss, depending on the context.

For myself, as I’ve said, I’m quite old-school, so my emails end quite simply. If I want to use my name (rare), I’ll simply write:

-Keith

Often with no closing line at all. As for my signature, that is just my name, company, and phone number. (My personal signature is equally short – just the tagline of my blog, my blog’s address, and a URL to my PGP public key).

In the end, people who try to make their email signature be more than it really is are just deluding themselves and annoying others.

For more on the do’s and don’ts of email signatures, check out these two articles:

UPDATE: It’s worth noting that there are certain sub-industries where you can’t get around the need for an obnoxious email signature – where they may be mandated by law (or almost mandated by law). Take, for example, lawyers in the U.S. They have some of the longest signatures you’ll ever see – full of disclaimers, legal references, and so forth. Ernie the Attorney has a two great posts on these uber-long email signatures over at his blog which is well worth reading – even if you’re not an attorney (but are in an industry that has mandated email signature laws).


Using Internet Explorer is risky. Click here to upgrade to Firefox, the world's safest web browser for free.