I just downloaded my tweet archive. Here are a few tweets I found:

The 4 in Deadmau5′ 4×4 = 12 is actually an A, and A = sqrt(12). #leetspeek 16 feb 2012

Hmm, “json” ends with the same letters (and for me, sound) as “python”. Two new words: jsonic and jsonista! 5 oct 2010

I’m in a Wave about Boulder with @HKoren. We’re using photos, and lots of threads. I’m learning more about it. Anyone want to join? @ or DM. 24 nov 2009

I suppose this is the opposite of NoSQL. http://theformspider.com/ #onlysql 7 Oct 11

crayfish 4 Oct 12

From time to time I’ve been recording voice memos. I find them to be valuable both when I record them, because I explore thoughts in a different way, and later, when I listen to them. It’s a convenient sort of diary for me. Here’s a snippet from a voice memo I recorded while I was driving from the Raleigh-Durham International Airport to the coast in a rental car, thinking about what I had just resolved to do, which was to learn things in depth, rather than just read web development news:

So, who shall I learn from? I guess, it doesn’t matter that much. What matters is that I learn, that I stick to learning, that I spend my time on real learning and that I don’t get lured into the kind of learning that isn’t that important. Now, it doesn’t help me to read Hacker News, and to poke around into every little thing that comes out…because, it’s rare that I learn about what comes out enough to use it on something, so what value am I getting out of it? Not much. And…it’s real easy to do that, because I’ve been lured into the idea that being a successful programmer is mostly about keeping up on learning everything new—not missing anything.

One poignant memory I have of not really learning something is when I read about rip on twitter. I went nuts about it, and I thought it was really cool that I had twitter and Hacker News so I could hear about it right away. Then, a couple of weeks later, I realized that I had done absolutely nothing besides read the article. I hadn’t even installed it. Meanwhile, in those same couple of weeks, I had spent maybe an hour a day reading articles I found on HN and twitter. I was really busy when I realized this, so I didn’t immediately go out and try it. Chances are, if I had any problems that could have been solved by rip, my knowledge of it would have got me nowhere. Because I hadn’t used it, I forgot almost everything in the article about it, except that rip is like virtualenv for ruby.

Now, a new one has surfaced: Node.js. I read some early articles about Node.js. I’ve downloaded it. I’ve even ran a couple of demos. But what I haven’t done is build anything with it. Now, everyone knows about Node.js, and many of the people who don’t pay attention to new developments like I did, know Node.js, while I don’t. What’s more, people who have been more proactive about learning and participating in open source projects, have people from other communities begging them to try Node.js. I’ve seen it happen. It seems that the information networks of those who genuinely participate in open source are fine without HN or twitter (though they may be enhanced by them).

  1. Limit your number of tweets per day to a certain number. Use them wisely.
  2. If you get close to the limit, start saving tweets for future days.
  3. If you want to say more online, find interesting blog posts and leave insightful comments. Comments that require work outside of composing the comment tend to be insightful.
  4. Exceptions should be exceptional.

Backstory: I’ve lost readers (sounds less narcissistic than “followers”) by tweeting too often. I’ve changed how I’ve tweeted since I read Gwen Bell’s twitter bio, which used to say that she was limiting her number of tweets to a certain number per day. Sometimes I still have been tweeting too often, though. As I started blogging more regularly, the idea to switch from tweeting to leaving comments on blogs came to me.)

I’ve talked a lot about it, but I still haven’t taken a proper twitter break. I took a break for about a week. Toward the end of the break, I didn’t think about twitter a whole lot, but I still thought about it. It’s quite a habit.

Making it take a couple of steps to check my twitter account wasn’t enough, so I’m going to try something else—making my twitter account private. One reason for logging back into my twitter account after such a short amount of time was to replace the current tweets on my twitter profile with fresh ones. Now my twitter profile can only be seen by those whom I follow, so that won’t be such a concern this time.

I made it clear in my twitter profile that I’m taking a break from twitter and will still be reading my DM’s. Hopefully people won’t worry about me this time like a few did when I abruptly deleted my twitter account last October.

So, why has twitter been such a problem for me? I think a big part of it is that I’m not in control of my experience. If I was in charge, I would make my twitter account purely a microblog. People couldn’t see who I was subscribed to. I would also change how I manage users and filter and aggregate my feeds. This latter part I can change by writing my own twitter account, which is something I might do at some point.

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:


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.

On the microblogging site twitter, a blog post is called an update, or informally, a tweet. When someone copies a tweet and posts it to their twitter feed, it’s called a retweet. Sometimes opinions are retweeted by those who share them, other times it’s information, and other times it’s silly memes. This evening, a local friend of mine on twitter started a meme by saying “tweet.” and asking for a retweet. One person who retweeted it got his message retweeted.


I know I’m not the first person to graph retweets, but being curious as to what this particular graph would look like, I decided to do a graph in Python as a programming exercise. I did it using a GraphViz library. The code is here:

import pydot

graph = pydot.Dot('rt', graph_type='digraph')
tweeps = ('tysoncrosbie', 
               ('phxwebguy', 'leaky_tiki'),

def add_edge(source, dest):
  graph.add_edge(pydot.Edge(source, dest))

def first_flat(tree):
  if isinstance(tree, tuple):
    return first_flat(tree[0])
    return tree

def find_edges(tree):
  if isinstance(tree, tuple):
    source = tree[0]
    for dest in tree[1:]:
      add_edge(source, first_flat(dest))


The code takes a nested list structure (a tree) and produces edges from it, which can be graphed by GraphViz. It uses pydot, a GraphViz library for Python. Here is the resulting image:



  • Python doesn’t have a built-in list flattening function. This was irritating. Ruby’s is Array#flatten. It would have been so much nicer to have been able to grab the first element of a flattened list rather than write the first_flat function or copy/paste a list-flattening function from the Internet.
  • pydot is really simple to use. I liked how it could produce a png file. I was planning just to have it create a dot file and then use GraphViz to create a png, but when I saw the write_png function I decided to just use that.
  • GraphViz has reasonable defaults. It produced a nice-looking graph on the first try. I think that’s a big part of why GraphViz is as popular as it is.

I was hoping to have a little more to show for tomorrow’s Python Interest Group meeting, but this will have to do!

As stated before on this blog, I’m a heavy twitter user. I tried to quit twitter and found that it was hard to leave. Eventually I just gave in. Now I’m following somewhere between 100 and 200 accounts.

Sometimes I want to say or quote something that’s just below 140 characters, but I feel obligated to provide some context. In those situations, I usually wind up cutting out some punctuation or text in order to fit a shortened URL. Not anymore—if it’s searchable.

I created a new twitter account called @srch. If you click on the twitter ID, it takes you to @srch’s twitter profile. On that page are instructions that will let the savvy user know that if they have decent searching skills, they can probably find where the text came from.

Please let me know what you think of this idea.

Update: I was wrong about the popup preference not working. I had forgotten to turn off popup balloons on one of my computers, and missed a return statement while reading the source code. So my changes are unnecessary.

I am a big fan of twitter. I use it all the time. I follow a lot of people. Some I know personally, some I’ve only met online, and some I have never met. I like to interact with people on twitter in real time.

Of course, the benefits of twitter come at the cost of time. The little bits of time here and there spent reading and posting tweets add up. It can also cause interruptions, making it hard to focus.

twitter.com and twhirl

I used twitter.com at first, then twhirl, and twitter.com again before I discovered TwitterFox.

The biggest problem with using twitter.com is that I have to load twitter.com to check for new tweets, whether or not there are any new tweets. It takes a while to load a web page. Usually that is an interruption in itself. Usually I either miss the action on twitter or I obsessively check twitter.com to see if there are any new tweets. On days when I’m feeling less motivated or more curious about what’s happening on twitter it is usually the latter.

For a month or two I used twhirl to access twitter. There are two different ways of using it, each of which has its own problems. One way is the default, where it pops up new messages in the lower-right corner of the screen. This is the way most desktop twitter clients work. The problem with this is obvious: it’s an interruption, plain and simple. If I’m in the zone, I will likely get distracted. The other way of using twhirl is to turn off pop-up messages, and to either give the window some space on the screen or to switch to it using Alt-Tab to check tweets. The problem with this is it quickly devolves into a glancing or Alt-Tab frenzy, as at any time when I’m even slightly curious about what’s happening on twitter, I can check in an instant. Often times when I would check I would find no new tweets.

the twitter urge

Every so often I get the urge to check twitter. It’s perfectly natural for anyone who has discovered the joy of using twitter. What matters is what I do with those urges. If every urge turns into reading a list of twitter messages, it can turn into a real productivity killer.

For a while I’ve known the way that I would like to be able to use twitter. I would like a number of new messages on the screen. Then, if I got the twitter urge and there weren’t any new messages, it would only cause a split-second of interruption. If there were any new messages, I would know, and if I didn’t check even though there were new messages, I could give myself a pat on the back for staying productive, and know that once I got more work done I would have something to read.

After a week of being frustrated with twitter, I decided to do something about it. So I looked at the list of twitter clients again and tried a couple out. I wanted one that was open source and easy to customize.


I spend enough time in Firefox, both at work and on my laptop, that having something in the Firefox status bar is pretty much as good as having something in the taskbar, if not better. Firefox extensions are also easy to customize (unless the code is a mess), so I gave it a try. When I saw the number of new tweets in the lower-right corner of my Firefox window, I was elated. This is exactly what I wanted!

It worked really well for me, once I figured out how to turn off popup balloons, where it would show the latest tweet(s) in the bottom-right corner, much like twhirl. At first, I thought the preference wasn’t working, so I made changes to the source code. I found tinkering with the source code to be relatively easy. Since I’m a web developer, I’m very comfortable working in JavaScript.

The tiny difference between TwitterFox and twhirl that makes it work for me is that the number of messages appears on a part of the screen that I see regularly. The information I need is there, and presented in a way that is not distracting. This is also the way I keep tabs on my e-mail (GMail) and my RSS Feeds (Google Reader), though I like the way TwitterFox shows the number better. GMail and Google Reader have the number of new items in their titles, which appear in the Firefox tab bar. Sometime I’d like to find or make extensions that will show the number of new items in those two web apps in the Firefox status bar.

I’ve become a somewhat avid twitter user over the last several months. It’s helped me to stay in contact with existing friends and to get to know a few people from Refresh Phoenix, a local web design/development club. For those who don’t know what it is, it’s like LiveJournal, except each blog entry is limited to 140 characters, the friends feature works slightly differently, and it has good integration with SMS.

A couple of things I really like about it:

  • The 140 character limit. Twitter has a strict 140-character limit on all blog posts (tweets in twitter lingo). I’ve found this to be a very useful constraint. It reduces the amount of reading I have to do to keep tabs on friends. It also reduces the amount of time spent writing. As long as I don’t follow too many people, and don’t follow those that post too much, I can avoid spending too much time on twitter.

    I think it is also helping me to be a better writer and conversationalist. Trying to tell a story in 140 characters can be an interesting exercise. Inevitably, some details need to be dropped. Sometimes the story is not as good because it’s missing some interesting details, but often what’s left out is uninteresting. I had one such moment today.

    Yesterday, I was hanging out with some friends and told them a story. About half of the people found it interesting, but most thought it was long-winded and the half who weren’t interested were bored by it. If I had been thinking like I am when I write a twitter post, it might have been better received.

    I think the 140-character limit is a constraint people ought to embrace. There are a couple of ways to get around it — posting multiple tweets or dropping vowels and using lots of abbreviations and text-messaging-speak. I have a couple of rules of thumb. I try not to make a post that would make absolutely no sense to someone who didn’t read the other post. I also avoid shortening more than two or three words to make my post fit in 140 characters.

  • Easy come, easy go. On Twitter, if someone follows you it sends you a friendly notice with the username of the person who follows you. If someone stops following you, it sends you no such notice. So, unless you’re constantly checking the list of people who follow you, you can’t give them a hard time about not following you anymore.

    It might annoy some people, but it’s for the greater good. It encourages people not to break twitter etiquette, or else people might stop following them. It also makes twitter fun to use, because if one user is being annoying, you can quit following them instantly and not face immediate blowback, unless that person is a real jerk.

  • Best Wishes. On twitter, the notification e-mails you receive when a person follows you end with the following signature:


    A few times, that’s been just the thing to help me to have a better day. The people at twitter are wishing everyone using their service the best. It’s the best closing salutation ever, IMHO. Thanks, folks!