TwiTerra
Tracking retweets before Twitter-style retweets even existed.
TwiTerra reveals how people use Twitter to share and re-share ideas, building connections that encircle the world.
Video
TwiTerra Final from me on Vimeo.
Description
TwiTerra is built on the social messaging service Twitter, which allows users to broadcast 140-character status updates for interested friends, family, coworkers and strangers. It is common for Twitter users to re-broadcast the ‘tweets’ of others, and these ‘retweets’ repeat an idea or pass on a message from a person that the initial user is following to all of the people who are following that person, with attribution given to the original author.
TwiTerra uses the Twitter API and the third-party Twittervision API to build data models of geo-located retweet trees, showing how an idea is initiated with an original tweet and branches out as other users re-broadcast it. This information is gathered constantly and stored in a database, which is later visualized on a globe using a set of open-source Java libraries created by NASA.
Retweets are broadcast to audiences that are different from the audience of the original tweet, and this non-discriminatory message forwarding can expose incidental recipients to content that they might not have otherwise seen. Thus Twitter can serve to break people out of the echo chamber of these otherwise homophilous social networks, and TwiTerra visualizes these liberations in the context of both each other and of the planet as a whole.
Download
I have 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 now 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.
External Links
Blog Posts
- 01/14 — 4-in-4 Day 2 Project 2: TwiTerra in SF
- 01/11 — TwiTerra – From New York to California
- 01/08 — TwiTerra Statistics and Brilliant Viral Marketing
- 01/04 — TwiTerra Files for Download
- 01/04 — TwiTerra at the NY Tech Meetup!
- 01/04 — Intro to Computational Media – TwiTerra Conclusion
- 12/19 — Intro to Computational Media – Additional Description of TwiTerra
- 12/04 — Intro to Computational Media – TwiTerra Milestone (Final Project Progress)
- 12/01 — Intro to Computational Media – Accessing the Database (Final Project Progress)
- 11/29 — Intro to Computational Media – TwiTerra (Final Project Progress)
- 11/05 — Intro to Computational Media – Retweet Tree (Final Project Proposal)
- 10/23 — Intro to Computational Media – Midterm Part 2
- 10/15 — Intro to Computational Media – Midterm Part 1
- 10/09 — Intro to Computational Media – HW5
Source Code
I am now using Maven instead of Eclipse to build my project, and I’ve created a GitHub repository where you can download, view, edit, and compile my code for yourself: http://github.com/lehrblogger/twiterra-retweetglobe/
Implementation
I wrote a PHP script that fetches new tweet and stores them in a database, and it has been running as a cron job on my Dreamhost server since November 25th. At the time of the show, I had at least 78,000 tweets in the database with 35,000 distinct retweet trees.
I wrote the visualization side of the project in a programming language called Scala that runs on the JVM, and I used Scala’s associated web framework, Lift, to access the database. NASA has made available a set of Java libraries that display a Google-Earth-like globe in an applet, and I used those libraries and the included drawing/text functionality to visualize the retweet data on a globe. I used the Timing Framework Java library to manage the various animations.
Thanks to Jorge Ortiz and Dan Shiffman for for answering numerous Scala questions, acting as a sounding board for implementation ideas, PHP troubleshooting, and support.