<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5275779272560545370</id><updated>2012-02-15T23:19:23.580-08:00</updated><category term='eventz'/><category term='appz'/><category term='codez'/><category term='phonez'/><category term='prez'/><category term='silent_timer'/><category term='mypod'/><category term='newz'/><category term='funz'/><category term='biz'/><title type='text'>Sentinel Mobile blog</title><subtitle type='html'>A blog on the Android news, development and product universe ...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-4072293962084773258</id><published>2012-02-04T03:50:00.000-08:00</published><updated>2012-02-04T03:51:05.169-08:00</updated><title type='text'>Would you car-pool or hitch-hike?</title><content type='html'>&lt;span class="Apple-style-span" style="font-family:&amp;#39;lucida grande&amp;#39;,tahoma,verdana,arial,sans-serif;font-size:11px;line-height:14px;background-color:rgb(255,255,255)"&gt;I am doing a workshop on validating ideas, and am trying to get feedback on peoples opinions of car-pooling/hitchhiking. Maybe you can take a look? Will take less than 1 min.&lt;/span&gt;&lt;br style="font-family:&amp;#39;lucida grande&amp;#39;,tahoma,verdana,arial,sans-serif;font-size:11px;line-height:14px;text-align:left;background-color:rgb(255,255,255)"&gt; &lt;br style="font-family:&amp;#39;lucida grande&amp;#39;,tahoma,verdana,arial,sans-serif;font-size:11px;line-height:14px;text-align:left;background-color:rgb(255,255,255)"&gt;&lt;a href="https://www.facebook.com/pages/IThumb/185431371557994?sk=wall" target="_blank" rel="nofollow" style="color:rgb(59,89,152);text-decoration:none;font-family:&amp;#39;lucida grande&amp;#39;,tahoma,verdana,arial,sans-serif;font-size:11px;line-height:14px;text-align:left;background-color:rgb(255,255,255)"&gt;https://www.facebook.com/&lt;span class="word_break" style="display:inline-block"&gt;&lt;/span&gt;pages/IThumb/&lt;span class="word_break" style="display:inline-block"&gt;&lt;/span&gt;185431371557994?sk=wall&lt;/a&gt;&lt;br clear="all"&gt; &lt;div&gt;&lt;br&gt;&lt;/div&gt;-- &lt;br&gt;&lt;div&gt;best&lt;/div&gt;Rob&lt;div&gt;&lt;br&gt;&lt;b&gt;Web&lt;/b&gt;: &lt;a href="http://www.my-pod.org/" target="_blank"&gt;http://www.my-pod.org&lt;/a&gt;     &lt;a href="http://sentinelweb.co.uk/" target="_blank"&gt;http://sentinelweb.co.uk&lt;/a&gt;  &lt;a href="http://www.suprcards.com" target="_blank"&gt;http://www.suprcards.com&lt;/a&gt;&lt;b&gt;&lt;br&gt; &lt;/b&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;Apps&lt;/b&gt;: &lt;a href="https://market.android.com/details?id=org.my_pod.mypod" target="_blank"&gt;MyPOD&lt;/a&gt; &lt;a href="https://market.android.com/details?id=co.uk.sentinelweb.cards" target="_blank"&gt;SuperCards&lt;/a&gt; &lt;a href="https://market.android.com/details?id=co.uk.sentinelweb.silenttimer" target="_blank"&gt;SilentTimer&lt;/a&gt;&lt;/div&gt; &lt;/div&gt;&lt;div&gt;&lt;b&gt;Social&lt;/b&gt; : &lt;a href="http://www.twitter.com/sentinelwebtech" target="_blank"&gt;twitter&lt;/a&gt; (@sentinelwebtech) | &lt;a href="http://www.facebook.com/pages/MyPOD-Podcast-Manger/106662062754113" target="_blank"&gt;FaceBook&lt;/a&gt;&lt;/div&gt; &lt;/div&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-4072293962084773258?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/4072293962084773258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2012/02/would-you-car-pool-or-hitch-hike.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/4072293962084773258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/4072293962084773258'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2012/02/would-you-car-pool-or-hitch-hike.html' title='Would you car-pool or hitch-hike?'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-7143426454734435491</id><published>2012-01-24T07:43:00.000-08:00</published><updated>2012-01-24T10:17:05.502-08:00</updated><title type='text'>Blog moved : http://sentinelweb.co.uk/blog</title><content type='html'>This blog has moved to &lt;a href="http://sentinelweb.co.uk/blog"&gt;sentinelweb.co.uk&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Hope you can join us there ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-7143426454734435491?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/7143426454734435491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2012/01/blog-moved-httpsentinelwebcoukblog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/7143426454734435491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/7143426454734435491'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2012/01/blog-moved-httpsentinelwebcoukblog.html' title='Blog moved : http://sentinelweb.co.uk/blog'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-195617680981333689</id><published>2011-12-06T19:40:00.001-08:00</published><updated>2011-12-06T19:40:55.875-08:00</updated><title type='text'></title><content type='html'>&lt;p&gt;Not really Android related, but I just upgraded to ubuntu 11.10 and had the re-install gnome (I hate Unity). All was pretty good but I just couldn't figure out how to get gnome-panel settings to show. Every report I found on the web says it was &amp;lt;alt&amp;gt;+&amp;lt;right click&amp;gt; but for me it is &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;lt;winkey&amp;gt;+&amp;lt;alt&amp;gt;+&amp;lt;right click&amp;gt;&lt;/strong&gt;.&lt;br /&gt;&lt;p&gt;&lt;p&gt;Anyways, just though I'd add that, as I said, everywhere else says its &amp;lt;alt&amp;gt;+&amp;lt;right click&amp;gt;. Possibly the key binding was in use and it selected another.&lt;p&gt;&lt;br /&gt;&lt;p&gt;On an Android note, if you are on Ubuntu 11.04  and having issues with eclipse (mouse not working!!) then do an upgrade to 11.10. All is good here.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-195617680981333689?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/195617680981333689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2011/12/not-really-android-related-but-i-just.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/195617680981333689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/195617680981333689'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2011/12/not-really-android-related-but-i-just.html' title=''/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-1304223515874668466</id><published>2011-10-09T13:06:00.000-07:00</published><updated>2011-10-09T13:27:32.119-07:00</updated><title type='text'>Notes from planet of the apps ...</title><content type='html'>The planet of the apps conference was a nice event, quite small but a good line-up of speaker (including yours truly). Though the speakers were a bit iPhone centric mostly, most of them seem to worried about 'fragmentation'. I still think there is a lot of misunderstanding about Android out there ...&lt;br/&gt;&lt;br/&gt;Some highlights for me were:&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Mobile apps dragons den&lt;/b&gt; (day1): Nerad Marovac (DN Capital) and Frederic Court Advent Ventures) represent angel investors and helped explain their investment strategies. It was interesting to see their perspective. Some like to go for early stage startups ( when they have have input on the product) and others go for growth stage (where the product is proven and the company needs to expand)&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Magic solver&lt;/b&gt;: is a market platform that has had quite a lot of experience in building app downloads. The model involves giving free apps out and up selling. People sure do love free ...&lt;br/&gt;&lt;br/&gt;&lt;b&gt;App longevity&lt;/b&gt;: This was a panel discussion on factors surrounding an apps lifetime. There was a lot of concensus that utility apps would be longer lived, but probably wont attract the sales levels in a short that games do. As well as strategies for keeping people interested (e.g. regular updates, the need for UX).&lt;br/&gt;&lt;br/&gt;And of course: &lt;b&gt;Re-enabling  the cloud&lt;/b&gt;: My Presentation about considerations when choosing a cloud provider. Mainly:&lt;ul&gt;&lt;li&gt; Make a decision early on the data you want to keep as storing it forever just leads to increasing costs.&lt;li&gt; Be careful of lockin to a cloud API. Platform as a service (PAAS) providers (e.g. Azure, App-engine) generally have customised APIs, that will likely require significant recoding of you want to move. Though this is likely a function of their limited age and more are building support for standard APIs&lt;li&gt; Here are the slides &lt;a href="http://www.robmunro.net/misc/presentations/cloud_final.ppt" target="_blank"&gt;PPT&lt;/a&gt;, &lt;a href="http://www.robmunro.net/misc/presentations/cloud_final.odp" target="_blank"&gt;ODP&lt;/a&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br/&gt;Here are some notes I made in Vectoroid for anyone interested (they are a bit unstructured):&lt;a href="http://www.robmunro.net/misc/notes/planet_of_the_apps_d1_041011e.svg" target="_blank"&gt;Day 1&lt;/a&gt;&lt;br/&gt;&lt;a href="http://www.robmunro.net/misc/notes/poa_d2_3_051011e.svg" target="_blank"&gt;Day 2&amp;3&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-1304223515874668466?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/1304223515874668466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2011/10/notes-from-planet-of-apps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/1304223515874668466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/1304223515874668466'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2011/10/notes-from-planet-of-apps.html' title='Notes from planet of the apps ...'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-3120113519111849655</id><published>2011-10-02T06:10:00.000-07:00</published><updated>2011-10-02T06:33:18.834-07:00</updated><title type='text'>Planet Of the Apps Presentation. R-enabling the cloud ...</title><content type='html'>I will be presenting at the "Planet of the Apps" Confrence (&lt;a href="http://www.terrapinn.com/2011/planet-of-the-apps/index.stm"&gt;website&lt;/a&gt;) on 6th October. The topic is "R-enabling the cloud, continuing the natural migration from PC application to mobile app" (&lt;a href="http://www.terrapinn.com/2011/planet-of-the-apps/Programme_6661.stm"&gt;programme&lt;/a&gt;).&lt;br/&gt;&lt;br/&gt;The conference has a great line-up speakers, and no doubt will be very informative. Hope to see you there. Bit of a shame about the overlap with &lt;a href="http://uk.droidcon.com"&gt;DroidCon&lt;/a&gt;, but hey its mobile week (&lt;a href="http://londonmobileweek.com/"&gt;http://londonmobileweek.com/&lt;/a&gt;), so there bound to be some crossover with other events. Perhaps it should have been "mobile month".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-3120113519111849655?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/3120113519111849655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2011/10/planet-of-apps-presentaion-r-enabling.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/3120113519111849655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/3120113519111849655'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2011/10/planet-of-apps-presentaion-r-enabling.html' title='Planet Of the Apps Presentation. R-enabling the cloud ...'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-2345532393730621489</id><published>2011-10-02T06:02:00.000-07:00</published><updated>2011-10-02T06:03:42.303-07:00</updated><title type='text'>DroidCon UK, 6-7 October 2011</title><content type='html'>Looking forward to the upcoming DroidCon UK (6-7 October 2011) (&lt;a href="http://uk.droidcon.com"&gt;http://uk.droidcon.com&lt;/a&gt;). It promises to be a must see for Android developers with loads of presentations from Google, HTC, SONY Erricson, and loads of community members. Hope to see you there:&lt;br/&gt;&lt;br/&gt;&lt;a href="http://uk.droidcon.com"&gt; &lt;img border="0" alt="Droidcon London Oct 6-7" src="http://uk.droidcon.com/images/common/125_125_banner_light.png " /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-2345532393730621489?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/2345532393730621489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2011/10/droidcon-uk-6-7-october-2011.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/2345532393730621489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/2345532393730621489'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2011/10/droidcon-uk-6-7-october-2011.html' title='DroidCon UK, 6-7 October 2011'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-6847627614961368718</id><published>2011-07-28T23:21:00.000-07:00</published><updated>2011-07-28T23:21:22.813-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='appz'/><title type='text'>MyPOD reviews</title><content type='html'>There have been a couple of fair reviews of MyPOD recently and I just wanted to send a shout out to the authors, Thanks guys.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.androidauthority.com/podcatcher-roundup-top-9-best-android-apps-for-playing-podcasts-16817/"&gt;http://www.androidauthority.com/podcatcher-roundup-top-9-best-android-apps-for-playing-podcasts-16817/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://rascallings.blogspot.com/2011/07/android-app-review-mypod.html"&gt;http://rascallings.blogspot.com/2011/07/android-app-review-mypod.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;We all know that while being highly functional - there are some edges to smooth out in the MyPOD UI. Credit goes to these bloggers for taking the time to look at the functionality and give it a fair review.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-6847627614961368718?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/6847627614961368718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2011/07/mypod-reviews.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/6847627614961368718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/6847627614961368718'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2011/07/mypod-reviews.html' title='MyPOD reviews'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-8841281994812635543</id><published>2011-06-28T22:23:00.000-07:00</published><updated>2011-06-28T22:24:01.569-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='funz'/><title type='text'>Using VectorPaint For VJing</title><content type='html'>While re-writing the VectorPaint library I have also been experimenting with using the library in a VJing application. The save drawings are sent via OSC to a processing sketch and render on the screen. This is a snapshot at MixedMedia - a monthly event in Sydney for VJing.&lt;br/&gt;&lt;br/&gt; &lt;iframe width="425" height="349" src="http://www.youtube.com/embed/Glkg_u3I-z8" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-8841281994812635543?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/8841281994812635543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2011/06/using-vectorpaint-for-vjing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/8841281994812635543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/8841281994812635543'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2011/06/using-vectorpaint-for-vjing.html' title='Using VectorPaint For VJing'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/Glkg_u3I-z8/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-7891810152416838881</id><published>2011-05-27T18:59:00.000-07:00</published><updated>2011-05-27T19:09:26.109-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='codez'/><title type='text'>shortcuts script for common debug tasks</title><content type='html'>I have been using this script for a while, it allows me to make shortcuts for common android debug tasks (e.g. logcat, shell, installing/overwriting/removing apks). There are probably better ways of doing it for the shell script experts out there, but it suits my purposes... and it's pretty streamlined.&lt;br/&gt;&lt;br/&gt;There are aliases for common devices and common apps so i can start stuff with a few characters&lt;br/&gt;&lt;br/&gt;So the first parameter denotes the function.&lt;br/&gt;&lt;b&gt;&lt;pre class="codeBox" style="height:170px"&gt;&lt;br /&gt;l = logcat&lt;br /&gt;r = replace app (keeping data)&lt;br /&gt;s = shell&lt;br /&gt;i = install&lt;br /&gt;u = uninstall&lt;br /&gt;o = overwrite (uninstall then install)&lt;br /&gt;ks = kill-server&lt;br /&gt;ss = start-server&lt;/pre&gt;&lt;/b&gt;&lt;br/&gt;The second parameter denots the device (which are configured in the first if statement):&lt;br/&gt;&lt;b&gt;&lt;pre class="codeBox" style="height:90px"&gt;a = all connected devices (from 'adb devices')&lt;br /&gt;f = first device (in 'adb devices' list)&lt;br /&gt;e1 = emulator-5554&lt;br /&gt;(the others are my hardware devices)&lt;/pre&gt;&lt;/b&gt;&lt;br/&gt;Then there are app package name shortcuts ... (the 3rd if statement)&lt;br/&gt;&lt;br/&gt;To start logcat on ny nexus 1, I type:&lt;br/&gt;&lt;pre class="codeBox" style="height:40px"&gt;ad l n1&lt;/pre&gt;And to overwrite an apk on all connected usb devices - it type (the 2nd 'a' param stands for 'all connected devices'), really useful when testing before a release ...&lt;pre class="codeBox" style="height:40px"&gt;ad r a /path/to/apkfile.apk&lt;/pre&gt;Basically it's nothing too high tech, it just makes things much quicker and easier when i am debugging. If you have any suggestions then i am keen to hear them...&lt;br/&gt;&lt;br/&gt;So without further ado, here is the script:&lt;br/&gt;&lt;pre class="codeBox" style="height:300px"&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;# toggle this to test command output without execution 0=no exec&lt;br /&gt;EXEC=1;&lt;br /&gt;&lt;br /&gt;DEVICES='f'&lt;br /&gt;&lt;br /&gt;if [ $2 ] &amp;&amp; [ $2 = 'g1' ] ; then&lt;br /&gt; DEVICES=("HT848KV04600")&lt;br /&gt;elif [ $2 ] &amp;&amp; [ $2 = 'hero' ] ; then&lt;br /&gt; DEVICES=("HT9BSL901147")&lt;br /&gt;elif [ $2 ] &amp;&amp; [ $2 = 'arch' ]  ; then&lt;br /&gt; DEVICES=("A10-4BE40002-9FF80000-015F2F44-0D01601E")&lt;br /&gt;elif [ $2 ]  &amp;&amp; [ $2 = 'n1' ]  ; then&lt;br /&gt; DEVICES=("HT018P805702")&lt;br /&gt;elif [ $2 ] &amp;&amp; [ $2 = 'e1' ]  ; then&lt;br /&gt; DEVICES=("emulator-5554")&lt;br /&gt;elif [ $2 ] &amp;&amp; [ $2 = 's' ]  ; then&lt;br /&gt; DEVICES=("I5500b2e40b3c")&lt;br /&gt;elif  [ ! $2 ] || [ $2 = 'a' ] ; then&lt;br /&gt; DEVLIST=`adb devices`&lt;br /&gt; DEVICES=()&lt;br /&gt; for D in $DEVLIST; do &lt;br /&gt;  if  [ $D = "device" ] ; then &lt;br /&gt;   DEVICES=(${DEVICES[@]} $PREV)&lt;br /&gt;  fi&lt;br /&gt;  PREV=$D&lt;br /&gt; done&lt;br /&gt;# take the first device if not specified otherwise take all&lt;br /&gt; if [ ! $2 ] ; then&lt;br /&gt;  DEVICES=${DEVICES[0]} &lt;br /&gt; else &lt;br /&gt;  DEVICES=${DEVICES[@]}&lt;br /&gt; fi&lt;br /&gt;fi&lt;br /&gt;echo "using devices:" $DEVICES&lt;br /&gt;&lt;br /&gt;OP=''&lt;br /&gt;if [ $1 ] ; then&lt;br /&gt; if [ $1 = 'u' ] ; then&lt;br /&gt;  OP="uninstall"&lt;br /&gt; elif [ $1 = 'i' ] ; then&lt;br /&gt;  OP="install"&lt;br /&gt; elif [ $1 = 'r' ] ; then&lt;br /&gt;  OP="install -r"&lt;br /&gt; elif [ $1 = 'l' ] ; then&lt;br /&gt;  OP="logcat"&lt;br /&gt; elif [ $1 = 's' ] ; then&lt;br /&gt;  OP="shell"&lt;br /&gt; elif [ $1 = 'ks' ] ; then&lt;br /&gt;  OP="kill-server"&lt;br /&gt; elif [ $1 = 'ss' ] ; then&lt;br /&gt;  OP="start-server"&lt;br /&gt; elif [ $1 = 'z' ] ; then&lt;br /&gt;  OP=""&lt;br /&gt; elif [ $1 = 'o' ] ; then&lt;br /&gt;  OP=""&lt;br /&gt; fi&lt;br /&gt;fi&lt;br /&gt;PRG=$3;&lt;br /&gt;if [ $3 ] ; then&lt;br /&gt; if [ $3 = 'mpp' ] ; then&lt;br /&gt;  PRG="package.name.1"&lt;br /&gt; elif [ $3 = 'st' ] ; then&lt;br /&gt;  PRG="package.name.2"&lt;br /&gt; elif [ $3 = 'stp' ] ; then&lt;br /&gt;  PRG="package.name.3"&lt;br /&gt; elif [ $3 = 'mp' ] ; then&lt;br /&gt;  PRG="package.name.4"&lt;br /&gt; fi&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ ! $1 ] ; then&lt;br /&gt; echo "ad &lt;CMD&gt; &lt;DEV&gt; &lt;PRG&gt; extra"&lt;br /&gt; echo "CMD = o (overwrite)  extra=apk | l (logcat) | r (reinstall) extra=apk | i (install) extra=apk | s (shell) | u (uninstall) |  ks (kill-server) | ss (start-server)"&lt;br /&gt; echo "CMD = z (zipalign &lt;DEV&gt;)"&lt;br /&gt; echo "DEV = g1 hero arch n1 s a(all)"&lt;br /&gt; echo "PRG = mp mpp st stp"&lt;br /&gt; echo "------devices---------"&lt;br /&gt; CMD="adb devices"&lt;br /&gt; echo $CMD&lt;br /&gt; if [ $EXEC = 1 ] ; then &lt;br /&gt;  $CMD&lt;br /&gt; fi &lt;br /&gt;else &lt;br /&gt; if [ $1 = 'z' ] ; then&lt;br /&gt;  NEWFILE=`echo $2 | sed "s/.apk/_z.apk/"`&lt;br /&gt;  rm -fr $NEWFILE&lt;br /&gt;  CMD="zipalign -v 4 $2 $NEWFILE"&lt;br /&gt;  echo $CMD&lt;br /&gt;  if [ $EXEC = 1 ] ; then &lt;br /&gt;   $CMD&lt;br /&gt;  fi&lt;br /&gt; else &lt;br /&gt;  for DEV in $DEVICES ; do&lt;br /&gt;   echo $DEV&lt;br /&gt;   if [ $1 = 'o' ] ; then&lt;br /&gt;    CMD="adb -s $DEV uninstall $PRG"&lt;br /&gt;    echo $CMD&lt;br /&gt;    if [ $EXEC = 1 ] ; then &lt;br /&gt;     $CMD&lt;br /&gt;    fi&lt;br /&gt;    CMD="adb -s $DEV install $4"&lt;br /&gt;    echo $CMD&lt;br /&gt;    if [ $EXEC = 1 ] ; then &lt;br /&gt;     $CMD&lt;br /&gt;    fi&lt;br /&gt;   else &lt;br /&gt;       CMD="adb -s $DEV $OP $PRG $4"&lt;br /&gt;    echo $CMD&lt;br /&gt;    if [ $EXEC = 1 ] ; then &lt;br /&gt;     $CMD&lt;br /&gt;    fi&lt;br /&gt;   fi&lt;br /&gt;  done;&lt;br /&gt; fi&lt;br /&gt;fi&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-7891810152416838881?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/7891810152416838881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2011/05/shortcuts-script-for-common-debug-tasks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/7891810152416838881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/7891810152416838881'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2011/05/shortcuts-script-for-common-debug-tasks.html' title='shortcuts script for common debug tasks'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-2177949782910883282</id><published>2011-03-07T05:58:00.000-08:00</published><updated>2011-03-08T20:06:35.602-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silent_timer'/><category scheme='http://www.blogger.com/atom/ns#' term='appz'/><title type='text'>Silent mode timer UI changes - review &amp; lessons learnt</title><content type='html'>I have posted about the silent mode timer before - it's a small app to disable silent mode using a timer. It's useful for situations like meetings and going to the cinema when you just want to have silent mode on for a short period of time and not mess around with schedules or flipping upside down, etc.&lt;br/&gt;&lt;br/&gt;After releasing a UI update recently I discovered how difficult it can be to convince users of the benefits of a new (better) UI. When your users know your product there is generally going to be some resistance when it gets changed. Eventually I have realised that if there is going to be change, then you have to make sure that all the features  your existing users like should be the highest priority. &lt;br/&gt;&lt;br/&gt;The goals of the UI re-write were to reduce the amount of buttons on screen while still enabling the fastest way to set a timer and just get out (that's all the app should do).&lt;br/&gt;&lt;br/&gt;The features that were lost in this case were:&lt;br/&gt;1. Some convenience buttons on the side of the time setting widget to increment/decrement the time by 15min. In the first version &lt;br/&gt;2. 12 hour time.&lt;br/&gt;&lt;br/&gt;These features have now been restored by popular demand ...&lt;br/&gt;&lt;br/&gt;There were many features people had requested to be added in the first version (automatic prompting, calendar integration, set a timer by end time). Some of these were easy to integrate in the new interface (all except the calendar integration).&lt;br/&gt;&lt;br/&gt;But with all the (new and old) features, does it still live up to the basic goal of simplicity? Well the users will be the judge. Some have left but more new ones have also come. &lt;br/&gt;&lt;br/&gt;The moral of the story? Well i guess it's that no matter how well you try to make things better, the main thing you need to create is a sense of attachment to an application, and familiarity is key. Changes probably need to be made in transitional style, or if there is a complete overhaul, the option to revert to the old style while people get comfortable is highly important.&lt;br/&gt;&lt;br/&gt;The new app can be found on the market here:&lt;br/&gt;Free: &lt;a href="https://market.android.com/details?id=co.uk.sentinelweb.silenttimer" target="_blank"&gt;https://market.android.com/details?id=co.uk.sentinelweb.silenttimer&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Paid: &lt;a href="https://market.android.com/details?id=co.uk.sentinelweb.silenttimerpaid" target="_blank"&gt;https://market.android.com/details?id=co.uk.sentinelweb.silenttimerpaid&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;It would be great to know what YOU think too ;)&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-2177949782910883282?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/2177949782910883282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2011/03/silenty-mode-timer-ui-changes-review.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/2177949782910883282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/2177949782910883282'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2011/03/silenty-mode-timer-ui-changes-review.html' title='Silent mode timer UI changes - review &amp; lessons learnt'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-8556819995573594219</id><published>2011-03-04T16:26:00.000-08:00</published><updated>2011-03-04T16:55:09.244-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='phonez'/><title type='text'>ADB with Acrhos 10i internet tablet on Ubuntu</title><content type='html'>I recently bought Archos 10i Internet tablet for testing the upcoming drawing software release (more soon on that) and there is an extra trick to getting it working with ADB:&lt;br/&gt;&lt;br/&gt;1. Get the Vendor id by typing:&lt;br/&gt;&lt;pre class="codeBox" style="height:40px"&gt;lsusb &lt;/pre&gt;The line we are looking for is:&lt;br/&gt;&lt;i&gt;Bus 002 Device 007: ID 0e79:1411 Archos, Inc. &lt;/i&gt;&lt;br/&gt;&lt;br/&gt;2. Add the vendor id (0e79) to &lt;i&gt;/etc/udev/rules.d/51-android.rules&lt;/i&gt; as per normal&lt;pre class="codeBox" style="height:40px"&gt;&lt;br /&gt;SUBSYSTEM=="usb", SYSFS{idVendor}=="0e79", MODE="0666"&lt;br /&gt;&lt;/pre&gt;&lt;br/&gt;3. And the extra trick is as per this link: &lt;a href="http://androidtobe.blogspot.com/2009/12/archoss-solution-to-adb-connection-bug.html" target="_blank"&gt;archoss-solution-to-adb-connection-bug.html&lt;/a&gt;&lt;br/&gt;You also need to add the vendor id to &lt;i&gt;~/.android/adb_usb.ini&lt;/i&gt; (you need to check the file doesn't exist first).&lt;br/&gt;&lt;pre class="codeBox" style="height:40px"&gt;&lt;br /&gt;echo "0x0e79" &gt;&gt;~/.android/adb_usb.ini&lt;br /&gt;&lt;/pre&gt;&lt;br/&gt;4. Then we restart the ADB server and the device should be shown:&lt;pre class="codeBox" style="height:80px"&gt;&lt;br /&gt;adb kill-server&lt;br /&gt;adb start-server&lt;br /&gt;adb devices&lt;br /&gt;&lt;/pre&gt;The last line shows:&lt;br/&gt;&lt;i&gt;List of devices attached &lt;br/&gt;A10-4BE4XXXX-9FF8XXXX-015FXXXX-0D01XXXX device&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-8556819995573594219?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/8556819995573594219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2011/03/adb-with-acrhos-10i-internet-tablet-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/8556819995573594219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/8556819995573594219'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2011/03/adb-with-acrhos-10i-internet-tablet-on.html' title='ADB with Acrhos 10i internet tablet on Ubuntu'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-8038975341410946963</id><published>2010-11-27T06:53:00.000-08:00</published><updated>2011-03-08T20:07:00.338-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='funz'/><category scheme='http://www.blogger.com/atom/ns#' term='appz'/><category scheme='http://www.blogger.com/atom/ns#' term='mypod'/><title type='text'>Top 20 nice market comments about MyPOD Podcast manager/player</title><content type='html'>It's always nice when people like your work, nice comments go a long way when you are trying to make something that is different, so I though I'd post the Top 20 nice comments about &lt;a href="http://www.my-pod.org"&gt;MyPOD&lt;/a&gt;, so here goes, thanks to everyone:-&lt;ol&gt;&lt;li&gt;After long research, I eventually found a podcast client which can do everything what I wanted (and more). Awesome app, keep going!&lt;li&gt;This app requires an IQ of at least 85 to use. If you like to smash big buttons like a monkey do not install it. Your fault if you can't use.&lt;li&gt;I've tried a few podcast players, and this is by far my favourite. It is worth buying the full version for more than 6 feeds. Good job.&lt;li&gt;Fantastic app. Evolving quickly and getting better every time. Most used app on my phone.&lt;li&gt;Best most robust podcast app by far.&lt;li&gt;The best thing is the independant volume controls. You can make it quieter than the phone would normally let you. Handy listening to podcasts at night&lt;li&gt;Tried all podcats and this is by far the best. A lil confusing at first, but get used to it and youll see its AWESOME!&lt;li&gt;Far and away the best android podplayer i'v ever used. Simple to use but extremely configurable. Unlocked, on samsung captivate.&lt;li&gt;Best app I have bought! Easy to set up and no sync/account issues like listen. Could do with option to save favourite pods to media player&lt;li&gt;Best podcatcher. It takes alittle to get used to the UI but once you do, it blows all others out of the water!!!!&lt;li&gt;Easily the most used app on my phone. Avaulable features and responsive developer make MyPod the best podcast manager available. Well worth unlocking.&lt;li&gt;Truly wonderful app. Great interface, easy to use, minimal learning curve and its very powerful. Well worth the price (I bought it twice)&lt;li&gt;This is by far the best podcast app on the market.it takes about ten minutes to get the hang of how it works.&lt;li&gt;An excellent podcast app. The first to make me begin shifting subscriptions from my ipod to my EVO. First app I excitedly bought an unlock key for.&lt;li&gt;This app does it all! Huge thanks to the dev.&lt;li&gt;Fantastic app. Manages all my podcasts perfectly in one place. Who needs an iPhone whilst this exists? ;-)&lt;li&gt;The UI is intimidating the first time you use it, but it's easy to learn and the app is feature packed...worth taking a few minutes to get familiar w/&lt;li&gt;One of the best podcast apps around. You can't do better for free. So good I wanted to pay for it.&lt;li&gt;I've tried them all and was very frustrated with the confusing and shamefully poor podcast support till I found this gem!&lt;li&gt;If you love to control how your phone works this is the perfect app; If you have trouble with complexity and want a predetermined path go for Listen.&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-8038975341410946963?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/8038975341410946963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2010/11/top-20-nice-market-comments-about-mypod.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/8038975341410946963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/8038975341410946963'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2010/11/top-20-nice-market-comments-about-mypod.html' title='Top 20 nice market comments about MyPOD Podcast manager/player'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-3348884102959346949</id><published>2010-11-14T17:12:00.000-08:00</published><updated>2010-11-14T17:55:26.540-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='prez'/><title type='text'>Android NDK Primer &amp; Drawable Customiser presentation</title><content type='html'>I presented a primer on getting started with Android NDK at OpenLab OpenDay on the 13th November. The presentation consisted of the following parts:&lt;ul&gt;&lt;li&gt;Basic introduction to the Android NDK (Building and development basics)&lt;li&gt;Use of DirectBuffers&lt;li&gt;Accessing java objects from the NDK (Getting and Setting data in Java Objects)&lt;/ul&gt;The talk covered most of the basics, and people were surprised to see just how easy using the NDK can be... &lt;br/&gt;&lt;br/&gt;I also gave a brief overview of the upcomping Drawable Customiser release and have released a basic version of the API under GPL (Available &lt;a href="http://www.sentinelweb.co.uk/apps/drawcustom/help.php?file=api.wiki"&gt;here&lt;/a&gt;). I will be posting some usage examples in the next couple of weeks ..&lt;br/&gt;&lt;br/&gt;The NDK presentation is available as : &lt;a href="http://www.sentinelweb.co.uk/doc/RobMunro_NDK_Pres.odp"&gt;OpenOffice&lt;/a&gt; and &lt;a href="http://www.sentinelweb.co.uk/doc/RobMunro_NDK_Pres.pptx"&gt;PowerPoint XML&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-3348884102959346949?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/3348884102959346949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2010/11/android-ndk-primer-drawable-customiser.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/3348884102959346949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/3348884102959346949'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2010/11/android-ndk-primer-drawable-customiser.html' title='Android NDK Primer &amp; Drawable Customiser presentation'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-1782221788968961389</id><published>2010-10-25T05:15:00.000-07:00</published><updated>2010-10-25T06:33:14.606-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='codez'/><title type='text'>Filtering onTouch for light pressure</title><content type='html'>For the drawing program I am writing, there is a sensitivity problem when the pressure is light on the touchpad. When the finger is pressed down (like when you are in the middle of a drag operation) the touch point is stable as the area of the finger pressed to the touchpad is large and so the centroid of the area is quite stable. &lt;br/&gt;&lt;br/&gt;However at the end of the drag operation, as the finger pulls away, the area on the touch sensor decreases and the actual touch point seems to vary a lot. This is a problem for me in my drawing program, as you make fine changes to the drawing, you don't want the changes to be affected by this noise as you pull up from the touchpad.&lt;br/&gt;&lt;br/&gt;This solution uses a mean filter to combat the problem - noting new there. But we combine the mean value with the pressure value so as the pressure gets lighter, we us more of the mean value. It works best if the finger pulls off the surface slowly. &lt;br/&gt;&lt;br/&gt;The filter class I have used is shown below:&lt;pre class="codeBox"&gt;&lt;br /&gt;/*&lt;br /&gt;* licensed under CC BY-SA : http://creativecommons.org/licenses/by-sa/3.0/legalcode&lt;br /&gt;*/&lt;br /&gt;class MeanFilter {&lt;br /&gt; public static final int DEFAULT_LEN = 11;&lt;br /&gt; float[][] points = new float[2][DEFAULT_LEN];&lt;br /&gt; int currentPos=0;&lt;br /&gt; int actualValues = 0;&lt;br /&gt; int length = DEFAULT_LEN;&lt;br /&gt; float pressureLimit = 0.2f;&lt;br /&gt;  &lt;br /&gt; public MeanFilter(int length,float pressureLimit) {&lt;br /&gt;  super();&lt;br /&gt;  this.length = length;&lt;br /&gt;  this.pressureLimit = pressureLimit;&lt;br /&gt; }&lt;br /&gt; public void add(float x,float y) {&lt;br /&gt;  points[0][currentPos]=x;&lt;br /&gt;  points[1][currentPos]=y;&lt;br /&gt;  currentPos++;&lt;br /&gt;  currentPos%=length;&lt;br /&gt;  if (actualValues&amp;lt;length) {&lt;br /&gt;   actualValues++;&lt;br /&gt;   actualValues=Math.min(actualValues, length);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; public void clear() {currentPos=0;actualValues=0;}&lt;br /&gt; public void get(PointF defaultPoint,float pressure){&lt;br /&gt;  if (actualValues==0) {return;}&lt;br /&gt;  if (pressure&amp;lt;pressureLimit) {&lt;br /&gt;   float xmean = getMean(points[0], actualValues);&lt;br /&gt;   float ymean = getMean(points[1], actualValues);&lt;br /&gt;   float pressureRatio = pressure/pressureLimit;&lt;br /&gt;   defaultPoint.x=(pressureRatio)*defaultPoint.x+(1-pressureRatio)*xmean;&lt;br /&gt;   defaultPoint.y=(pressureRatio)*defaultPoint.y+(1-pressureRatio)*ymean;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; public void setLength(int i) {&lt;br /&gt;  length = i;&lt;br /&gt;  clear();&lt;br /&gt; } &lt;br /&gt; private float getMean(float[] arr,int ctr){&lt;br /&gt;  float accum = 0;&lt;br /&gt;  for (int i=0;i&amp;lt;ctr;i++) {&lt;br /&gt;   accum+=arr[i];&lt;br /&gt;  }&lt;br /&gt;  return accum/ctr;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br/&gt;To use it we create an instance - this is a mean filter length:7, pressure threshold:0.3&lt;pre class="codeBox" style="height:40px;"&gt;private MeanFilter touchFilter = new MeanFilter(7,0.3f);&lt;br /&gt;&lt;/pre&gt;&lt;br/&gt;Then in onTouch, we can filter the value to be used like so:&lt;pre class="codeBox"&gt;&lt;br /&gt;/*&lt;br /&gt;* licensed under CC BY-SA : http://creativecommons.org/licenses/by-sa/3.0/legalcode&lt;br /&gt;*/&lt;br /&gt;public boolean onTouch(View v, MotionEvent event) {&lt;br /&gt; PointF touchPointOnScreen = new PointF(event.getX(),event.getY());&lt;br /&gt; switch (event.getAction() ) {&lt;br /&gt;  case MotionEvent.ACTION_DOWN: touchFilter.clear();&lt;br /&gt;   break;&lt;br /&gt;  case MotionEvent.ACTION_MOVE: &lt;br /&gt;   touchFilter.add(event.getX(),event.getY());&lt;br /&gt;   if (event.getPressure()&lt;0.05) {return true;}&lt;br /&gt;   if (event.getPressure()&lt;0.3) {&lt;br /&gt;    touchFilter.get(touchPointOnScreen,event.getPressure());&lt;br /&gt;   } &lt;br /&gt;   break;&lt;br /&gt;  case MotionEvent.ACTION_UP:&lt;br /&gt;   touchFilter.get(touchPointOnScreen,event.getPressure());&lt;br /&gt;   break;&lt;br /&gt; }&lt;br /&gt; // use touchPointOnScreen here...&lt;br /&gt; return true;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;So &lt;span class="code"&gt;touchPointOnScreen&lt;/span&gt; contains the filtered value to use.&lt;br/&gt;&lt;br/&gt;We can note that the mean values arent calculated until the pressure drops below the threshold, thus being slightly more efficient than just mean filtering all the time, this also stops touchpoint lag as the mean filtered value will generally lay somewhere behind the current value.&lt;br/&gt;&lt;br/&gt;This code is made open under the &lt;a href="http://creativecommons.org/licenses/by-sa/3.0/legalcode"&gt; CC BY-SA licence&lt;img src="http://i.creativecommons.org/l/by-sa/3.0/88x31.png"/&gt;&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-1782221788968961389?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/1782221788968961389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2010/10/filtering-ontouch-for-light-pressure.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/1782221788968961389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/1782221788968961389'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2010/10/filtering-ontouch-for-light-pressure.html' title='Filtering onTouch for light pressure'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-7807028946866711198</id><published>2010-09-28T12:12:00.000-07:00</published><updated>2011-03-08T20:07:11.951-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silent_timer'/><category scheme='http://www.blogger.com/atom/ns#' term='appz'/><title type='text'>Silent Timer Released</title><content type='html'>I have just yesterday released a (very) small app and widget called "Silent Timer". This a simple app to disable the silent mode after a certain time. I made it because I regularly forget to turn off silent mode after movies and meetings. There are plans to add some more features in the next few weeks.&lt;br /&gt;&lt;br /&gt;There is a free ad supported version and a paid version. The free version has had 300 downloads so far - which isn't too shabby for absolutely no announcements or marketing (well, except this post).&lt;br /&gt;&lt;br /&gt;&lt;div style="position:relative;height:150px"&gt;&lt;span style="position:absolute;left:0px;top:0px;" &gt;&lt;img src="http://www.sentinelweb.co.uk/apps/silenttimer/tim_but_40_off.png"/&gt;&lt;br /&gt;Icon&lt;/span&gt;&lt;br /&gt;&lt;a href="market://search?q=pname:co.uk.sentinelweb.silenttimer" style="position:absolute;left:100px;top:0px;text-decoration:none;" &gt;&lt;img src="http://www.sentinelweb.co.uk/apps/silenttimer/qr_free.png"/&gt;&lt;br /&gt;QR Free&lt;/a&gt;&lt;br /&gt;&lt;a href="market://search?q=pname:co.uk.sentinelweb.silenttimerpaid" style="position:absolute;left:300px;top:0px;text-decoration:none;"&gt;&lt;img src="http://www.sentinelweb.co.uk/apps/silenttimer/qr_paid.png"/&gt;&lt;br /&gt;QR Paid&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-7807028946866711198?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/7807028946866711198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2010/09/silent-timer-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/7807028946866711198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/7807028946866711198'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2010/09/silent-timer-released.html' title='Silent Timer Released'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-6363097745808127964</id><published>2010-09-28T11:48:00.000-07:00</published><updated>2010-09-28T12:13:18.328-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newz'/><title type='text'>OTA Update 2.2.1</title><content type='html'>Just received an OTA update today to 2.2.1 - looks to be mostly security stuff, blocking one touch rooting and some WIFI issues. There are also some nice little improvements to Gmail, easier replying and forwarding buttons. Some people reported maps changes but they must be slight, as I can't see them.&lt;br /&gt;&lt;br /&gt;The only issue being that Swype has the be re-installed (it works as keyboard but the Swype feature disables - I can only assume this is intentional as it happened on my 2.2 update as well). But who can can live without Swype?&lt;br /&gt;&lt;br /&gt;Nexus one users have got the update first as usual, other are coming soon (Droid X tomorrow?).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-6363097745808127964?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/6363097745808127964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2010/09/ota-update-221.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/6363097745808127964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/6363097745808127964'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2010/09/ota-update-221.html' title='OTA Update 2.2.1'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-6109897427547564062</id><published>2010-09-21T14:34:00.000-07:00</published><updated>2010-09-23T04:56:07.414-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='biz'/><category scheme='http://www.blogger.com/atom/ns#' term='phonez'/><title type='text'>HTC launch event - Desire HD and Z</title><content type='html'>HTC got friendly last week having a launch party for their yet unreleased Desire HD and Dersire Z phones. The phones are nice and light (maybe slightly too light) models with WVGA screens (the desire HD has a larger screen at 4.3"). &lt;br /&gt;&lt;br /&gt;The event was a bit misguided - the phones were in a separate room, in which only a few people were allowed to view them at a time. I think a better marketing technique would've been to have more phones so everyone that went could get a better look at them. It was quite annoying going  to see new phones and not really being able to get a sense of what they feel like to use for a while. If you're going to spend all that money on marketing, then more actual phones definitely couldn't hurt, but who would say no to free food and beer anyway ...&lt;br /&gt;&lt;br /&gt;The Desire HD borders on a mini-tablet device with such a large screen, though it is still very much a (big) phone. It also has the very nice feature of a built in DNLA server, which I am looking very forward to. Hopefully it will play nicely with MyPOD so you can easily have videocasts on your main TV. It is certainly a nice feature to have for a media device though, videos can be viewed without cables. I'm guessing more recent TVs have this DNLA client functionality built in, but I use my PlayStation which works fine (I haven't had a chance to test it with the device unfortunately).&lt;br /&gt;&lt;br /&gt;The desire Z is slightly lower power (800MHz), and has a nice looking slide out keyboard.&lt;br /&gt;&lt;br /&gt;The phone specs are available here:&lt;br /&gt;&lt;a href="http://www.htc.com/www/product/desirehd/specification.html"&gt;HTC Desire HD&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://www.htc.com/www/product/desirez/specification.html"&gt;HTC Desire Z&lt;/a&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-6109897427547564062?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/6109897427547564062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2010/09/htc-launch-event-desire-hd-and-z.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/6109897427547564062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/6109897427547564062'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2010/09/htc-launch-event-desire-hd-and-z.html' title='HTC launch event - Desire HD and Z'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-1605332320254790495</id><published>2010-09-16T10:16:00.000-07:00</published><updated>2010-09-24T11:07:18.696-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eventz'/><title type='text'>DroidCon London 28-29 Oct, 2010</title><content type='html'>The upcoming &lt;a href="http://www.droidcon.co.uk/" target="_blank"&gt;London DroidCon&lt;/a&gt; conference looks very promising, the people at &lt;a href="http://novoda.com/"&gt;Novoda&lt;/a&gt; (and others I'm sure ..) have put together an excellent programme of speakers and topics, especially in the user experience and business marketing side. I would highly recommend it for people who are looking to develop their ideas on Android. &lt;br /&gt;&lt;br /&gt;These events are very important for the Android community to meet face-to-face and discuss ideas and strategies, and the Barcamp on the first day is a good way to incubate such ideas. &lt;br /&gt;&lt;br /&gt;DroidCon events have been held in London and Berlin for the past two years and with the quickening pace of Android development and market penetration, it looks to continue as a premier event for the Android community.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.droidcon.co.uk/" target="_blank"&gt;http://www.droidcon.co.uk/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-1605332320254790495?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/1605332320254790495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2010/08/droidcon-london-28-29-oct-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/1605332320254790495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/1605332320254790495'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2010/08/droidcon-london-28-29-oct-2010.html' title='DroidCon London 28-29 Oct, 2010'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-7256298156588475630</id><published>2010-09-11T18:35:00.000-07:00</published><updated>2010-09-22T20:55:08.881-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='biz'/><title type='text'>Android vs Oracle contradictions</title><content type='html'>There has been a lot of talk in the tech world about Oracle's patent infringement claims against the Android operating system. Oracle have not disclosed the details of the claims, and are highly unlikely to do so before the case goes to court. While I respect the right of Oracle to protect it's intellectual property, it seems this non-disclosure is more aimed at scaring people away from Android, even though ultimately they will be seeking some form of licensing arrangement for whatever patents/copyrights have been infringed in Android.&lt;br /&gt;&lt;br /&gt;The best thing Oracle can do at the moment is to disclose the basis of their claims, not only are they hurting Android but they are also hurting the open-source Java community in its entirety, and in doing so the value of arguably the biggest asset they acquired in their takeover of Sun (i.e. Java). One wonders how they can't see this, possibly they think Java is too big to fail now (sound familiar?).&lt;br /&gt;&lt;br /&gt;The whole thing rings of the IBM vs SCO case of a few years ago. They made claims Linux infringed their patents, would not disclose any information about it and then when the case came to court, they didn't really have much to stand on. SCO eventually filed for chapter 11 bankruptcy protection and looks like it will go out of business. The lesson that could have been learnt is that these frivolous patent claims cost everyone money and to proceed you would want to be quite sure of wining, even though the lack of disclosure indicates they aren't really &lt;span style="font-style:italic;"&gt;that&lt;/span&gt; sure.&lt;br /&gt;&lt;br /&gt;It all adds a lot of weight to the argument that the patents system needs drastic reformation for use with software, which is re-used as a general development practice. Until this happens patents will be used as a tools for revenue generation and most likely result in mutually assured destruction for businesses looking to (mis)use them for revenue generation purposes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-7256298156588475630?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/7256298156588475630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2010/09/android-vs-oracle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/7256298156588475630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/7256298156588475630'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2010/09/android-vs-oracle.html' title='Android vs Oracle contradictions'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-7818982577795548732</id><published>2010-09-08T09:36:00.000-07:00</published><updated>2010-09-23T09:57:55.234-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='prez'/><title type='text'>MSc Project presentation</title><content type='html'>I have recently completed a MSc in Digital Music Processing at Queen Mary University in London. My final masters project was a implementation of beat detection and mixing on Android, which included a thorough analysis on onset detection, tempo analysis and beat recognition, as well as a custom &lt;a href="http://en.wikipedia.org/wiki/Phase_vocoder" target="_blank"&gt;Phase Vocoder&lt;/a&gt; implementation. The project went quite well and a good result was achieved, though in 2 months it is quite hard to complete a large implementation. The project had a healthy proportion of NDK programming in it, which was really interesting and my first use of JNI, definitely a necessity for apps needing a DSP component on Android.&lt;br /&gt;&lt;br /&gt;The project was presented as part of the university evaluation process and is even being considered for inclusion as part of a new project to make mobile technology @ Queen Mary available to all.  &lt;br /&gt;&lt;br /&gt;For anyone interested in the gory details - I have included the final project report and presentation.&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://sentinelweb.co.uk/doc/RobertMunroProjectReport2010.pdf"&gt;Project Report&lt;/a&gt; (PDF - 70 pages)&lt;br /&gt;&lt;li&gt;Project Presentation: &lt;a href="http://sentinelweb.co.uk/doc/projectPresentation.ppt"&gt;(PPT)&lt;/a&gt;, &lt;a href="http://sentinelweb.co.uk/doc/projectPresentation.odp"&gt;(OpenOffice)&lt;/a&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-7818982577795548732?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/7818982577795548732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2010/09/msc-project-presentation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/7818982577795548732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/7818982577795548732'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2010/09/msc-project-presentation.html' title='MSc Project presentation'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-3552729572757940676</id><published>2010-08-12T16:06:00.000-07:00</published><updated>2011-03-08T20:07:25.125-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='appz'/><category scheme='http://www.blogger.com/atom/ns#' term='mypod'/><title type='text'>MyPOD hits 50K ...</title><content type='html'>MyPOD the podcast player by sentinel web technoloiges has recently passed the 50K downloads barrier over the last week. So congratulations to us, stay tuned for more updates in the future.&lt;br /&gt;&lt;br /&gt;While there are many apps that have hit the 50K barrier by now, each rung on the download ladder gives more confidence to users (to try it out) and developers (to add features).&lt;br /&gt;&lt;br /&gt;I've got a feeling the 250K will be hit a lot quicker ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-3552729572757940676?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/3552729572757940676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2010/08/mypod-hits-50k.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/3552729572757940676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/3552729572757940676'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2010/08/mypod-hits-50k.html' title='MyPOD hits 50K ...'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-7118783446717870919</id><published>2010-06-22T16:53:00.000-07:00</published><updated>2010-10-25T06:34:24.676-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='codez'/><title type='text'>Anroid UI setInterval</title><content type='html'>In most apps I develop, I usually have a need to update the UI within the activity (as services change, or just live time displays). Making these timers is easy in Javascript, you just use &lt;span class="code"&gt;setInterval(method,nnn)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;On Android it is more complex - you need a &lt;span class="code"&gt;Timer&lt;/span&gt; and &lt;span class="code"&gt;TimerTask&lt;/span&gt;, and then you need another &lt;span class="code"&gt;Runnable&lt;/span&gt; to give to &lt;span class="code"&gt;Activity.runOnUiThread(..)&lt;/span&gt;, and &lt;i&gt;then&lt;/i&gt; your actual method. It all adds a lot of code bloat, especially if you have a few activities in your app. &lt;span class="code"&gt;AsyncTask&lt;/span&gt; is good for updating the UI while a background process is running, but for just a simple update interval it's no use. &lt;br /&gt;&lt;br /&gt;This is a reasonably simple solution to the problem - the MyTimer class has a setInterval method that behaves similarly to Javascript. The usage is: &lt;ul&gt;&lt;li&gt;Set the timer:  &lt;br /&gt;&lt;span class="code"&gt;int timer=MyTimer.setInterval(this, "updateUI", 2000,true);&lt;/span&gt;&lt;br /&gt;(where "updateUI" is a method with the signature: &lt;span class="code"&gt;public void updateUI() {..}&lt;/span&gt;)&lt;br /&gt;&lt;li&gt;Cancel the timer:&lt;br /&gt;&lt;span class="code"&gt;timer=MyTimer.cancelTimer(timer);&lt;/span&gt;&lt;/ul&gt;Some Notes:&lt;ul&gt;&lt;li&gt;The cancel operation returns -1 if the cancel was performed successfully, so you can just test if the timer ==-1 to tell if you need to start it again.&lt;br /&gt;&lt;li&gt;The code above is called from the activity, the first argument of setInterval should be an &lt;span style="font-family:courier"&gt;Activity&lt;/span&gt; object.&lt;br /&gt;&lt;li&gt;There is a static debug variable if it doesnt work as expected (&lt;span class="code"&gt;MyTimer.debug=true&lt;/span&gt;).&lt;br /&gt;&lt;li&gt;If there is an exception in the target method -&amp;gt; the timer is cancelled.&lt;br /&gt;&lt;li&gt;MAKE SURE YOU CANCEL THE TIMER (in onStop or onPause). If the timer is not cancelled, then it will prevent garbage collection, a possible way around is just to return the Timer object instead of holding it in a Vector.&lt;br /&gt;&lt;li&gt;Note that this type of usage can potentially use a lot of battery if its just left running, the updateUI method (or whatever the method name is), should do the minimum processing necessary. It should just update a couple of UI elements or something - not do masses of calculations (store results as variables is a simple solution).&lt;br /&gt;&lt;/ul&gt;&lt;pre class="codeBox"&gt;&lt;br /&gt;package co.uk.sentinelweb.util;&lt;br /&gt;/*&lt;br /&gt;* licensed under CC BY-SA : http://creativecommons.org/licenses/by-sa/3.0/legalcode&lt;br /&gt;*/&lt;br /&gt;import java.lang.reflect.Method;&lt;br /&gt;import java.util.Timer;&lt;br /&gt;import java.util.TimerTask;&lt;br /&gt;import java.util.Vector;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.util.Log;&lt;br /&gt;&lt;br /&gt;public class MyTimer {&lt;br /&gt;public static Vector&lt;timer&gt; timers = new Vector&lt;timer&gt;();&lt;br /&gt;public static boolean debug = false;// turn on to check timer activates and cancels&lt;br /&gt;public static int setInterval(Activity object,String method,int interval,boolean isUI) {&lt;br /&gt;Timer timeoutTimer= new Timer();&lt;br /&gt;TimeoutTask timeoutTimerTask;&lt;br /&gt;try {&lt;br /&gt;timeoutTimerTask = new TimeoutTask(object,method,isUI,timeoutTimer.hashCode());&lt;br /&gt;if (debug) {Log.d(MyTimer.class.getSimpleName(), "timer created :");}&lt;br /&gt;} catch (Exception e) {&lt;br /&gt;Log.d(MyTimer.class.getSimpleName(), "error creating timer :"+method,e);&lt;br /&gt;return -1;&lt;br /&gt;} &lt;br /&gt;timeoutTimer.scheduleAtFixedRate(timeoutTimerTask, 0, interval); &lt;br /&gt;timers.add(timeoutTimer);&lt;br /&gt;return timeoutTimer.hashCode();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static int cancelTimer(int code) {&lt;br /&gt;Timer timeoutTimer = null;&lt;br /&gt;for (int i=0;i&amp;lt;timers.size();i++) {&lt;br /&gt;if (timers.get(i).hashCode()==code) {&lt;br /&gt;timeoutTimer=timers.get(i);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;if (timeoutTimer!=null) {&lt;br /&gt;timers.remove(timeoutTimer);&lt;br /&gt;timeoutTimer.cancel();&lt;br /&gt;timeoutTimer.purge();&lt;br /&gt;if (debug) {Log.d(MyTimer.class.getSimpleName(), "timer deleted :");}&lt;br /&gt;return -1;&lt;br /&gt;} else {&lt;br /&gt;if (debug) {Log.d(MyTimer.class.getSimpleName(), "timer not found :"+code);}&lt;br /&gt;}&lt;br /&gt;return code;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private static class TimeoutTask extends TimerTask {&lt;br /&gt;Activity targetObject;&lt;br /&gt;Method targetMethod;&lt;br /&gt;Runnable invoker;&lt;br /&gt;int code ;&lt;br /&gt;public TimeoutTask(Activity targetObject, String targetMethod,boolean isUI,int code) throws SecurityException, NoSuchMethodException {&lt;br /&gt;super();&lt;br /&gt;this.targetObject = targetObject;&lt;br /&gt;this.targetMethod = targetObject.getClass().getDeclaredMethod(targetMethod, new Class[]{});&lt;br /&gt;this.code=code;&lt;br /&gt;if (isUI) {&lt;br /&gt;invoker = new ThreadRunner(this.targetObject,this.targetMethod);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public void run() {&lt;br /&gt;try {&lt;br /&gt;if (debug) {Log.d(MyTimer.class.getSimpleName(), "invoke timer :");}&lt;br /&gt;if (invoker==null) {&lt;br /&gt;targetMethod.invoke(targetObject, new Object[]{});&lt;br /&gt;} else {&lt;br /&gt;targetObject.runOnUiThread(invoker);&lt;br /&gt;}&lt;br /&gt;} catch(Exception e) {&lt;br /&gt;Log.d(MyTimer.class.getSimpleName(), "error invoking:"+targetMethod.getName(),e);&lt;br /&gt;cancelTimer(code);&lt;br /&gt;Log.d(MyTimer.class.getSimpleName(), "timer:"+code+" has been cancelled");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private static class ThreadRunner implements Runnable{&lt;br /&gt;Activity targetObject;&lt;br /&gt;Method targetMethod;&lt;br /&gt;&lt;br /&gt;public ThreadRunner(Activity targetObject, Method targetMethod) {&lt;br /&gt;super();&lt;br /&gt;this.targetObject = targetObject;&lt;br /&gt;this.targetMethod = targetMethod;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public void run() {&lt;br /&gt;try {&lt;br /&gt;targetMethod.invoke(targetObject, new Object[]{});&lt;br /&gt;} catch (Exception e) {&lt;br /&gt;Log.d(MyTimer.class.getSimpleName(), "error invoking:"+targetMethod.getName(),e);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;CAVEAT: While I haven't found anything in the API to do this (easily), it is possible that it is in there somewhere. If it is then let me know, and I'll update this.   &lt;br/&gt;&lt;br/&gt;This code is made open under the &lt;a href="http://creativecommons.org/licenses/by-sa/3.0/legalcode"&gt; CC BY-SA licence&lt;img src="http://i.creativecommons.org/l/by-sa/3.0/88x31.png"/&gt;&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-7118783446717870919?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/7118783446717870919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2010/09/anroid-ui-setinterval.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/7118783446717870919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/7118783446717870919'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2010/09/anroid-ui-setinterval.html' title='Anroid UI setInterval'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-7044574640076414235</id><published>2010-04-21T15:58:00.000-07:00</published><updated>2010-09-23T04:57:40.776-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='funz'/><title type='text'>Has to be done really ...</title><content type='html'>&lt;div style="font-family: Courier,Monospace; font-size: 8px; color: rgb(165, 198, 59); background: #222222"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;**************&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;************************&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;****************************&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;**********************************&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;******&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;****************&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;******&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;********&amp;nbsp;&amp;nbsp;&amp;nbsp;*****************&amp;nbsp;&amp;nbsp;********&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;****************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;******&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;******&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;********&amp;nbsp;&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;********&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;********&amp;nbsp;&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;********&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;******&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;******&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;******************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*****************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;************************************&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*********&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;********&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;********&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*******&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*******&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-7044574640076414235?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/7044574640076414235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2010/09/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/7044574640076414235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/7044574640076414235'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2010/09/blog-post.html' title='Has to be done really ...'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-7250156780137187762</id><published>2009-10-26T16:14:00.000-07:00</published><updated>2011-03-08T20:07:40.283-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='appz'/><category scheme='http://www.blogger.com/atom/ns#' term='mypod'/><title type='text'>MyPOD first release</title><content type='html'>Today is the first release of MyPOD, a fully functional podcasting application for Android. Tie initial release is a beta version (v0.91), there is still a lot of work to do to make MyPOD the best podcasting app for Android ... but a good start has been achieved today.&lt;br /&gt;  &lt;br /&gt;The release notes can be tracked on the MyPOD News blog:&lt;br /&gt;&lt;a href="http://mypod-news.blogspot.com/"&gt;MyPOD News&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;So give it a try ... you might even just like it ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-7250156780137187762?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/7250156780137187762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2009/10/mypod-first-release.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/7250156780137187762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/7250156780137187762'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2009/10/mypod-first-release.html' title='MyPOD first release'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-1353640238411458891</id><published>2009-08-25T06:39:00.000-07:00</published><updated>2010-09-23T09:58:17.166-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='prez'/><title type='text'>OpenLab Android workshop</title><content type='html'>I gave a short introduction to Android workshop as part of the OpenLab Workshops Summer Season. The workshop consisted of a brief introduction and  overview of the Android basics (Activities, Services,..). We than had a look at some example code and then there was an open session to get people's development environments installed and start with some basic Android programs.&lt;br /&gt;&lt;br /&gt;People seemed to handle the learning curve quite well, this type of practical course is something I will look to in the future, Android has great potential for arts purposes, in a couple of years there will be a plethora of cheap mobile devices around to build all sorts of crazy things with .... bring it on.&lt;br /&gt;&lt;br /&gt;The presentation part is available here as a powerpoint/openoffice document:&lt;br /&gt;&lt;a href="http://sentinelweb.co.uk/doc/AndriodPres.ppt"&gt;Openlab Android Summer Workshop&lt;/a&gt; (&lt;a href="http://sentinelweb.co.uk/doc/AndriodPres.odp"&gt;ODP&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-1353640238411458891?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/1353640238411458891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2010/08/openlab-android-workshop.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/1353640238411458891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/1353640238411458891'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2010/08/openlab-android-workshop.html' title='OpenLab Android workshop'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5275779272560545370.post-678767931013681951</id><published>2009-08-12T05:35:00.000-07:00</published><updated>2011-03-08T20:08:06.050-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='appz'/><category scheme='http://www.blogger.com/atom/ns#' term='prez'/><category scheme='http://www.blogger.com/atom/ns#' term='mypod'/><title type='text'>London Android presentation of MyPOD</title><content type='html'>I presented MyPOD at the London Android user group today, it was just a short talk showing some development considerations and android features, and also some of the issues I had while developing. The topics covered were:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;WebView&lt;br /&gt;&lt;li&gt;TelephonyManager&lt;br /&gt;&lt;li&gt;Garbage collection&lt;br /&gt;&lt;li&gt;Services&lt;br /&gt;&lt;li&gt;Binding&lt;br /&gt;&lt;li&gt;Parcelable objects&lt;br /&gt;&lt;li&gt;MediaPlayer&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The presentation is available here as a word/openoffice document:&lt;br /&gt;&lt;a href="http://sentinelweb.co.uk/doc/AndroidPresentation.doc"&gt;Londroid Presentation&lt;/a&gt; (&lt;a href="http://sentinelweb.co.uk/doc/AndroidPresentation.odt"&gt;ODT&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5275779272560545370-678767931013681951?l=sentinelweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sentinelweb.blogspot.com/feeds/678767931013681951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sentinelweb.blogspot.com/2009/08/london-android-presentation-of-mypod.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/678767931013681951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5275779272560545370/posts/default/678767931013681951'/><link rel='alternate' type='text/html' href='http://sentinelweb.blogspot.com/2009/08/london-android-presentation-of-mypod.html' title='London Android presentation of MyPOD'/><author><name>Rob M</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_wahtC0pRBFk/So31vOMdyVI/AAAAAAAABVc/a0fj6mJMbdI/S220/metiled_sq.jpg'/></author><thr:total>0</thr:total></entry></feed>
