Hummingbird Version 0.66 Released

This is largely a bug-fix release. Tom Clift, of PaperCut print management software, kindly informed me of a few installation issues that my own tests didn’t find. The profusion of configuration options in PHP can make testing everything on a single server quite difficult.

This would be a good time for me to mention that I have the utmost respect for QA people. They deal with all sorts of minutiae that I am really glad not to have to handle, and I’m really glad they’re around. That said, I am not a QA person… and so I occasionally miss the sorts of stuff they’d catch.

  1. It turns out Hummingbird depends on the CLI version of PHP, and the CGI version will not suffice. This requirement is now listed in the appropriate section of the Hummingbird page.
  2. Not all PHP installations have output buffering turned on by default. The latest version of Hummingbird takes account for this.
  3. Various problems that can occur with the data cache file are also now reported more gracefully.

Again, my thanks to Tom Clift for some very useful patches!

You can get the latest version of Hummingbird from the Hummingbird page on my site.

Is Your Domain Name Spellable and Pronounceable?

A good domain name should have the following features:

  1. When someone says it to you, you know how to spell it. This means that if my friend wants to tell me about your site at a party or a club or out on the street somewhere, she doesn’t have to spell it out for me. She can just say your site’s name, and I immediately know how to type it into my browser.
  2. When you see it written, you immediately know how to pronounce it. This is the other side of the coin, and it matters when I read about your site in print and then want to tell a friend about it. In fact, if your site’s name is sufficiently opaque, I could read about it, visit it, sign up, and use your service for months… and still not know how to tell a friend about it without having to say awkward things like, “Ummm… Zip-tick? something like that? I don’t really know how to pronounce it, I just know it’s spelled X-Y-P-T-I-Q.”

Marc Hedlund writes about Why Wesabe Lost to Mint, and manages to miss part of this point:

Mint was a better name and had a better design – both of these things are true, but I don’t believe they were primary causes for our company to fail and for Mint to be acquired. Mint’s CEO likes to talk about how ridiculous our name was relative to theirs, but I think the examples of Amazon, Yahoo, eBay, Google, and plenty of others make it plain that even ludicrous names (as all of those were thought to be when the companies launched) can go on to be great brands. (emphasis in original)

He cites “Amazon, Yahoo, eBay, Google” as examples of “ludicrous” names, but he misses the fact that all of them meet both of the requirements above — and Wesabe doesn’t. I’m assuming it’s pronounced “wee-SOB-ay”, but it could just as easily be read as “wee-SAYB” (rhymes with “babe”) — and I’m guessing it’s a mash-up between wasabi and “we sabe“, where sabe is the Spanish word for “to know”, and the basis for the English verb “to savvy”.

But that’s just a guess.

Of course, you already know how to spell it, but imagine someone told you about “a new site called /wee-SOB-ay/”… how would you guess it might be spelled? Ideas that come to my mind are: wiisabe, weesabay, weesobbe (possibly with accent on the E in the site’s logo); and “Just tell me how it’s spelled, already!”

Note that Google got its name from the mathematical concept of a googol: 10100, a very large number. But they deliberately changed the spelling, so people would be more able to tell each other about it, and more able to correctly type in what they’d heard.

Motion Distraction — Worse Than the <Blink> Tag

Once upon a time, Netscape invented the <blink> tag. And people saw the <blink> tag, and put it on their web pages, and thought it was good. And the rest of us saw the <blink> tags on those pages, and screamed, “No, you morons, it is bad! It distracteth the user mightily, for lo, our eyes are built to take especial note of motion and changes in light, for they might signal the approach of predators.”

And so, in the fullness of time, most people learned to never, ever use the <blink> tag. And that was good, for a while. But more recently, people have started putting new — and even worse — moving doo-dads on their sites: Animated Twitter feeds.

I’m talking about the kind of feeds that refresh or scroll every five seconds (or sometimes more frequently). You can see them all across the web. Here are just a few examples:

  • Any comments page on Whedonesque (Joss Whedon’s site). Try to read the text, and your gaze gets pulled over to the constantly-updating “Twitteresque” box on the right.
  • Any article on WikiHow. You have to scroll down one screen before the “Recent Changes” box becomes visible on the right — but that just means the problem isn’t apparent to a cursory, design-level glance; it only becomes obvious when you try to actually use the site for its intended purpose, by reading the content that’s published on it.
  • Even Webmonkey has gotten in on the action. Again, you need to scroll down a screen (unless your browser is way taller than mine), but the “Recent Articles” box will try to grab your attention as soon as you read past the screenshot in the main article text.
  • Like Webmonkey, you’d think TechCrunch would know better than to do this. Admittedly, they do put their “PostUp Beta World’s Best Tweeters” box further down the page, but their articles are longer, too.

Why would someone put something on their web page that effectively says, “Hey, don’t waste your time reading my content! Go look at my Twitter feed instead! Or even at some total stranger’s Twitter feed!” I’m honestly mystified. (That’s why my own Twitter-feed widget, Hummingbird, does not and never will have any kind of auto-scroll feature.)

But what mystifies me even more is: Why would people who (I presume) would sneer in disgust at the very idea of putting a <blink> tag on one of their pages — even for just one or two words — then turn around and put a much larger, more annoying motion distraction on every page in their site?

The fact that it uses AJAX and a Web 2.0, RESTful API doesn’t make a paragraph-sized chunk of never-ending motion any less of a design and usability nightmare. And this is not exactly a new concept: the W3C advised against constant motion back in 1999.

At that, they were Johnny-come-latelies compared to Jakob Nielsen, who called out “constantly running animations” as far back as 1996. In other words: The days of Netscape Navigator version 2.0x called. They have some usability advice for you… that you apparently still haven’t learned yet.

It can’t be that hard to figure out… can it?

Initial Impressions of the Samsung Epic and Android

A few nights ago, my Palm Prē got dropped, causing a hairline fracture in the touch-screen. Since it would no longer take any screen input, it was suddenly an even less useful device than usual. I’d been thinking of switching to an Android phone anyway, so I am now the (proud?) owner of a shiny, new Samsung Epic 4G (one of their Galaxy S line).

Getting used to it has occupied a fair bit of my time, but here are a few early impressions. Obviously, some of these are impressions of the Android OS, and others are about the phone’s hardware.

  • The Android calendar will let me set alarms anywhere from 1-99 units in advance of events, where the units can be minutes, hours, days, or even weeks. This actually beats what the old PalmOS used to let me do (and the webOS replaced by a simple drop-down of 5, 10, 15, and 30 minutes, 1 hour, and 1 day — not very useful; sometimes I want 3 hours’ warning).
  • The Epic is a much bigger, chunkier device than the Prē was. It still fits in my pants pocket, but not so smoothly. Not only is it just plain larger than the Prē, it also has less-rounded corners. Also, the protective case I got for the Epic is the rubberized kind, noticeably thicker than the “invisible skin” I had on my Prē.
  • What’s with the battery gauge not giving an actual percent? That seems so… naff. I’ve found a nice app to give me usable information: Modded Logic’s Battery Status Bar.
  • Live Wallpaper is cool as anything. It also seems to eat batteries like a very hungry thing. I’m still trying to decide if it’s worth it or not.
  • Read More »

Announcing Hummingbird Version 0.65

I see that I never bothered announcing the v0.61 release. That was a minor bug-fix, resolving an issue where Hummingbird would fail if the XML cache file was empty.

The latest release is one that allows multiple versions of Hummingbird to run on the same machine without conflict, as long as they’re using different Twitter usernames.

In addition, I’ve changed the destination of auto-hashtag links. Since the hashtags.org service is often a bit flaky, or simply returns useless null results, I’ve switched to using Twitter’s own internal search service.

Downloads are available from the Hummingbird project page, or using these links:

hummingbird-0.65.tar.gz
hummingbird-0.65.zip

Blame the Men Who Are Behaving Badly

Let’s organize a 10K footrace. At the end of the footrace — for, say, the last kilometer — we’re going to do whatever we can to encourage the people who are wearing blue jerseys and t-shirts and athletic clothing. There will be people standing by the sidelines to hand out bottles of refreshing sports drinks, and others jumping up and down and shouting slogans like “Dressed in blue! We love you!” whenever they see a blue-garbed contestant.

Why all the commotion over the people in blue? Well, that’s an attempt to offset what we’re going to do to them for the first nine-tenths of the race. You see, they’re going to be dealing with some seriously unfair shit: Instead of cheerleaders, the blue-wearing racers will have to deal with people jeering at them, shouting insults and telling them they don’t belong in this race. Some will be armed with Nerf guns or water balloons, which they’ll be hurling at the racers in blue in an attempt to slow them down or make them drop out of the race altogether.

And it’s not just the spectators; before the race begins, we’ll distribute secret notes to the racers wearing other colors, encouraging them to jostle their blue-garbed peers and even try to trip them up. Of course, many of our runners will abide by a sense of fair play regardless, but there will undoubtedly be those who take advantage of the biased environment we’re creating.

If a huge percentage of the racers in blue drop out before they ever reach the last kilometer… would you say that “not enough people in blue want to win races”?

Obviously, this footrace is a parallel for something else. Read More »

What Does “Don’t Be Evil” Mean Now?

It’s awfully convenient for Google that their famed corporate motto, “Don’t be evil”, doesn’t actually specify or define what counts as “evil”. And without any definition, they’re pretty much free to do anything they want, and just declare it not-evil.

Now, some of the things they’ve done have just been misguided. For example, I really, honestly believe that when they sniffed people’s unencrypted wifi traffic while doing Street View mapping drives, they weren’t being purposefully malicious, just absent-mindedly misguided. (I also have trouble getting too upset about sniffing unencrypted wifi signals — yeah, it’s kind of bad, but if the people who owned those networks really wanted privacy, would it have been that hard to turn on WPA?)

And then there was the bit where they auto-subscribed everyone with a Gmail account to Google Buzz — which, by default, made huge amounts of information public that shouldn’t have been. This was a really massive mistake, but given the way Google backpedaled from it, I still believe that they were just misguided and didn’t think things through at all, rather than actively wanting to cause harm.

But when Google Checkout tried to impose a “no adult content” rule on Dreamwidth? That’s a lot greyer. In essence, what Google did was tell an organization devoted to enabling free speech that it had to muzzle its users.

Google has the right to choose who it wants to do business with, based on whatever criteria it wants. But just because their choice is legal doesn’t make it “non-evil”. It’s not clear just exactly what “adult content” would have included, but there’s a strong likelihood that it would have included things like:

  • safer-sex information, including family planning, contraception, and how to use condoms properly;
  • discussion of rape, including rape survivor groups;
  • promotion of equal rights for sexual minorities

Keeping information like that off the Internet? Is not helping the world. Suppressing that kind of information harms the world, and I’d qualify it as a straight-up evil act.

It’s possible, though, that they only mean “actual pornography” (however you define that). As much as I personally may like both pornography itself, and the right to disseminate and receive it, I have to admit that simply choosing not to do business with a company that helps people publish it is not, in itself, evil.

So what about entering into secret back-room agreements to try to do an end-run around Net Neutrality and everything it stands for? And then promulgating a legislative framework proposal for Internet governance that would turn the principle of Net Neutrality into a defanged, loophole-ridden and corporation-appeasing shadow of its former self — while pretending, on the surface, to support it?

In effect, this means a full-scale attack on the core of a free Internet. This is something that reminds me of when Microsoft was going to try to “de-commoditize [the] protocols” that formed the basis for the Internet and World Wide Web, back in the first Halloween memo.

If there is a way in which this isn’t evil, can someone please explain it to me? Because it sure looks evil to me.

In the meantime, there’s one tiny problem with trying to boycott Google: They make some damned useful products. Still, if you want to start reducing your reliance on Google, here are some pointers that may help.

Why I Don’t Mind Coding Tests

I keep hearing about developers who, when interviewing for potential jobs, consider coding tests to be “a waste of time”, “insulting”, or “beneath me”. The logic seems to be: Once you’ve risen to the level of Senior Developer (or some similar title), people should realize that yes, you really do know how to write simple pieces of code. You can write functions that sum all elements in an array, or reverse a string, or whatever.

I’m not bothered by them. I’m far too aware of the great number of coders that, to put it bluntly, simply can’t code. It doesn’t matter to me whether they’ve risen to their level of incompetence, or they’ve been in sky-high architect territory for too long and gotten rusty at function-level coding, or they’re simply lying on their résumé and they were never able to so much as solve a FizzBuzz problem. The fact is, they keep winding up in interviews, and it’s (part of) the interviewer’s job to weed them out. As quickly as possible, to avoid wasting any more time than necessary.

Back when I was in my first tech job, as a Linux sysadmin, I was one of the people interviewing potential candidates. I decided it would be nice to set them at ease by starting off with a few easy, “warmup” questions. So I’d start off with things like, “What is a runlevel in Unix? What are the most commonly-used runlevels, and what do they do?” Or, “What port does HTTP use by default? How about SMTP?”

I was astounded to find that there were applicants who couldn’t answer these questions.

Not in the sense of, “I’m sorry, but I’d have to look that up” (though even that would be a little odd; these are things any Unix sysadmin should have engraved on their consciousness). No, this was in the sense of “A runlevel? Ummm… I think I’ve heard that term, but I don’t know those kinds of details.”

My only real quarrel with FizzBuzz is that, at this point, any developer worth their salt is familiar with it. And tired of it. It’d be nice to have a few slightly new and different tests of completely basic competence… but you know what? Any test that is so basic would have to be just as boring. That’s okay.

These tests are essentially saying, “Prove that you’re not lying on your résumé.” And while I may know perfectly well that I’m not lying, how is a total stranger to know that about me? I’m not bothered by the “trust, but verify” stance of modern interviewers, because there are so many people who do lie on their résumés (and fail at simple, FizzBuzz-style tests) that it would be lunacy to blindly believe applicants any more.

(What that says about our society is a topic for another post… a post on another blog. It’s outside Coyote Tracks‘ scope.)

How Many “Years Of Experience” Do You Have?

In my ongoing job search, I’m sometimes asked by recruiters: “How many years of experience do you have with [name of some technology or skill]?” It’s a somewhat reasonable question when the item involved is a programming language or technique that I use every day, or at least every week. But there are far too many things that it just doesn’t work for.

For example, I can reasonably well say that I have 5 years of experience with AJAX: I taught myself AJAX in the summer of 2005, and have been using it pretty consistently since then. But how many “years of experience” do I have with SQL?

I started using it around 2002 or 2003, but if I say that I “have 7 years of experience” with it, I give the impression that I’m some kind of SQL expert… which is definitely not true. It’s the sort of thing I use about once every week or two. I’ll set up a database schema, maybe even type out some raw commands in a MySQL command-line client, and then I’ll just let whatever framework I’m using handle all the details for me.

So, what sort of answer should I give to the question? The sense in which I “use” (or “have experience with”) SQL is simply not the same as the sense in which I use things like JavaScript, PHP, or CSS. (The sense in which a DBA uses SQL is probably comparable to the sense in which I use CSS… but I can’t be sure, not being one myself.)

At least the idea of having “a year of experience with” SQL does make a certain sort of sense. What should I say when asked how many “years of experience” I have with XML or JSON? These aren’t really “technologies” so much as data formats. It’s like asking someone how many years of experience they have saving files in .txt or .doc format (as opposed to using Notepad or MS Word).

The only metrics that are worse than “years of experience” are: “When did you start using Technology X?” (which, thankfully, very few people have asked), and the utterly subjective “How would you rate yourself with Technology X, on a scale of 1 to 10?” (I need to write an entire post about that particular metric, when I get a chance.)

Typesetting In Between the Letters

Long before I learned to program — and long before the World-Wide Web was even a gleam in Tim Berners-Lee’s eye — I was introduced to typography by Douglas R. Hofstadter’s Metamagical Themas. In his chapter “Variations on a Theme as the Crux of Creativity”, Hofstadter presents a full-page figure that shows 56 different versions of the letter “A”. The 56 fonts he uses show versions of “A” ranging from the spare to the ornate, with every other variation in between.

I’d never realized there was so much variation just in one letter. I was converted into a fontaholic on the spot (though not so completely as my sister, who now designs typefaces professionally for a prestigious font foundry — way to go, sis!). But it’s easy to get too absorbed in the letters.

Like Debussy, who noted that “music is the space between the notes”, I’ve become enamored with the kind of typography that happens between the letters. It’s more important than you think it is, because: It makes your text easier for people to read.
Read More »