Archive for July, 2006

July 29th, 2006 | Filed under WordPress, Interface design

Placement of the “Mark all” links on the WordPress comment moderation page is giving me RSI. I couldn’t interface design my way out of a paper bag, but this one bugs the hell out of me.


Create an address book from every message in your sent mail folder

July 28th, 2006 | Filed under Code snippets, Bash scripts

Just noticed that Thunderbird has a new message filtering criteria: “From: email address in my address book.”

That, coupled with Thunderbird’s ability to add the address of anyone you send a message to automatically to your address book, opens up the possibility of filtering mail from people that you’ve communicated with before into “Known” folder, and mail from folks you don’t into “Unknown” folder.

(I’ve been jonesing for something like this for awhile; a helpful Lifehacker commenter pointed out that it’s possible.)

So to get this system going, first I had to populate my address book with all the email addresses I’ve sent mail to before. This one-liner on my IMAP server’s sent-mail file, cobbled together with a lot of help from this Ask Metafilter thread, does the trick:


grep "^To: " mail/sent-mail | grep "@" | \
sed 's,.* <*\([^ ]*@[^ >]*\).*,\1,’ | \
sort | uniq -i | sed ’s/,.*$//’ > correspondents.txt

(Mind you, this Python version is a lot more elegant, but it kept timing out on me. I have a big sent-mail folder.)

From there, import correspondents.txt as a new address book and set up your filter in Thunderbird.

Awesome.

(Also only interesting to me: The ~10k messages I sent from my personal email address in the last 2 years were to less than 2000 recipients, for an average of about 5 messages per correspondent.)


$ wc -l correspondents.txt
1823 correspondents.txt


July 28th, 2006 | Filed under Startup dot com, Web 2.0

Paul Graham: “Working on small things is also a good way to learn. The most important kinds of learning happen one project at a time. (’Next time, I won’t…’) The faster you cycle through projects, the faster you’ll evolve.”


July 27th, 2006 | Filed under Design, Web 2.0

“The Jolly Rancher/Fisher Price style of design needs to die. Now.” - a commentor on Greg Storey’s ripping critique of Technorati’s new design. I wholeheartedly agree. I don’t want my webapps looking like children’s toys.


Just Say No to feature requests

July 27th, 2006 | Filed under Rapid development, Interface design, Open source

I’m the Wicked Witch of the West over on the todo.txt mailing list, smacking down feature request after feature request with “No” and “No” and “quite frankly, no.”

Today I said:

Software can only do so much. Ultimately you want a human at the wheel.

I should have worded it differently. Software can do everything. But you don’t want it to. Software should only do so much.

Being a yes-girl, it’s hard for me to say no to people’s earnest ideas, shared in the spirit of helping others. But Torvalds’ and other great open source developers’ genius was in their ability to pinpoint the good ideas and weed out the bad.

In short, good developers are good editors.


July 27th, 2006 | Filed under Startup dot com, RSS, Web 2.0

Talk about the the paradox of choice: A list of over 100 RSS readers. Oy.


July 26th, 2006 | Filed under Visual Basic

Just published a simple VB script that appends to a text file without opening an editor over at Lifehacker. The article spin is to use it to log your day’s activities, but it works well for any kind of thoughtless logging (todo’s, grocery list, gift ideas, brainstorming, readlater.txt, etc.)


July 26th, 2006 | Filed under Design, Greasemonkey, Open source

There’s no feeling quite as sweet as when you discover code you set a sail into the public domain ages ago was republished and improved upon by others. Thomas Upton took my del.icio.us Prettifier Greasemonkey user script and modified it to make del.icio.us even prettier. Nice work, Thomas.


July 25th, 2006 | Filed under Javascript, DHTML, Design

I just adore the Lightbox JS v2.0 photo gallery Javascript library. It’s flashy but usable, it degrades nicely sans Javascript, it looks search engine friendly AND it’s optimized for performance with pre-loading as well. I must hook this up; I’ve already got a couple places in mind.


The Anti-Web 2.0

July 24th, 2006 | Filed under Web 2.0

[Some thoughts in preparation for an upcoming tech conference.]

I’m a lot more interested in exploring the ways that users can host, remotely access and futureproof their own data on their own hard drives with free software that uses open formats than yet another Web 2.0 app that requires yet another login and yet another place to store bits of yourself on the web.

Yeah, user-generated folksonomies and tagging and Ajax and syndication and mashups have their advantages and sure, I’m excited about the ways that a web browser can be so much more than a document reader. But do I want to live my whole computing life in a browser? Frankly, no. Do I want all my data hosted on other people’s servers all over the place? No.

Why?

  • I want to take my stuff with me, into the future and into places that don’t have internet access.
  • I want to search across my documents and data stores and connect my ideas, without being dependent on third party services to do so.
  • I want what I do with my data to be limited only by my imagination and not the API’s, Terms of Service, functionality and server uptime of some random company. (This is why I lasted 2 months using Blogger back in 2001.)
  • I don’t necessarily want my data branded by a company or advertised against in ways I can’t control.
  • I hate identifying myself with services. It’s like wearing a tee-shirt with a Nike swoosh on it. del.icio.us? Geek. Flickr? Hipster. Plaxo? Biz person. Bloglines? Info junkie. Gmail? Early adopter who knows someone with an invite. And so on.

I still prefer my text files and my own MySQL databases to anyone else’s, and I’m not sure why I’m so alone in that sentiment.

Do I have COBS (Cranky Old Bastard Syndrome)? Or are the money people just getting to the “gee whiz” bit of all these technologies so this crap is just springing up everywhere? Why don’t any of my compatriots seem as concerned about this as I am?

I suppose I’ll just sit back and keep writing my open source shell scripts and automating my backup plan and trying to resist another rounded-corner, drop-shadowed, yellow fade social thingamagig that I can give away my life to, in wasted hours and personal data.

Long live the Google text ad.


There’s only one input box at the command line

July 20th, 2006 | Filed under Interface design

Citing the thesis of The Paradox of Choice, the 37 Signals boys say too many input boxes can paralyze the user to the point of inaction.

Options seem like a nice idea. But each one adds up. Once you realize the evil impact they can have, you start to look at them differently.

They use the embarrassing “Add Event” screen from Yahoo! Calendar as an example of a paralyzing web form, and even though I’ve used Y! Cal for years now, I couldn’t agree more.

My three favorite software interfaces are:

  • The Unix command line
  • Google’s search box
  • Mac OS X’s Quicksilver

And all three have only one input box.

Outsourcing choice [Signal vs. Noise]

July 20th, 2006 | Filed under Search Engine Optimization

If just regular ol’ Google juice isn’t argument enough, Google Accessible Search is a good way to convince your clients their pages should be as semantic (read: textual and meaningful stripped of style, images and Flash foofery) as possible.


July 20th, 2006 | Filed under Self-marketing

Don’t be so sure he’s the expert: “Not a single woman among all our female study subjects called herself an ‘expert’ user, while not a single male ranked himself as a complete novice or ‘not at all skilled.’”


July 20th, 2006 | Filed under Javascript, DHTML, AJAX, API

Social timeline maker Dandelife is really cool but I’m anti-social, and anti-hosted data. Happily, with the open source, fancy pants SIMILE Timeline one can create and host their own timeline. Fabulous.


July 16th, 2006 | Filed under Bash scripts

I had no idea one could write a bash completion script - that makes the Tab key fill in possible custom commands or arguments when you’re at a prompt - but one of my todo.txt developers did, and wrote one that completes todo.sh arguments or your existing projects, contexts or priorities. Which totally blew my doors off.


Customize your terminal prompt

July 16th, 2006 | Filed under Code snippets, Bash scripts

I’m probably going to be embarrassed about this post in the morning, but I re-figured out how to customize my terminal prompt, and I got something that I like which I’ll post here for the next time I get a new computer and have to Google the whole thing up again.

In ~/.bashrc (Mac: ~/.bash_profile), add:


function prompt
{
local GREEN="\[\033[0;32m\]"
local CYAN="\[\033[0;36m\]"
local GRAY="\[\033[0;37m\]"
local BLUE="\[\033[0;34m\]"
export PS1="${GREEN}\u${CYAN}@${BLUE}\h ${CYAN}\w${GRAY}
$ "
}
prompt

Then:


$ source .bashrc

Which makes it look something like this:


gina@amelia ~/Documents
$

But with pretty colors.

That is all.


Diffutils - patching software with .diff files

July 15th, 2006 | Filed under Open source, Unix

Now that I’m running an open source project with a mailing list of developers much more skilled than I am, I’ve got folks emailing in code patches in the form of .diff files. Having never dealt with .diff’s before (I know, I know, Windows baby here) I dove into the GNU diffutils manual. This kind of stuff still scares the crap out of me, but:

$ patch todo.sh todocolour.diff

Applied the submitted file differences to the source code, and I was able to run my unit tests straightaway without hand-adding edited code line by line.

Patch added the changed lines to the original file (todo.sh) and created a todo.sh.orig file as well. If it fails on merging any file differences, it creates a todo.sh.rej file.

Simple, useful and handy.

Diffutils [GNU Project - Free Software Foundation (FSF)]

July 14th, 2006 | Filed under Subversion, Eclipse

The Subclipse plugin for Eclipse is my preferred method for talking to my Subversion repository. Here’s a thorough tutorial on using Subversion with Eclipse.