<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>The Tropo Blog</title>
	
	<link>http://blog.tropo.com</link>
	<description>THE platform for building cloud communications applications</description>
	<lastBuildDate>Fri, 04 May 2012 19:51:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/tropo" /><feedburner:info uri="tropo" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Call the Empire Strikes Back hotline on Star Wars Day</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/SBgF954-k2E/</link>
		<comments>http://blog.tropo.com/2012/05/04/call-the-empire-strikes-back-hotline-on-star-wars-day/#comments</comments>
		<pubDate>Fri, 04 May 2012 19:43:21 +0000</pubDate>
		<dc:creator>Adam Kalsey</dc:creator>
				<category><![CDATA[Tropo]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[international]]></category>
		<category><![CDATA[star wars]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5890</guid>
		<description><![CDATA[Happy Star Wars day! May the 4th be with you. Thirty years ago for the upcoming Empire Strikes Back release, Lucasfilm created a telephone hotline so fans could dial in and hear a short message from a Star Wars character. Each month, fans could dial the hotline and hear a new message, each recorded by [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2010/06/28/star-wars-empire-strikes-back-hotline-on-tropo/' rel='bookmark' title='Star Wars Empire Strikes Back hotline on Tropo'>Star Wars Empire Strikes Back hotline on Tropo</a></li>
<li><a href='http://blog.tropo.com/2010/06/29/how-the-star-wars-hotline-was-created/' rel='bookmark' title='How the Star Wars hotline was created'>How the Star Wars hotline was created</a></li>
<li><a href='http://blog.tropo.com/2010/12/06/customer-service-hotline/' rel='bookmark' title='Customer Service Hotline'>Customer Service Hotline</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Happy <a href="http://en.wikipedia.org/wiki/Star_Wars_Day">Star Wars day</a>! May the 4th be with you.</p>
<p><div id="attachment_5891" class="wp-caption alignright" style="width: 298px"><img src="http://blog.tropo.com/files/2012/05/SW_-_Empire_Strikes_Back.jpg" alt="" title="SW_-_Empire_Strikes_Back" width="288" height="446" class="size-full wp-image-5891" /><p class="wp-caption-text">Poster courtesy Wikipedia</p></div>Thirty years ago for the upcoming Empire Strikes Back release, Lucasfilm created a telephone hotline so fans could dial in and hear a short message from a Star Wars character. Each month, fans could dial the hotline and hear a new message, each recorded by the actors from the films. The audio was lost until two years ago, when Lucasfim’s first head of fan relations found an old cassette tape with the recordings on it.</p>
<p>At the time, <a href="http://blog.tropo.com/2010/06/28/star-wars-empire-strikes-back-hotline-on-tropo/">we created a copy of the telephone hotline</a>, and since we&#8217;re big Star Wars fans around here (I have a lifesize Yoda and dozens of vintage posters in my office), we&#8217;ve updated it for Star Wars day, complete with a vanity phone number.</p>
<p>Call <strong>(630) 92-FORCE</strong> ((630) 923-6723) to hear one of the original messages from the Empire Strikes Back hotline. Want to hear more? You don&#8217;t need to wait a month for the next one. Just call back. Each time you call, we&#8217;ll play a randomly-selected recording. There are five in all. </p>
<p>Outside the US? Call in via SIP at <a href="sip:9991443239@sip.tropo.com">9991443239@sip.tropo.com</a> or Skype at <a href="skype:+990009369991443239?call">+990009369991443239</a>. Or call one of the 36 local access numbers listed below.</p>
<p><span id="more-5890"></span></p>
<ul>
<li>Argentina: +54 11 5984-2386</li>
<li>Australia: +61 2 8015 5794</li>
<li>Austria: +43 4372 0881063</li>
<li>Belgium: +32 2 808 22 55</li>
<li>Brazil: +55 21 4042-1307</li>
<li>Bulgaria: +359 32 571616</li>
<li>Chile: +56 2 581 4801</li>
<li>Czech Republic: +420 228 880 542</li>
<li>Denmark: +45 69 91 88 21</li>
<li>Estonia: +372 668 2581</li>
<li>Finland: +358 9 31582742</li>
<li>Greece: +30 21 1198 2851</li>
<li>Hong Kong: +852 5808 3075</li>
<li>Ireland: +353 15 133089</li>
<li>Israel: +972 3-372-0385</li>
<li>Italy: +39 06 9936 7670</li>
<li>Japan: +81 3-4579-0525</li>
<li>Latvia: +371 65 187 800</li>
<li>Lithuania: +370 5 214 0062</li>
<li>Luxembourg: +352 20 88 07 19</li>
<li>Malta: +356 2778 0350</li>
<li>Mexico: +52 55 4741 1290</li>
<li>New Zealand: +64 9-887 4103</li>
<li>Panama: +507 836-5542</li>
<li>Panama: +507 836-5544</li>
<li>Peru: +51 1 7007949</li>
<li>Poland: +48 22 307 09 94</li>
<li>Portugal: +351 308 800 714</li>
<li>Puerto Rico: +1 787-777-1457</li>
<li>Slovakia: +421 2/330 026 58</li>
<li>Slovenia: +386 1 888 80 26</li>
<li>South Africa: +27 21 300 7926</li>
<li>Spain: +34 911 23 37 91</li>
<li>Sweden: +46 8 446 802 79</li>
<li>Switzerland: +41 43 508 22 59</li>
<li>United Kingdom: +44 1223 790255</li>
</ul>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2010/06/28/star-wars-empire-strikes-back-hotline-on-tropo/' rel='bookmark' title='Star Wars Empire Strikes Back hotline on Tropo'>Star Wars Empire Strikes Back hotline on Tropo</a></li>
<li><a href='http://blog.tropo.com/2010/06/29/how-the-star-wars-hotline-was-created/' rel='bookmark' title='How the Star Wars hotline was created'>How the Star Wars hotline was created</a></li>
<li><a href='http://blog.tropo.com/2010/12/06/customer-service-hotline/' rel='bookmark' title='Customer Service Hotline'>Customer Service Hotline</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2012/05/04/call-the-empire-strikes-back-hotline-on-star-wars-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2012/05/04/call-the-empire-strikes-back-hotline-on-star-wars-day/</feedburner:origLink></item>
		<item>
		<title>International Space Apps Challenge is Out of This World!</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/PkFk1zShMl0/</link>
		<comments>http://blog.tropo.com/2012/04/26/international-space-apps-challenge-is-out-of-this-world/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 20:13:40 +0000</pubDate>
		<dc:creator>cmoe</dc:creator>
				<category><![CDATA[Tropo]]></category>
		<category><![CDATA[GWOB]]></category>
		<category><![CDATA[International Space Apps Challenge]]></category>
		<category><![CDATA[NASA]]></category>
		<category><![CDATA[San francisco]]></category>
		<category><![CDATA[Space Apps Challenge]]></category>
		<category><![CDATA[Space Apps Challenge San Francisco]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5853</guid>
		<description><![CDATA[The International Space Apps Challenge was held this past weekend for the first time in 17 countries and 25 cities with over 2,000 developers participating to work on 71 different challenges. Tropo was a sponsor and I was fortunate enough to participate in the codethon with members of NASA including Astronaut Ron Garan, Chief Information [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/05/05/hacking-a-better-world/' rel='bookmark' title='Hacking a Better World'>Hacking a Better World</a></li>
<li><a href='http://blog.tropo.com/2010/11/17/random-hacks-of-kindness-and-international-open-data-hackathon/' rel='bookmark' title='Random Hacks of Kindness and International Open Data Hackathon'>Random Hacks of Kindness and International Open Data Hackathon</a></li>
<li><a href='http://blog.tropo.com/2010/10/12/win-with-tropo-and-rails-rumble/' rel='bookmark' title='Win with Tropo and Rails Rumble'>Win with Tropo and Rails Rumble</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id="attachment_5855" class="wp-caption alignleft" style="width: 310px"><a href="http://blog.tropo.com/files/2012/04/photo.jpg"><img class="size-medium wp-image-5855  " title="Astro Ron" src="http://blog.tropo.com/files/2012/04/photo-300x300.jpg" alt="" width="300" height="300" /></a><p class="wp-caption-text">Space Apps Challenge San Francisco with @Astro_Ron</p></div>
<p>The <a href="http://spaceappschallenge.org/">International Space Apps Challenge </a>was held this past weekend for the first time in 17 countries and 25 cities with over 2,000 developers participating to work on 71 different challenges.</p>
<p>Tropo was a sponsor and I was fortunate enough to participate in the codethon with members of NASA including <a href="http://en.wikipedia.org/wiki/Ronald_J._Garan,_Jr.">Astronaut Ron Garan</a>, Chief Information Officer <a href="http://www.nasa.gov/offices/ocio/about/linda_cureton_bio.html">Linda Y. Cureton </a>and <a href="http://open.nasa.gov/blog/author/kpaintin/">Kristen Painting</a> Project Manager for the NASA Open Government Initiative all in attendance at <a href="http://www.techshop.ws/tssf.html">TechShop</a> San Francisco with great enthusiasm.</p>
<p>Despite the abnormally warm San Francisco weather, developers kicked off the weekend presenting their challenges and formed teams to create solutions.  One of my favorite challenges for Space Apps San Francisco were the developers from <a href="http://openrov.com/">OpenRov</a>, creating open-source underwater robots for education and exploration of the ocean floor.</p>
<p style="text-align: left;">Their passionate pitch included a story of 100 pounds of gold lost over 100 years ago in an underwater cave which began their obsession with robots uncovering the sea.  OpenRov won the Open Source Extensibility Award in SF and was the only organization in the world that could mobilize such enthusiastic global participation.</p>
<div id="attachment_5864" class="wp-caption alignright" style="width: 310px"><a href="http://blog.tropo.com/files/2012/04/photo-copy.jpg"><img class="size-medium wp-image-5864   " title="WilloBl00, CristinaSF, Tropo &amp; GWOB at Space Apps San Francisco" src="http://blog.tropo.com/files/2012/04/photo-copy-300x300.jpg" alt="" width="300" height="300" /></a><p class="wp-caption-text">WilloBl00, CristinaSF, Space Apps, Tropo, GWOB </p></div>
<p>Organizing the event was the fabulous Willow Brugh of <a href="http://gwob.org/">GWOB</a>, an organization founded by Tropo&#8217;s own Chief Developer Evangelist Johnny Diggz.  An Open Gov champion of the weekend with her space tights, space tie, amazing  waffles and exuberant energy.  Thanks <a href="https://twitter.com/#!/willowbl00">@WillowBl00</a> for an exceptional job leading the  weekend!</p>
<p>And thank you to all the participants both in groups and   participating    online to develop over 100 solutions for the challenges   presented in  48 hours!  We look forward seeing all the development over the weekend accelerate and many more codethons of citizen science to come!</p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/05/05/hacking-a-better-world/' rel='bookmark' title='Hacking a Better World'>Hacking a Better World</a></li>
<li><a href='http://blog.tropo.com/2010/11/17/random-hacks-of-kindness-and-international-open-data-hackathon/' rel='bookmark' title='Random Hacks of Kindness and International Open Data Hackathon'>Random Hacks of Kindness and International Open Data Hackathon</a></li>
<li><a href='http://blog.tropo.com/2010/10/12/win-with-tropo-and-rails-rumble/' rel='bookmark' title='Win with Tropo and Rails Rumble'>Win with Tropo and Rails Rumble</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2012/04/26/international-space-apps-challenge-is-out-of-this-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2012/04/26/international-space-apps-challenge-is-out-of-this-world/</feedburner:origLink></item>
		<item>
		<title>Recovering from the Railsberry Sugar High</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/GfuUI5SyDHo/</link>
		<comments>http://blog.tropo.com/2012/04/24/recovering-from-the-railsberry-sugar-high/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 06:03:13 +0000</pubDate>
		<dc:creator>Diggz</dc:creator>
				<category><![CDATA[Awesome]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Hackathon]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[#railsberry]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5844</guid>
		<description><![CDATA[Wow, what an awesome event that the Railsberry team put on last week in Krakow, Poland! It&#8217;s difficult to describe in words the attention to detail and coordination by the Applicake and Future Simple crews put into making this a truly memorable event. The Railsberry team put together some awesome videos as well such as [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/04/14/php-hacking-in-nashville/' rel='bookmark' title='PHP Hacking in Nashville!'>PHP Hacking in Nashville!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin: 5px;" src="https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash4/p480x480/408642_244666838935706_148887755180282_602649_878320825_n.jpg" alt="" width="246" height="173" />Wow, what an awesome event that the Railsberry team put on last week in Krakow, Poland!   It&#8217;s difficult to describe in words the attention to detail and coordination by the Applicake and Future Simple crews put into making this a truly memorable event.</p>
<p>The Railsberry team put together some awesome videos as well such as this one from <a href="http://vimeo.com/40669633">Day 1</a> and this one from <a href="http://vimeo.com/40734575">Day 2</a>.  I put some video together from the <a href="http://animoto.com/play/aZ65bkpk73LSlwyFEBwnvA#">API Bakeoff and Day One.</a></p>
<p>The highlight of the conference (for me at least) was getting to play the giant grand Yamaha piano at the very end of Day 2 for the entire Railsberry conference.  Here&#8217;s a video of the performance.  You can also check out the lyrics, which have already been <a href="https://gist.github.com/2466119">transcribed and forked on Github</a>!</p>
<p><center><iframe width="420" height="315" src="http://www.youtube.com/embed/-yZfPKi8TVs" frameborder="0" allowfullscreen></iframe></center></p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/04/14/php-hacking-in-nashville/' rel='bookmark' title='PHP Hacking in Nashville!'>PHP Hacking in Nashville!</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2012/04/24/recovering-from-the-railsberry-sugar-high/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2012/04/24/recovering-from-the-railsberry-sugar-high/</feedburner:origLink></item>
		<item>
		<title>Philly Tech Week and the News Innovation Hackathon</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/EGyoWCXNl0c/</link>
		<comments>http://blog.tropo.com/2012/04/23/philly-tech-week-and-the-news-innovation-hackathon/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 13:59:50 +0000</pubDate>
		<dc:creator>Adam Kalsey</dc:creator>
				<category><![CDATA[Tropo]]></category>
		<category><![CDATA[BarCamp]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Hackathon]]></category>
		<category><![CDATA[opengov]]></category>
		<category><![CDATA[philadelphia]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5824</guid>
		<description><![CDATA[Once again, Tropo will be in Philadelphia attending Philly Tech Week events and presenting the Hackathon at BarCamp News Innovation (BCNI). Tropo&#8217;s sponsoring the Media and Transparency Track at Tech Week, and we&#8217;re looking forward to a great week of events. From robotics to open government to startups to interactive art, there&#8217;s a little something [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/04/19/looking-forward-to-philly-tech-week/' rel='bookmark' title='Looking Forward to Philly Tech Week'>Looking Forward to Philly Tech Week</a></li>
<li><a href='http://blog.tropo.com/2010/08/22/seattle-911-scanner-on-tropo-for-the-hackathon/' rel='bookmark' title='Seattle 911 scanner on Tropo for the hackathon'>Seattle 911 scanner on Tropo for the hackathon</a></li>
<li><a href='http://blog.tropo.com/2010/11/01/tropo-gnomedex-opengov-hackathon-winner-named-2011-cfa-fellow/' rel='bookmark' title='Tropo Gnomedex OpenGov Hackathon Winner named 2011 CFA Fellow'>Tropo Gnomedex OpenGov Hackathon Winner named 2011 CFA Fellow</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Once again, Tropo will be in Philadelphia attending <a href="http://www.phillytechweek.com/">Philly Tech Week</a> events and presenting the <a href="http://bcniphilly.com/">Hackathon at BarCamp News Innovation</a> (BCNI).</p>
<p><img src="http://blog.tropo.com/files/2012/04/354737_2459.jpg" alt="" title="Love Park" width="294" height="157" class="alignright size-full wp-image-5825" />Tropo&#8217;s sponsoring the Media and Transparency Track at Tech Week, and we&#8217;re looking forward to a great week of events. From robotics to open government to startups to interactive art, there&#8217;s a little something for everyone. Heck, there&#8217;s even some lock picking workshops.</p>
<p>On Friday night, Tropo will have a table at the <a href="http://tp.ticketleap.com/ptwsig/">Signature Event</a>, so be sure and stop by and say hello. Then on Saturday, come <a href="http://bcniphilly.com/2012/03/01/bcni-2012-open-gov-news-hackathon/">hack the news at the BarCamp hackathon</a>. We&#8217;re going to be helping development teams create tools to help improve how citizens get news about their city, both by improving citizen access to information and creating ways for journalists to create better news, faster.  Like any good hackathon, there will be prizes. <a href="http://bcniphilly.com/2012/04/21/why-and-how-the-open-gov-news-hackathon-is-being-judged-3000-in-prizes/">Over $3000 worth of prizes in fact</a>.</p>
<p><img src="http://blog.tropo.com/files/2012/04/fa1108techphillypennapps2.jpg" alt="" title="Philly Hackathon" width="600" height="219" class="aligncenter size-full wp-image-5827" /></p>
<p>Not sure what to build? BCNI has been doing some early brainstorming and have <a href="http://bcniphilly.com/2012/04/13/5-mobile-focused-news-hackathon-project-ideas/">5 ideas for your projects</a>. There will also be an idea generation session in the morning, and if you&#8217;re still drawing a blank, there&#8217;s sure to be a team or two in need of your skills. Just show up and let people know what you can do &#8211; we&#8217;ll find a spot for you.</p>
<p>Want to meet up this week in Philly? Come visit us at the hackathon on Saturday, stop by our table at the Signature Event on Friday evening, or hit Adam up on Twitter at <a href="http://twitter.com/akalsey">@akalsey</a> or by email at adam@tropo.com.</p>
<p><em>Hackathon image coutesy of BarCamp News Innovation</em></p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/04/19/looking-forward-to-philly-tech-week/' rel='bookmark' title='Looking Forward to Philly Tech Week'>Looking Forward to Philly Tech Week</a></li>
<li><a href='http://blog.tropo.com/2010/08/22/seattle-911-scanner-on-tropo-for-the-hackathon/' rel='bookmark' title='Seattle 911 scanner on Tropo for the hackathon'>Seattle 911 scanner on Tropo for the hackathon</a></li>
<li><a href='http://blog.tropo.com/2010/11/01/tropo-gnomedex-opengov-hackathon-winner-named-2011-cfa-fellow/' rel='bookmark' title='Tropo Gnomedex OpenGov Hackathon Winner named 2011 CFA Fellow'>Tropo Gnomedex OpenGov Hackathon Winner named 2011 CFA Fellow</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2012/04/23/philly-tech-week-and-the-news-innovation-hackathon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2012/04/23/philly-tech-week-and-the-news-innovation-hackathon/</feedburner:origLink></item>
		<item>
		<title>Timeless SMS – Using CouchDB to Track Two Way SMS Conversations</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/mrrrIbujVpY/</link>
		<comments>http://blog.tropo.com/2012/03/28/couchdb-sms/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 18:51:54 +0000</pubDate>
		<dc:creator>kbond</dc:creator>
				<category><![CDATA[SMS]]></category>
		<category><![CDATA[Tropo]]></category>
		<category><![CDATA[couchdb]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5706</guid>
		<description><![CDATA[Tropo includes an &#8220;ask&#8221; method, which allows you to ask a question and wait for a response.  On a voice call, the user is actually on the phone and typically responds quickly; with SMS, they might receive your text with the question but wait to respond until they have the free time.  If your ask [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2012/02/08/sms-voting-app-in-10-minutes-with-tropo-and-couchdb/' rel='bookmark' title='SMS Voting App in 10 Minutes with Tropo and CouchDB'>SMS Voting App in 10 Minutes with Tropo and CouchDB</a></li>
<li><a href='http://blog.tropo.com/2011/02/28/no-more-coworking-lockouts-with-tropo-and-couchdb/' rel='bookmark' title='No More Coworking Lockouts with Tropo and CouchDB'>No More Coworking Lockouts with Tropo and CouchDB</a></li>
<li><a href='http://blog.tropo.com/2009/07/14/audio-of-tropocom-launch-at-ecomm-now-on-it-conversations/' rel='bookmark' title='Audio of Tropo.com launch at eComm now on IT Conversations'>Audio of Tropo.com launch at eComm now on IT Conversations</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Tropo includes an &#8220;ask&#8221; method, which allows you to ask a question and wait for a response.  On a voice call, the user is actually on the phone and typically responds quickly; with SMS, they might receive your text with the question but wait to respond until they have the free time.  If your ask has a timeout of 30 seconds, and your user responds in a couple hours, how do you manage it? The absolute maximum timeout you can set is 2 hours &#8211; what if they respond the next day?</p>
<p>The best way to work around this limitation is by storing and reading the progress of an SMS conversation in a database, effectively eliminating any timeout concerns. This blog will discuss &#8211; and show &#8211; how to start, save and work with <a href="http://www.iriscouch.com/">CouchDB</a> to accomplish this. For the sake of simplity in this sample code, we&#8217;re getting back all the users. Realize that in a production system, you&#8217;ll probably want to tune this lookup so instead of getting back the couch documents for every user, you should search for the callerID and get only the documents for a particular user.</p>
<p><span id="more-5706"></span></p>
<p>First things first, you need to create an instance of CouchDB by going to the following URL - <a href="http://www.iriscouch.com/">iriscouch.com</a>. Once there, hit the signup button and fill out the signup form (shown below).</p>
<div id="attachment_5707" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.tropo.com/files/2012/03/Screen-shot-2012-03-15-at-3.31.49-PM.png"><img class="size-medium wp-image-5707" title="couchDB signup form" src="http://blog.tropo.com/files/2012/03/Screen-shot-2012-03-15-at-3.31.49-PM-300x285.png" alt="couchDB signup form" width="300" height="285" /></a><p class="wp-caption-text">couchDB signup form</p></div>
<p>When you hit the send button, you&#8217;ll be redirected to the confirmation page (shown below). Take note of the URL provided, as this is the location of your CouchDB instance.</p>
<div id="attachment_5708" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.tropo.com/files/2012/03/Screen-shot-2012-03-15-at-3.32.27-PM.png"><img class="size-medium wp-image-5708" title="couchDB confirmation page" src="http://blog.tropo.com/files/2012/03/Screen-shot-2012-03-15-at-3.32.27-PM-300x179.png" alt="couchDB confirmation page" width="300" height="179" /></a><p class="wp-caption-text">couchDB confirmation page</p></div>
<p>To finish setting up CouchDB, click the link you received from the confirmation and then once there, click “Create Database” towards the top – you can name your database whatever you want; to follow the app’s design, I named mine <strong>sms</strong>.</p>
<p>Now that the database is created, you need to make a “New Document”. When you click “New Document”, there should only be one field in it – <code><strong>_id</strong></code> &#8211; which will be the name of the document. I named this document “currentUsers”; our SMS app will be looking for that name later, so keep the name in mind for later.</p>
<p>To add new fields, click “Add Field” &#8211; below is a list of all the fields you&#8217;ll need:</p>
<pre class="brush: jscript; title: ; notranslate">
_id = &quot;currentUsers&quot;
people = {&quot;users&quot;: {}, &quot;total&quot;: &quot;0&quot;}
type = &quot;SMS Database&quot;
</pre>
<p>Once this is filled out, save it and your final product should look something like this (don’t worry about making the <code><strong>_rev</strong></code> field, it will generate automatically):</p>
<p style="text-align: center;">&nbsp;</p>
<div id="attachment_5716" class="wp-caption aligncenter" style="width: 592px"><a href="http://blog.tropo.com/files/2012/03/couchDBsetup.png"><img class="size-full wp-image-5716    " title="couchDB setup" src="http://blog.tropo.com/files/2012/03/couchDBsetup.png" alt="couchDB setup" width="582" height="147" /></a><p class="wp-caption-text">couchDB setup</p></div>
<p>Your CouchDB instance is now set up and we can start working on the code for the Tropo application. The first thing to do, as always, is import the libraries that we need.</p>
<pre class="brush: ruby; title: ; notranslate">
require 'rubygems'
require 'net/http'
require 'json'
</pre>
<p>The next bit of code is a class that was made for accessing CouchDB. This class just makes HTTP requests to update or retrieve information from our CouchDB instance.</p>
<pre class="brush: ruby; title: ; notranslate">
module Couch
  class Server
    def initialize(host, port, options = nil)
      @host = host
      @port = port
      @options = options
    end
    def delete(uri)
      request(Net::HTTP::Delete.new(uri))
    end
    def get(uri)
      request(Net::HTTP::Get.new(uri))
    end
    def put(uri, json)
      req = Net::HTTP::Put.new(uri)
      req[&quot;content-type&quot;] = &quot;application/json&quot;
      req.body = json
      request(req)
    end
    def request(req)
      res = Net::HTTP.start(@host, @port) { |http|http.request(req) }
      unless res.kind_of?(Net::HTTPSuccess)
        handle_error(req, res)
      end
      res
    end
    private
    def handle_error(req, res)
      e = RuntimeError.new(&quot;#{res.code}:#{res.message}\nMETHOD:#{req.method}\nURI:#{req.path}\n#{res.body}&quot;)
      raise e
    end
  end
end
</pre>
<p>Now that we have our class ready to go, we can start using it. This next method will use the class to retrieve all of the information in our database and parse it into JSON for use:</p>
<pre class="brush: ruby; title: ; notranslate">
def getCounchDBData
  url = URI.parse(&quot;http://sms.iriscouch.com/_utils&quot;)
  server = Couch::Server.new(url.host, url.port)
  res = server.get(&quot;/sms/currentUsers&quot;)
  json = res.body
  json = JSON.parse(json)
end
</pre>
<p>The next and final method will log the callerID, track the conversation and save any important information to our database. I have commented inline for better guidance when reading the code:</p>
<pre class="brush: ruby; title: ; notranslate">
def updateCouchDBData(callerID, extra)

  #Call the getCounchDBData method to get the database information  
  json = getCounchDBData   
  url = URI.parse(&quot;http://sms.iriscouch.com/_utils&quot;)   
  server = Couch::Server.new(url.host, url.port)   
  server.delete(&quot;/sms&quot;)   
  server.put(&quot;/sms&quot;, &quot;&quot;)  
  sessions = json[&quot;people&quot;]

  i = 1  
  not_exit = true  
  not_found = true

  while i &lt;= sessions[&quot;total&quot;].to_i &amp;&amp; not_exit

    if callerID == sessions[&quot;users&quot;][i.to_s][&quot;callerID&quot;]

      not_found = false      
      not_exit = false

      #If the user sent an incorrect reply to an answer, set the convoNum back one and ask      
      #the question again      
      if extra == &quot;back&quot;        
        convoNum = sessions[&quot;users&quot;][i.to_s][&quot;convoNum&quot;].to_i - 1        
        sessions[&quot;users&quot;][i.to_s][&quot;convoNum&quot;] = (convoNum).to_s

      else
        #The number exists, increment the conversation number        
        if sessions[&quot;users&quot;][i.to_s][&quot;convoNum&quot;].to_i &lt; 3          
          convoNum = sessions[&quot;users&quot;][i.to_s][&quot;convoNum&quot;].to_i + 1          
          sessions[&quot;users&quot;][i.to_s][&quot;convoNum&quot;] = (convoNum).to_s

        #This is the user's important message to save        
        elsif sessions[&quot;users&quot;][i.to_s][&quot;convoNum&quot;].to_i == 3          
          convoNum = sessions[&quot;users&quot;][i.to_s][&quot;convoNum&quot;].to_i + 1          
          sessions[&quot;users&quot;][i.to_s][&quot;convoNum&quot;] = (convoNum).to_s          
          sessions[&quot;users&quot;][i.to_s][&quot;Final Message&quot;] = &quot;#{extra}&quot;

        #User has already gave their opinion, their last message will be always be the same                
        else           
          convoNum = 5        
        end      
      end    
    end    
    i += 1  
  end

  #Number does not exist, create it.    
  if not_found    
    convoNum = 0    
    sessions[&quot;total&quot;] = (sessions[&quot;total&quot;].to_i + 1).to_s    
    sessions[&quot;users&quot;][&quot;#{sessions[&quot;total&quot;]}&quot;] = {&quot;callerID&quot;=&gt;&quot;#{callerID}&quot;, &quot;convoNum&quot;=&gt;&quot;0&quot;}  
  end

  #Get JSON ready  
  doc = &lt;&lt;-JSON  
  {&quot;type&quot;:&quot;SMS Database&quot;,&quot;people&quot;: #{sessions.to_json}}  
  JSON

  #send the JSON back to the database  
  server.put(&quot;/sms/currentUsers&quot;, doc.strip)

  return convoNum
end
</pre>
<p>Now that the helper methods and CouchDB class are set up, we can add the rest of the code that implements it. The next bit covers the message responses &#8211; the app implements a low level of interaction by prompting the user to respond with a specific answer. That&#8217;s handled three ways in the code &#8211; the first way prompts the user to enter a digit for the corresponding answer, the second prompts the user for a specific word, and the third asks for a short response of their choosing, which will be saved in the database as &#8220;Final Message&#8221;.</p>
<p>The messages are setup in an array, with each index of the array associated with a number.  For example, in the messages listed below, the first is:</p>
<p>&#8220;Hello Tropo developer! Enter 1 if you love Tropo, 2 if you think it&#8217;s peachy keen or 3 if you think this is the easiest API ever created.&#8221;</p>
<p>That corresponds to index &#8220;0&#8243;, which means no inbound messages have been received from that user, so that&#8217;s the message that will be sent as the initial outbound message that starts the conversation.  Each of the subsequent indexes is associated with the number of replies. In those following messages, there&#8217;s independent responses that hinge on what the user sent back &#8211; if they reply back with &#8220;1&#8243;, the app will look at the second index (which corresponds to 1 reply back) and apply their response to determine which of the options to send back. Same applies for the next index, where &#8220;scripting&#8221; or &#8220;webapi&#8221; as responses will trigger different replies.</p>
<pre class="brush: ruby; title: ; notranslate"> 
messages = [
{&quot;1&quot;=&gt;&quot;Hello Tropo developer!&quot;,
&quot;message&quot;=&gt;&quot;Enter 1 if you love Tropo, 2 if you think it's peachy keen or 3 if you think this is the easiest API ever created.&quot;
},

{&quot;1&quot; =&gt; &quot;We love you, too.&quot;,
&quot;2&quot;=&gt;&quot;Only thing peachier is Grandma's cobbler.&quot;,
&quot;3&quot; =&gt; &quot;We're totally blushing over here right now.&quot;,
&quot;message&quot;=&gt;&quot;Reply back with scripting or webapi to see a short description of each.&quot;
},

{&quot;scripting&quot;=&gt;&quot;Tropo Scripting is a simple, yet powerful, synchronous API that lets you build communications applications, hosted on servers in the Tropo cloud.&quot;,
&quot;webapi&quot;=&gt;&quot;The Tropo Web API is a web-service API that lets you build communications applications that run on your servers and drive the Tropo cloud using JSON.&quot;,
&quot;message&quot;=&gt;&quot;Reply back with 1 if you want to learn how to sign up, or 2 if you're already signed up.&quot;
},

{&quot;1&quot;=&gt;&quot;Head over to following URL to sign up: https://www.tropo.com/account/register.jsp &quot;,
&quot;2&quot;=&gt;&quot;Woo hoo! Awesome having you as a Tropo developer.&quot;,
&quot;message&quot;=&gt;&quot;If you have a second, let us know why you chose Tropo.&quot;
},

&quot;Thank you for your response and interest!&quot;,

&quot;Any further questions or comments, shoot em on over to support@tropo.com.&quot;
]
</pre>
<p>If the user replies to a question with an answer that doesn&#8217;t match the predefined answers, the app will say that it was an invalid choice and ask the question again. When doing this, the app logs back into couchDB and resets the &#8220;convoNum&#8221; to the previous question. The app will do this indefinitely until a correct answer is received. Also, after the app receives the &#8220;Final Message&#8221; from the user, the user will receive the same message from the app if another SMS is sent, which in this case would be - &#8221;Any further questions or comments, shoot em on over to support@tropo.com.&#8221;.</p>
<p>There will be two ways this app will be initiated -</p>
<p><strong>1) </strong>Initiated by a REST call</p>
<p style="padding-left: 30px;">-This calls the number that will start the SMS conversation.</p>
<p><strong>2)</strong> Initiated by an incoming SMS</p>
<p style="padding-left: 30px;">-This receives an SMS and sends the next message.</p>
<p>Below is an if and else statement that deciphers both to determine if it should calculate the conversation number and send a message or start the call. I have commented inline so you can better understand what is going on:</p>
<pre class="brush: ruby; title: ; notranslate">
if $currentCall

  #This variable will correspond to which message should be played  
  $status = updateCouchDBData($currentCall.callerID, $currentCall.initialText)

  #This variable will use the users response to give the appropriate answer 
  #Also note, I downcased the initial text so capitalization won't matter 
  $reply = $currentCall.initialText.downcase

  #These two responses only have an answer, not an answer and question  
  if $status == 4 || $status == 5    
    say &quot;#{messages[$status.to_i]}&quot;

  #This status needs to be broken up because of length  
  elsif $status == 2

    #If the user responds with an answer that does not correspond to my answers,
    #It will ask the question again
    if messages[$status.to_i][$reply] == nil       
      $newStatus = updateCouchDBData($currentCall.callerID, &quot;back&quot;)      
      say &quot;Sorry, you have entered a wrong choice. #{messages[$newStatus.to_i]['message']}&quot;

    else      
      say &quot;#{messages[$status.to_i][$reply]}&quot;      
      say &quot;#{messages[$status.to_i]['message']}&quot;    
    end

    #The rest of the questions and answers are short enough to have in one say  
    else

      #If the user responds with an answer that does not correspond to my answers,
      #It will ask the question again
      if messages[$status.to_i][$reply] == nil                
        $newStatus = updateCouchDBData($currentCall.callerID, &quot;back&quot;)                
        say &quot;Sorry, I didn't understand your choice. #{messages[$newStatus.to_i]['message']}&quot;

      else               
        say &quot;#{messages[$status.to_i][$reply]} #{messages[$status.to_i]['message']}&quot;          
      end
    end

    #There is no reason to keep the session alive, so we hangup    
    hangup

else

  #Grab the $numToDial parameter and initiate the SMS conversation    
  call($numToDial, {   
    :network =&gt; &quot;SMS&quot;})

  #This primarily updates the database with the new number. This variable should always be 0     
  status = updateCouchDBData($numToDial, nil)

  #This sends the initial messsage with the first question  
  say &quot;#{messages[$status.to_i]['1']} #{messages[$status.to_i]['message']}&quot;

  #There is no reason to keep the session alive, so we hangup     
  hangup
end 
</pre>
<p>That will finish up the code. Once you start using this app, your CouchDB will start to look like this:</p>
<div id="attachment_5763" class="wp-caption aligncenter" style="width: 600px"><a href="http://blog.tropo.com/files/2012/03/final.png"><img class="size-full wp-image-5763  " title="Working couchDB data" src="http://blog.tropo.com/files/2012/03/final.png" alt="Working couchDB data" width="590" height="316" /></a><p class="wp-caption-text">Working couchDB data</p></div>
<p>Thank you for reading this blog and I hope it helps! You can find the complete app on my <a href="https://github.com/kevinbond/SMSdatabase/blob/master/SMSdatabase.rb">Github</a>, feel free to use it and abuse it as you see fit.</p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2012/02/08/sms-voting-app-in-10-minutes-with-tropo-and-couchdb/' rel='bookmark' title='SMS Voting App in 10 Minutes with Tropo and CouchDB'>SMS Voting App in 10 Minutes with Tropo and CouchDB</a></li>
<li><a href='http://blog.tropo.com/2011/02/28/no-more-coworking-lockouts-with-tropo-and-couchdb/' rel='bookmark' title='No More Coworking Lockouts with Tropo and CouchDB'>No More Coworking Lockouts with Tropo and CouchDB</a></li>
<li><a href='http://blog.tropo.com/2009/07/14/audio-of-tropocom-launch-at-ecomm-now-on-it-conversations/' rel='bookmark' title='Audio of Tropo.com launch at eComm now on IT Conversations'>Audio of Tropo.com launch at eComm now on IT Conversations</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2012/03/28/couchdb-sms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2012/03/28/couchdb-sms/</feedburner:origLink></item>
		<item>
		<title>SXSW Roundup – StartupBus TV</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/0GuA35ZsTVU/</link>
		<comments>http://blog.tropo.com/2012/03/21/sxsw-roundup-startupbus-tv/#comments</comments>
		<pubDate>Thu, 22 Mar 2012 03:59:40 +0000</pubDate>
		<dc:creator>Diggz</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Hackathon]]></category>
		<category><![CDATA[Tropo]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[geoloqi]]></category>
		<category><![CDATA[startupbus]]></category>
		<category><![CDATA[startups]]></category>
		<category><![CDATA[sxsw]]></category>
		<category><![CDATA[sxwi]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5754</guid>
		<description><![CDATA[Anyone who has ever been to SXSW Interactive will agree that it&#8217;s pretty much the Super Bowl of tech. It&#8217;s the biggest tech event of the year and for 5 days Austin Texas became the mecca of innovation and buzz in a world traditionally dominated by Silicon Valley. This year Tropo partnered with Viadeo, Live-U [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2012/03/06/startups-hackathons-and-parties-oh-my-tropo-at-sxswi/' rel='bookmark' title='Startups, Hackathons, and Parties&#8230;oh my!  Tropo at #SXSWi'>Startups, Hackathons, and Parties&#8230;oh my!  Tropo at #SXSWi</a></li>
<li><a href='http://blog.tropo.com/2011/06/07/rhok-3-seattle-roundup/' rel='bookmark' title='RHoK 3 Seattle Roundup'>RHoK 3 Seattle Roundup</a></li>
<li><a href='http://blog.tropo.com/2011/03/07/android-dev-camp-roundup/' rel='bookmark' title='Android Dev Camp Roundup'>Android Dev Camp Roundup</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.tropo.com/files/2012/03/startupbus3.jpg"><img class="alignright size-full wp-image-5755" title="startupbus3" src="http://blog.tropo.com/files/2012/03/startupbus3.jpg" alt="" width="346" height="259" /></a>Anyone who has ever been to SXSW Interactive will agree that it&#8217;s pretty much the Super Bowl of tech.  It&#8217;s the biggest tech event of the year and for 5 days Austin Texas became the mecca of innovation and buzz in a world traditionally dominated by Silicon Valley.</p>
<p>This year Tropo partnered with <a href="http://www.viadeo.com/en/connexion/">Viadeo</a>, <a href="LiveU.com">Live-U</a> and <a href="http://thenextweb.com">The Next Web</a> to sponsor <a href="http://startupbus.com/americas/startup-bus-tv">StartupBus TV</a>, bringing a live stream of the ups and downs, successes and failures as 10 buses traveled from around North America to Austin, each one packed with &#8220;Busenpreneurs&#8221; with aspirations to launch the &#8220;next big thing&#8221; in technology.</p>
<p>With over 16 livestream broadcasts over 5 days and garnering 100,000 views (including being featured on he the front page of UStream), <a href="http://twitter.com/hermioneway">Hermione Way</a> and her <a href="http://newspepper.com">Newspepper crew</a> interviewed some of the most promising entrepreneurs of tomorrow and livestreamed from the &#8220;best of the best&#8221; tech events at SXSW.</p>
<p>Speaking of the &#8220;best of the best&#8221;, SXSWi Keynote speaker, and founder of <a href="http://geoloqi.com">Geoloqi</a> (one of Tropo&#8217;s favorite startups!), <a href="http://twitter.com/caseorganic">Amber Case</a> stopped by the during the semi-finals of The StartupBus competition.  Here&#8217;s the video of her interview with Hermione:</p>
<p><center><iframe src="http://www.ustream.tv/embed/recorded/21014223/highlight/250830" width="608" height="368" scrolling="no" frameborder="0" style="border: 0px none transparent;"></iframe></center></p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2012/03/06/startups-hackathons-and-parties-oh-my-tropo-at-sxswi/' rel='bookmark' title='Startups, Hackathons, and Parties&#8230;oh my!  Tropo at #SXSWi'>Startups, Hackathons, and Parties&#8230;oh my!  Tropo at #SXSWi</a></li>
<li><a href='http://blog.tropo.com/2011/06/07/rhok-3-seattle-roundup/' rel='bookmark' title='RHoK 3 Seattle Roundup'>RHoK 3 Seattle Roundup</a></li>
<li><a href='http://blog.tropo.com/2011/03/07/android-dev-camp-roundup/' rel='bookmark' title='Android Dev Camp Roundup'>Android Dev Camp Roundup</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2012/03/21/sxsw-roundup-startupbus-tv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2012/03/21/sxsw-roundup-startupbus-tv/</feedburner:origLink></item>
		<item>
		<title>Startups, Hackathons, and Parties…oh my!  Tropo at #SXSWi</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/3hoWGrSHiUQ/</link>
		<comments>http://blog.tropo.com/2012/03/06/startups-hackathons-and-parties-oh-my-tropo-at-sxswi/#comments</comments>
		<pubDate>Tue, 06 Mar 2012 19:22:40 +0000</pubDate>
		<dc:creator>Diggz</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Hackathon]]></category>
		<category><![CDATA[Tropo]]></category>
		<category><![CDATA[Austin]]></category>
		<category><![CDATA[sxsw]]></category>
		<category><![CDATA[sxswi]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5689</guid>
		<description><![CDATA[Every March, thousands of techies from all over the world descend on Austin, Texas for the South by Southwest Interactive (SXSWi) conference.   Tropo has partnered with Newspepper, The NextWeb and @TheStartupBus others to bring you StartupBus.tv. This year, 10 buses are leaving from all over the USA.  StartupBus.tv will be broadcasting daily live shows [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2012/03/21/sxsw-roundup-startupbus-tv/' rel='bookmark' title='SXSW Roundup &#8211; StartupBus TV'>SXSW Roundup &#8211; StartupBus TV</a></li>
<li><a href='http://blog.tropo.com/2011/03/09/join-tropo-rackspace-sendgrid-dyn-at-cloudcamp-austin-sxsw/' rel='bookmark' title='Join Tropo, Rackspace, SendGrid &amp; Dyn at CloudCamp Austin'>Join Tropo, Rackspace, SendGrid &#038; Dyn at CloudCamp Austin</a></li>
<li><a href='http://blog.tropo.com/2012/03/02/win-a-sxswi-conference-pass-heres-how/' rel='bookmark' title='Win a #SXSWi conference pass:  Here&#8217;s how!'>Win a #SXSWi conference pass:  Here&#8217;s how!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Every March, thousands of techies from all over the world descend on Austin, Texas for the South by Southwest Interactive (SXSWi) conference.   Tropo has partnered with Newspepper, The NextWeb and @TheStartupBus others to bring you <a href="http://startupbus.com/americas/startup-bus-tv">StartupBus.tv</a>.</p>
<p>This year, 10 buses are leaving from all over the USA.  StartupBus.tv will be broadcasting daily live shows tracking the progress of the ‘tribes’ on the buses as they build and launch a web app by the time they reach Austin, Texas in time for SXSW.</p>
<p style="text-align: center;"><a href="http://blog.tropo.com/files/2012/03/tropopopup.jpg"><img class="aligncenter size-full wp-image-5690" style="margin-top: 5px; margin-bottom: 5px; margin-left: 10px; margin-right: 10px;" title="tropopopup" src="http://blog.tropo.com/files/2012/03/tropopopup.jpg" alt="" width="576" height="272" /></a> StartupBus.tv will be broadcasting the whole week, but you can get the <a title="Tropo StartupBus" href="http://thenextweb.com/video/2012/03/05/not-in-austin-this-week-tune-into-all-the-best-action-live-here/">full schedule here</a>.</p>
<p><center><iframe width="480" height="296" src="http://www.ustream.tv/embed/10489696" scrolling="no" frameborder="0" style="border: 0px none transparent;">    </iframe><br /><a href="http://www.ustream.tv/" style="padding: 2px 0px 4px; width: 400px; background: #ffffff; display: block; color: #000000; font-weight: normal; font-size: 10px; text-decoration: underline; text-align: center;" target="_blank">Video streaming by Ustream</a></center></p>
<p style="text-align: left;">SXSW is a great opportunity to network and meet face-to-face with members of our Tropo team.   Both <a title="Mark Headd Twitter" href="http://twitter.com/mheadd">Mark Headd</a> and <a title="Johnny Diggz Twitter" href="http://twitter.com/johnnydiggz">Johnny Diggz</a> will be in Austin all week and would love to meet up.  Send them a tweet or find them at one of the following events:</p>
<p style="text-align: left;"><strong><strong>State of NOW (#140Conf)  SXSW Cocktail Party</strong> Friday, Mar 9th 7pm-9pm</strong> <strong>Lanai 422 Congress Ave</strong></p>
<blockquote>
<p style="text-align: left;">Catch up with the #140conf Community while you are at SXSW. Jeff Pulver is holding a Texas style cocktail party Friday, March 9, from 7-9pm at Lanai. The lights will be up, the music low, the energy will be high, and you can enjoy interacting in a space just right for making connections and creating lasting relationships. You decide which state is bigger, the State of NOW or the State of Texas.</p>
</blockquote>
<p><strong><a href="http://blog.tropo.com/files/2012/03/sxsw-lightning-cats.jpg"><img class="alignright size-full wp-image-5691" style="margin-top: 5px; margin-bottom: 5px; margin-left: 10px; margin-right: 10px;" title="sxsw-lightning-cats" src="http://blog.tropo.com/files/2012/03/sxsw-lightning-cats.jpg" alt="" width="276" height="375" /></a>Startup Bus Daily Show Saturday Mar 10th 1pm-3pm <a href="http://startupbus.tv">StartupBus.TV</a></strong></p>
<blockquote><p><strong><a href="http://startupbus.tv"></a></strong>Tropo Chief Evangelist Johnny Diggz will be interviewed by TNW Video Director <a href="http://twitter.com/hermioneway">Hermione Way</a>, Pop 17&#8242;s <a href="http://pop17.com">Sarah Austin</a> and NewsPepper&#8217;s <a href="https://twitter.com/#!/MiniAnastasia">Anastasia Emmanuel</a> about the latest hotness in the Tropo world as well as <a href="http://gwob.org">Geeks without Bounds</a>.<strong> </strong></p></blockquote>
<p><strong> </strong></p>
<p><strong>A Tale of Two City Hackathons Monday, Mar 12th 3:30pm-4:30pmRoom 6AB Austin Convention Center</strong></p>
<p>Tropo Developer Evangelist, Mark Headd, will be speaking about civic hacking and hackathons:</p>
<blockquote><p>In the fall of 2011 the cities of Philadelphia and Baltimore were the sites for civic hackathons organized by a collective of developers and activists. Separated by one month and roughly 100 miles, each city&#8217;s event focused on a different area of civic activity, used a different format, employed different strategies and attracted different participants. Both sought the same outcomes; meaningful civic change and the long-term viability of hackathon projects. Looking back on these events, which hackathon will be judged to be more successful? Which projects survived and are prospering in 2012? Which strategies work the best when conducting civic hackathons? This session aims to identify some answers to these questions.</p></blockquote>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2012/03/21/sxsw-roundup-startupbus-tv/' rel='bookmark' title='SXSW Roundup &#8211; StartupBus TV'>SXSW Roundup &#8211; StartupBus TV</a></li>
<li><a href='http://blog.tropo.com/2011/03/09/join-tropo-rackspace-sendgrid-dyn-at-cloudcamp-austin-sxsw/' rel='bookmark' title='Join Tropo, Rackspace, SendGrid &amp; Dyn at CloudCamp Austin'>Join Tropo, Rackspace, SendGrid &#038; Dyn at CloudCamp Austin</a></li>
<li><a href='http://blog.tropo.com/2012/03/02/win-a-sxswi-conference-pass-heres-how/' rel='bookmark' title='Win a #SXSWi conference pass:  Here&#8217;s how!'>Win a #SXSWi conference pass:  Here&#8217;s how!</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2012/03/06/startups-hackathons-and-parties-oh-my-tropo-at-sxswi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2012/03/06/startups-hackathons-and-parties-oh-my-tropo-at-sxswi/</feedburner:origLink></item>
		<item>
		<title>Auto-Returning Phone Calls with Tropo</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/xilCDzECFNo/</link>
		<comments>http://blog.tropo.com/2012/03/05/auto-returning-phone-calls-with-tropo/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 21:07:23 +0000</pubDate>
		<dc:creator>cmatthieu</dc:creator>
				<category><![CDATA[Awesome]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Screencasts]]></category>
		<category><![CDATA[Tropo]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[scripting api]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5666</guid>
		<description><![CDATA[Using Tropo&#8217;s Scripting API and Ruby, I wrote a clever little script that allows you to automatically return missed calls from people as soon as you hang up a phone call. Here is the use case: User A calls user B While users A and B talking, user C calls user B Tropo script records [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2012/01/23/meet-phono-tropo-web-phone/' rel='bookmark' title='Meet Phono &#8211; Tropo&#8217;s Web Phone'>Meet Phono &#8211; Tropo&#8217;s Web Phone</a></li>
<li><a href='http://blog.tropo.com/2010/05/19/dial-multiple-phone-and-sip-numbers-first-to-answer-wins/' rel='bookmark' title='Dial Multiple Phone and SIP Numbers &amp; First to Answer Wins'>Dial Multiple Phone and SIP Numbers &#038; First to Answer Wins</a></li>
<li><a href='http://blog.tropo.com/2012/02/24/ruby-on-rails-conference-caller/' rel='bookmark' title='Ruby on Rails Conference Caller'>Ruby on Rails Conference Caller</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.tropo.com/files/2012/03/Rubyprogramminglanguagelogo2008.png"><img src="http://blog.tropo.com/files/2012/03/Rubyprogramminglanguagelogo2008.png" alt="" title="Rubyprogramminglanguagelogo2008" width="142" height="163" class="alignleft size-full wp-image-5667" /></a>Using <a href="http://tropo.com/docs/scripting">Tropo&#8217;s Scripting API</a> and Ruby, I wrote a clever little script that allows you to automatically return missed calls from people as soon as you hang up a phone call.  </p>
<p>Here is the use case: </p>
<ul>
<li>User A calls user B</li>
<li>While users A and B talking, user C calls user B</li>
<li>Tropo script records the missed user C call and returns their call after B hangs up.  The Tropo script automatically calls users B and C and bridges them in a conference call.</li>
</ul>
<p>Here is a video to help demonstrate the concept:</p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/BIYYg81ztRI" frameborder="0" allowfullscreen></iframe></p>
<p>Here is the Ruby script using <a href="http://www.iriscouch.com/">Iris Couch</a> as a JSON datastore directly from the Tropo cloud!</p>
<p><span id="more-5666"></span></p>
<pre class="brush: ruby; title: ; notranslate">
require 'rubygems'
require 'net/http'
require 'json'

# Setup couchdb JSON datastore calls
module Couch

  class Server
    def initialize(host, port, options = nil)
      @host = host
      @port = port
      @options = options
    end

    def delete(uri)
      request(Net::HTTP::Delete.new(uri))
    end

    def get(uri)
      request(Net::HTTP::Get.new(uri))
    end

    def put(uri, json)
      req = Net::HTTP::Put.new(uri)
      req[&quot;content-type&quot;] = &quot;application/json&quot;
      req.body = json
      request(req)
    end

    def post(uri, json)
      req = Net::HTTP::Post.new(uri)
      req[&quot;content-type&quot;] = &quot;application/json&quot;
      req.body = json
      request(req)
    end

    def request(req)
      res = Net::HTTP.start(@host, @port) { |http|http.request(req) }
      unless res.kind_of?(Net::HTTPSuccess)
        handle_error(req, res)
      end
      res
    end

    private

    def handle_error(req, res)
      e = RuntimeError.new(&quot;#{res.code}:#{res.message}\nMETHOD:#{req.method}\nURI:#{req.path}\n#{res.body}&quot;)
      raise e
    end
  end
end

# define couchdb server name
server = Couch::Server.new(&quot;tropo.couchone.com&quot;, &quot;80&quot;)

# get callerid
callerid = $currentCall.callerID
if callerid.length == 10
  callerid = &quot;1&quot; + callerid
end

say &quot;welcome to tropo's call back demo&quot;

ask &quot;Please enter the country code and phone number of the person you are trying to reach followed by the pound sign.&quot;, {
    :choices =&gt; &quot;[8-15 DIGITS]&quot;,
    :terminator =&gt; '#',
    :timeout =&gt; 15.0,
    :mode =&gt; &quot;dtmf&quot;,
    :interdigitTimeout =&gt; 5 ,
    :onChoice =&gt; lambda { |event|

      target = event.value

      # check to see if record exists indicating that the called party is on another call
      res = server.get(&quot;/callerback/&quot; + target) rescue nil
      jsonresp = res.body rescue nil

      # phone number record will exist if called party is on the phone
      if jsonresp

          # if on the phone, write number to return call when available
          postcallback = server.put(&quot;/callerback/&quot; + target + &quot;q&quot;, '{&quot;phone&quot;:' + callerid + '}') rescue nil
          say target + &quot; is on the phone now but will return your call shortly.&quot;
          hangup

      else

        # transfer call
        say &quot;Please wait while we transfer your call. Press star to cancel the transfer.&quot;

        # write record to show that the dialed party is unavailable
        postoncall = server.put(&quot;/callerback/&quot; + target, &quot;{}&quot;) rescue nil

        # transfer call 
        transfer target, {
            :playvalue =&gt; &quot;http://www.phono.com/audio/holdmusic.mp3&quot;,
            :terminator =&gt; &quot;*&quot;,
            :onTimeout =&gt; lambda { |event|
                # no answer
                say &quot;Sorry, but nobody answered at &quot; + target.to_s + &quot; please try again later.&quot;
                hangup
                }   
              }

        # Transfer blocks. The code below will not be executed until the transferred call completed.

        # find and delete current called party record
        getcurrentrec = server.get(&quot;/callerback/&quot; + target) rescue nil
        jsongetcurrentrec = getcurrentrec.body rescue nil
        currentdata = JSON.parse(jsongetcurrentrec)
        deletecurrent = server.delete(&quot;/callerback/&quot; + target + &quot;?rev=&quot; + currentdata[&quot;_rev&quot;].to_s )

        # check to see if a number exists to callback and delete it
        getcallback = server.get(&quot;/callerback/&quot; + target + &quot;q&quot;) rescue nil
        jsoncallback = getcallback.body rescue nil

        # If someone called while we were on the phone, let's call them back!
        if jsoncallback

          # find and delete their callback number
          callbackdata = JSON.parse(jsoncallback)
          callerid = callbackdata[&quot;phone&quot;]
          deletecallback = server.delete(&quot;/callerback/&quot; + target + &quot;q?rev=&quot; + callbackdata[&quot;_rev&quot;].to_s )  

          # Call the 2 numbers and bridge the new call using conference

          # create unique conference room based on timestamp
          timeVar  = Time.new
          conferenceID = timeVar.strftime(&quot;%Y%H%M%S&quot;)

          # set conference options
          conferenceOptions={
                          :mute=&gt;false,
                          :playTones=&gt;true,
                          :leaveprompt=&gt;&quot;beep&quot;
                          }

          threads = []

          # Call First Leg (User)
          call 'tel:+' + target, {
                  :callerID =&gt; callerid.to_s,
                  :onAnswer =&gt; lambda{|event|
                    log &quot;@&quot;*5 + &quot;User has answered&quot;

                    #Create second thread for second leg (Operator)
                    threads &lt;&lt; Thread.new do
                        log &quot;@&quot;*5 + &quot;Start second thread&quot;
                            call 'tel:+' + callerid.to_s, {
                                :callerID=&gt;target.to_s,
                                :onAnswer=&gt;lambda{|confevent|
                                    log &quot;@&quot;*5+&quot;Operator answered join conference&quot;
                                    newCall2 = confevent.value
                                    #announce caller
                                    newCall2.say(&quot;You have a call from &quot; + target.to_s)
                                    #join operator to conference
                                    newCall2.conference(conferenceID,conferenceOptions)
                                }
                            }
                    end #thread

                    newCall = event.value
                    newCall.say(&quot;Please hold while we connect you to &quot; + callerid.to_s)
                    newCall.conference(conferenceID,conferenceOptions)

                  }
                }

                threads.each { |t| t.join }

          end #jsoncallback

      end #jsonresp        

    },
    :onBadChoice =&gt; lambda { |event|
        say &quot;We did not recognize that phone number&quot;
    }
}
</pre>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2012/01/23/meet-phono-tropo-web-phone/' rel='bookmark' title='Meet Phono &#8211; Tropo&#8217;s Web Phone'>Meet Phono &#8211; Tropo&#8217;s Web Phone</a></li>
<li><a href='http://blog.tropo.com/2010/05/19/dial-multiple-phone-and-sip-numbers-first-to-answer-wins/' rel='bookmark' title='Dial Multiple Phone and SIP Numbers &amp; First to Answer Wins'>Dial Multiple Phone and SIP Numbers &#038; First to Answer Wins</a></li>
<li><a href='http://blog.tropo.com/2012/02/24/ruby-on-rails-conference-caller/' rel='bookmark' title='Ruby on Rails Conference Caller'>Ruby on Rails Conference Caller</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2012/03/05/auto-returning-phone-calls-with-tropo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2012/03/05/auto-returning-phone-calls-with-tropo/</feedburner:origLink></item>
		<item>
		<title>Win a #SXSWi conference pass:  Here’s how!</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/jrlqOvks_-8/</link>
		<comments>http://blog.tropo.com/2012/03/02/win-a-sxswi-conference-pass-heres-how/#comments</comments>
		<pubDate>Fri, 02 Mar 2012 20:45:30 +0000</pubDate>
		<dc:creator>Diggz</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[coworking]]></category>
		<category><![CDATA[Nextspace]]></category>
		<category><![CDATA[sxsw]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5659</guid>
		<description><![CDATA[We love coworking.  In fact Tropo is headquartered inside NextSpace in San Francisco.  We love coworking so much that we&#8217;re giving away two passes to SXSWi to other coworkers that love coworking too.  All you have to do is follow Tropo on Twitter and tweet out what you love most about your coworking space.  The [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2012/03/06/startups-hackathons-and-parties-oh-my-tropo-at-sxswi/' rel='bookmark' title='Startups, Hackathons, and Parties&#8230;oh my!  Tropo at #SXSWi'>Startups, Hackathons, and Parties&#8230;oh my!  Tropo at #SXSWi</a></li>
<li><a href='http://blog.tropo.com/2011/08/13/win-a-free-pass-to-madison-rubyconf/' rel='bookmark' title='Win a Free Pass to Madison RubyConf!'>Win a Free Pass to Madison RubyConf!</a></li>
<li><a href='http://blog.tropo.com/2011/08/15/winner-of-the-madisonruby-conference-ticket/' rel='bookmark' title='Winner of the MadisonRuby Conference Ticket'>Winner of the MadisonRuby Conference Ticket</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>We love coworking.  In fact Tropo is headquartered inside <a href="http://nextspace.us">NextSpace in San Francisco</a>.  We love coworking so much that we&#8217;re giving away two passes to SXSWi to other coworkers that love coworking too.  All you have to do is follow Tropo on Twitter and tweet out what you love most about your coworking space.  The best tweets will win a conference pass to SXSW Interactive!</p>
<blockquote><p>&#8220;Hey @Tropo, I love #coworking at @NextSpaceSF because Rebecca Brian is the best community manager ever!&#8221;</p></blockquote>
<p>Be sure to include <strong>@Tropo</strong>, the hastag <strong>#coworking</strong> and the <strong>Twitter handle of your favorite coworking space</strong> (so we know where all the awesome ones are!)</p>
<p>&nbsp;</p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2012/03/06/startups-hackathons-and-parties-oh-my-tropo-at-sxswi/' rel='bookmark' title='Startups, Hackathons, and Parties&#8230;oh my!  Tropo at #SXSWi'>Startups, Hackathons, and Parties&#8230;oh my!  Tropo at #SXSWi</a></li>
<li><a href='http://blog.tropo.com/2011/08/13/win-a-free-pass-to-madison-rubyconf/' rel='bookmark' title='Win a Free Pass to Madison RubyConf!'>Win a Free Pass to Madison RubyConf!</a></li>
<li><a href='http://blog.tropo.com/2011/08/15/winner-of-the-madisonruby-conference-ticket/' rel='bookmark' title='Winner of the MadisonRuby Conference Ticket'>Winner of the MadisonRuby Conference Ticket</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2012/03/02/win-a-sxswi-conference-pass-heres-how/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2012/03/02/win-a-sxswi-conference-pass-heres-how/</feedburner:origLink></item>
		<item>
		<title>Win a free pass to DrupalCon 2012 in Denver</title>
		<link>http://feedproxy.google.com/~r/tropo/~3/J7MLIN9dLCE/</link>
		<comments>http://blog.tropo.com/2012/02/29/win-a-free-pass-to-drupalcon-2012-in-denver/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 01:08:37 +0000</pubDate>
		<dc:creator>Diggz</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Hackathon]]></category>
		<category><![CDATA[Denver]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[Drupalcon]]></category>

		<guid isPermaLink="false">http://blog.tropo.com/?p=5653</guid>
		<description><![CDATA[Learn some new API&#8217;s, meet some new friends, win some prizes and hack on some Drupal projects at the DrupalCon Hackathon. It doesn&#8217;t matter if you&#8217;re a coder, designer or just have an idea&#8230;bring your laptop and desire to build something awesome! START AND END TIME When: Monday, March 19th Where: Room 501 in the [...]
Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/08/18/london-calling-tropos-drupalcon-london-developer-contest/' rel='bookmark' title='London Calling: Tropo&#8217;s Drupalcon London Developer Contest'>London Calling: Tropo&#8217;s Drupalcon London Developer Contest</a></li>
<li><a href='http://blog.tropo.com/2011/03/03/meet-tropo-in-chicago-at-drupalcon/' rel='bookmark' title='Meet Tropo in Chicago at Drupalcon'>Meet Tropo in Chicago at Drupalcon</a></li>
<li><a href='http://blog.tropo.com/2011/08/13/win-a-free-pass-to-madison-rubyconf/' rel='bookmark' title='Win a Free Pass to Madison RubyConf!'>Win a Free Pass to Madison RubyConf!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Learn some new API&#8217;s, meet some new friends, win some prizes and hack on some Drupal projects at the DrupalCon Hackathon. It doesn&#8217;t matter if you&#8217;re a coder, designer or just have an idea&#8230;bring your laptop and desire to build something awesome!</p>
<h3>START AND END TIME</h3>
<p><strong>When:</strong> Monday, March 19th <strong>Where:</strong> Room 501 in the Colorado Convention Center <strong>Cost:</strong> Free!
<strong>Register: </strong> <a href="http://www.eventbrite.com/event/3121343021?utm_source=eb_email&#038;utm_medium=email&#038;utm_campaign=new_eventv2&#038;utm_term=eventurl_text">DrupalCon Hackathon</a> </p>
<p><strong>Agenda:</strong></p>
<ul>
<li>3-3:15pm &#8211; Introductions</li>
<li>3:15-3:45 &#8211; API Sponsor presenations</li>
<li>3:45-4:00 &#8211; Team formation/signups</li>
<li>4:00-7:00 &#8211; Hacking!</li>
<li>7:00-8:00 &#8211; Dinner Break</li>
<li>8:00-9:00 &#8211; Team Presentations &amp; Prize Awards!</li>
</ul>
<h3>Drupal Modules for Tropo</h3>
<p>We’ve recently released a couple of Drupal modules for Tropo for your hacking pleasure. Send out content notifications or turn SMS messages into nodes with the <a href="http://drupal.org/project/sms_tropo">Tropo Drupal SMS Framework plugin</a>. It comes with an optional patch to SMS Framework that lets you use Tropo’s multichannel capabilities and do IM and voice with Drupal, too.</p>
<p>Drupal comes with a built-in polling system, and you can turn polls into mobile apps using <a href="http://drupal.org/project/phonepoll">Phone Poll</a>, the Drupal module that adds voice and SMS voting to Drupal polls.</p>
<p>And while not yet released (<a href="https://github.com/tropo/tropo-drupal">although it’s on Github</a>), the <a href="http://drupal.org/project/tropo">Tropo module for Drupal</a> is a developer framework that makes the entire Tropo API available from within Drupal. Launch calls, create applications, add phone numbers, and even serve a Tropo application from within Drupal.</p>
<h3>Win a free pass to DrupaCon</h3>
<p>Want to win a free pass to DrupalCon?  All you have to do is follow Tropo on Twitter and then tweet a short message:  &#8221;Hey @Tropo I want to go to @DrupalConDenver because&#8230;&#8221; and fill out a reason.  We&#8217;ll pick the best two reasons on March 1, 2012 to win conference passes to DrupalCon Denver!</p>
<p><a href="http://denver2012.drupal.org"><img src="http://denver2012.drupal.org/sites/default/files/sponsor_120x60.jpg" alt="DrupalCon Denver 2012 - Sponsor" /></a></p>
<p>&copy;2012 <a href="http://blog.tropo.com">The Tropo Blog</a>. All Rights Reserved.</p>.<p>Related posts:<ol>
<li><a href='http://blog.tropo.com/2011/08/18/london-calling-tropos-drupalcon-london-developer-contest/' rel='bookmark' title='London Calling: Tropo&#8217;s Drupalcon London Developer Contest'>London Calling: Tropo&#8217;s Drupalcon London Developer Contest</a></li>
<li><a href='http://blog.tropo.com/2011/03/03/meet-tropo-in-chicago-at-drupalcon/' rel='bookmark' title='Meet Tropo in Chicago at Drupalcon'>Meet Tropo in Chicago at Drupalcon</a></li>
<li><a href='http://blog.tropo.com/2011/08/13/win-a-free-pass-to-madison-rubyconf/' rel='bookmark' title='Win a Free Pass to Madison RubyConf!'>Win a Free Pass to Madison RubyConf!</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tropo.com/2012/02/29/win-a-free-pass-to-drupalcon-2012-in-denver/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.tropo.com/2012/02/29/win-a-free-pass-to-drupalcon-2012-in-denver/</feedburner:origLink></item>
	</channel>
</rss>

