Earlier this year on our cross country roadtrip to Los Angeles, January and I kept friends and family updated on our progress with a custom Google Map. Along the way, whomever of us wasn't driving would fire up the laptop, tether it to our iPhone, and upload pictures to the server in order to update this map of our progress.

I'm really glad we took the time to do it, not only because it gave everyone a glimpse into our progress, but it was also great to be able to go back a year later and remember the journey.  It was, however, kind of a pain to pull out the laptop, get it connected to the internet, upload photos over such a slow connection, and update the map manually on Google Map's web site.  I still remember the first night, when we pulled into our hotel at 2 in the morning after driving for 12 hours straight, and sitting down for 20 minutes to update the map instead of crashing.  Kind of inconvenient.

I've whipped up a little project that aims to streamline this process a little more: Tweet My Travel.  It's a web site that I hope to open up to people who are going on long road trips like this, so that they can keep a sort of online journal of their trip.  The idea is simple: After entering your travel dates on TweetMyTravel.com, the site keeps an eye on your Twitter account for updates that have GPS coordinates attached to them.  Twitter recently released their new geotagging features to let Twitter users share their location, and more and more Twitter applications are supporting it.  When Tweet My Travel sees a new update with an attached location, it will automatically add this location to your map along with the text from your update.  I've had a couple of friends testing this out for me over the holiday weekend, and I think we're off to a good start.  Here's a real life map generated by Tweet My Travel from my friends Jason's trip out to Virginia this weekend:

Now, as you can see, it's not nearly as polished as the first map. There are some bugs that need to be worked out, and that's where I'm hoping some of you will come in.  If you're doing any sort of traveling over the next month or so, I want to hear from you.  It doesn't require a lot, and I've outlined some of the details on the Tweet My Travel beta page, but I'd really like to see how people use this in real life to make sure this is going to be a useful and flexible option for people on the road who want to keep a record of their trip.

So, if you're doing any traveling in the coming month, or know heavey Twitter users who are, first read over the list of requirements on the beta page and then drop me a note.  I think this could be a really cool tool for travelers who want to make road trips a little more social and enjoyable.

Recent photos

Search

Profile Information

Application afterLoad: 0.000 seconds, 0.44 MB
Application afterInitialise: 0.052 seconds, 4.78 MB
Application afterRoute: 0.068 seconds, 6.24 MB
Application afterDispatch: 0.176 seconds, 15.72 MB
Application afterRender: 0.300 seconds, 20.03 MB

Memory Usage

21129496

17 queries logged

  1. SELECT *
      FROM v2_session
      WHERE session_id = '92783241a0891eb4a44ae874e64acba2'
  2. DELETE
      FROM v2_session
      WHERE ( time < '1328831023' )
  3. SELECT *
      FROM v2_session
      WHERE session_id = '92783241a0891eb4a44ae874e64acba2'
  4. UPDATE `v2_session`
      SET `time`='1328831923',`userid`='0',`usertype`='',`username`='',`gid`='0',`guest`='1',`client_id`='0',`data`='__default|a:9:{s:15:\"session.counter\";i:70;s:19:\"session.timer.start\";i:1328829090;s:18:\"session.timer.last\";i:1328831876;s:17:\"session.timer.now\";i:1328831899;s:22:\"session.client.browser\";s:48:\"CCBot/1.0 (+http://www.commoncrawl.org/bot.html)\";s:8:\"registry\";O:9:\"JRegistry\":3:{s:17:\"_defaultNameSpace\";s:7:\"session\";s:9:\"_registry\";a:1:{s:7:\"session\";a:1:{s:4:\"data\";O:8:\"stdClass\":0:{}}}s:7:\"_errors\";a:0:{}}s:4:\"user\";O:5:\"JUser\":19:{s:2:\"id\";i:0;s:4:\"name\";N;s:8:\"username\";N;s:5:\"email\";N;s:8:\"password\";N;s:14:\"password_clear\";s:0:\"\";s:8:\"usertype\";N;s:5:\"block\";N;s:9:\"sendEmail\";i:0;s:3:\"gid\";i:0;s:12:\"registerDate\";N;s:13:\"lastvisitDate\";N;s:10:\"activation\";N;s:6:\"params\";N;s:3:\"aid\";i:0;s:5:\"guest\";i:1;s:7:\"_params\";O:10:\"JParameter\":7:{s:4:\"_raw\";s:0:\"\";s:4:\"_xml\";N;s:9:\"_elements\";a:0:{}s:12:\"_elementPath\";a:1:{i:0;s:69:\"/var/sites/teamsoell.com/root/libraries/joomla/html/parameter/element\";}s:17:\"_defaultNameSpace\";s:8:\"_default\";s:9:\"_registry\";a:1:{s:8:\"_default\";a:1:{s:4:\"data\";O:8:\"stdClass\":0:{}}}s:7:\"_errors\";a:0:{}}s:9:\"_errorMsg\";N;s:7:\"_errors\";a:0:{}}s:13:\"session.token\";s:32:\"ba6dfe9205fff441e3878410f52aeb50\";s:23:\"gantry-current-template\";s:12:\"rt_juxta_j15\";}BF________com_tag|a:1:{s:7:\"default\";a:14:{s:4:\"page\";s:1:\"1\";s:5:\"limit\";i:10;s:6:\"filter\";s:0:\"\";s:10:\"boxchecked\";s:0:\"\";s:12:\"hidemainmenu\";s:0:\"\";s:4:\"task\";s:0:\"\";s:5:\"total\";s:0:\"\";s:4:\"view\";s:0:\"\";s:8:\"returnto\";s:0:\"\";s:32:\"4922f8d610dcf1a2bd203ec6f0f4578e\";s:32:\"92783241a0891eb4a44ae874e64acba2\";s:6:\"option\";s:7:\"com_tag\";s:6:\"Itemid\";N;s:3:\"tag\";s:18:\"homeownership.html\";s:9:\"lastModel\";s:7:\"tag_map\";}}'
      WHERE session_id='92783241a0891eb4a44ae874e64acba2'
  5. SELECT *
      FROM v2_components
      WHERE parent = 0
  6. SELECT folder AS type, element AS name, params
      FROM v2_plugins
      WHERE published >= 1
      AND access <= 0
      ORDER BY ordering
  7. SELECT *
      FROM v2_redj
      WHERE ('/component/content/article/213.html' REGEXP BINARY fromurl)>0
      AND published='1'
      ORDER BY ordering
  8. SELECT m.*, c.`option` AS component
      FROM v2_menu AS m
      LEFT JOIN v2_components AS c
      ON m.componentid = c.id
      WHERE m.published = 1
      ORDER BY m.sublevel, m.parent, m.ordering
  9. SELECT *
      FROM v2_rokcandy
      WHERE published=1
  10. SELECT template
      FROM v2_templates_menu
      WHERE client_id = 0
      AND (menuid = 0 OR menuid = 0)
      ORDER BY menuid DESC
      LIMIT 0, 1
  11. SELECT `option`
      FROM v2_components
      WHERE parent=0
      AND iscore=0
  12. INSERT INTO `v2_rokuserstats` ( `user_id`,`ip`,`session_id`,`page`,`referrer` )
      VALUES ( '0','38.107.179.209','92783241a0891eb4a44ae874e64acba2','/component/content/article/213.html','' )
  13. SELECT a.*, u.name AS author, u.usertype, cc.title AS category, s.title AS section, CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END AS slug, CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END AS catslug, g.name AS groups, s.published AS sec_pub, cc.published AS cat_pub, s.access AS sec_access, cc.access AS cat_access 
      FROM v2_content AS a
      LEFT JOIN v2_categories AS cc
      ON cc.id = a.catid
      LEFT JOIN v2_sections AS s
      ON s.id = cc.section
      AND s.scope = "content"
      LEFT JOIN v2_users AS u
      ON u.id = a.created_by
      LEFT JOIN v2_groups AS g
      ON a.access = g.id
      WHERE a.id = 213
      AND (  ( a.created_by = 0 )    OR  ( a.state = 1
      AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2012-02-09 23:58:43' )
      AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2012-02-09 23:58:43' )   )    OR  ( a.state = -1 )  )
  14. UPDATE v2_content
      SET hits = ( hits + 1 )
      WHERE id='213'
  15. SELECT *
      FROM v2_tag_layouts
  16. SELECT count(id)
      FROM v2_tag_hideshow
      WHERE scope = "com_content"
      AND idnumber = "213.html"
  17. SELECT id, title, module, position, content, showtitle, control, params
      FROM v2_modules AS m
      LEFT JOIN v2_modules_menu AS mm
      ON mm.moduleid = m.id
      WHERE m.published = 1
      AND m.access <= 0
      AND m.client_id = 0
      AND ( mm.menuid = 1 OR mm.menuid = 0 )
      ORDER BY position, ordering

Language Files Loaded

Untranslated Strings Diagnostic

None

Untranslated Strings Designer

None