#

To do: Pore through this great-looking Javascript Boot Camp tutorial.


#

My poor, old and few Firefox extensions are falling into disrepair. I’ll have to revisit these tutorials to get myself and them back up to speed.


#

Stone Soup was one of my favorite childhood stories, which makes a lot of sense. In essence it’s a metaphor for open source software: everyone offering whatever ingredient they have on hand to add to the soup that everyone can enjoy. The keys to delicious soup (and a successful OS project), of course, are the stone (idea), the cauldron (forum), the village square (visibility), and the cook (leader). Update: Here’s Wikipedia’s take, which also makes the copyleft association.


#

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


#

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.”


#

“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.


#

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


#

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.)


#

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.


#

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]

#

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.


#

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.’”


#

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.


#

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)]