<?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>SOS</title>
	<atom:link href="http://shaneosullivan.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://shaneosullivan.wordpress.com</link>
	<description>Shane O&#039;Sullivan&#039;s technical blog... really ties the room together</description>
	<lastBuildDate>Wed, 01 Feb 2012 15:20:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='shaneosullivan.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>SOS</title>
		<link>http://shaneosullivan.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://shaneosullivan.wordpress.com/osd.xml" title="SOS" />
	<atom:link rel='hub' href='http://shaneosullivan.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Dynamically change deviceDpi on iOS</title>
		<link>http://shaneosullivan.wordpress.com/2011/12/13/dynamically-change-devicedpi-on-ios/</link>
		<comments>http://shaneosullivan.wordpress.com/2011/12/13/dynamically-change-devicedpi-on-ios/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 17:26:26 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/2011/12/13/dynamically-change-devicedpi-on-ios/</guid>
		<description><![CDATA[When Apple released the iPhone 4 with a retina display, they quadrupled the pixel density.  This caused problems for websites, as all their assets would now look tiny.  To solve this, Apple made it so that websites would keep the old low density rather than the retina display, and would allow sites to opt in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=553&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When Apple released the iPhone 4 with a retina display, they quadrupled the pixel density.  This caused problems for websites, as all their assets would now look tiny.  To solve this, Apple made it so that websites would keep the old low density rather than the retina display, and would allow sites to opt in to using the hi-res display.</p>
<p>This is done by adding a &lt;meta&gt; tag to the header, like</p>
<p>  &lt;meta name=&#8221;viewport&#8221; content=&#8221;initial-scale=0.5,maximum-scale=0.5,user-scalable=no,width=device-width,height=device-height,target-densityDpi=device-dpi&#8221; /&gt;</p>
<p>Note the 0.5 for the scale values.  This resizes the screen to take advantage of the full retina display.  Pretty.  To use the low-res version, the scale parameters are 1.</p>
<p>However, if you&#8217;re writing a static HTML based web app, with no backend, you can&#8217;t go sniffing the user agent to figure out whether to set the scale to 0.5 or 1 before generating the page, so you&#8217;ll have to do it in JavaScript.</p>
<p>Code!!</p>
<p>Here&#8217;s a simple script to do that, from my colleagues on the JSGameBench project at Facebook.  To use this, first put the meta tag above into the &lt;head&gt; of your document, with scale values of 1.</p>
<p>  if (window == window.top) {<br />        var meta_viewport = document.querySelector &amp;&amp;<br />          document.querySelector(&#8220;meta[name=viewport]&#8220;);<br />        if (meta_viewport &amp;&amp; window.devicePixelRatio &gt;= 2 ) {<br />          meta_viewport.setAttribute(&#8216;content&#8217;, &#8216;user-scalable=no, width=device-width, height=device-height, initial-scale=0.5, maximum-scale=0.5&#8242;);<br />        }<br />  }</p>
<p>The script looks for the meta tag, checks if you have a hi-res Apple display, and switches the device screen scale to use all the pixels, not just one in four.</p>
<p><strong>One more thing&#8230;..</strong></p>
<p>If your web app uses CSS like</p>
<p>html, body {<br />  width: 100%;<br />  height: 100%;<br />}</p>
<p>to fit the app to the screen dimensions, and inside perhaps you have some JS based scroller, then you&#8217;ll need two further lines.  The script then becomes</p>
<p>if (window == window.top) {<br />  var meta_viewport = document.querySelector &amp;&amp; <br />    document.querySelector(&#8220;meta[name=viewport]&#8220;);<br />  if (meta_viewport &amp;&amp; window.devicePixelRatio &gt;= 2 ) {<br />    meta_viewport.setAttribute(&#8216;content&#8217;, &#8216;user-scalable=no, width=device-width, height=device-height, initial-scale=0.5, maximum-scale=0.5&#8242;);<br />    document.body.style.width = &#8217;200%&#8217;;<br />    document.body.style.height = &#8217;200%&#8217;;<br />  }<br />}:</p>
<p>Without these extra lines, the page will only occupy one quarter of the screen, rather than all of it.</p>
<p>Now you have an app that looks right on older iOS devices, but still uses the hi-res screen of the iPhone4 for really sharp fonts and more.</p>
<p><strong>Finally</strong></p>
<p><strong></strong>Make sure that when designing your borders and other screen elements to use multiples of two.  E.g. have your borders be 2px, not 3px, so that when the phone divides them by two it&#8217;ll look right.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/553/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/553/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/553/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/553/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/553/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/553/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/553/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/553/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=553&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2011/12/13/dynamically-change-devicedpi-on-ios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Tracking memory usage on WebOS with GnuPlot</title>
		<link>http://shaneosullivan.wordpress.com/2011/10/16/tracking-memory-usage-on-webos-with-gnuplot/</link>
		<comments>http://shaneosullivan.wordpress.com/2011/10/16/tracking-memory-usage-on-webos-with-gnuplot/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 01:47:48 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[performance]]></category>
		<category><![CDATA[WebOS]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=546</guid>
		<description><![CDATA[I&#8217;ve been fighting against a serious memory leak in a WebOS app I&#8217;m developing, and unfortunately the tools available for WebOS are no help whatsoever for these kinds of problems. There is a program available for WebOS called JsTop, but the data that it tracks doesn&#8217;t show that my app is using lots of memory, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=546&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been fighting against a serious memory leak in a WebOS app I&#8217;m developing, and unfortunately the tools available for WebOS are no help whatsoever for these kinds of problems. There is a program available for WebOS called JsTop, but the data that it tracks doesn&#8217;t show that my app is using lots of memory, while at the same time the Touchpad is crashing with the infamous &#8220;Too Many Cards&#8221; error, with just one card on the screen.</p>
<p>So, I decided to see what I can do about it. A little fiddling with novaterm, grep, awk and GnuPlot has helped me a lot, and hopefully it can help you too.</p>
<p><a href="http://shaneosullivan.files.wordpress.com/2011/10/webos_gnuplot.png"><img class="alignnone size-full wp-image-547" title="WebOS GnuPlot" src="http://shaneosullivan.files.wordpress.com/2011/10/webos_gnuplot.png" alt="" width="560" height="468" /></a></p>
<p>The image above shows the percentage memory (red) and CPU (green) usage over time of the WebAppMgr process in WebOS, which is essentially where all the apps are executed.  To get a graph like this, download the following two scripts (Mac/Linux/Cygwin only):</p>
<p><a href="http://chofter.com/random/scripts/plotWebOS.sh">plotWebOS.sh</a></p>
<p><a href="http://chofter.com/random/scripts/driveGnuPlotStreams.pl">driveGnuPlotStreams.pl</a> [<a href="http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html" target="_blank">Source</a>]</p>
<p>You&#8217;ll probably have to make them executable, so do:<br />
<code><br />
chmod +x plotWebOS.sh<br />
chmod +x driveGnuPlotStreams.pl<br />
</code></p>
<p>Then plug in your WebOS phone or TouchPad via USB, and run<br />
<code><br />
./plotWebOS.sh<br />
</code><br />
and you should see a graph like the one above.  If you don&#8217;t see it, it&#8217;s likely that you don&#8217;t have <a href="http://www.gnuplot.info/">GnuPlot</a> installed, so Google how to do that for your system, it should be trivial.</p>
<p>For what it&#8217;s worth, I get a &#8220;Too Many Cards&#8221; error just before the process hits 60%, meaning that the other running processes are taking up the remaining ~40% of memory.</p>
<p>If you feel like playing around with this script and doing something else cool, let me know!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/546/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/546/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/546/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/546/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/546/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/546/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/546/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=546&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2011/10/16/tracking-memory-usage-on-webos-with-gnuplot/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>

		<media:content url="http://shaneosullivan.files.wordpress.com/2011/10/webos_gnuplot.png" medium="image">
			<media:title type="html">WebOS GnuPlot</media:title>
		</media:content>
	</item>
		<item>
		<title>How to easily check a WebOS app version</title>
		<link>http://shaneosullivan.wordpress.com/2011/10/07/how-to-easily-check-a-webos-app-version/</link>
		<comments>http://shaneosullivan.wordpress.com/2011/10/07/how-to-easily-check-a-webos-app-version/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 15:19:09 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[WebOS]]></category>
		<category><![CDATA[yql]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=539</guid>
		<description><![CDATA[If you&#8217;re a WebOS developer and would like to be able to notify your users when a new version of your app is available, a very efficient way to do that is to use the Yahoo Query Language. Take a look at this page: It shows a YQL query to select the version of the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=539&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re a WebOS developer and would like to be able to notify your users when a new version of your app is available, a very efficient way to do that is to use the Yahoo Query Language.</p>
<p>Take a look at <a href="http://developer.yahoo.com/yql/console/#h=select%20*%20from%20html%20where%20url%3D%22https%3A//developer.palm.com/appredirect/%3Fpackageid%3Dcom.chofter.palmdevutils%22%20and%0A%20%20%20%20%20%20xpath%3D%27//div%5B@id%3D%22app-price-system-version%22%5D/p%5B3%5D%27">this page</a>:</p>
<p>It shows a YQL query to select the version of the app com.chofter.palmdevutils, giving the following result</p>
<p><code>
<pre>{
 "query": {
  "count": 1,
  "created": "2011-10-07T14:58:53Z",
  "lang": "en-US",
  "results": {
   "p": "Version: 1.3.0"
  }
 }
}</pre>
<p></code></p>
<p>Fetching this JSON object requires far less data that reading the entire HTML page and parsing it yourself.  To see the final link that you would use, copy the link from the bottom of the Yahoo page, like this one <a href="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22https%3A%2F%2Fdeveloper.palm.com%2Fappredirect%2F%3Fpackageid%3Dcom.chofter.palmdevutils%22%20and%0A%20%20%20%20%20%20xpath%3D'%2F%2Fdiv%5B%40id%3D%22app-price-system-version%22%5D%2Fp%5B3%5D'&amp;format=json&amp;callback=">http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22https%3A%2F%2Fdeveloper.palm.com%2Fappredirect%2F%3Fpackageid%3Dcom.chofter.palmdevutils%22%20and%0A%20%20%20%20%20%20xpath%3D&#8217;%2F%2Fdiv%5B%40id%3D%22app-price-system-version%22%5D%2Fp%5B3%5D&#8217;&amp;format=json&amp;callback=</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/539/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/539/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/539/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/539/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/539/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/539/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/539/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/539/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/539/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/539/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/539/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/539/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/539/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/539/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=539&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2011/10/07/how-to-easily-check-a-webos-app-version/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>JavaScript performance tips</title>
		<link>http://shaneosullivan.wordpress.com/2011/09/28/javascript-performance-tips/</link>
		<comments>http://shaneosullivan.wordpress.com/2011/09/28/javascript-performance-tips/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 02:10:07 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=534</guid>
		<description><![CDATA[Every now and again a question comes up at work as to which of two or more approaches to the same problem in JavaScript performs better. I&#8217;ve started using the fantastic site jsperf.com to document these, so I&#8217;ll append to this post whenever I add a new test. I hope you find these useful, as [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=534&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Every now and again a question comes up at work as to which of two or more approaches to the same problem in JavaScript performs better.  I&#8217;ve started using the fantastic site <a href="http://jsperf.com">jsperf.com</a> to document these, so I&#8217;ll append to this post whenever I add a new test.  I hope you find these useful, as they are answering questions that pertain to practical JavaScript usage.</p>
<p><a href="http://jsperf.com/creating-a-regex-in-and-outside-a-loop">Creating a regex inside and outside a loop</a></p>
<p><a href="http://jsperf.com/declaring-variables-inside-loops/4">Declaring variables in a loop or outside it</a></p>
<p><a href="http://jsperf.com/improving-hasownproperty">Using hasOwnProperty or testing with undefined and void 0</a></p>
<p><a href="http://jsperf.com/indexof-vs-substring-end-of-string">Using indexOf or substring to test the end of a string</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/534/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/534/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/534/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/534/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/534/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/534/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/534/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/534/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/534/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/534/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/534/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/534/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/534/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/534/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=534&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2011/09/28/javascript-performance-tips/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Tip: Declare regular expressions once and reuse for performance win</title>
		<link>http://shaneosullivan.wordpress.com/2011/09/22/tip-declare-regular-expressions-once-and-reuse-for-performance-win/</link>
		<comments>http://shaneosullivan.wordpress.com/2011/09/22/tip-declare-regular-expressions-once-and-reuse-for-performance-win/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 21:54:51 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=532</guid>
		<description><![CDATA[A pattern I see quite often in JavaScript is of people using a regular expression in a loop, e.g. &#160; for (var i = 0; i &#60; array.length; i++) { array[i].match(/something/); } The naive assumption is that a regex is some special native thing, like a boolean. However regular expressions have a cost to construct, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=532&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A pattern I see quite often in JavaScript is of people using a regular expression in a loop, e.g.</p>
<p>&nbsp;<br />
<code><br />
for (var i = 0; i &lt; array.length; i++) {<br />
  array[i].match(/something/);<br />
}<br />
</code></p>
<p>The naive assumption is that a regex is some special native thing, like a boolean.  However regular expressions have a cost to construct, which you can see in this performance test &#8211; <a href="http://jsperf.com/creating-a-regex-in-and-outside-a-loop">http://jsperf.com/creating-a-regex-in-and-outside-a-loop</a></p>
<p>So, if you&#8217;re using a regular expression in JavaScript more than once, declare it first and reuse it to see a dramatic performance gain</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/532/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/532/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/532/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/532/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/532/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/532/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/532/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=532&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2011/09/22/tip-declare-regular-expressions-once-and-reuse-for-performance-win/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>CSS Box Sizing makes me happy</title>
		<link>http://shaneosullivan.wordpress.com/2011/09/13/css-box-sizing-makes-me-happy/</link>
		<comments>http://shaneosullivan.wordpress.com/2011/09/13/css-box-sizing-makes-me-happy/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 15:18:29 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=530</guid>
		<description><![CDATA[Quick note: For anyone fighting for years against the CSS box model, where the visible size of an element depends on the sum of it&#8217;s width, height AND padding, check out the box-sizing: border-box;. It does exactly what we need, where if you say .myclass { width: 100%; padding: 10px; } then myclass will still [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=530&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Quick note: For anyone fighting for years against the CSS box model, where the visible size of an element depends on the sum of it&#8217;s width, height AND padding, check out the <strong>box-sizing: border-box;</strong>. It does exactly what we need, where if you say</p>
<p><code><br />
.myclass {<br />
width: 100%;<br />
padding: 10px;<br />
}<br />
</code></p>
<p>then <strong>myclass</strong> will still take up 100% width of its container, instead of overflowing.</p>
<p><a href="https://developer.mozilla.org/en/CSS/box-sizing">https://developer.mozilla.org/en/CSS/box-sizing</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/530/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/530/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=530&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2011/09/13/css-box-sizing-makes-me-happy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>This is what a successful platform launch looks like</title>
		<link>http://shaneosullivan.wordpress.com/2011/09/02/this-is-what-a-successful-platform-launch-looks-like/</link>
		<comments>http://shaneosullivan.wordpress.com/2011/09/02/this-is-what-a-successful-platform-launch-looks-like/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 18:15:12 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[apps]]></category>
		<category><![CDATA[Flickr Mundo]]></category>
		<category><![CDATA[Palm]]></category>
		<category><![CDATA[Tablet]]></category>
		<category><![CDATA[WebOS]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=524</guid>
		<description><![CDATA[&#8230; pity it had to happen as a result of a liquidation sale. WebOS looks to be on it&#8217;s last legs, and HP has announced that it&#8217;ll never make new WebOS hardware. In the meantime, the fire sale of TouchPads has done fantastic things for us WebOS developers. The image below is a graph of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=524&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8230; pity it had to happen as a result of a liquidation sale.</p>
<p>WebOS looks to be on it&#8217;s last legs, and HP has announced that it&#8217;ll never make new WebOS hardware.  In the meantime, the fire sale of TouchPads has done fantastic things for us WebOS developers.  The image below is a graph of the <a href="http://developer.palm.com/appredirect/?packageid=com.chofter.flickrmundo">Flickr Mundo HD</a> sales for 2011.  </p>
<p>If only HP had anything resembling courage, rather than wimping out with the revelation that &#8220;Competition is hard? What? No one told me! <a href="http://www.youtube.com/watch?v=_W_u4UTvk9w" target="_blank">Run away</a>!!&#8221;, this sales trend might have actually continued for a long time.  </p>
<p>Ah well, I&#8217;ll enjoy it while it lasts!</p>
<p><img src="http://shaneosullivan.files.wordpress.com/2011/09/touchpadsales.png" alt="Touchpad Sales of Flickr Mundo HD" title="Touchpad Sales of Flickr Mundo HD" width="590" height="171" class="alignnone size-full wp-image-525" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/524/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/524/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/524/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/524/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/524/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/524/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/524/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=524&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2011/09/02/this-is-what-a-successful-platform-launch-looks-like/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>

		<media:content url="http://shaneosullivan.files.wordpress.com/2011/09/touchpadsales.png" medium="image">
			<media:title type="html">Touchpad Sales of Flickr Mundo HD</media:title>
		</media:content>
	</item>
		<item>
		<title>Unpacking webOS .ipk files on a Mac</title>
		<link>http://shaneosullivan.wordpress.com/2011/08/28/unpacking-webos-ipk-files-on-a-mac/</link>
		<comments>http://shaneosullivan.wordpress.com/2011/08/28/unpacking-webos-ipk-files-on-a-mac/#comments</comments>
		<pubDate>Sun, 28 Aug 2011 02:40:41 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Palm]]></category>
		<category><![CDATA[WebOS]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=520</guid>
		<description><![CDATA[Quick tip: For some reason, the archive files that webOS uses as application installers are very awkward to extract on a Mac. It&#8217;s simple on Windows. After a little digging, I found a handy script at http://forums.precentral.net/webos-development/235149-extract-build-ipkg-mac-osx.html that does the trick.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=520&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Quick tip: For some reason, the archive files that webOS uses as application installers are very awkward to extract on a Mac.  It&#8217;s simple on Windows.</p>
<p>After a little digging, I found a handy script at <a href="http://forums.precentral.net/webos-development/235149-extract-build-ipkg-mac-osx.html">http://forums.precentral.net/webos-development/235149-extract-build-ipkg-mac-osx.html</a> that does the trick.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/520/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=520&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2011/08/28/unpacking-webos-ipk-files-on-a-mac/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>HP Enyo talk from the London Ajax conference</title>
		<link>http://shaneosullivan.wordpress.com/2011/07/03/hp-enyo-talk-from-the-london-ajax-conference/</link>
		<comments>http://shaneosullivan.wordpress.com/2011/07/03/hp-enyo-talk-from-the-london-ajax-conference/#comments</comments>
		<pubDate>Sun, 03 Jul 2011 17:17:51 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[enyo]]></category>
		<category><![CDATA[Palm]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=510</guid>
		<description><![CDATA[I really enjoyed talking about HP Enyo at the London Ajax groups conference on July 2nd.  People were genuinely interested, and hopefully will take a closer look at the framework, which I find great to develop HTML5 apps with. You can view the talk below [source] The slides are embedded below. Thanks to Dylan from [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=510&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I really enjoyed talking about <a href="http://developer.palm.com/">HP Enyo</a> at the <a href="http://londonajax.com">London Ajax</a> groups conference on July 2nd.  People were genuinely interested, and hopefully will take a closer look at the framework, which I find great to develop HTML5 apps with.</p>
<p>You can view the talk below [<a href="http://vimeo.com/26570760">source</a>] </p>
<p><iframe src="http://player.vimeo.com/video/26570760" width="500" height="281" frameborder="0"></iframe></p>
<p>The slides are embedded below.</p>
<iframe src='http://www.slideshare.net/slideshow/embed_code/8495194' width='425' height='348' scrolling='no'></iframe>
<p>Thanks to Dylan from SitePen for organising everything and RIM for sponsoring the event.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/510/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/510/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/510/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/510/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/510/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/510/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/510/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=510&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2011/07/03/hp-enyo-talk-from-the-london-ajax-conference/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Come hear about HP Enyo at the London Ajax event</title>
		<link>http://shaneosullivan.wordpress.com/2011/06/30/come-hear-about-hp-enyo-at-the-london-ajax-event/</link>
		<comments>http://shaneosullivan.wordpress.com/2011/06/30/come-hear-about-hp-enyo-at-the-london-ajax-event/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 16:38:19 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[enyo]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=508</guid>
		<description><![CDATA[I&#8217;m very happy to have been invite to speak at the London Ajax event on July 2nd, 2011 &#8211; http://londonajax.com/ .  I&#8217;ll be giving a talk about the new HP Enyo framework, and how you can use it to develop HTML 5 apps. &#160;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=508&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m very happy to have been invite to speak at the London Ajax event on July 2nd, 2011 &#8211; <a href="http://londonajax.com">http://londonajax.com</a>/ .  I&#8217;ll be giving a talk about the new <a href="http://developer.palm.com/">HP Enyo</a> framework, and how you can use it to develop HTML 5 apps.</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/508/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/508/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/508/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/508/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/508/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/508/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/508/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/508/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=508&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2011/06/30/come-hear-about-hp-enyo-at-the-london-ajax-event/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Sweep line Voronoi algorithm in JavaScript</title>
		<link>http://shaneosullivan.wordpress.com/2011/03/22/sweep-line-voronoi-algorithm-in-javascript/</link>
		<comments>http://shaneosullivan.wordpress.com/2011/03/22/sweep-line-voronoi-algorithm-in-javascript/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 18:51:35 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[voronoi]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=498</guid>
		<description><![CDATA[Years ago I translated Steven Fortune&#8217;s sweep line Voronoi algorithm to C++, and have been meaning to make a JavaScript version for some time, but never got around to it. Now, someone has actually done it with the D3 charting library, and it&#8217;s fantastic.  Check it out at http://mbostock.github.com/d3/ex/voronoi.html<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=498&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Years ago I <a href="http://shaneosullivan.wordpress.com/2007/04/05/fortunes-sweep-line-voronoi-algorithm-implemented-in-java/">translated</a> Steven Fortune&#8217;s sweep line Voronoi algorithm to C++, and have been meaning to make a JavaScript version for some time, but never got around to it.</p>
<p>Now, someone has actually done it with the D3 charting library, and it&#8217;s fantastic.  Check it out at <a href="http://mbostock.github.com/d3/ex/voronoi.html">http://mbostock.github.com/d3/ex/voronoi.html </a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/498/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/498/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/498/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=498&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2011/03/22/sweep-line-voronoi-algorithm-in-javascript/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Quick canvas effect prototyping</title>
		<link>http://shaneosullivan.wordpress.com/2011/03/07/quick-canvas-effect-prototyping/</link>
		<comments>http://shaneosullivan.wordpress.com/2011/03/07/quick-canvas-effect-prototyping/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 05:14:45 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=495</guid>
		<description><![CDATA[I&#8217;m doing some playing around with image processing on HTML5 Canvas elements, and so I&#8217;ve hacked together a simple page for prototyping different algorithms. Check it out http://chofter.com/EffectPrototyping. The code abstracts away most of the complexities of working with Canvas elements, and just lets you get down to what you need: your pixel manipulation algorithms.  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=495&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m doing some playing around with image processing on HTML5 Canvas elements, and so I&#8217;ve hacked together a simple page for prototyping different algorithms.  Check it out <a href="http://chofter.com/EffectPrototyping">http://chofter.com/EffectPrototyping</a>.</p>
<p>The code abstracts away most of the complexities of working with Canvas elements, and just lets you get down to what you need: your pixel manipulation algorithms.  It provides a number of test images and examples to get you started, so have fun!</p>
<p>Oh and yes, it&#8217;s pretty ugly <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/495/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=495&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2011/03/07/quick-canvas-effect-prototyping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Palm and the Mobile Expressionists</title>
		<link>http://shaneosullivan.wordpress.com/2011/01/28/palm-and-the-mobile-expressionists/</link>
		<comments>http://shaneosullivan.wordpress.com/2011/01/28/palm-and-the-mobile-expressionists/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 16:36:28 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=492</guid>
		<description><![CDATA[Palm/HP have a new advertising campaign aimed at getting app developers all excited, and I was very happy to be a part of it.  Here&#8217;s hoping it helps give webOS the kick it needs to show developers how simple and fun it is to develop for.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=492&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.palm.com/us/developer/artist.html"><img class="alignnone size-full wp-image-493" title="HP Mobile Expressionists" src="http://shaneosullivan.files.wordpress.com/2011/01/hp-mobile-expressionists.png" alt="" width="428" height="258" /></a></p>
<p>Palm/HP have a new advertising campaign aimed at getting app developers all excited, and I was very happy to be a part of it.  Here&#8217;s hoping it helps give webOS the kick it needs to show developers how simple and fun it is to develop for.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/492/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=492&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2011/01/28/palm-and-the-mobile-expressionists/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>

		<media:content url="http://shaneosullivan.files.wordpress.com/2011/01/hp-mobile-expressionists.png" medium="image">
			<media:title type="html">HP Mobile Expressionists</media:title>
		</media:content>
	</item>
		<item>
		<title>Using Flickr Mundo to make your webOS app better</title>
		<link>http://shaneosullivan.wordpress.com/2010/11/14/using-flickr-mundo-to-make-your-webos-app-better/</link>
		<comments>http://shaneosullivan.wordpress.com/2010/11/14/using-flickr-mundo-to-make-your-webos-app-better/#comments</comments>
		<pubDate>Sun, 14 Nov 2010 19:09:59 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Flickr Mundo]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Palm]]></category>
		<category><![CDATA[WebOS]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=481</guid>
		<description><![CDATA[If you are a webOS developer with an interest in Flickr, you can now greatly improve your users experience by integrating your app with Flickr Mundo. (thanks to @rparvez for the idea to integrate with @neato_webos) I&#8217;ve added the ability for other webOS apps to launch Flickr Mundo with a Flickr URL.  This gives a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=481&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you are a <a href="http://developer.palm.com/"><code>webOS</code></a> developer with an interest in <a href="http://flickr.com">Flickr</a>, you can now greatly improve your users experience by integrating your app with <a href="http://shaneosullivan.wordpress.com/2010/09/05/flickr-mundo-for-palm-webos/" target="_self">Flickr Mundo</a>. (thanks to <a href="http://twitter.com/rparvez" target="_blank">@rparvez</a> for the idea to integrate with <a href="http://twitter.com/neato_webos" target="_blank">@neato_webos</a>)</p>
<p>I&#8217;ve added the ability for other webOS apps to launch Flickr Mundo with a Flickr URL.  This gives a far better experience to the user than simply loading Flickr in the browser &#8211; they&#8217;ve already purchased the app, it is built natively for webOS and can do many things that the web interface cannot.</p>
<p>For example, loading the link</p>
<ul>
<li><a href="http://flickr.com/photos/shaneosullivan" target="_blank">http://flickr.com/photos/shaneosullivan</a> will open the user &#8216;shaneosullivan&#8217;</li>
<li><a href="http://flickr.com/groups/palmpre" target="_blank">http://flickr.com/groups/palmpre</a> will open the &#8216;palmpre&#8217; group</li>
<li><a href="http://www.flickr.com/search/?q=tree">http://www.flickr.com/search/?q=tree</a> will do a search for photos on Flickr</li>
</ul>
<p>Many different patterns of Flickr URLs are supported.  However if you pass a URL that is not supported, Flickr Mundo will simply launch the browser at that URL.</p>
<p>To make this work just takes a few lines of code.  From within any Mojo scene assistant, simply use the followinf JavaScript code:<br />
<code><br />
var url = "http://flickr.com/upload";<br />
this.controller.serviceRequest("palm://com.palm.applicationManager", {<br />
&nbsp;&nbsp;method: 'open',<br />
&nbsp;&nbsp;parameters: {<br />
&nbsp;&nbsp;&nbsp;&nbsp;id: 'com.chofter.flickrmundo',<br />
&nbsp;&nbsp;&nbsp;&nbsp;params: {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target: url<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
});<br />
</code></p>
<p>As you can see, you can even upload photos to Flickr using this method.  So if you have some kind of photo app, would like to be able to upload to Flickr but don&#8217;t want to have to go to all the trouble of correctly authenticating a user, you can just use Flickr Mundo to do it for you.</p>
<p>The version of Flickr Mundo with this included, v1.4.0, was submitted for review today, Nov 14th 2010, and should hopefully be available for download in a couple of days.  Many different URL patterns are supported, but if you find one that isn&#8217;t, please let me know and I&#8217;ll look into adding it.</p>
<p>A future version will also include the ability to specify the file to upload &#8211; v1.4.0 asks the user to pick the file, similar to the stock Photos app on webOS.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/481/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/481/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/481/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=481&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2010/11/14/using-flickr-mundo-to-make-your-webos-app-better/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Flickr Mundo for Palm webOS</title>
		<link>http://shaneosullivan.wordpress.com/2010/09/05/flickr-mundo-for-palm-webos/</link>
		<comments>http://shaneosullivan.wordpress.com/2010/09/05/flickr-mundo-for-palm-webos/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 08:41:03 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Flickr Addict]]></category>
		<category><![CDATA[Flickr Mundo]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Palm]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[wallpaper]]></category>
		<category><![CDATA[WebOS]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=466</guid>
		<description><![CDATA[I am very happy to announce the release of Flickr Mundo, a fully featured Flickr app for Palm webOS devices.  It is packed full of pretty much everything that a Flickr addict could possibly want, including: Photo upload and download, with multiple simultaneous supported for both. Read &#38; add comments to photos and photo sets [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=466&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am very happy to announce the release of <a href="http://developer.palm.com/appredirect/?packageid=com.chofter.flickrmundo" target="_blank">Flickr Mundo</a>, a fully featured Flickr app for Palm webOS devices.  It is packed full of pretty much everything that a Flickr addict could possibly want, including:</p>
<ul>
<li>Photo upload and download, with multiple simultaneous supported for both.</li>
<li>Read &amp; add comments to photos and photo sets</li>
<li>Add/remove favourites</li>
<li>Bulk editing, e.g. choose 6 photos and add tags to them all in one go, add/remove them from a set or group, add/remove person tags&#8230;. and much more.</li>
<li>A great browsing experience, jump from one user to another,  open photo sets, groups and galleries.  Swipe from photo to photo.</li>
<li>Auto rotated wallpapers.   All the functionality from my other app <a href="http://shaneosullivan.wordpress.com/2009/12/22/flickr-addict-gets-a-huge-upgrade/" target="_blank">Flickr Addict</a> is included in Flickr Mundo.  Automatically download images in the background based on many different criteria and change the phone wallpaper on a schedule chosen by you.  No more boring backgrounds!</li>
<li>Context sensitive &#8216;Just Type&#8217; search.  Wherever you are in the app, either hit the search icon or just start typing to search Flickr.  If you&#8217;re looking at a user, you can choose to just search that user. If looking at a photo group, you can search just that group.</li>
<li>Group search, find a photo group.</li>
<li>Location based search.  Find photos near you using GPS, or search for photos close to anywhere else you name.</li>
<li>Fullscreen slideshows with an optional audio playlist for playing music while watching your photos.</li>
</ul>
<p>and much, much more, all wrapped in a highly polished UI that maximises the space of a small screen to the best effect.</p>
<p>A special thank you goes out to Jake and all the guys on the <a href="http://www.flickr.com/groups/palmpre" target="_blank">Palm Pre</a> group on Flickr who did huge amounts of user testing on the beta version of the app. They spotted many obscure bugs, and made many suggestions for features and tweaks, most of which have ended up in the app.  Without them Flickr Mundo wouldn&#8217;t be anywhere near as complete, functional and fun as it is.</p>
<p>Flickr Mundo will be submitted to the Palm App Catalog in the next 24 hours, and should be available to everyone as soon as Palm approves it!</p>
<p><strong>Update: Flickr Mundo has now been submitted to the App Catalog</strong></p>
<span style="text-align:center; display: block;"><a href="http://shaneosullivan.wordpress.com/2010/09/05/flickr-mundo-for-palm-webos/"><img src="http://img.youtube.com/vi/_ZdPB_LbsQY/2.jpg" alt="" /></a></span>
<p><img class="alignnone size-full wp-image-467" title="Main Screen" src="http://shaneosullivan.files.wordpress.com/2010/09/main-screen.png" alt="" width="320" height="480" /> <img class="alignnone size-full wp-image-468" title="Thumbnails Screen" src="http://shaneosullivan.files.wordpress.com/2010/09/thumbnails-screen.png" alt="" width="320" height="480" /><img class="alignnone size-full wp-image-469" title="Search Dialog" src="http://shaneosullivan.files.wordpress.com/2010/09/search-dialog.png" alt="" width="320" height="480" /> <img class="alignnone size-full wp-image-470" title="Comments Screen" src="http://shaneosullivan.files.wordpress.com/2010/09/comments-screen.png" alt="" width="320" height="480" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/466/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/466/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/466/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/466/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/466/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/466/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/466/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=466&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2010/09/05/flickr-mundo-for-palm-webos/feed/</wfw:commentRss>
		<slash:comments>61</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>

		<media:content url="http://shaneosullivan.files.wordpress.com/2010/09/main-screen.png" medium="image">
			<media:title type="html">Main Screen</media:title>
		</media:content>

		<media:content url="http://shaneosullivan.files.wordpress.com/2010/09/thumbnails-screen.png" medium="image">
			<media:title type="html">Thumbnails Screen</media:title>
		</media:content>

		<media:content url="http://shaneosullivan.files.wordpress.com/2010/09/search-dialog.png" medium="image">
			<media:title type="html">Search Dialog</media:title>
		</media:content>

		<media:content url="http://shaneosullivan.files.wordpress.com/2010/09/comments-screen.png" medium="image">
			<media:title type="html">Comments Screen</media:title>
		</media:content>
	</item>
		<item>
		<title>Dojo gets a speed boost on IE6 and IE7</title>
		<link>http://shaneosullivan.wordpress.com/2010/08/28/dojo-gets-a-speed-boost-on-ie6-and-ie7/</link>
		<comments>http://shaneosullivan.wordpress.com/2010/08/28/dojo-gets-a-speed-boost-on-ie6-and-ie7/#comments</comments>
		<pubDate>Sat, 28 Aug 2010 10:32:08 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[dijit]]></category>
		<category><![CDATA[Dojo]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=460</guid>
		<description><![CDATA[My former employer, Cúram Software, was good enough to give me a couple of months to work on the performance issues that Dojo and it&#8217;s widget project Dijit have in horrible legacy browsers IE6 and IE7.  Some of the fruits of that labour have now been checked into the code base and will be included [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=460&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My former employer, Cúram Software, was good enough to give me a couple of months to work on the performance issues that <a href="http://dojotoolkit.org">Dojo</a> and it&#8217;s widget project Dijit have in horrible legacy browsers IE6 and IE7.  Some of the fruits of that labour have now been checked into the code base and will be included in Dojo 1.6, out in Q4 2010.</p>
<p>So what I/we learned from the exercise?</p>
<p><strong>DynaTrace rocks!</strong></p>
<p>To begin with, I can&#8217;t praise <a href="http://ajax.dynatrace.com" target="_blank">DynaTrace</a> enough.  It&#8217;s a fantastic piece of profiling software that delves deep into Internet Explorer&#8217;s innards to find every little horrible Microsoft bug.  It can take a while to get used to, but that is just because it presents you with so much data, all of it useful, and anyone would have trouble finding a way to make it easily consumable.  Long story short, if you&#8217;re having performance issues with your site in IE, download DynaTrace.</p>
<p><strong>Touching className makes IE cry</strong></p>
<p>Pretty much every time you change the <em>className</em> property of a node, IE6 and IE7 reflow the page.  It doesn&#8217;t matter if the new value is the same as the old one, or whether or not the changed CSS class has any visual effect, IE will redraw the page, resulting in a lot of time being lost.</p>
<p>Dojo was changing <em>className</em> too often, for example in <strong>dojo.addClass</strong>, if the class being added was already present, it would still assign the changed value to <em>className</em>.  I put a fix for this into v1.5.  There were also many cases where Dojo would use a combination of <strong>dojo.removeClass </strong>and <strong>dojo.addClass</strong> to replace a class, which changed <em>className</em> twice instead of just once.  To fix this, I&#8217;ve added a new public api <strong>dojo.replaceClass</strong>, which only changes <em>className</em> once.</p>
<p>Dijit widgets often add CSS classes to the DOM nodes which they are creating after the nodes have been inserted into the document.  This is costly, and a large performance improvement can be gained by applying these classes earlier in the lifecycle, before inserting into the document.  Bill Keese (Dijit master) checked in the first of the fixes for this for the BorderContainer recently, and a strategy is being formulated for the many other widgets that can benefit from this.  This work should be completed for v1.6.</p>
<p><strong>Risky but&#8230;.. </strong></p>
<p>A solution that we cannot use for Dojo, but which we found gave huge performance gains for my company&#8217;s application, was to figure out what CSS classes Dojo would apply to a node and write those classes out when generating the HTML.  For example, when creating a <strong>dijit.layout.BorderContainer</strong>, our HTML contains the CSS class <strong>dijitBorderContainer</strong>.  There is an inherent risk with this approach, as Dojo may change the CSS classes in a later release, but if you&#8217;re willing to accept the risk and the upgrade pain, you can get a nice performance boost this way.</p>
<p><strong>Reading offsetLeft and offsetTop is costly</strong></p>
<p>When your code reads the <em>offsetLeft </em>or <em>offsetTop </em>of a node, all pending changes to the DOM have to be performed first.  This can be very expensive &#8211; we saw a number of single operations taking over 500ms each!  Many Dijits were using the <strong>dojo.marginBox</strong> method to get the left, top, width and height properties of a node, when all they needed was the width and height.</p>
<p>To solve this, I introduced a new method, <strong>dojo._getMarginSize</strong>, a private method that just returns the width and height of a node.  This has resulted in huge gains in performance on IE6 &amp; 7, especially when used with layout widgets like the BorderContainer.</p>
<p><strong>Unexplained gaps in DynaTrace profiles</strong></p>
<p>We hit a bit of a wall at one point when analysing the performance profiles, where there was a 1.5 second gap in the profile where it seemed like nothing was happening, but everything was paused with the CPU at 100%.</p>
<p>We eventually discovered that there is a horrible bug in IE7 where if you have a <strong>:hover</strong> style on something that is not an anchor tag, it causes the rendering engine to go crazy, get all confused, and push the CPU up to 100% for no reason at all.</p>
<p>The solution: <strong>don&#8217;t user :hover styles on anything other than &lt;a&gt; tags</strong>.  Ridiculous I know, but so is the IE7 rendering engine.</p>
<p><strong>Give it a go!</strong></p>
<p>So, the long and short of it is that Dojo/Dijit should now be a good bit snappier on IE6 and 7.  With our application we got the load time for a huge application down from 20 seconds to 5 seconds using these techniques, making IE7 far, far more usable.  Of course it just flies on any other browser, even IE8 which, all credit to MS for once, is far less buggy than the earlier incarnations.</p>
<p>So feel free to try out the <a href="http://archive.dojotoolkit.org/nightly/dojotoolkit/dijit/themes/themeTester.html" target="_blank">Dojo nightlies</a>, you should find them to be a good bit more responsive in IE6 and 7 than just a few days ago, and now that we have learned some important lessons, Dojo will be even faster for v1.6.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/460/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=460&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2010/08/28/dojo-gets-a-speed-boost-on-ie6-and-ie7/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Use YQL to cache your queries</title>
		<link>http://shaneosullivan.wordpress.com/2010/08/05/use-yql-to-cache-your-queries/</link>
		<comments>http://shaneosullivan.wordpress.com/2010/08/05/use-yql-to-cache-your-queries/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 11:57:52 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=458</guid>
		<description><![CDATA[Quick tip: For faster access to remote data, you can&#8217;t beat using Yahoo&#8217;s YQL to cache your data.  See HERE to read more on this. When accessing data from remote services, e.g. Flickr, often the data won&#8217;t change too frequently.  Some data can also be very expensive to generate, and services forbid you from polling [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=458&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Quick tip: For faster access to remote data, you can&#8217;t beat using Yahoo&#8217;s <a href="http://developer.yahoo.com/yql/console/" target="_blank">YQL</a> to cache your data.  See <a href="http://www.yqlblog.net/blog/2010/03/12/avoiding-rate-limits-and-getting-banned-in-yql-and-pipes-caching-is-your-friend/" target="_blank">HERE</a> to read more on this.</p>
<p>When accessing data from remote services, e.g. Flickr, often the data won&#8217;t change too frequently.  Some data can also be very expensive to generate, and services forbid you from polling it on a regular basis.  For example, a device is not allowed to retrieve the latest activity on a users Flickr account more than once per hour.</p>
<p>You could roll your own solution to this problem, store the data locally and check its timestamp.  However, this is a lot of work for something that can be <a href="http://www.yqlblog.net/blog/2010/03/12/avoiding-rate-limits-and-getting-banned-in-yql-and-pipes-caching-is-your-friend/" target="_blank">so much simpler</a>.</p>
<p>Simply access the XML or JSON data using the Yahoo Query Language, and set the <strong>_maxage</strong> parameter to the length of time you want to cache the data for.  And you&#8217;re done.  Yahoo will cache the data for you, refresh it when the specified time elapses, and serve it to you faster than the original query since it doesn&#8217;t have to calculate anything.</p>
<p>Also, the service provider will be happier as you&#8217;re not hitting their server so often for duplicate data.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/458/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/458/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/458/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/458/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/458/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/458/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/458/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=458&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2010/08/05/use-yql-to-cache-your-queries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Dojo&#8217;s mobile widgets coming along nicely</title>
		<link>http://shaneosullivan.wordpress.com/2010/06/22/dojos-mobile-widgets-coming-along-nicely/</link>
		<comments>http://shaneosullivan.wordpress.com/2010/06/22/dojos-mobile-widgets-coming-along-nicely/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 14:11:54 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Dojo]]></category>
		<category><![CDATA[dojox]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Palm]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[WebOS]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=453</guid>
		<description><![CDATA[I&#8217;ve been working a lot on Dojo&#8217;s new mobile framework (see HERE for my intro post on dojox.mobile.app) and the Image widgets are coming along very nicely.  I just checked in a new Thumbnail viewer, and enhanced the ImageView widget.  Check them both out at http://bit.ly/cU3akI. Click the &#8220;Browse Flickr&#8221; selection to see both images [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=453&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working a lot on Dojo&#8217;s new mobile framework (see <a href="http://shaneosullivan.wordpress.com/2010/06/13/dojos-new-mobile-app-project/" target="_blank">HERE</a> for my intro post on dojox.mobile.app) and the Image widgets are coming along very nicely.  I just checked in a new Thumbnail viewer, and enhanced the ImageView widget.  Check them both out at <a href="http://bit.ly/cU3akI" target="_blank">http://bit.ly/cU3akI</a>.</p>
<p>Click the &#8220;Browse Flickr&#8221; selection to see both images integrated with Flickr, as well as a dynamic group search view using the TextInput and List widgets.  Given that these widgets use cool fancy HTML5 effects, you&#8217;re best off viewing them in a WebKit browser, so Safari, Chrome, webOS, iPhoneOS (iOS now I guess) will give you the best experience.</p>
<p>The ImageThumbView uses CSS3 transforms to position the thumbnail images, and animates the opacity with CSS3 to fade in/out images.  <a href="http://shaneosullivan.files.wordpress.com/2010/06/thumbnailviewer.jpg"><img class="alignnone size-full wp-image-454" title="ThumbnailViewer" src="http://shaneosullivan.files.wordpress.com/2010/06/thumbnailviewer.jpg" alt="" width="333" height="519" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/453/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/453/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=453&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2010/06/22/dojos-mobile-widgets-coming-along-nicely/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>

		<media:content url="http://shaneosullivan.files.wordpress.com/2010/06/thumbnailviewer.jpg" medium="image">
			<media:title type="html">ThumbnailViewer</media:title>
		</media:content>
	</item>
		<item>
		<title>Dojo&#8217;s new Mobile App Project</title>
		<link>http://shaneosullivan.wordpress.com/2010/06/13/dojos-new-mobile-app-project/</link>
		<comments>http://shaneosullivan.wordpress.com/2010/06/13/dojos-new-mobile-app-project/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 14:06:41 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[dojox]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Image Gallery]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Palm]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[templating]]></category>
		<category><![CDATA[WebOS]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=448</guid>
		<description><![CDATA[Dojo v1.5, which should be released in the coming weeks, will contain an early beta of a new infrastructure for building Mobile Apps.  Currently it is called dojox.mobile.app, but that is expected to change.  Check out the test apps (the bottom section) at http://www.skynet.ie/~sos/misc/dojoxMobile/tests/dojox/mobile/tests , which work best in WebKit, so use Safari or Chrome [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=448&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://dojotoolkit.org" target="_blank">Dojo</a> v1.5, which should be released in the coming weeks, will contain an early beta of a new infrastructure for building Mobile Apps.  Currently it is called dojox.mobile.app, but that is expected to change.  Check out the test apps (the bottom section) at <a href="http://www.skynet.ie/~sos/misc/dojoxMobile/tests/dojox/mobile/tests/" target="_blank">http://www.skynet.ie/~sos/misc/dojoxMobile/tests/dojox/mobile/tests</a> , which work best in WebKit, so use <a href="http://www.apple.com/safari/" target="_blank">Safari</a> or <a href="http://www.google.com/chrome/" target="_blank">Chrome</a> for best results.</p>
<p>Jared Jurkiewicz and Yoshiroh Kamiyama recently added the dojox.mobile project.  It provides some very nice widgets for use on mobile phones, such as views that can transition between each other, rounded lists, tab containers etc.</p>
<p>However, the focus of dojox.mobile is to be very small, so as to suit websites formatted for mobile devices.  When writing cross device apps that are hosted on a phone, the size of the JavaScript is less of a concern, so a much more powerful experience can be created.</p>
<p>Hence, dojox.mobile.app is born.</p>
<p>It is built on top of dojox.mobile, but adds many new features, with more on the way.</p>
<ul>
<li>Templated views that can be pushed and popped off the stack of views, all of which are lazily loaded.</li>
<li>Templated lists</li>
<li>Input widgets</li>
<li>Image Gallery</li>
<li>Dialog Boxes</li>
<li>Popup Menus</li>
</ul>
<p>are all available now.  The structure of a dojox.mobile.app application is modeled very closely to a webOS app.  The templates and code are in a similar folder structure, and the lifecycle for creating and destroying (popping) scenes/views are very similar.</p>
<p>The goal of dojox.mobile.app is NOT to replace or duplicate the functionality in <a href="http://phonegap.com/" target="_blank">PhoneGap</a>.  PhoneGap provides low level access to many phone features. dojox.mobile.app aims to provide an easy to use, flexible application structure, and many widgets that you will find useful, all themed to appear native to each platform.  In a real world app, it would make most sense to use both PhoneGap and dojox.mobile.app.</p>
<p>One of the cooler widgets currently available is the ImageView widget, check it out at <a href="http://www.skynet.ie/~sos/misc/dojoxMobile/tests/dojox/mobile/tests/imageControlsApp/" target="_blank">http://www.skynet.ie/~sos/misc/dojoxMobile/tests/dojox/mobile/tests/imageControlsApp</a> .  Some of its features include</p>
<ul>
<li>Canvas based</li>
<li>Touch capable</li>
<li>Swipe across to change images</li>
<li>Tap to zoom in, and then swipe to move around an image</li>
<li>Progressive loading of images &#8211; first load a small version of an image, and later a larger version</li>
</ul>
<p>dojox.mobile.app is currently tested mostly on the iPhone, but will soon support webOS and Android also.  The mobile world is an exciting place to be right now, and Dojo is jumping in feet first <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/448/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=448&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2010/06/13/dojos-new-mobile-app-project/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
		<item>
		<title>Using Yahoo Query Language (YQL) to count XML elements</title>
		<link>http://shaneosullivan.wordpress.com/2010/04/19/using-yahoo-query-language-yql-to-count-xml-elements/</link>
		<comments>http://shaneosullivan.wordpress.com/2010/04/19/using-yahoo-query-language-yql-to-count-xml-elements/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 11:00:11 +0000</pubDate>
		<dc:creator>Shane O'Sullivan</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[yql]]></category>

		<guid isPermaLink="false">http://shaneosullivan.wordpress.com/?p=443</guid>
		<description><![CDATA[A quick little YQL tip. I recently had the need to count the number of items in an RSS feed, but without downloading the feed itself as the application is bandwidth sensitive.  So I figured I&#8217;d use the Yahoo Query Language, which lets you define SQL queries for accessing all kinds of public data on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=443&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A quick little YQL tip. I recently had the need to count the number of items in an RSS feed, but without downloading the feed itself as the application is bandwidth sensitive.  So I figured I&#8217;d use the <a href="http://developer.yahoo.com/yql/console">Yahoo Query Language</a>, which lets you define SQL queries for accessing all kinds of public data on the web, including of course RSS and Atom feeds.</p>
<p>However it&#8217;s implementation of the SQL count() function seems to be buggy, as you can&#8217;t simply do</p>
<p><strong>select count(*) from xml where url=&#8221;http://path/To/Rss.xml&#8221; and and itemPath=&#8221;/rss/channel/item&#8221;</strong></p>
<p>as it throws and error.  Putting &#8220;item&#8221; in the count() doesn&#8217;t work either.  However, if you try to select the text inside an element, it just returns a single text value, but you still get the count of rows returned, e.g.</p>
<p><strong>select * from xml where url=&#8221;http://path/To/Rss.xml&#8221; and itemPath=&#8221;/rss/channel/item/title/text()&#8221;</strong></p>
<p>returns JSON that looks like</p>
<pre><strong>cbfunc({
 "query": {
  "count": "233",
  "created": "2010-04-19T10:50:42Z",
  "lang": "en-US",
  "results": "5 stars by Anonymous on February 26, 2010"
 }
});</strong></pre>
<p>meaning you save a huge amount of bandwidth but still can get the count of the items in the RSS stream.  Check out an example <a href="http://developer.yahoo.com/yql/console/#h=select%20*%20from%20xml%20where%20url%3D%22http%3A//newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xml%22%20and%20itemPath%3D%22/rss/channel/item/title/text%28%29%22">HERE</a>, just press the <strong>Test</strong> button.  Cool huh?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shaneosullivan.wordpress.com/443/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shaneosullivan.wordpress.com/443/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shaneosullivan.wordpress.com/443/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shaneosullivan.wordpress.com/443/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shaneosullivan.wordpress.com/443/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shaneosullivan.wordpress.com/443/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shaneosullivan.wordpress.com/443/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shaneosullivan.wordpress.com/443/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shaneosullivan.wordpress.com/443/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shaneosullivan.wordpress.com/443/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shaneosullivan.wordpress.com/443/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shaneosullivan.wordpress.com/443/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shaneosullivan.wordpress.com/443/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shaneosullivan.wordpress.com/443/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shaneosullivan.wordpress.com&amp;blog=258432&amp;post=443&amp;subd=shaneosullivan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shaneosullivan.wordpress.com/2010/04/19/using-yahoo-query-language-yql-to-count-xml-elements/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abaeb4f7149a11600f472c23652ae7db?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shaneosullivan</media:title>
		</media:content>
	</item>
	</channel>
</rss>
