I’ve Chosen Convenience Over Privacy

Back when I got my Palm Prē, I noticed that it wanted to store various of my information on Google’s servers. I thought I’d kept it from doing so; I sure wasn’t using Gmail on a regular basis. I configured the Prē’s email client to check my own account on mactane.org, and I thought everything was fine.

Eventually, I gave up on the Prē and switched to my current, Android-powered Samsung Epic. I figured I was in for a boring day of transferring my contacts over manually… until I discovered that many of them had been synced to my Gmail account, and so they showed up in my new phone without me having to do anything.

Considering all the work I had to go to in order to get my to-do list items, memos and notes transferred over manually… I decided that having stuff transfer automatically was actually pretty damn cool. Since I got my Epic, I’ve been picking “Save contact to Google” whenever I create a new contact. So, if I accidentally drop my phone on the street and it gets run over by an 18-wheeler and then the fragments get kicked into the bay and sink to the bottom, I can just buy a new Android phone and have all my contacts “magically” appear there.

On the other hand, all my contacts are sitting on Google’s servers. Read More »

Developers Are Not QA Testers

When a company says “we can’t afford a QA department”, what they’re really saying is, “we accept that our software will be infested with bugs, and quality is not important to us.” When they compound this basic error by saying, “the developers will just have to do their own QA”, they prove that they have no respect for developers or QA people, and you shouldn’t work for such a company in either capacity.

(Of course, a company like that isn’t about to hire any QA testers, so you folks haven’t got the option of working for them. And I’m not a QA tester, I’m a developer. So the rest of my advice is pretty much aimed at fellow devs — but that doesn’t mean I don’t respect you QA folks. Seriously, y’all deserve a lot more respect than you get, and I love it when you make my life easier by finding my bugs for me.)

The skills, talents, and basic mindset that make a good developer are entirely different from the ones that make a good QA person. Asking one to do the other’s job is a mistake as fundamental as expecting graphic designers and accountants to swap places. Let me explain:

Developers hate repetition. We hate having to repeat anything more than once or twice; that’s why some of us become developers in the first place: because we can write programs that automate repetitive drudgery, and hence banish it from our lives. Read More »

About Amy Hoy

When I was moving beyond self-written AJAX calls and picking up the Prototype and Scriptaculous libraries, one of the best resources I could find was Amy Hoy’s Scriptaculous cheat sheet. It was hard not to find it — or her: Google searches on the things I was dealing with at the time just kept leading back to Slash7.

I was already advanced enough not to need her “What’s AJAX?” cheatsheet, but it was cool that she’d done such a thing. In fact, she had — and still has — a strong streak of “help teach others, so they can get to where I’m at” about her. That’s something I’ve always striven for in myself, but where I haven’t (yet) gotten around to some of the tutorial posts I want to do, Amy’s been nailing that category for over 5 years. And she’s been taking it seriously.

Later on, when I was getting into Ruby On Rails, Amy’s Secrets of the Rails Console Ninjas was an eye-opener… and then there was her other article that assured me that it was okay to ditch WEBrick for Mongrel, and so many others.

But Amy doesn’t just know loads about developing in AJAX, JavaScript, and Rails. She goes beyond the ephemera of coding, delving deeper into the things that make programming matter. She asks (and answers) some of the hard questions about usability, including a pair of my own favorite points on the topic. She knows that software is also political.

And she writes damned well. Her style is clear, crisp, and readable — unlike my own tendency to ramble on and use overly-complicated sentences. (For what it’s worth, I talk much the same way. At least I don’t code the way I talk — honest, I don’t!)

If I can learn from Amy, maybe one day I’ll be as good a blogger as she is. In the meantime, she inspires me to keep improving.

Easy Restarts Are a Security Feature

The more stuff you have open (or habitually leave open) in an application, the more it becomes part of your consciousness, an extension of your mind. For many of us, the question “What are you doing right now?” could best be answered by, “Here’s a list of the tabs I have open in my web browser.”

Hackers* use the word “state” to describe “information being maintained in non-permanent memory”, whether that memory is in a human skull or a computer’s RAM chips. In fact, that ambiguity over exactly where the state is being maintained is one of the word’s strengths — as the browser-tabs example shows, there’s getting to be less of a distinction between the two. The stuff in my browser’s tabs is a reflection of what’s in my own brain, and a nearly-seamless extension of it.

Like every other web developer, I recently got a message from Firefox saying it needed to upgrade. (Because security researchers found yet another hole in Adobe Reader.) Despite the fact that I had over a dozen tabs open, I knew I wouldn’t have to worry about performing the upgrade, because Firefox would remember all my tabs and reopen them after restart. It’s basically a momentary hiccup in my workflow; I can start the upgrade and then use that 30-second break to refill my teacup or go to the bathroom. Come back, sit down, close the spare “You’ve just successfully upgraded Firefox” tab, and just keep working.

Compare that with Windows Update.
Read More »

“Unplug From the Net to Connect With People”? Why Not Drive an SUV to Fight Global Warming?

Apparently tomorrow will be the “National Day of Unplugging”, when people who are ready to “take the unplug challenge” will obey the call to “put down your cell phone, sign out of email, stop your Facebook and Twitter updates”. But this isn’t just some kind of stunt or willpower exercise; there’s a point to it. Unplugging is supposed to help people “reclaim time, slow down their lives and reconnect with friends, family, the community and themselves.”

Uh, what?

Let me get this straight: Not posting any updates on Facebook, and not checking my friends and family’s Facebook updates, is supposed to help me connect with them? Turning off my cell phone, and refusing to send or check my email is supposed to bring me more into connection with other people?

What in the world do this event’s organizers think the rest of us are doing with Facebook, with email, and with cell phones?

The organizers are a group called the Sabbath Manifesto, and they espouse ten principles. The first two are “avoid technology” and “connect with loved ones”, respectively.

How the hell am I supposed to connect with my loved ones without using technology? Fewer than 10% of my friends, and absolutely none of my family, live within walking distance of me. (And I’m a fast and powerful distance-walker.) If I drive down the Peninsula, or take CalTrain to go see a friend, that’s using technology. If I quit using technology, I’d have to give up at least 90% of my social circle. Read More »

So, You’ve Just Gotten Your First Android Phone…

Since two of my friends have bought new Android phones in the past two weeks, I think it’d be helpful if I wrote up a quick guide and some app recommendations for those entering the Android world.

Quick Tips

Android version numbers went: 1.5, 1.6, then 2.0, 2.1, 2.2, and 2.3, and now the latest 3.0 release. Starting with 1.5, releases get code-names that start with successive letters of the alphabet, and which are based on “sweet things” or desserts. 1.5 was Cupcake, then 1.6 was Donut. The “Eclair” code-name is applied to both 2.0 and 2.1.

Most modern Android phones should (hopefully) be using at least version 2.2, “Froyo” — or 2.3, “Gingerbread” if they’re nice and up-to-date. The 3.0 “Honeycomb” release is currently intended only for tablets.

Since there’s no way to right-click on things with a touchscreen, Android uses the long-tap, or tap-and-hold, method. This is probably familiar to Mac users already. Try long-tapping on things; you’ll find a lot of features that way.

The home screen is not just one screen; it’s anywhere from 3 to 7 of them, depending on what particular model of phone you’ve got. Just swipe left and right to access the other home screens. Read More »

Are You Sure You Want to Read This Blog Post? (y/n)

When should you ask a user “Are you sure you want to do that?” Bear in mind that asking this question when you don’t have to has more than one bad effect:

  1. Obviously, it wastes the user’s time and may even annoy them.
  2. It also contributes to the general problem of “too damned many dialog boxes in computing”. This is subtly but importantly different from the previous point: It trains the user to unthinkingly click the default option in any dialog box, just to keep it from wasting their time.
  3. Finally, it may actually hinder the user’s ability to leave your program. Look at this page by Joel Spolsky, and search for “exit Juno”. A user thought the “Are you sure you want to exit?” dialog meant that the computer was advising her that there were ill effects from doing so.

Okay, that last one seems like sort of an edge case, right? But even the first two items are enough reason to pay attention to when you should — and shouldn’t — ask the user to confirm something.

My proposal: Only ask a user for confirmation when the action was initiated by a single click or keystroke, and it has some kind of bad effects. Yes, this means that any time you ask someone to confirm whether they want to exit your program, and they have already saved all their work, you just wasted their time. This one’s particularly prevalent in the gaming world, I’ve noticed: Even if you’re in between games, and your scores are all saved — meaning the worst possible consequence of exiting the game is that you’ll have to start the application again — most games will show you a “Do you really want to exit Game Name?” dialog anyway.

MS Word gets this exactly right. If your document hasn’t been changed since the last time you saved it, then exiting the program has no ill effects. If you click the little X, or press Alt+F4, MS Word won’t even bother to ask you “Are you sure?”; it’ll just exit with no muss and no fuss. It’s only if you have some unsaved work that you’ll see the “Do you want to save your changes?” dialog. And if your document already has a filename, Word doesn’t bother to prompt you for a new one; you only get the “Save As…” dialog if the document doesn’t yet have a filename.

The program only bothers the user if it has to; if it can figure things out on its own, it does. Just the way it should be.

If you’re writing another application — I don’t care whether it’s whether it’s a web application, Rich Internet Application, desktop application, or smartphone application — please take a hint from the way MS Word handles confirmation questions. Don’t make your app be the software equivalent of “that guy”.

Ada Lovelace Day Is Not Enough

In two months, the third international Ada Lovelace Day will take place, on March 24th. Bloggers around the world will devote posts to writing about the achievements of women in technology and science. This is wonderful, and I highly support it, but…

What about the other 364 days of the year?

Setting aside one day per year to write, “Hey, there are women in technology, too!” is not enough. In fact, I’d call it a bare minimum. If you only post in your blog once a week, you’re putting out 50+ posts per year. If only one of those has to do with women, you’re ignoring half the human race 98% of the time.

Technology is not just for men. It doesn’t solely affect men. Men aren’t the only ones to drive it, or develop it. And I’m sick and tired of the culture of machismo, sexism, and outright misogyny that’s been turning high-tech — and particularly the open-source and startup arenas — into a little boys’ club that drives women away.

Blogging about the accomplishments of women for Ada Lovelace Day is not enough. But it’s a start, at the very least. We can’t say, “I wrote about Grace Hopper on March 24th; there, I’ve done my duty. Can I have my Nice Guy badge now?” We can’t write one article and then rest on our asses the rest of the year.

Instead, I see Ada Lovelace Day as a springboard — a starting point. Read More »

Hummingbird Version 0.67 Released

I’ve released a new version of Hummingbird. This is a bug-fix release, resolving some issues in automatic hyperlinking and in recognition of multiple hashtags in a single tweet. (Yes, this is why I did a couple of tweets hashtagged “#testing” a couple of days ago.)

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

hummingbird-0.67.tar.gz
hummingbird-0.67.zip

About WikiLeaks, DDoSes, Rape, and Justice

Why I’m In Favor of WikiLeaks’ Professed Ideals and Aims

I am not a fan of government secrecy. Maybe some things should be kept secret, but by and large? Our government has overused that excuse to the point of absurdity. We can no longer trust the government to keep its citizens informed about what it’s doing.

Since the run-up to the Iraq War, it’s been pretty obvious that we can no longer trust the news media to keep us informed, either. At that point, journalism utterly failed in its civic duty to question the government and inform the populace about critical issues. Someone needs to step into that gap.

Why I’m Not Pro-WikiLeaks

Some of the information they leaked includes data that identifies people in the field. This puts real people at real risk — people who are trying to do good. This is not responsible reporting.

For all the reasons that it was bad when the Bush Administration blew Valerie Plame’s cover, it’s also bad now that WikiLeaks has blown the cover of various sources in the field. I can’t support that.

Why I’m Very Much Anti-Anti-WikiLeaks

For all the danger that WikiLeaks’ cover-blowing has caused, I feel much more threatened by the attempts to censor the Internet and shut down discussion. The idea that Senator Joe Lieberman can ask Amazon to pull the plug on any organization’s Web presence and have it done in under a day is absolutely chilling.

Now, upstream providers are denying service to WikiLeaks mirrors as well. There’s a concerted effort to turn WikiLeaks into the Internet equivalent of an unperson. And “unpersoning” people is not the action of a free society. It’s the way a totalitarian regime operates, not the way I want my democracy to behave.

I’m disgusted with the number of financial institutions that will happily process donations to the Ku Klux Klan, but not to WikiLeaks. It’s been pointed out with some accuracy that it’s now easier to send donations to al-Qaeda than to WikiLeaks.

This says something about who and what it is we really oppose. And I don’t like what it says. We need to stand for freedom, for an informed citizenry, and for justice.

(In that vein, AlterNet’s list of Six Companies That Haven’t Wussed Out of Working With WikiLeaks is somewhat encouraging.)

Regarding DDoSes as A Form of Protest

I agree with the EFF’s statement that it “doesn’t condone cyber-vigilantism, be it against MasterCard or WikiLeaks. The answer to bad speech is more speech.”

Regarding the Pentagon Papers Parallel

The argument that this is in any way different from Daniel Ellsberg’s leak of the Pentagon Papers is ridiculous. The two are very similar. If you ever wonder how you would have stood during that incident (“sure, it’s easy to see in hindsight what was right… but would I have done the right thing back then?”)… take a look at your reaction to WikiLeaks. The two parallel each other pretty well.

To the journalists who are calling for Assange’s prosecution: Are you mad at him because he’s doing the job you should have been doing? Are you so full of spite that you’d advocate to eviscerate the First Amendment that protects your own profession? Oh, right — many of you weren’t really making use of the First Amendment’s protection anyway, since you’re not rocking the boat. That’s why Assange had to rock it instead.

Regarding Rape Allegations Against Julian Assange

There has been a lot of disinformation about this. The pro-WikiLeaks side have been claiming some things that are completely untrue. The only reason I can think of to spread such disinformation is that they don’t want anyone to know the real allegations. That doesn’t make them sound like they’re very confident in Assange’s innocence, by the way.

The charges against Julian Assange include allegations that he tore a woman’s clothing off, that he had sex with a woman without her permission while she was asleep, and that he held a woman down by her arms and pinned her with his body weight.

These are real charges of real rape activity, and the things you may have heard about “a condom broke”, or some bizarre thing called “sex by surprise” are all 100% fiction.

Furthermore, the pro-WikiLeaks side’s false claims haven’t just been about the charges against Assange, but also about the women who brought the charges. For example, there’s a claim that one of them is “a feminist” — as if wanting equal rights should be used as an excuse to deny her justice? There’s the claim that she wrote some kind of “article about how to get even with men”, which is also completely false: she translated a preexisting English eHow.com article on revenge in general, not “against men”. Then there are the claims that either or both of the women are in the pay of the CIA — claims that have not a shred of evidence to back them up.

Assange’s supporters have gone beyond simply smearing these women, and have posted their names, addresses, and other identifying information. In many cases, people claiming to support Julian Assange have threatened to rape his accusers. Then they’ve gone ahead and harassed and bullied other women who had the temerity to point out that the “it was just a broken condom” claim was a lie. And of course, that harassment includes death threats — threatening to kill people merely for trying to speak out publicly.

This behavior is completely unacceptable. It’s inhuman. It’s disgusting.

I am in favor of the free flow of information. But I’m also in favor of taking rape charges seriously. And I’m in favor of whistleblowers, accusers, and those who cry “An injustice has been done!” being able to get a fair hearing without being subjected to death threats. That applies to the Swedish women’s accusations against Assange just as much as it does to WikiLeaks’ revelations about the actions of world governments.