jQuery has convenience functions for events like click and keydown, and lets you create and use your own events with bind() and trigger(), but doesn’t provide a way to create your own convenience functions for custom events. I took several lines of code from the jQuery source and created a plugin that makes creating convenience functions as easy as calling $.convenience(‘nameOfFunction’). Then I can bind or trigger an event simply by calling nameOfFunction() on the selector. This should be apparent by looking at the demo source (the third link).

  1. jquery.convenience.js – plugin source (github)
  2. convenience.html – demo (my site)
  3. convenience.html – demo source (github)

The example shows one feature of custom events that I overlooked: propagation.

I had two twitter accounts that I wanted swapped. One had my real name on it. The other had a made-up-name and was the one I’d been using on a regular basis. It was also where all of my followers were.

Since I’m getting a start in freelancing, I decided to make my main account the one with my real name on it, and try not to ramble quite so much on it.

I first tried to do this a couple of weeks ago. I deleted the account with my name, and tried renaming the account with the made-up name to my name. Unfortunately, twitter told me the account was unavailable. I quickly re-created the account to avoid losing @benatkin, which is the same as my domain name.

Today, while I was filling out a request to twitter to change the names for me so I don’t lose them, an idea popped into my head. I tried it and it worked! Here’s what I did:

  • I went to the account settings on the benatkin account and changed the username to benjamin_atkin. I figured that if worse came to worse I’d still have some representation of my name.
  • I went to the account settings on the account with my made-up name (lowerCamelCase) and changed the user name to benatkin
  • I went to the account settings on benjamin_atkin (which used to be benatkin) and changed the username to lowerCamelCase.

Now, I don’t know if twitter thought this through, so I am calling this a “hack”. It may be that twitter just hasn’t implemented locking of old names after a rename, and would prefer that people like me go through customer service.

After it was done, I left a tweet to fill my followers in on the situation:

2245067457

I got Screenflow and a Snowflake with the intent to make screencasts, but found another use for them, that might be more valuable.

It started with me testing out my equipment. I wasn’t ready to do a scripted screencast, so I just coded for an hour, while talking, and looked at the results. I found that talking to myself out loud helped me figure things out more quickly in a couple of cases. And since I was testing my gear, talking to myself didn’t feel all that strange.

Some time after watching it, I wondered what it would be like to record myself frequently. Maybe if I did something really cool, I could take a look back and try to see what my thought process was, and it would reinforce it. Or, if I was in a slump, I could use it to remind myself what I’m capable of.

Then I asked myself whether it’s practical. The answer I got was a resounding “Sure it is!”. Space and processing power are cheap. With the default settings, Screenflow documents take roughly a gig an hour. 500 gigabyte hard drives can be had for under a hundred bucks. If I record 5 hours a day, which is a *lot*, it’s about a dollar a day for the space. Screenflow doesn’t take much processing power, or if it does, it doesn’t interfere with the work that I’m doing.

I’m not sure what the most clear analogy is to other fields, but there are obvious parallels. Disk Jockeys commonly record their experiments. Team sport coaches record their players’ performances.

I’m really excited about this. I can get part of the benefit of pair programming by talking out loud and learning from yourself, without the need for a willing partner. It’s also a journal that’s remarkably easy to write. It does take a lot of time to read, though, so I’ll probably only play back my favorite sessions, and I’ll only play bits and pieces of them most of the time.

The only caveat is I might feel like I’m my own big brother. I might as well get used to that, though, as I expect in the future there will be wearable video cameras that transparently archive everything. In fact, something like that’s probably already been built.

I still plan to do some screencasting. Stay tuned!

From the this-should-have-been-obvious department:

  • If there are a couple of friends whose tweets you feel like you can’t miss during the break, turn SMS updates on for them. That way you can stop checking twitter and still (hopefully) get their tweets quickly.
  • Log out of twitter.com on all desktop or mobile web browsers.
  • Do something to hide or log out of all desktop or mobile apps. Deleting accounts is fine, because they can always be recreated. Sure, I lose my cached data, but I don’t use a twitter client to store data, I use it to read the most recent updates. Here’s what I did for each of my twitter clients:
    • Nambu: I’ve been using this twitter client on my Mac for a couple of weeks. I like it. I was able to delete my account by finding the Accounts screen, selecting my account, and pushing the delete button. I also removed it from my dock.
    • Tweetie for iPhone: I use this on my iPod Touch sometimes, when I have wifi available. I had to enable multiple accounts in the settings before I could find a way to delete my account.
    • Twidroid: My Android twitter client. I couldn’t find a way to remove my username and password, so I just uninstalled it. I can install it later.
    • Syrinx: Ditto. Uninstalled it. (I used this OS X twitter client for months, but I’ve been liking Nambu better.)

In retrospect it would have been quicker for me to just change my twitter password.