<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>I’m a software developer from Chicago, where I mainly work on Ruby stuff for Groupon. Besides programming, I’m also into Mandarin, sailing, chess, startups and skill and language acquisition.</description><title>Joey Schoblaska</title><generator>Tumblr (3.0; @joeyschoblaska)</generator><link>http://joeyschoblaska.com/</link><item><title>The Urbanairship Gem: Sending Push Notifications with Ruby</title><description>&lt;p&gt;If you&amp;#8217;re building an app that sends push notifications, &lt;a href="http://urbanairship.com"&gt;Urban Airship&lt;/a&gt; is a service that can save you a lot of headache. They provide a common API for sending notifications to iOS, Android and Blackberry devices, as well as some useful features like notification batching, scheduling, and the ability to tag devices to make sending a notification to a large group of users more manageable.&lt;/p&gt;

&lt;p&gt;At Groupon we wrote the &lt;a href="https://github.com/groupon/urbanairship"&gt;urbanairship gem&lt;/a&gt; to wrap these API interactions, which you can install with &lt;code&gt;gem install urbanairship&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;Registering a device token&lt;/h3&gt;

&lt;p&gt;Before sending notifications to a device, you have to register it with UA. The simplest way to do this is:&lt;/p&gt;

&lt;pre class="prettyprint"&gt;
Urbanairship.register_device('DEVICE-TOKEN')
&lt;/pre&gt;

&lt;p&gt;You can also give it an alias and a set of tags.&lt;/p&gt;

&lt;pre class="prettyprint"&gt;
Urbanairship.register_device('DEVICE-TOKEN',
  :alias =&amp;gt; 'user-1234',
  :tags =&amp;gt; ['chicago-users']
)
&lt;/pre&gt;

&lt;p&gt;The registration call is idempotent. If you want to change a device&amp;#8217;s tags or aliases later, you can resend the registration request. Just note that any attributes that are missing from the request will be removed, so be sure to include every tag and alias that you want to associate with that device token each time you make the registration call.&lt;/p&gt;

&lt;p&gt;You can also set a &amp;#8216;quiet time&amp;#8217; and timezone for each device. Check out the &lt;a href="http://urbanairship.com/docs/push.html#registration"&gt;Urban Airship API docs&lt;/a&gt; for more options.&lt;/p&gt;

&lt;h3&gt;Sending a notification&lt;/h3&gt;

&lt;p&gt;Once your device tokens have been registered, sending simple notifications is easy.&lt;/p&gt;

&lt;pre class="prettyprint"&gt;
Urbanairship.push({
  :device_tokens =&amp;gt; ['DEVICE-TOKEN'],
  :aps =&amp;gt; {:alert =&amp;gt; 'You have a new message!', :badge =&amp;gt; 1}
})
&lt;/pre&gt;

&lt;p&gt;You can also specify tags, aliases, and even scheduled delivery times for your notifications. This code sends a push notification, delayed by one hour, to all the devices you&amp;#8217;ve tagged with &amp;#8216;chicago-users&amp;#8217;.&lt;/p&gt;

&lt;pre class="prettyprint"&gt;
Urbanairship.push({
  :tags =&amp;gt; ['chicago-users'],
  :schedule_for =&amp;gt; [1.hour.from_now],
  :aps =&amp;gt; {:alert =&amp;gt; 'Hello Chicago!', :badge =&amp;gt; 1}
})
&lt;/pre&gt;

&lt;p&gt;The &lt;a href="http://urbanairship.com/docs/push.html#push"&gt;Urban Airship API docs&lt;/a&gt; detail even more options that you can specify.&lt;/p&gt;

&lt;h3&gt;Batched and broadcast notifications&lt;/h3&gt;

&lt;p&gt;If your back-end system uses some sort of batch process for generating and sending push notifications to multiple users, you can use Urban Airship&amp;#8217;s batch push method to cut down on the number of API requests you need to make.&lt;/p&gt;

&lt;pre class="prettyprint"&gt;
Urbanairship.batch_push(
  {
    :device_tokens =&amp;gt; ['DEVICE-TOKEN'],
    :aps =&amp;gt; {:alert =&amp;gt; 'Message one', :badge =&amp;gt; 1}
  },
  {
    :device_tokens =&amp;gt; ['DEVICE-TOKEN-TWO'],
    :aps =&amp;gt; {:alert =&amp;gt; 'Message two', :badge =&amp;gt; 1}
  }
)
&lt;/pre&gt;

&lt;p&gt;You can also send a message to ALL of your app&amp;#8217;s registered device tokens with the broadcast push method.&lt;/p&gt;

&lt;pre class="prettyprint"&gt;
Urbanairship.broadcast_push({
  :aps =&amp;gt; {:alert =&amp;gt; 'Hello EVERYBODY!', :badge =&amp;gt; 1}
})
&lt;/pre&gt;

&lt;h3&gt;The feedback API&lt;/h3&gt;

&lt;p&gt;Sometimes a user will opt-in for push notifications on their device and then later disable them or uninstall your app. In these cases, if you try to send a push notification to that device, it will fail and Apple will register the failure in their feedback API. If you send too many repeat notifications to devices that don&amp;#8217;t want to receive them, Apple will send you a warning or even revoke your ability to send push notifications.&lt;/p&gt;

&lt;p&gt;Fortunately, Urban Airship steps in to help once again. If they notice you trying to send a notification to a device that can&amp;#8217;t receive it, UA will refrain from forwarding that notification along to Apple, sparing you from their wrath. But this is really just a safety measure. They also offer a feedback API which you can use to find tokens that have opted-out. You should poll this API periodically and, for each token that comes back, delete or disable it on your end.&lt;/p&gt;

&lt;pre class="prettyprint"&gt;
Urbanairship.feedback(24.hours.ago) # =&amp;gt;
# [
#   {
#     "marked_inactive_on"=&amp;gt;"2011-06-03 22:53:23",
#     "alias"=&amp;gt;nil,
#     "device_token"=&amp;gt;"DEVICE-TOKEN-ONE"
#   },
#   {
#     "marked_inactive_on"=&amp;gt;"2011-06-03 22:53:23",
#     "alias"=&amp;gt;nil,
#     "device_token"=&amp;gt;"DEVICE-TOKEN-TWO"
#   }
# ]
&lt;/pre&gt;

&lt;p&gt;This retrieves all devices which rejected a notification in the last 24 hours. We&amp;#8217;d then go through our database and mark those tokens as inactive or just get rid of them.&lt;/p&gt;

&lt;p&gt;That&amp;#8217;s it! With Urban Airship and a few lines of Ruby you can send cross-platform push notifications.&lt;/p&gt;</description><link>http://joeyschoblaska.com/post/15297908447</link><guid>http://joeyschoblaska.com/post/15297908447</guid><pubDate>Wed, 04 Jan 2012 11:12:00 -0500</pubDate></item><item><title>Cory Doctorow: The Coming War on General Computation</title><description>&lt;a href="https://github.com/jwise/28c3-doctorow/blob/master/transcript.md"&gt;Cory Doctorow: The Coming War on General Computation&lt;/a&gt;: &lt;blockquote&gt;
  &lt;p&gt;The triviality of copyright tells you that when other sectors of the economy start to evince concerns about the internet and the PC, that copyright will be revealed for a minor skirmish, and not a war. Why would other sectors nurse grudges against computers? Well, because the world we live in today is /made/ of computers. We don’t have cars anymore, we have computers we ride in; we don’t have airplanes anymore, we have flying Solaris boxes with a big bucketful of SCADA controllers [laughter]; a 3D printer is not a device, it’s a peripheral, and it only works connected to a computer; a radio is no longer a crystal, it’s a general-purpose computer with a fast ADC and a fast DAC and some software.&lt;/p&gt;
  
  &lt;p&gt;…&lt;/p&gt;
  
  &lt;p&gt;The grievances that arose from unauthorized copying are trivial, when compared to the calls for action that our new computer-embroidered reality will create&lt;/p&gt;
  
  &lt;p&gt;…&lt;/p&gt;
  
  &lt;p&gt;Regardless of whether you think these are real problems or merely hysterical fears, they are nevertheless the province of lobbies and interest groups that are far more influential than Hollywood and big content are on their best days, and every one of them will arrive at the same place — “can’t you just make us a general purpose computer that runs all the programs, except the ones that scare and anger us? Can’t you just make us an Internet that transmits any message over any protocol between any two points, unless it upsets us?”&lt;/p&gt;
  
  &lt;p&gt;…&lt;/p&gt;
  
  &lt;p&gt;As a member of the Walkman generation, I have made peace with the fact that I will require a hearing aid long before I die, and of course, it won’t be a hearing aid, it will be a computer I put in my body. So when I get into a car — a computer I put my body into — with my hearing aid — a computer I put inside my body — I want to know that these technologies are not designed to keep secrets from me, and to prevent me from terminating processes on them that work against my interests.&lt;/p&gt;
  
  &lt;p&gt;…&lt;/p&gt;
  
  &lt;p&gt;Freedom in the future will require us to have the capacity to monitor our devices and set meaningful policy on them, to examine and terminate the processes that run on them, to maintain them as honest servants to our will, and not as traitors and spies working for criminals, thugs, and control freaks.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://joeyschoblaska.com/post/15083280784</link><guid>http://joeyschoblaska.com/post/15083280784</guid><pubDate>Sat, 31 Dec 2011 10:34:12 -0500</pubDate></item><item><title>Seen in Warsaw.</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lvl0a9wLsY1r70r6ro1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Seen in Warsaw.&lt;/p&gt;</description><link>http://joeyschoblaska.com/post/13634763237</link><guid>http://joeyschoblaska.com/post/13634763237</guid><pubDate>Wed, 30 Mar 2011 00:00:00 -0400</pubDate></item><item><title>Hold Fast, a Documentary About Anarchy and Sailing</title><description>&lt;a href="http://www.boingboing.net/2010/11/05/hold-fast-a-document.html"&gt;Hold Fast, a Documentary About Anarchy and Sailing&lt;/a&gt;</description><link>http://joeyschoblaska.com/post/13634642328</link><guid>http://joeyschoblaska.com/post/13634642328</guid><pubDate>Sat, 06 Nov 2010 00:00:00 -0400</pubDate></item><item><title>Honoring Dissident Liu Xiaobo: Nobel Prize Is Slap in the Face for China</title><description>&lt;a href="http://www.spiegel.de/international/world/0,1518,722390,00.html"&gt;Honoring Dissident Liu Xiaobo: Nobel Prize Is Slap in the Face for China&lt;/a&gt;: &lt;blockquote&gt;
  &lt;p&gt;Liu Xiaobo, 54, a literary critic and philosopher, was awarded the Nobel Peace Prize last Friday. He had no idea that he had even been nominated — news of a political nature is taboo in the Jinzhou prison.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://joeyschoblaska.com/post/13634551877</link><guid>http://joeyschoblaska.com/post/13634551877</guid><pubDate>Tue, 12 Oct 2010 00:00:00 -0400</pubDate></item><item><title>"You just need to get started" is bad advice</title><description>&lt;a href="http://www.iwillteachyoutoberich.com/blog/getting-started-is-bad-advice/"&gt;"You just need to get started" is bad advice&lt;/a&gt;: &lt;blockquote&gt;
  &lt;p&gt;Notice that MIT’s idea-centric process (e.g., finding the right ideas is key) contrasts with the progress-centric process (e.g., getting started is key) that dominates popular discussion on getting things done.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://joeyschoblaska.com/post/13634686331</link><guid>http://joeyschoblaska.com/post/13634686331</guid><pubDate>Tue, 14 Sep 2010 00:00:00 -0400</pubDate></item><item><title>Strategy's Golden Rule</title><description>&lt;a href="http://blogs.hbr.org/haque/2010/04/strategys_golden_rule.html"&gt;Strategy's Golden Rule&lt;/a&gt;: &lt;blockquote&gt;
  &lt;p&gt;What your fiercest rival does badly, do incredibly well.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://joeyschoblaska.com/post/13640110546</link><guid>http://joeyschoblaska.com/post/13640110546</guid><pubDate>Wed, 28 Apr 2010 00:00:00 -0400</pubDate></item><item><title>Less Talk More Rock</title><description>&lt;a href="http://boingboing.net/features/morerock.html"&gt;Less Talk More Rock&lt;/a&gt;: &lt;blockquote&gt;
  &lt;p&gt;That’s why Jordan Mechner’s advice — and it’s so beautiful — is to proceed from 1 to 3 to 2. Go right from the inspiration — the vision — to actually making it. Don’t think it through. Don’t talk about it. Don’t plan it. Dive in and start making it happen. If you do that — if you can start rocking — you’ll get some momentum, and when you have some momentum then the project has a chance, because now you’re into it. It’s going somewhere, it’s tangible. Sure, you’ll still run up against problems to solve and decisions to make, but you’ll approach these in the moment and solve them in the moment. You’ll solve them so you can keep moving.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://joeyschoblaska.com/post/13640148558</link><guid>http://joeyschoblaska.com/post/13640148558</guid><pubDate>Thu, 25 Mar 2010 00:00:00 -0400</pubDate></item><item><title>Your High IQ Will Kill Your Startup</title><description>&lt;a href="http://blog.cubeofm.com/your-high-iq-will-kill-your-startup"&gt;Your High IQ Will Kill Your Startup&lt;/a&gt;: &lt;blockquote&gt;
  &lt;p&gt;Being intelligent is like having a knife. If you train every day in using the knife, you will be invincible. If you think that just having a knife will make you win any battle you fight, then you will fail.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://joeyschoblaska.com/post/13640174588</link><guid>http://joeyschoblaska.com/post/13640174588</guid><pubDate>Fri, 05 Mar 2010 00:00:00 -0500</pubDate></item><item><title>The city walls of Xi’an, one of the four ancient capitals...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lvl0fsbreN1r70r6ro1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;The city walls of Xi’an, one of the four ancient capitals of China.&lt;/p&gt;</description><link>http://joeyschoblaska.com/post/13634842843</link><guid>http://joeyschoblaska.com/post/13634842843</guid><pubDate>Tue, 19 Jan 2010 00:00:00 -0500</pubDate></item><item><title>Inside Beijing’s Forbidden City.</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lvl0jxuiGi1r70r6ro1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Inside Beijing’s Forbidden City.&lt;/p&gt;</description><link>http://joeyschoblaska.com/post/13634902468</link><guid>http://joeyschoblaska.com/post/13634902468</guid><pubDate>Sun, 17 Jan 2010 00:00:00 -0500</pubDate></item><item><title>The Forbidden City.</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lvl110wu3v1r70r6ro1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;The Forbidden City.&lt;/p&gt;</description><link>http://joeyschoblaska.com/post/13635153252</link><guid>http://joeyschoblaska.com/post/13635153252</guid><pubDate>Fri, 15 Jan 2010 00:00:00 -0500</pubDate></item><item><title>Thinking Sphinx: Searching By Location And Keyword</title><description>&lt;p&gt;Let&amp;#8217;s say that we&amp;#8217;re building a Rails app to index independent coffee shops in our town. Every coffee shop has a name, a description and some comments, as well as a latitude and longitude value so that we can place it on a map. We want to allow our users to search through the coffee shops in our database by providing keywords and a location. We want our searches to take into account BOTH the relevance of the results based on keyword matches, as well as their proximity to the location given.&lt;/p&gt;

&lt;h3&gt;Thinking Sphinx&lt;/h3&gt;

&lt;p&gt;For this tutorial we&amp;#8217;ll be using Thinking Sphinx, a great search library for Ruby projects.&lt;/p&gt;

&lt;p&gt;First, we&amp;#8217;ll need to &lt;a href="http://freelancing-god.github.com/ts/en/installing_sphinx.html"&gt;install Sphinx&lt;/a&gt; and &lt;a href="http://freelancing-god.github.com/ts/en/installing_thinking_sphinx.html"&gt;Thinking Sphinx&lt;/a&gt;. If you&amp;#8217;re new to Sphinx, you might want to check out this &lt;a href="http://freelancing-god.github.com/ts/en/sphinx_basics.html"&gt;great tutorial&lt;/a&gt; which explains the basics of indexing and searching.&lt;/p&gt;

&lt;h3&gt;Indexing the Model&lt;/h3&gt;

&lt;p&gt;Once Sphinx and Thinking Sphinx are installed, we&amp;#8217;re ready to define the indexes on our model. This tells Sphinx which fields to store in its index for searching, which attributes we want to have available for sorting and filtering, as well as any other properties we want to define.&lt;/p&gt;

&lt;pre class="prettyprint"&gt;
# Table name: coffee_shops
#
#  id              :integer(4)      not null, primary key
#  name            :string(255)
#  description     :text
#  lat             :float
#  lng             :float

class CoffeeShop &amp;lt; ActiveRecord::Base
  has_many :comments

  define_index do
    # fields
    indexes :name
    indexes :description
    indexes comments.body, :as =&amp;gt; :comments

    # attributes
    has 'RADIANS(lat)', :as =&amp;gt; :lat,  :type =&amp;gt; :float
    has 'RADIANS(lng)', :as =&amp;gt; :lng,  :type =&amp;gt; :float

    # properties
    set_property :latitude_attr  =&amp;gt; 'lat'
    set_property :longitude_attr =&amp;gt; 'lng'
    set_property :field_weights  =&amp;gt; { 'name'        =&amp;gt; 10,
                                      'description' =&amp;gt; 2,
                                      'comments'    =&amp;gt; 1 }
  end
end
&lt;/pre&gt;

&lt;p&gt;The fields in the index tell Sphinx that we want our search to look at the name and description of our coffee shops, as well as the body of any comments that have been made. Notice that we&amp;#8217;re able to index not only fields that are in our coffee_shops table, but also fields from associated records - in this case the bodies of our comments.&lt;/p&gt;

&lt;p&gt;Defining a lat and lng attribute are necessary for doing geography-based searches. The big gotcha here is that Sphinx needs these attributes to be stored as radians, whereas most geocoding APIs (such as Google) use decimal degrees. The SQL &amp;#8216;RADIANS(lat)&amp;#8217; will automatically do this conversion for you. If you happen to have your lat and lng stored as radians already, however, you can just define your attributes like this:&lt;/p&gt;

&lt;pre class="prettyprint"&gt;
# attributes
has :lat
has :lng
&lt;/pre&gt;

&lt;p&gt;Finally, we define our properties. The :latitude_attr and :longitude_attr properties tell Sphinx which fields we&amp;#8217;re using for our geography calculations. The :field_weights define how much weight we want to give to each indexed field. If we get a match on the name of one of our coffee shops, that should weigh heavier in the relevance than if we got a match on one of our comment bodies.&lt;/p&gt;

&lt;h3&gt;The Search Method&lt;/h3&gt;

&lt;p&gt;Next, we&amp;#8217;ll redefine the CoffeeShop::search class method, allowing us to use a custom sort expression and a geocode object.&lt;/p&gt;

&lt;pre class="prettyprint"&gt;
class CoffeeShop &amp;lt; ActiveRecord::Base

  # ...

  METERS_PER_MILE = 1609.344
  SORT_EXPRESSION = "@weight * @weight / @geodist"
  RADIUS = 5

  def self.search(keywords, var = {})
    search_options = {:page =&amp;gt; var[:page] || 1, :per_page =&amp;gt; PER_PAGE}

    if var[:geocode] &amp;amp;&amp;amp; var[:geocode].success?
      lat = (var[:geocode].lat / 180.0) * Math::PI
      lng = (var[:geocode].lng / 180.0) * Math::PI

      search_options[:geo] = [lat, lng]
      search_options[:sort_mode] = :expr
      search_options[:sort_by] = SORT_EXPRESSION
      search_options[:with] = {"@geodist" =&amp;gt; 0.0..(RADIUS * METERS_PER_MILE)}
    end

    super(keywords, search_options)
  end
end
&lt;/pre&gt;

&lt;p&gt;That&amp;#8217;s a lot of awesome. Let&amp;#8217;s walk through our new search class and see what&amp;#8217;s going on.&lt;/p&gt;

&lt;h4&gt;@geodist, @weight and SORT_EXPRESSION&lt;/h4&gt;

&lt;p&gt;Sphinx gives you some special attributes for sorting and filtering, including @weight and @geodist. @weight is the relevance of a search result (the larger the number, the more relevant the result) and is the default sorting option. @geodist is the distance (in meters) of the search result from the anchor point. By defining SORT_EXPRESSION to use both the @weight and @geodist attributes, we can sort in a way that takes both into account. You can add any other operators and attributes to this expression that you want to tailor how your results are sorted. For instance, if you had a &amp;#8216;popularity&amp;#8217; attribute on your model and wanted more popular coffee shops to rank better, you could define your search expression as &amp;#8216;@weight * @weight / @geodist + popularity&amp;#8217; (just make sure you add &amp;#8216;popularity&amp;#8217; to the list of attributes on your model index).&lt;/p&gt;

&lt;h4&gt;:page and :per_page&lt;/h4&gt;

&lt;p&gt;If you have WillPaginate installed, Thinking Sphinx will automatically wrap your search results in a WillPaginate collection, allowing you to use all your normal WillPaginate view helpers. Neat!&lt;/p&gt;

&lt;h4&gt;:geo, :sort_mode, :sort_by and :with&lt;/h4&gt;

&lt;p&gt;These attributes affect the sorting and filtering of our search. :geo tells Sphinx that we are doing a geography search with specific lat and lng variables and tells it to add the @geodist attribute to each result. :sort_mode and :sort_by tell Sphinx that we want to sort results by our SORT_EXPRESSION constant. The :with option tells Sphinx that we only want to return results within five miles of our anchor point.&lt;/p&gt;

&lt;p&gt;Finally, the last line performs the actual search based on the keywords and search options we&amp;#8217;ve set up.&lt;/p&gt;

&lt;h3&gt;Executing Searches&lt;/h3&gt;

&lt;p&gt;Now that our model is set up, executing searches is as simple as:&lt;/p&gt;

&lt;pre class="prettyprint"&gt;
@geocode = MultiGeocoder.geocode(params[:query_location])

@coffee_shops = CoffeeShop.search(params[:query_keywords],
                                  :page =&amp;gt; params[:page],
                                  :geocode =&amp;gt; @geocode)
&lt;/pre&gt;

&lt;p&gt;This will execute our query with all the parameters we care about and return a paginated collection of coffee shops sorted by relevance and distance. Also, if any or all of the parameters are blank, nothing breaks! If all parameters are blank, a Sphinx search won&amp;#8217;t even be performed, and a WillPaginate collection will be returned with our model&amp;#8217;s default sorting and PER_PAGE attributes.&lt;/p&gt;

&lt;p&gt;Happy searching!&lt;/p&gt;</description><link>http://joeyschoblaska.com/post/13781084634</link><guid>http://joeyschoblaska.com/post/13781084634</guid><pubDate>Mon, 29 Jun 2009 00:00:00 -0400</pubDate></item><item><title>The desert outside the Huacachina Oasis in Peru.</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lvl1dvR8Ko1r70r6ro1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;The desert outside the Huacachina Oasis in Peru.&lt;/p&gt;</description><link>http://joeyschoblaska.com/post/13635346695</link><guid>http://joeyschoblaska.com/post/13635346695</guid><pubDate>Sun, 15 Jun 2008 00:00:00 -0400</pubDate></item><item><title>Angkor Wat.</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lvl15uiF871r70r6ro1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Angkor Wat.&lt;/p&gt;</description><link>http://joeyschoblaska.com/post/13635225745</link><guid>http://joeyschoblaska.com/post/13635225745</guid><pubDate>Mon, 28 May 2007 00:00:00 -0400</pubDate></item></channel></rss>

