Monthly Archives: January 2009

4-in-4 Day 2 Project 2: TwiTerra in SF

For my second day and second project of the 4-in-4, I flew to San Francisco to present my TwiTerra project at the monthly meeting of the Bay Area Scala Enthusiasts. The group was set up by Dick Wall and Carl Quinn of the Java Posse podcast, and my friend Jorge Ortiz is a member and helps organize the speakers each month. He asked if he could present TwiTerra or if I wanted to come present it myself; I initially thought it infeasible because of my commitment to the 4-in-4, but decided I could do it in a day as my second project and be here in NYC for the other three.

The presentation was to a group of two-dozen-plus programmers at the Twitter offices in SOMA. I gave a demo of the application and then walked through much of the code, focusing on Java-Scala integration, Actors, Lift’s Object Relational Mapping, and the World Wind SDK. It was nice to give a much longer (80 minute?) presentation of the project, in contrast to the <5 minute presentations I gave at the show and at the NY Tech meetup. The presentation went well, and the Twitter employees seemed to particularly enjoy the visualization - Steve Jenson asked if I could put the .app file on the Mac Mini connected to the TV so that he could show the rest of the office in the morning.


My flight left from JFK yesterday at 9:00am, arrived in SFO at 12:45pm, and I had time for lunch with a friend before meeting with Jorge to prepare for the 7:00pm presentation at the Twitter offices. I was in a cab back to SFO by 9:15pm and at my gate with plenty of time before my 10:55pm flight, which landed back at JFK at 7:15am. I used Twitter to document the day as it went:

  • Good morning everyone! I’m going to document my trip to SF on Twitter, but I’ll @ reply to @twiterra so that seeing them is opt-in. #4in4 at 5:49 AM
  • @twiterra Somehow managed to wake up after only 15 mins of snoozing, oatmeal and espresso now. #4in4 at 5:56 AM
  • @twiterra Almost to the airport, thinking about what to say about learning Scala, looking forward to napping for 3k miles. #4in4 at 7:31 AM
  • @twiterra Advertisement for gogoinflight wifi with cool *-)- logo (a plane)… hm I wonder how much $$? I’m sleeping regardless though #4in4 at 8:21 AM
  • @twiterra Window seat with no one next to me!!! #4in4 at 8:39 AM
  • @twiterra my flight landed 35 minutes early, cutting short my otherwise great nap. On the BART to SF for lunch with a friend. #4in4 at time
  • @twiterra done with lunch, Jorge caught his train, finding coffee+wifi, the weather is flawless. #4in4 at time
  • @twiterra At a cafe called Epicenter near the Twitter office prepping for tonight with @jorgeortiz85, their [sic] playing chiptunes music. #4in4 at time
  • @twiterra Ahhh presentation in 35 mins, somehow there is code I want to improve. And by ‘somehow’, I clearly mean ‘of course’. #4in4 at time
  • @twiterra In a cab on my way to the airport, presentation went well :) #4in4 at time
  • @twiterra At my gate, plenty of time to spare, glad I could get a window seat for flight back, looking forward to another nap. #4in4 at time
  • @twiterra I meant to tweet this earlier – “Such was life in the Golden Gate / Gold dusted all we drank and ate /” (1/2) #4in4 at time
  • @twiterra “And I was one of the children told / We all must eat our speck of gold” – Robert Frost (2/2) #4in4 at time
  • @twiterra And I’m back in my apt, subway back wasn’t tooo painful (but why does the J go sooo slooowly), time to write some blog posts #4in4 at time

4-in-4 Day 1 Project 1: ITP Apartment Phyki

My first 4-in-4 project was a physical wiki, or ‘phyki’, on which ITP students could mark the locations of their apartments and find out who else in the program lived nearby.

Although all ITP students live within a relatively small distance from 721 Broadway, and despite the fact that there are significant advantages for each student of knowing which other students live nearby (sharing cabs after TNO, going out for a last-minute brunch, etc), there is currently no good way to learn who lives nearby. Several people on the student email list have proposed the creating an online (Google) map on which everyone could mark the location, but nothing has come of it that I’m aware of. There are issues of security, privacy (even if it’s protected), maintenance, and difficulty involving people who don’t read the list.

The solution I had in mind was to use an actual physical map hanging from a wall on the floor, with labeled push pins that people can use to mark their locations. It would not be as searchable as an online map, it can’t be easily archived (if one took a photograph facing the map, the labels would be perpendicular to the plane of the image and thus unreadable), the pin holes would not need to be particularly precise, it could only be accessed by people on the floor who could see the map, it would be easy to update, hard to forget about, and everyone would be aware of it.

I envisioned a giant map of all five boroughs, so I went to the Hagstrom map store in midtown. They did have a large map, but the scale was still relatively small, it did not include Jersey City, and it was expensive ($150). They did have other individual folded maps of each boroughs, and those had somewhat larger (although different) scales and were much cheaper ($5). I bought the maps for Manhattan, Brooklyn, Queens, and Jersey City, since I couldn’t think of anyone that lived anywhere else) –

Opened up and spread out, they look roughly like this –

I mounted them to foam core with double-stick tape (which brough back memories of architecture models)(thanks Meredith for the photos!) –

And here they are mounted to the foam core and leaned against a wall –

And viewed from above –

Since everyone knows where their apartments are, I decided to cut off the visually distracting street-finder tools on the sides of the map. The resulting shapes are irregular, but it should look cleaner against a white wall on the floor. It would be nice if they could all be part of one map and at the same scale, but for these purposes it didn’t really matter since this is for locations within the boroughs and not travel between them.

Finally, I bought pins at Kmart and labels at Staples. There are 75 of them right now, but I hope to get a second color (so the first and second-years can be differentiated) before the semester starts –

An additional use of the maps is specifically for people who were looking for apartments – I’ll have extra blank piece of foam core people could move their pins to if they were looking for a new place, and then people could see who else had pins there and find roommates. Furthermore, those people could see who lived where, and easily decide where to look for a new apartment based on where their friends were.

Once the construction is done on the floor I can hang the maps, and I’ll post more pictures then. Hopefully people use it!

TwiTerra – From New York to California

My presentation last week of TwiTerra at the NY Tech Meetup went very well. A PDF of the space in which the presentations are given is here, and thanks to @jprytyskacz for linking it. I think people enjoyed my presentation, and I had good conversations with several people about Twitter and other technologies at the IAC and especially at the bar where everyone went to meet afterward.

This NYTM was the first one organized by Nate Westheimer, who was sworn in at the beginning of the meeting by previous organizer (and Meetup.com co-founder) Scott Heiferman. Here’s a video of the ‘ceremony’, and if you watch carefully you’ll see that it’s my MacBook that they used :)

The event got a fair amount of press, and here’s a collection of the articles that mentioned my project:

In addition, lots of people were posting to Twitter during the event itself:

  • “‘Twitter brings the world together’ #NYTM” – @ksowocki
  • “Mapping retweets on a globe / #NYTM” – @JamesBruni
  • “Twiterra. See how how Twitter triggers connections around the world. Cool, but dizzying. http://is.gd/c5dU” – @pleeds
  • “TwiTerra shows geographical influence of tweets and retweets – http://bit.ly/QdH6” – @frank_dobner
  • “RT@twiterra: More info at http://twiterra.com Follow me to be notified when this Twitter bot goes live!” – @jprytyskacz
  • “I recommend f @nytm and @twiterra were at #NYTM tonite.” – @jprytyskacz
  • “Twiterra. See which conversations have the biggest reach.” – @mrduane
  • “#NYTM With rate of adoption at current levels, Twittera could be very cool when more Twitter users outside US. Now seeing isolated examples.” – @mcaldecutt
  • “Next up – twiterra – I blogged on this from the ITP show in Dec. – cool app follow rts around globe” – @kdtalcott

Whitney Hess (whose blog is linked above) live-tweeted the whole event, and these were the ones that were specifically relevant:

  • “#nytm Tonight’s theme is “Built on Twitter” featuring @StockTwits @ShortyAwards @CoTweet @TwiTerra @Klout @Shakeshack< /a> @Botanicalls” – @whitneyhess
  • “#nytm Steven Lehrburger of @TwiTerra is up now, showing how retweets span across the globe. Pretty sweet. Just saw @alanataylor RT @ mklopez” – @whitneyhess
  • “#nytm @lehrblogger is using the NASA World Wind libraries to create it. @innonate asks why we care. “Exposes people to new ideas”" – @whitneyhess

Also, if you happen to find any photos or video of me presenting on Tuesday, *please* send them to me! I was too busy worrying about other things, and half forgot to ask someone to take a couple photos, and half assumed there were enough cameras in the room that it would happen on it’s own. I haven’t been able to find any yet, so let me know if you do.

For my second project for the 4-in-4, I decided to fly to California so that I could be there to present TwiTerra to the monthly meeting of the Bay Area Scala Enthusiasts (BASE) at the Twitter offices in San Francisco. Jorge Ortiz (the friend who has been teaching me the language) was planning to present it anyway, but I decided that it was worth it for me to be there in person. Since I only have one day for each project, and since I need to be here on the other days to do other projects and help coordinate, I’m going to be gone less than 24 hours. I’m looking forward to a longer-than-five-minute discussion of the project and its implementation, and I’ll post again afterward.

TwiTerra Statistics and Brilliant Viral Marketing

(The presentation at the NY Tech Meetup went very well, and I will post about that later.)

As of the time of this writing, I have 161,984 tweets in the database. 72,215 of them are root tweets, or original tweets that were then retweeted but are not retweets themselves. This means that most of my chains of retweets consist only of one original tweet and one retweet. Furthermore, of these original root tweets,

  • 9,872 have at least two retweets
  • 3,063 have at least three retweets
  • 1,435 have at least four retweets
  • 738 have at least five retweets
  • 461 have at least six retweets
  • 286 have at least seven retweets
  • 199 have at least eight retweets
  • 152 have at least nine retweets
  • 109 have at least ten retweets

So, of all retweets, less than three twentieths of one percent have ten or more retweets. There are, however, several very interesting tweets with over one hundred retweets. They are as follows:

  • shefinds (115 retweets) : @shefinds is giving away a $500 #Kmart Gift Card on her blog – simply tweet or comment to enter http://urlbrief.com/22d898
  • eMom (158 retweets) : @eMom is giving away a $500 Kmart Gift Card on her blog – simply comment or tweet to enter : http://urlbrief.com/7dfb6c I want you to win!
  • karllong (133 retweets) : @karllong is giving away 10 x $25 gift certificates for http://threadless.com – just RT this to enter, will tweet the winners
  • Camiseteria (266 retweets) : @camiseteria vai sortear 5 vale-compras de R$55 do http://camiseteria.com. Retweet essa mensagem para participar. Google translates this from Portuguese as “@ camiseteria will raffle 5-worth of $ 55 purchases of http://camiseteria.com. Retweet this message to participate.”
  • chrisbrogan (145 retweets) : Please retweet the HELL out of this post: http://is.gd/ezGB
  • Armano (115 retweets) : OK, here’s the favor. It’s a big one. For big hearts. Please help. http://is.gd/eKbo Please retweet.


Some of these are not surprising – @chrisbrogan has over 32,000 followers, so when he tweets about something as important to the Twitter community as Twitter phishing scams, especially when that tweet is short, it will get retweeted a lot. @armano has only (only) 8,387 followers, but his tweet is compellingly humanitarian, and I can see the appeal of retweeting it.

The first four, however, are fascinating viral marketing campaigns. @shefinds has only 1,208 followers, @eMom has considerably more at 7,294 followers, @karllong has 2,774 followers, and @camiseteria has 4,767 followers.

An unusually large fraction of the followers of each of these accounts retweeted these viral messages. By intertwining the methodology of spreading the idea (“retweet this”) with an incentive (“to enter this contest”) the accounts were able to market the brand of whatever they were selling (as well as the brand of that specific account) to large audiences at low cost and low annoyance (clearly no one who retweeted it was annoyed with the message, and if a recipient of a retweet was annoyed, that is likely to be annoyance with the retweeter and not the brand). Remember that the retweet counts are not the number of people who received a message, but are instead the number of people who broadcast it – actual numbers of recipients would likely be one or more magnitudes larger.

Finally, note that these are only the retweets with associated geographic data – because I planned to display them on the globe, those are the only ones I kept in the database. Based on my informal observations while watching the application run of the other retweets in the database, there are not very many that either start in or are retweeted from South America. Thus the huge number of Brazil retweets that Camiseteria got that had geographic data associated with them is probably only the tip of the iceberg of retweets that did not have geographic data. I imagine that the t-shirt company got a huge amount of exposure for very little effort and very little cost.

I’ve made a slight modification of TwiTerra to highlight the Camiseteria retweets. Most retweets are in Brazil (where the original tweet was), but they also stretch to a variety of other places. (I’ll add that I came across that particular t-shirt store over a year ago; I can’t remember the circumstances, but they have nice shirts.) Download a Mac, Windows, or Linux version, be patient as it launches, and be sure to spin around the globe to Japan – two of the retweets are there, and the travelling of the information is visualized as going in opposite directions around the world from Brazil to Japan :)

TwiTerra Files for Download

I am now using Maven instead of Eclipse to build my TwiTerra project (thanks again to Jorge for teaching me a bit about Maven), and I’ve also (finally!) started to use Git / GitHub for source version control. You can view the project here – http://github.com/lehrblogger/twiterra-retweetglobe/ – and please feel free to fork the project and extend it! And contact me with questions or ideas for cool things to make!

Also, I’ve made some significant improvements to the code, and it should now require much less RAM. I’ve made packages of TwiTerra that will run on both Mac and Windows computers. Both should open full-screen and without menu bars, so press Command-Q or Alt-F4 to exit. It requires an internet connection to run, and please be patient as it initializes the globe and database connection on startup.

Download the Mac version here – it should run as a normal application without any further steps.

Download the Windows version here – be sure to follow the instructions in the readme to get it working.

Download a Linux version here – I have no idea if it works and have no computer to test it on, but I thought I’d offer it anyway.