<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Who Is This &#34;Ollie Parsley&#34;??</title>
	<atom:link href="http://ollieparsley.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ollieparsley.com</link>
	<description>Well a PHP, Node.JS and Android developer for DataSift and Hootware actually!</description>
	<lastBuildDate>Wed, 22 May 2013 06:57:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='ollieparsley.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/e2b3fc6b09866c5336645216ea54dee0?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Who Is This &#34;Ollie Parsley&#34;??</title>
		<link>http://ollieparsley.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ollieparsley.com/osd.xml" title="Who Is This &#34;Ollie Parsley&#34;??" />
	<atom:link rel='hub' href='http://ollieparsley.com/?pushpress=hub'/>
		<item>
		<title>Using MQTT as a GCM replacement for android push notifications</title>
		<link>http://ollieparsley.com/2013/05/20/using-mqtt-as-a-gcm-replacement-for-android-push-notifications/</link>
		<comments>http://ollieparsley.com/2013/05/20/using-mqtt-as-a-gcm-replacement-for-android-push-notifications/#comments</comments>
		<pubDate>Mon, 20 May 2013 19:19:03 +0000</pubDate>
		<dc:creator>Ollie Parsley</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://ollieparsley.wordpress.com/?p=15</guid>
		<description><![CDATA[The first thing you might think while reading the title is, why would you not want to use Google Cloud Messaging for android push notifications? Well let me justify it. I need to support the Kindle Fire and as many other android forks as possible, I&#8217;d like to support Android 2.2 and below. Amazon done [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ollieparsley.com&#038;blog=52489091&#038;post=15&#038;subd=ollieparsley&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://ollieparsley.files.wordpress.com/2013/05/mqtt.png"><img class="size-full wp-image-16 aligncenter" alt="mqtt" src="http://ollieparsley.files.wordpress.com/2013/05/mqtt.png?w=585"   /></a></p>
<p>The first thing you might think while reading the title is, why would you not want to use <a href="http://developer.android.com/google/gcm/index.html" target="_blank">Google Cloud Messaging</a> for android push notifications? Well let me justify it.</p>
<p>I need to support the Kindle Fire and as many other android forks as possible, I&#8217;d like to support Android 2.2 and below. Amazon done have push notifications yet, at the time of writing they have a <a href="https://developer.amazon.com/sdk/adm.html" target="_blank">beta push notification service</a>, but I can&#8217;t wait for an indeterminate amount of time for that to some out of beta before being able to release an app. I also wanted to support one version of the app and not have different versions for the different app market places and android fork.</p>
<p>To allow push notifications on any android fork I need a transport mechanism that will work across them all. To do this I researched quite a few alternatives. I happened to come across <a href="http://mqtt.org/" target="_blank">MQTT</a> and discovered that Facebook use an MQTT background service to receive messages to and from the <a href="https://play.google.com/store/apps/details?id=com.facebook.katana" target="_blank">Facebook</a> and <a href="https://play.google.com/store/apps/details?id=com.facebook.orca" target="_blank">Facebook Messenger</a> apps.</p>
<p>What benefits does MQTT have over GCM?</p>
<ul>
<li>Pub/Sub: A client can subscribe to multiple topics</li>
<li>Quality of Service (QoS): GCM is pretty much &#8220;fire and forget&#8221;. You receive acknowledgement that the message has been received but the server, but not that it is delivered to the client, so you will never know if the client got the message unless they communicate back to the server (which my code used to do). MQTT has 3 levels of QoS. Which vary from &#8220;fire and forget&#8221; to full acknowledgement that the client received the message.</li>
</ul>
<p>But there are a few things you might miss if you move away from GCM:</p>
<ul>
<li>The massive Google infrastructure</li>
<li>You don&#8217;t need to manage your own long-lived TCP connections in a service</li>
</ul>
<p>For my app I ended up doing was using a similar technique to Facebook. I created a new Service has a permanent connection open to an MQTT broker on a server I host with <a href="http://www.linode.com/?r=19482b2ef9c44706d545038a2014a4201d5645a0" target="_blank">Linode (which I highly recommend)</a>. It receives a message on a topic specific to the device that is connected to it, then it broadcasts a message in a similar way to GCM does. This meant that the rest of my code needed minimal changes in order to support this new transport. The code was based on an awesome blog post from <a href="http://dalelane.co.uk/blog/?p=1599">Dale Lane</a>. I recommend giving that a good read through, it goes into a lot of detail and a full implementation of the service.</p>
<p>If you are interested, the app I am developing that uses this technique is <a href="https://lockateapp.com" target="_blank">Lockate, android mobile security software</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ollieparsley.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ollieparsley.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ollieparsley.com&#038;blog=52489091&#038;post=15&#038;subd=ollieparsley&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ollieparsley.com/2013/05/20/using-mqtt-as-a-gcm-replacement-for-android-push-notifications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/acd96b5e53990969373fff721f4541e8?s=96&#38;d=retro&#38;r=R" medium="image">
			<media:title type="html">olliedude2k</media:title>
		</media:content>

		<media:content url="http://ollieparsley.files.wordpress.com/2013/05/mqtt.png" medium="image">
			<media:title type="html">mqtt</media:title>
		</media:content>
	</item>
		<item>
		<title>The blog is back</title>
		<link>http://ollieparsley.com/2013/05/20/the-blog-is-back/</link>
		<comments>http://ollieparsley.com/2013/05/20/the-blog-is-back/#comments</comments>
		<pubDate>Mon, 20 May 2013 17:09:43 +0000</pubDate>
		<dc:creator>Ollie Parsley</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ollieparsley.wordpress.com/?p=3</guid>
		<description><![CDATA[For several years now I&#8217;ve been redirecting my ollieparsley.com domain to my about.me page. I&#8217;ve been working on several small projects and wanted a place to talk about them and blog about things I care about, the easiest way was to sort my site out again. This was part due to the fact that about.me [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ollieparsley.com&#038;blog=52489091&#038;post=3&#038;subd=ollieparsley&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>For several years now I&#8217;ve been redirecting my ollieparsley.com domain to my about.me page. I&#8217;ve been working on several small projects and wanted a place to talk about them and blog about things I care about, the easiest way was to sort my site out again. This was part due to the fact that about.me haven&#8217;t implemented the most requested feature of supporting CNAME&#8217;s.</p>
<p>Anyway enough of a mini rant, enjoy my blog! :p</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ollieparsley.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ollieparsley.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ollieparsley.com&#038;blog=52489091&#038;post=3&#038;subd=ollieparsley&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ollieparsley.com/2013/05/20/the-blog-is-back/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/acd96b5e53990969373fff721f4541e8?s=96&#38;d=retro&#38;r=R" medium="image">
			<media:title type="html">olliedude2k</media:title>
		</media:content>
	</item>
	</channel>
</rss>
