<?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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>
<channel>
	<title>Your bones got a little machine &#187; android</title>
	<atom:link href="http://blog.pansapiens.com/category/android/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.pansapiens.com</link>
	<description>Ideas are cheap, implementation is expensive; act accordingly.</description>
	<lastBuildDate>Sat, 28 Jan 2012 03:00:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<creativeCommons:license>http://creativecommons.org/publicdomain/zero/1.0/</creativeCommons:license>
		<item>
		<title>A mobile interface to the Registry of Standard Biological Parts</title>
		<link>http://blog.pansapiens.com/2010/10/24/a-mobile-interface-to-the-registry-of-standard-biological-parts/</link>
		<comments>http://blog.pansapiens.com/2010/10/24/a-mobile-interface-to-the-registry-of-standard-biological-parts/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 08:37:47 +0000</pubDate>
		<dc:creator>Andrew Perry</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[synthetic biology]]></category>
		<category><![CDATA[app engine]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[igem]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[jQTouch]]></category>
		<category><![CDATA[mobile]]></category>
		<guid isPermaLink="false">http://blog.pansapiens.com/?p=241</guid>
		<description><![CDATA[Recently I developed a simple mobile interface to the Registry of Standard Biological Parts &#8211; the database that is currently the focal point for parts-based synthetic biology. I&#8217;ve called this mobile interface mPartsRegistry and I thought it would be worth outlining it&#8217;s features and sharing some notes about the project, in case someone else finds [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I developed a simple mobile interface to the <a href="http://partsregistry.org/">Registry of Standard Biological Parts</a> &#8211; the database that is currently the focal point for parts-based synthetic biology. I&#8217;ve called this mobile interface <a href="http://mpartsregistry.appspot.com/">mPartsRegistry</a> and I thought it would be worth outlining it&#8217;s features and sharing some notes about the project, in case someone else finds it useful.</p>
<p><a href="http://mpartsregistry.appspot.com/">mPartsRegistry</a> is a simple interface to the Registry of Standard Biological Parts aimed at mobile smartphone browsers. It&#8217;s powered by the <a href="http://partsregistry.org/Registry_API">Parts Registry API</a>, which provides a simple RESTful interface to key metadata about parts in the database. It features:</p>
<ul>
<li>. A simple interface tailored for mobile WebKit browsers (Android browser, mobile Safari, probably others). Web-based, zero-installation required.</li>
<li>. Basic search of the Registry by part name.</li>
<li>. &#8220;Favorite parts&#8221; to locally bookmark parts on your device.</li>
<li>. Provides basic metadata associated with parts, including size, description, authors, DNA sequence, categories and availability.</li>
<li>. Freely available and recyclable source code, released under the MIT License (<a href="http://github.com/pansapiens/mPartsRegistry">fork it on GitHub</a>).</li>
</ul>
<p><img class="alignleft" style="border: 2px solid black;" src="http://mpartsregistry.appspot.com/img/screenshot1.png" alt="" width="224" height="336" /></p>
<p>The idea for a mobile interface to the Registry came out of a moment in the wet lab, where I was supervising the Monash iGEM team, and someone asked &#8220;How many basepairs is that part again ?&#8221;. I&#8217;ve found most ideas for smartphone apps in the lab a little contrived; nothing more than an excuse to jump on the Android or iOS app bandwagon, with limited practical utility. This was a situation where I could genuinely see a use for a simple mobile interface to look up some reference information, so I thought I&#8217;d create it.</p>
<p>The goal is not to completely replicate the functionality of the Registry (at this stage the API would not allow that anyhow), but to provide simple mobile-friendly interface to quickly look up important data about a Biobrick(tm) parts in a laboratory setting, where accessing a desktop computer is often less convenient. In this context, you generally know the part name (eg B0034) that is written on a tube, but would like to quickly lookup some details.</p>
<p>The project consists of two main parts: the web frontend, build using <a href="http://jqtouch.com/">jQTouch</a> and Django templates hosted on <a href="http://code.google.com/appengine/">Google App Engine</a>, and the parser backend (<em>partsregistry.py</em>) that deals with directly querying the Registry API.</p>
<p><img class="alignright" style="border: 2px solid black;" src="http://mpartsregistry.appspot.com/img/screenshot2.png" alt="" width="224" height="336" /></p>
<p>The application uses <a href="http://www.crummy.com/software/BeautifulSoup/">BeautifulSoup</a> on the server side to parse the XML served by the Registry&#8217;s API. This parser may be useful as a generic Python interface to the Registry API for other projects, although it is not yet feature complete. Why parse the XML on the server rather than the client ? The Registry API does not offer JSONP callbacks, making direct client-to-API queries by a web app served from another domain tricky (Same Origin Policy, yadda yadda). While this <em>probably</em> could have been done in straight clientside Javascript if I&#8217;d used some type of cross-domain AJAX hack, parsing on the server side also opens the possibility in the future to &#8216;value-add&#8217; to the data in some way, potentially incorporating extra data not served directly by the Registry API, before it&#8217;s sent to the client.</p>
<p>Google App Engine works as a cheap hosting solution for a low traffic app like this, which is likely to stay within the free quotas. Also, GAE supports Python, and I like Python. <a href="http://jqtouch.com/">jQTouch</a> makes for a reasonable cross-platform mobile web interface, since it is optimized for WebKit-based browsers. While officially jQTouch supports iPhone/iPod Touch and doesn&#8217;t have official Android support, in my hands it works well enough on Android (and in fact displayed some minor bugs on Mobile Safari that were not evident on Android). Typically when using jQTouch you are expected to load multiple &#8216;pages&#8217; all into several div-sections, lumped into a single HTML document. jQTouch then does the Javascript+CSS magic to render fast page switching, which actually working within a single HTML document. Since the main action of this app is to &#8216;search&#8217;, we don&#8217;t yet know what the results page will be, so this nice feature of jQTouch is barely used.</p>
<p>Searching for the same part all the time can get annoying, so mPartsRegistry provides a simple &#8216;bookmarking&#8217; feature where a list of favorite parts can be managed and stored on the device. This is implemented via HTML5 localStorage &#8211; if there was demand then this could easily be turned into server side storage, but I doubt it&#8217;s necessary. In the future, it might make sense to pre-cache the metadata for any of these &#8220;favorite parts&#8221; so that the fast page switching features in jQTouch can be used to full advantage.</p>
<p>Currently, the interface does not show information about sequence features, subparts and twins, however I plan to implement these at some point. The Registry API currently does not provide information about samples, literature references or lab groups, but once these are enabled I plan to support this metadata within mPartsRegistry too.</p>
<p>Okay, that&#8217;s all kids .. and remember .. take off your gloves before using your smartphone in the lab !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pansapiens.com/2010/10/24/a-mobile-interface-to-the-registry-of-standard-biological-parts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/publicdomain/zero/1.0/</creativeCommons:license>
	</item>
		<item>
		<title>Occyd : tagging for locations</title>
		<link>http://blog.pansapiens.com/2009/02/14/occyd-tagging-for-locations/</link>
		<comments>http://blog.pansapiens.com/2009/02/14/occyd-tagging-for-locations/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 02:08:16 +0000</pubDate>
		<dc:creator>Andrew Perry</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[occyd]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[geotagging]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<guid isPermaLink="false">http://blog.pansapiens.com/?p=109</guid>
		<description><![CDATA[Those who have been watching may have noticed I quietly started developing an Android application in the last month or so. It&#8217;s still super-buggy and far from feature complete, but I thought it was time to announce it here (&#8220;release early, release often&#8221;). It&#8217;s not ready for real users yet, but developers may like to [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-113" title="Occyd Map View (search results)" src="http://blog.pansapiens.com/wp-content/uploads/2009/02/occyd_mapview.png" alt="Occyd Map View (search results)" width="320" height="480" /></p>
<p>Those who have been watching may have noticed I quietly started developing an Android application in the last month or so. <strong>It&#8217;s still super-buggy and far from feature complete</strong>, but I thought it was time to announce it here (&#8220;release early, release often&#8221;). It&#8217;s not ready for real users yet, but developers may like to take a little look.</p>
<p><span id="more-109"></span></p>
<p>Occyd (<a href="http://www.bartleby.com/61/12.html"><img src="http://www.bartleby.com/images/pronunciation/obreve.gif" alt="" align="absbottom" />-k <img src="http://www.bartleby.com/images/pronunciation/emacr.gif" alt="" align="absbottom" />d</a> <em>.. sounds like rockied or oggied</em>) is an application for tagging geolocations, aimed at GPS-enabled network-connected devices. It currently consists of an Android client, and a server backend running on Google App Engine. The (evolving) API is simple enough that it should be easy to write clients (or servers) for various platforms. The idea is to enable people to tag locations on the surface of the planet with a list of keywords, just like they can tag web pages with <a href="http://delicious.com/">delicious</a>. They should also be able to search for tagged locations, based on tag(s), on distance from their current location and recency of the post.</p>
<p><img class="alignright size-full wp-image-111" title="Occyd posting screen" src="http://blog.pansapiens.com/wp-content/uploads/2009/02/occyd_post.png" alt="Occyd posting screen" width="320" height="480" /></p>
<p>Here&#8217;s one possible elevator pitch (for a very long, slow elevator ride):</p>
<blockquote><p>&#8220;You are a member of a large bird watching club. Your members like to record where they have spotted various species, and use Occyd to share the locations at which they have sighted various birds. You are out in the park, when you spot the rare Orange Bellied Parrot. You pull out your Android phone, fire up the Occyd client which automatically knows your location via GPS, and tag that current location &#8216;orangebelliedparrot parrot birds&#8217;. You then decide to see if others have spotted parrots in the area. You search for &#8216;parrot&#8217; in the Occyd client; a map appears showing the locations of all the other sightings tagged &#8216;parrot&#8217; in your vacinity. You tweak the search settings to show only &#8216;parrot&#8217; sightings within 100 metres and 14 days &#8230; on the map you see that your friend <em>RobHill</em> spotted an Orange Bellied Parrot here last week &#8211; looks like the numbers of this population are recovering !&#8221;</p>
<p><img class="alignright size-full wp-image-112" title="Occyd searching screen" src="http://blog.pansapiens.com/wp-content/uploads/2009/02/occyd_search.png" alt="Occyd searching screen" width="320" height="480" /></p></blockquote>
<p>Ponder for a bit, and I&#8217;m sure you can think up at least a handful of other great uses (tagging good fishing spots, favorite cafes, or maybe even sightings of parking inspectors <img src='http://blog.pansapiens.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</p>
<p>As with any new project, there are lots more ideas than time to implement them (and I have a day job that doesn&#8217;t involve Occyd &#8230;). The <a href="http://github.com/pansapiens/occyd-android/tree/master">Occyd Android client</a> and <a href="http://github.com/pansapiens/occyd-gae-server/tree/master">Occyd GAE server</a> source is currently available under the GPL v3 on GitHub, and I&#8217;m keeping all my documentation and notes on the <a href="http://wiki.github.com/pansapiens/occyd-android">Occyd Android client wiki</a> provided at GitHub. Watch this space &#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pansapiens.com/2009/02/14/occyd-tagging-for-locations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/publicdomain/zero/1.0/</creativeCommons:license>
	</item>
	</channel>
</rss>

