<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-14924660</atom:id><lastBuildDate>Thu, 14 Jan 2010 06:28:31 +0000</lastBuildDate><title>Threadeds' Eclectic Blog</title><description>'Tis only threadeds thoughts, comments &amp; miscellaneous abuse about, well, anything really.</description><link>http://www.threaded.com/blog.htm</link><managingEditor>noreply@blogger.com (threaded)</managingEditor><generator>Blogger</generator><openSearch:totalResults>302</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-1020696943585286428</guid><pubDate>Mon, 19 Oct 2009 15:58:00 +0000</pubDate><atom:updated>2009-10-27T14:59:11.015+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>computer tips</category><category domain='http://www.blogger.com/atom/ns#'>Windows XP</category><title>Manually start that background tasks thingy in XP</title><description>Some people never leave their Windows XP machine unused and unattended, so the background tasks that are normally run when the machine is idle don't get run and the machine becomes very slow. To manually start that background tasks thingy in XP just open up a command prompt and type in:&lt;br /&gt;&lt;br /&gt;Rundll32.exe advapi32.dll,ProcessIdleTasks&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-1020696943585286428?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/10/manually-start-that-background-tasks.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-6442176484028868511</guid><pubDate>Mon, 19 Oct 2009 11:36:00 +0000</pubDate><atom:updated>2009-10-19T14:01:14.623+02:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>programming</category><title>An XSLT to convert an XML file into a CSV</title><description>&lt;code&gt;&lt;br /&gt;&amp;lt;xsl:stylesheet version="1.0 &lt;br /&gt;&lt;br /&gt; xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- IF_THE_PIVOT_IS_A_SUBTYPE_IT_NEEDS_TO_GO_IN_HERE --&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&amp;lt;xsl:output method="text"/&amp;gt;" &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;xsl:template match="//PIVOT_GOES_IN_HERE"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;xsl:apply-templates select="*" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;xsl:text&amp;gt;&amp;amp;#x0D;&amp;amp;#x0A;&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/xsl:template&amp;gt;"  &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;xsl:template match="//PIVOT_GOES_IN_HERE//*"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;xsl:when test="count(child::*) &amp;gt; 0"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;xsl:apply-templates select="*" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;xsl:text&amp;gt;"&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;xsl:value-of select="."/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;xsl:text&amp;gt;"&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;xsl:if test="position() != last()"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;xsl:text&amp;gt;,&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-6442176484028868511?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/10/xslt-to-convert-xml-file-into-csv.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-9088675792536822185</guid><pubDate>Mon, 12 Oct 2009 18:13:00 +0000</pubDate><atom:updated>2009-10-12T20:15:07.951+02:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>thought for today</category><category domain='http://www.blogger.com/atom/ns#'>joke</category><title>In Memory of Common Sense</title><description>Today we mourn the passing of a beloved old friend, “Common Sense,” who has been with us for many years.  No one knows for sure how old he was, since his birth records were long ago lost in bureaucratic red tape.  He will be remembered as having cultivated such valuable lessons as:&lt;br /&gt;&lt;br /&gt;- knowing when to come in out of the rain;&lt;br /&gt;&lt;br /&gt;- the early bird gets the worm;&lt;br /&gt;&lt;br /&gt;- life isn’t always fair; and&lt;br /&gt;&lt;br /&gt;- maybe it was my fault.&lt;br /&gt;&lt;br /&gt;Common Sense lived by simple, sound financial policies (don’t spend more than you can earn) and reliable strategies (adults, not children, are in charge).&lt;br /&gt;&lt;br /&gt;His health began to deteriorate rapidly when well-intentioned but overbearing regulations were set in place.  Reports of a 6-year-old boy charged with sexual harassment for kissing a classmate; teens suspended from school for using mouthwash after lunch; and a teacher fired for reprimanding an unruly student, only worsened his condition.&lt;br /&gt;&lt;br /&gt;Common Sense lost ground when parents attacked teachers for doing the job that they themselves had failed to do in disciplining their unruly children.&lt;br /&gt;&lt;br /&gt;It declined even further when schools were required to get parental consent to administer sun lotion or an aspirin to a student, but could not inform parents when a student became pregnant and wanted to have an abortion. &lt;br /&gt;&lt;br /&gt;Common Sense lost the will to live as the churches became businesses and criminals received better treatment than their victims.&lt;br /&gt;&lt;br /&gt;Common Sense took a beating when you couldn’t defend yourself from a burglar in your own home and the burglar could sue you for assault.&lt;br /&gt;&lt;br /&gt;Common Sense finally gave up the will to live, after a woman failed to realize that a steaming cup of coffee was hot.  She spilled a little in her lap and was promptly awarded a huge settlement.&lt;br /&gt;&lt;br /&gt;Common Sense was preceded in death, by his parents, “Truth” and “Trust,” by his wife, “Discretion,” by his daughter, “Responsibility,” and by his son, “Reason.”&lt;br /&gt;&lt;br /&gt;He is survived by his 4 stepbrothers – “I Know My Rights,” “I Want It Now,” “Someone Else Is To Blame,” and “I’m A Victim.”&lt;br /&gt;&lt;br /&gt;Not many attended his funeral, because so few realized he was gone.  If you still remember him, pass this on.  If not, join the majority and do nothing.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-9088675792536822185?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/10/in-memory-of-common-sense.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-2689334260449881348</guid><pubDate>Mon, 14 Sep 2009 04:08:00 +0000</pubDate><atom:updated>2009-09-14T06:27:00.884+02:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>ATC2K</category><category domain='http://www.blogger.com/atom/ns#'>old</category><category domain='http://www.blogger.com/atom/ns#'>extreme sports</category><title>Make a 2GB SD card usable for an Oregon Scientific ATC2K</title><description>Formatting an SD card on an Apple Mac for use on equipment expecting a FAT16 file system can be non-trivial.  I found the UI tools are not very good in this, often producing a FAT32 or other formants.  I have found it more reliable to use the command line.  Here is a sequence of commands I've found that create a reliable 2GB SD Card for use in an Oregon Scientific ATC2K helmet extreme sports video camera.&lt;br /&gt;&lt;br /&gt;You need to find where the card is in the file system.  Run this command both before and after inserting the card to find where it is&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ls /dev/rdisk?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Assuming you discovered the card appears at rdisk6s1 from the command above.&lt;br /&gt;Create a new FAT16 MS-DOS file system&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;newfs_msdos -v VOLUME_NAME -F 16 /dev/rdisk6s1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now create a partition table&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;diskutil partitionDisk /Volumes/UNTITLED 1 MBRFormat "MS-DOS FAT16" "UNTITLED" 2000M&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now the card will appear on the desktop at UNTITLED.&lt;br /&gt;&lt;br /&gt;Remember to &lt;span style="font-weight:bold;"&gt;eject&lt;/span&gt; from the desktop, so it can be used.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-2689334260449881348?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/09/make-2gb-sd-card-usable-for-oregon.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-7007407360978103149</guid><pubDate>Mon, 24 Aug 2009 07:49:00 +0000</pubDate><atom:updated>2009-08-24T10:17:55.586+02:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>cycle race</category><category domain='http://www.blogger.com/atom/ns#'>Denmark</category><category domain='http://www.blogger.com/atom/ns#'>cycling</category><category domain='http://www.blogger.com/atom/ns#'>Ritter Classic</category><title>Ritter Classic 2009</title><description>The &lt;a href="http://www.ritterclassic.dk/"&gt;Ritter Classic&lt;/a&gt; is a fun cycle race held each year on Sjælland, Denmark.  This year it again set off and ended in Taastrup, taking a route up to Ballerup, then east over to the coast and then hugging the shoreline travelled further north before heading back inland again, and just as it got above Taastrup, it headed directly south for the finishing line.&lt;br /&gt;&lt;br /&gt;I expected to take between 5 and 6 hours, and quite surprised, not just myself, but supporters who wished to take photos of the team: we'd already passed by the time they arrived at the various photo ops. There were plenty of other photographers and several film crews from &lt;a href="http://tv2sport.dk/"&gt;TV2 Sport&lt;/a&gt; amongst others.  So I shall ask for some links when I find them.&lt;br /&gt;&lt;br /&gt;My statistics:&lt;br /&gt;118.8km in 4 hours 1 minute and 47 seconds, &lt;br /&gt;Speed: averaged 29.5km/h with a maximum on 78.8km/h&lt;br /&gt;Heart rate: average 140 bpm maximum 175 bpm&lt;br /&gt;Cadence: average 83 rpm with a maximum of 125 rpm.&lt;br /&gt;&lt;br /&gt;My route on &lt;a href="http://connect.garmin.com/activity/11806570"&gt;Garmin Connect&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Link to &lt;a href="http://www.ritterclassic.dk/documents/00028.htm"&gt;Google Earth kml file&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://results.ultimate.dk/liveappc/front/standings.php?eventid=665&amp;template=uss.htm&amp;Distance=1&amp;Category=S_M&amp;TimingPoint=Finish&amp;submit=Vis+Top+50+liste"&gt;Top 50 result list&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-7007407360978103149?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/08/ritter-classic-2009.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-5536246174679462236</guid><pubDate>Mon, 09 Feb 2009 11:49:00 +0000</pubDate><atom:updated>2009-02-09T13:41:38.081+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>google android</category><title>Minimal code to perform logging in Google Android</title><description>To produce log message in Google Android is really quite easy.&lt;br /&gt;&lt;br /&gt;At the top of the file in the imports section add: &lt;code&gt;import android.util.Log;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And then in your code you add &lt;code&gt;Log.d(TAG,message);&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Where &lt;code&gt;TAG&lt;/code&gt; and &lt;code&gt;message&lt;/code&gt; are strings.&lt;br /&gt;&lt;br /&gt;It is considered good form that the TAG is a constant for the class.&lt;br /&gt;&lt;br /&gt;So I put something like this at the top of the class &lt;code&gt;private static final String TAG = Foo.class.getName();&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;There are several levels of logging and in level order these are &lt;code&gt;Log.v(), Log.d(), Log.i(), Log.w()&lt;/code&gt; and &lt;code&gt;Log.e()&lt;/code&gt; &lt;br /&gt;&lt;br /&gt;Where&lt;br /&gt;v = verbose&lt;br /&gt;d = debug&lt;br /&gt;i = info&lt;br /&gt;w = warning&lt;br /&gt;e = error&lt;br /&gt;&lt;br /&gt;The logging is performed by LogCat which can be accessed via the adb tool that comes with the Android developer kit.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;tools/adb logcat&lt;/code&gt; will start logging at the &lt;code&gt;INFO&lt;/code&gt; level as that is the default.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;tools/adb logcat *:V&lt;/code&gt; will log everything at &lt;code&gt;VERBOSE&lt;/code&gt; level.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;tools/adb logcat Wibble:W&lt;/code&gt; will filter most things and only show those log statements with the tag &lt;code&gt;Wibble&lt;/code&gt; at the &lt;code&gt;WARNING&lt;/code&gt; level.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-5536246174679462236?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/02/minimal-code-to-perform-logging-in.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-6137431678908956951</guid><pubDate>Thu, 05 Feb 2009 15:13:00 +0000</pubDate><atom:updated>2009-02-05T16:32:06.532+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>google android</category><title>Minimal code to display a Toast message in Google Android</title><description>Toast is a widget to display an informational message to a user whilst they may well be doing something else.  I find it useful for debugging on a real device to tell me something internal to the application has been fired. Afterwards I can just strip such things out of the build.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    // show the frost pist message using the Toast widget&lt;br /&gt;    Toast toast = Toast.makeText(context, "Woo hoo, toast", Toast.LENGTH_LONG);&lt;br /&gt;    toast.show();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I find the &lt;code&gt;context&lt;/code&gt; is normally part of the method signature. &lt;br /&gt;&lt;code&gt;Toast.LENGTH_LONG&lt;/code&gt; keeps the message up for a few seconds.&lt;br /&gt;&lt;br /&gt;There is a &lt;code&gt;Toast.LENGTH_SHORT&lt;/code&gt; if you don't want the message to hang about for too long.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-6137431678908956951?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/02/minimal-code-to-display-toast-message.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-7331535696060014779</guid><pubDate>Thu, 05 Feb 2009 14:35:00 +0000</pubDate><atom:updated>2009-02-05T16:03:26.519+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>google android</category><title>Minimal code to retreive a GPS location in Google Android</title><description>Here I describe the minimal code to retrieve a GPS location in the Google Android OS.&lt;br /&gt;&lt;br /&gt;First up, a GPS location listener.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class GPSLocationListener implements LocationListener {&lt;br /&gt;&lt;br /&gt;   public void onLocationChanged(Location location) {       &lt;br /&gt;       double latitude = location.getLatitude();&lt;br /&gt;       double longitude = location.getLongitude();&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public void onProviderDisabled(String provider) {&lt;br /&gt;       // TODO Auto-generated method stub&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public void onProviderEnabled(String provider) {&lt;br /&gt;       // TODO Auto-generated method stub &lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public void onStatusChanged(String provider, int status, Bundle extras) {&lt;br /&gt;       // TODO Auto-generated method stub &lt;br /&gt;   }  &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Somewhere else, probably in the &lt;code&gt;Activity&lt;/code&gt; you need to tie this listener in.  Here is an &lt;code&gt;onCreate&lt;/code&gt; from a minimal application's &lt;code&gt;Activity&lt;/code&gt;.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  /** Called when the activity is first created. */&lt;br /&gt;  @Override&lt;br /&gt;  public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;   &lt;br /&gt;      super.onCreate(savedInstanceState);&lt;br /&gt;&lt;br /&gt;      setContentView(R.layout.main);&lt;br /&gt;    &lt;br /&gt;      GPSLocationListener gpsLocationListener = new GPSLocationListener();&lt;br /&gt;    &lt;br /&gt;      LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);&lt;br /&gt;&lt;br /&gt;      long minTime = 600000;&lt;br /&gt;      float minDistance = 10;&lt;br /&gt;  &lt;br /&gt;      lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, minDistance, gpsLocationListener);&lt;br /&gt;                    &lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;code&gt;minTime&lt;/code&gt; is a request to the OS about how often to check the GPS location.  If you set it less than 1 minute (60000) then you risk the battery going flat quickly because the GPS receiver will be on all the time.  The number is just a request.  The OS may request a fix more often, it may check less often.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;minDistance&lt;/code&gt; is a request to trigger the listener when the device has moved by this distance.&lt;br /&gt;&lt;br /&gt;You also need &lt;code&gt;&amp;lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"&amp;gt;&amp;lt;/uses-permission&amp;gt;&lt;br /&gt;&lt;/code&gt; in the applications &lt;code&gt;AndroidManifest.xml&lt;/code&gt; file.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-7331535696060014779?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/02/minimal-code-to-retreive-gps-location.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-7538976895522087610</guid><pubDate>Thu, 05 Feb 2009 14:09:00 +0000</pubDate><atom:updated>2009-02-05T16:07:44.610+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>google android</category><title>Minimal code to send a SMS from Google Android</title><description>A minimal code for sending a SMS message from the Google Android OS.&lt;br /&gt;&lt;br /&gt;This code assumes you're in an &lt;code&gt;Activity&lt;/code&gt;, which is where it gets &lt;code&gt;this&lt;/code&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(), 0)&lt;br /&gt;&lt;br /&gt;  SmsManager smsManager = SmsManager.getDefault();&lt;br /&gt; &lt;br /&gt;  String receiver = "5556"; // the phone number of the device to send the SMS message to.&lt;br /&gt;&lt;br /&gt;  String message = "This is the SMS message I want to sending";&lt;br /&gt;     &lt;br /&gt;  smsManager.sendTextMessage(receiver, null, message, pendingIntent, null);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;What it requires from &lt;code&gt;this&lt;/code&gt; is actually just the interface to the &lt;code&gt;Context&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;The &lt;code&gt;&amp;lt;uses-permission android:name="android.permission.SEND_SMS"&amp;gt;&amp;lt;/uses-permission&amp;gt;&lt;/code&gt; is also required your build's &lt;code&gt;AndroidManifest.xml&lt;/code&gt; file&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-7538976895522087610?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/02/sending-sms-from-google-android.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-4143056391734985692</guid><pubDate>Wed, 04 Feb 2009 13:01:00 +0000</pubDate><atom:updated>2009-03-31T07:39:46.370+02:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>joke</category><category domain='http://www.blogger.com/atom/ns#'>bizarre</category><category domain='http://www.blogger.com/atom/ns#'>food</category><title>Hønsekødsuppe</title><description>Hønsekødsuppe til 4 personer&lt;br /&gt;&lt;br /&gt;En høne på en og en halv kilo, eller halvanden kilo passer bedre.&lt;br /&gt;En spiseske salt&lt;br /&gt;Cirka to liter vand&lt;br /&gt;To eller tre gulerødder&lt;br /&gt;Et kvart selleri&lt;br /&gt;En persillerod&lt;br /&gt;En porre&lt;br /&gt;Et løg&lt;br /&gt;Fire hele nelliker&lt;br /&gt;&lt;br /&gt;Stik nellikerne ind i løget.&lt;br /&gt;Tag bladerne fra porren og brug dem til suppevisk&lt;br /&gt;Skær grøntsager i tern.&lt;br /&gt;Kom alt i gryden, untagen kyllingen.&lt;br /&gt;Vær sikker på at hønen er død, en stor hammer kan hjælpe dig her.&lt;br /&gt;Pluk hønen, og fjern indvoldene.&lt;br /&gt;Kom nu kyllingen i gryden.&lt;br /&gt;Kog i to timer ved svag varme.&lt;br /&gt;Omrøres med jævne mellem rum.&lt;br /&gt;Salt og peber efter ønske.&lt;br /&gt;&lt;br /&gt;Server og spis op, uden hyl og skrig!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.berlingske.dk/article/20090331/danmark/703300093/"&gt;Avis artikel&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-4143056391734985692?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/02/hnsekdsuppe.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-5247532644908351717</guid><pubDate>Tue, 03 Feb 2009 18:07:00 +0000</pubDate><atom:updated>2009-02-03T19:45:05.694+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>google android</category><title>Telling the android emulator where you are.</title><description>Once &lt;code&gt;telnet&lt;/code&gt;ed into an emulator you can poke in a pair of map co-ordinates to give the impression the GPS unit has just got a fix.&lt;br /&gt;&lt;br /&gt;Fun thing to remember is that the latitude and longitude are the wrong way round: you put the longitude first. Additionally use minus signs instead of chars, remembering North and East are positive.&lt;br /&gt;&lt;br /&gt;So to fix a position like 55.623131N 11.997169 becomes 11.997169 55.623131&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;telnet localhost 5554&lt;br /&gt;Trying ::1...&lt;br /&gt;telnet: connect to address ::1: Connection refused&lt;br /&gt;Trying fe80::1...&lt;br /&gt;telnet: connect to address fe80::1: Connection refused&lt;br /&gt;Trying 127.0.0.1...&lt;br /&gt;Connected to localhost.&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;Android Console: type 'help' for a list of commands&lt;br /&gt;OK&lt;br /&gt;geo fix 11.997169 55.623131&lt;br /&gt;OK&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Note it uses proper decimal, such that 55° 35' 10" becomes 55.58611111.&lt;br /&gt;&lt;br /&gt;For extra fun the &lt;code&gt;geo&lt;/code&gt; command can even take a real &lt;code&gt;nmea&lt;/code&gt; message&lt;br /&gt;&lt;code&gt;&lt;br /&gt;geo nmea $GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47&lt;br /&gt;OK&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;And if you tell the mapping application in the emulator to 'My Location', off the map will fly.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-5247532644908351717?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/02/telling-android-emulator-where-you-are.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-1455504243584159671</guid><pubDate>Tue, 03 Feb 2009 16:37:00 +0000</pubDate><atom:updated>2009-02-03T18:46:15.189+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>google android</category><title>Sending an SMS into a Google Android emulator.</title><description>It appears that the ability to send SMS from one android emulator to the other via the SMS application is not currently working, but luckily you can send an SMS into one emulator as if it came from another...&lt;br /&gt;&lt;br /&gt;What you do is &lt;code&gt;telnet&lt;/code&gt; into the emulator you wish to poke the message into, and then tell it that it's just got a message from some place. In this example below, it is one of the other emulators.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;telnet localhost 5554&lt;br /&gt;Trying ::1...&lt;br /&gt;telnet: connect to address ::1: Connection refused&lt;br /&gt;Trying fe80::1...&lt;br /&gt;telnet: connect to address fe80::1: Connection refused&lt;br /&gt;Trying 127.0.0.1...&lt;br /&gt;Connected to localhost.&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;Android Console: type 'help' for a list of commands&lt;br /&gt;OK&lt;br /&gt;sms send 5556 Hello!&lt;br /&gt;OK&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you've something listening out for SMS messages, it will now trigger and the two emulators can chat, if that is what you want.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-1455504243584159671?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/02/sending-sms-into-google-android.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-3008067022935624375</guid><pubDate>Mon, 02 Feb 2009 17:33:00 +0000</pubDate><atom:updated>2009-02-03T16:11:33.192+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>google android</category><title>Running multiple Android emulators</title><description>A little script to fire up multiple Google Android emulators that have their own image, i.e. can save their data separately.&lt;br /&gt;It then kills any adb server that may be running, starts a new one, and lists the running emulators.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;#! /bin/bash &lt;br /&gt;&lt;br /&gt;xterm -geometry 132x100+100+100 -sb -e bash -c '/Library/android-sdk-mac_x86-1.0_r2/tools/emulator -skin HVGA-L -data droids/droid-01.img -verbose -logcat "out"' &amp;&lt;br /&gt;xterm -geometry 132x100+200+200 -sb -e bash -c '/Library/android-sdk-mac_x86-1.0_r2/tools/emulator -skin HVGA-L -data droids/droid-02.img -verbose -logcat "out"' &amp;&lt;br /&gt;xterm -geometry 132x100+300+300 -sb -e bash -c '/Library/android-sdk-mac_x86-1.0_r2/tools/emulator -skin HVGA-L -data droids/droid-03.img -verbose -logcat "out"' &amp;&lt;br /&gt;sleep 30s&lt;br /&gt;/Library/android-sdk-mac_x86-1.0_r2/tools/adb kill-server &lt;br /&gt;/Library/android-sdk-mac_x86-1.0_r2/tools/adb start-server &lt;br /&gt;/Library/android-sdk-mac_x86-1.0_r2/tools/adb devices&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;-skin HVGA-L : 480x320, landscape, puts the emulator of the screen sideways&lt;br /&gt;&lt;br /&gt;There are other options for skin: &lt;code&gt;HVGA-P&lt;/code&gt; is default. &lt;code&gt;QVGA-L&lt;/code&gt; gives a 320x240, landscape and &lt;code&gt;QVGA-P&lt;/code&gt; is 240x320, portrait&lt;br /&gt;&lt;br /&gt;-data droids/droid-01.img : a different number for each running emulator ensures they save their data to their own area.&lt;br /&gt;&lt;br /&gt;-verbose : lots of logging information.  Can slow the emulator down to the point where they give error messages because they run things too slow...&lt;br /&gt;&lt;br /&gt;-logcat : the first rule of logcat is: no one talks about logcat.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-3008067022935624375?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/02/running-multiple-android-emulators.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-8441404121188112946</guid><pubDate>Mon, 02 Feb 2009 12:35:00 +0000</pubDate><atom:updated>2009-02-02T17:55:42.248+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>google android</category><title>Getting and building Google Android from the source code on Mac OS X</title><description>Install XCode version 3.0, available from &lt;a href="http://developer.apple.com/technology/tools.html"&gt;http://developer.apple.com/technology/tools.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Install MacPorts, available from &lt;a href="http://svn.macports.org/repository/macports/downloads/MacPorts-1.7.0/"&gt;http://svn.macports.org/repository/macports/downloads/MacPorts-1.7.0/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Open up a terminal, check /opt/local/bin is at the start of $PATH, and run&lt;br /&gt;&lt;blockquote&gt;sudo port selfupdate&lt;/blockquote&gt; Hopefully it'll say something like: &lt;blockquote&gt;Password:&lt;br /&gt;&lt;br /&gt;MacPorts base version 1.700 installed&lt;br /&gt;Downloaded MacPorts base version 1.700&lt;br /&gt;&lt;br /&gt;The MacPorts installation is not outdated so it was not updated&lt;br /&gt;&lt;/blockquote&gt;Get these packages from port, with the following command:&lt;blockquote&gt;POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg&lt;/blockquote&gt;Go make a cup of coffee, or two, as several minutes will pass, depending on your machine and download speeds, and several terminal screens full of build comments will scroll slowly by.&lt;br /&gt;&lt;br /&gt;Installing repo&lt;br /&gt;&lt;br /&gt;Go back to your home directory:  &lt;blockquote&gt;cd ~&lt;/blockquote&gt;If you don't already have one make a bin folder: &lt;blockquote&gt;mkdir bin&lt;/blockquote&gt;Make sure it's on the path: &lt;blockquote&gt;export PATH=/Users/threaded/bin:$PATH&lt;br /&gt;echo $PATH&lt;/blockquote&gt;Download the repo script: &lt;blockquote&gt;curl http://android.git.kernel.org/repo &gt;~/bin/repo&lt;/blockquote&gt;Look to see if it is executable: &lt;blockquote&gt;ls -al ~/bin/repo&lt;/blockquote&gt;Most probably it isn't so: &lt;blockquote&gt;chmod a+x ~/bin/repo&lt;/blockquote&gt;To build the Android files you're recommended to use a case-sensitive Journaled HFS+. If you don't want to go creating a partition, formatting it, all the other ball-n-chain, you can, on the Mac, create a disk image. It is recommend to be 8 GB, but more won't harm.&lt;br /&gt;&lt;br /&gt;What I did:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;launch /Applications/Utilities/Disk Utility&lt;/li&gt;&lt;li&gt;          select "New Image"&lt;/li&gt;&lt;li&gt;Save As: mydroid  (in my home directory)&lt;/li&gt;&lt;li&gt;Volume Name: mydroid&lt;br /&gt;&lt;/li&gt;&lt;li&gt;          Volume Size: 16 GB  (had to do this a couple of times before it 'took')&lt;br /&gt;&lt;/li&gt;&lt;li&gt;          Volume Format: Mac OS extended (Case-sensitive, Journaled)&lt;/li&gt;&lt;li&gt;Encryption: none&lt;/li&gt;&lt;li&gt;Partitions: single partition - Apple Partition&lt;/li&gt;&lt;li&gt;Image Format: read/write disk image&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; The OS should mount the .dmg file created, at /Volumes/mydroid, and we use this for the following work:&lt;br /&gt;&lt;blockquote&gt;cd /Volumes/mydroid&lt;/blockquote&gt;Run repo init to get the files: &lt;blockquote&gt;repo init -u git://android.git.kernel.org/platform/manifest.git&lt;/blockquote&gt;If you get a permission denied, then you've forgotten to do the chmod to repo mentioned above, like I did. ;-)&lt;br /&gt;&lt;br /&gt;After a little huff-n-puff, it'll ask for a name and email.  The name should be real, as it'll be used for attributions, and the email address needs to be to a Google account.  This doesn't have to be a Gmail address, but that's easiest.&lt;br /&gt;&lt;br /&gt;Now you can get the files: &lt;blockquote&gt;repo sync&lt;/blockquote&gt;Again this is long-winded, so there's time for yet another coffee.&lt;br /&gt;&lt;br /&gt;Now, finally you can: &lt;blockquote&gt;make&lt;/blockquote&gt;If you get: &lt;blockquote&gt;build/core/main.mk:64: ************************************************************&lt;br /&gt;build/core/main.mk:65: You are building on a case-insensitive filesystem.&lt;br /&gt;build/core/main.mk:66: Please move your source tree to a case-sensitive filesystem.&lt;br /&gt;build/core/main.mk:67: ************************************************************&lt;br /&gt;build/core/main.mk:68: *** Case-insensitive filesystems not supported.  Stop.&lt;/blockquote&gt;That'll be because you are not where you think you are, but should rather be inside a Case-Sensitive, Journaled file system. ;-)&lt;br /&gt;&lt;br /&gt;Another chance for several more cups of coffee. Lots of warning messages fly by on the terminal that don't really mean that much.&lt;br /&gt;&lt;br /&gt;You can see if it works by dragging the newly built emulator to a terminal window:&lt;br /&gt;&lt;blockquote&gt;Volumes/mydroid/out/host/darwin-x86/bin/emulator&lt;/blockquote&gt;&lt;br /&gt;which should illicit the response:&lt;br /&gt;&lt;blockquote&gt;emulator: ERROR: You did not specify a virtual machine name, and the system&lt;br /&gt;directory could not be found.&lt;br /&gt;&lt;br /&gt;If you are an Android SDK user, please use '@&lt;name&gt;' or '-vm &lt;name&gt;'&lt;br /&gt;to start a given virtual machine (see -help-vm for details).&lt;br /&gt;&lt;br /&gt;Otherwise, follow the instructions in -help-disk-images to start the emulator&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-8441404121188112946?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/02/getting-started-with-google-android-on.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-1684817934168317214</guid><pubDate>Sat, 10 Jan 2009 05:00:00 +0000</pubDate><atom:updated>2009-01-10T06:00:00.735+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>cycling</category><category domain='http://www.blogger.com/atom/ns#'>building a bicycle</category><title>Ready for the first ride</title><description>So here it is ready for it's first test ride.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0237-752992.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0237-752961.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Looks great.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0239-720970.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0239-720928.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hmm, deserve a beer for that.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-1684817934168317214?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/01/ready-for-first-ride.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-6274550824891932095</guid><pubDate>Fri, 09 Jan 2009 05:00:00 +0000</pubDate><atom:updated>2009-01-09T06:00:01.339+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>cycling</category><category domain='http://www.blogger.com/atom/ns#'>building a bicycle</category><title>Seat, attempt 2</title><description>Ah ha! I've missed out a seat.  Borrowed one from another bike for now.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0232-777641.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0232-777612.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Looks the business.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-6274550824891932095?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/01/seat-attempt-2.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-8476982518013376784</guid><pubDate>Thu, 08 Jan 2009 05:00:00 +0000</pubDate><atom:updated>2009-01-08T06:00:00.497+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>cycling</category><category domain='http://www.blogger.com/atom/ns#'>building a bicycle</category><title>Pedals</title><description>Dug out a couple of XTR pedals.  These came with one of my race bikes, but MTB racing in Denmark can be very muddy and as some off-days I fall over quite a lot, such a pedal design can fill with muck such that they become unusable.  Hence they were swapped for something 'better'.  So they're available and I shall use them on this bike for now, until I get fed up with them again.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0228-755471.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0228-755429.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Little felt washers to protect the medal / resin interface on the cranks.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0229-720593.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0229-720588.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A big Allan key to screw it home.  Pairs of pedals come in Right-hand-side and Left-hand-side pairs, with opposite thread directions.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0231-784584.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0231-784580.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And there it is. On.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0230-756675.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0230-756671.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nearly ready for a ride now, but I'll check it over, over a can of beer, to make sure I've not missed anything.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-8476982518013376784?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/01/pedals.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-3000138067815227228</guid><pubDate>Wed, 07 Jan 2009 05:00:00 +0000</pubDate><atom:updated>2009-01-07T06:00:00.755+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>cycling</category><category domain='http://www.blogger.com/atom/ns#'>building a bicycle</category><title>Adjusting the rear derailleur</title><description>The end stops at the back here were spot on too.  Just cut off the excess wire and crimped the end closed.  Wound the gears back and forth a few times whilst fine tuning on the trigger shifter.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0226-773039.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0226-773035.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So easy it is probably not worthy of a beer, but I'll have one anyway.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-3000138067815227228?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/01/adjusting-rear-derailleur.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-7229438296213520936</guid><pubDate>Tue, 06 Jan 2009 05:00:00 +0000</pubDate><atom:updated>2009-01-06T06:00:00.309+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>cycling</category><category domain='http://www.blogger.com/atom/ns#'>building a bicycle</category><title>Adjusting the front derailleur</title><description>Now the chain is on the fine tuning of the front dérailleur can be completed.  It normally only needs a little tweak to set these end stops.  Here I didn't need to do anything as it was right on the ball.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0217-739944.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0217-739940.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just spun the cog and checked the gears changed OK.&lt;br /&gt;&lt;br /&gt;As it is otherwise another step completed it is a good enough excuse to have a beer though.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-7229438296213520936?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/01/adjusting-front-derailleur.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-4531734269238070045</guid><pubDate>Mon, 05 Jan 2009 05:00:00 +0000</pubDate><atom:updated>2009-01-05T06:00:00.300+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>cycling</category><category domain='http://www.blogger.com/atom/ns#'>building a bicycle</category><title>Seat</title><description>Here's a seat post clamp.  I don't like quick-release seat-post clamps as they're only helpful to thieves who want to steal your seat.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0210-700448.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0210-700383.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;De-bagged!  There is a little lip on the inside so it will only go on the seat tube one way up.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0211-767645.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0211-767640.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A little anti-stick paste wiped on the inside and on the seat-tube it goes.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0212-732669.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0212-732665.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But now realise I have no seat.  Hmm.  Have to think about what to do here.  Shall have a beer.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-4531734269238070045?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/01/seat.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-7680260358483706507</guid><pubDate>Sun, 04 Jan 2009 05:00:00 +0000</pubDate><atom:updated>2009-01-04T20:31:43.276+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>cycling</category><category domain='http://www.blogger.com/atom/ns#'>building a bicycle</category><title>Install the chain</title><description>A nice SRAM 9 speed chain - PC981&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0201-764942.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0201-764584.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just lay it across the front, remembering to feed it through the front dérailleur.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0203-742471.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0203-742437.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Lay it across the back and feed it through the rear dérailleur.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0204-715234.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0204-715200.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The magic link.  I like magic links as I like to take my chain off quite often and clean it in a wax bath.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0205-790304.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0205-790136.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The chain is not seated right as the dérailleur needs a little fine adjustment.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0207-761332.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0207-761300.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And there we have it.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0209-735570.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0209-735537.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Another beer is called for now.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-7680260358483706507?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/01/install-chain.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-8757371129744174017</guid><pubDate>Sat, 03 Jan 2009 13:29:00 +0000</pubDate><atom:updated>2009-01-03T14:55:50.787+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>cycling</category><category domain='http://www.blogger.com/atom/ns#'>building a bicycle</category><title>Put the tires on</title><description>Here's a couple of spare inner tubes that have been laying about for longer than I care to remember.   They were part of prizes at races ages ago,  and I can't remember why they've not been used.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0183-788239.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0183-788235.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And a couple of spiked tires will be perfect for riding on the ice.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0184-761858.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0184-761854.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Oh dear, now I know why the first tube hasn't been used, and hence languishing at the back of the shelf for so long.   The valve is some wierdness for a very deep rim and doesn't have a thread for a nut to hold it in place.  Oops, that's not good.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0185-728638.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0185-728634.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Oh dear, now I know why the second tube hasn't been used, and hence languishing at the back of the shelf for so long.   It's a schrader valve, and hence way too big for the hole in the rims of any wheels I have.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0186-796707.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0186-796703.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Right, now I know why they were prizes, they were boobie prizes!  I do hope the thought of my reaction on opening the boxes made them happy.   So those two tubes have gone to the charity shop, no doubt to entertain someone else in the near future.  I've no use for them.  Now well, I'll just have to go and get a pair of tubes from the stock I keep for my racing bikes.  These Bontrager are sweet tubes.  I forget who actually manufactures them.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0187-769825.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0187-769795.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A little air in them to make sure they fit, and don't already have a puncture.  The valve stem looks a little short, but it's just because the tube is sat above the rim.   I hope.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0189-732565.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0189-732489.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fit the tires.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0190-796207.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0190-796203.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pump them up a little harder than what I use for racing.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0195-763963.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0195-763960.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;See the valve comes through now.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0196-732973.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0196-732969.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And onto the bike go the wheels.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0198-797359.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0198-797327.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Looks even more like a bicyce now.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0200-750216.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0200-750183.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Time for a beer.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-8757371129744174017?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2009/01/put-tires-on.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-8359368024749335968</guid><pubDate>Thu, 18 Dec 2008 05:00:00 +0000</pubDate><atom:updated>2008-12-18T06:00:00.947+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>cycling</category><category domain='http://www.blogger.com/atom/ns#'>building a bicycle</category><title>Wiring up the rear derailleur</title><description>Neatly trim the outer shield leaving approximately 10mm showing&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0177-753904.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0177-753896.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thread on the sealing bellows&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0179-724703.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0179-724696.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thread around to the attaching screw.  Use the 'third hand' to pull it all taught.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0180-790336.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0180-790327.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;At full pull, set the limit screw.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0182-740110.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0182-740029.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So easy, I wonder if I even deserve a beer for that.  I'll have one whilst I think about it.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-8359368024749335968?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2008/12/wiring-up-rear-derailleur.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-3411709474686654360</guid><pubDate>Wed, 17 Dec 2008 05:00:00 +0000</pubDate><atom:updated>2008-12-17T07:34:52.567+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>cycling</category><category domain='http://www.blogger.com/atom/ns#'>building a bicycle</category><title>Handlebar grips</title><description>As the brake housings are blue I sourced some blue handlebar grips.&lt;br /&gt;The smallest touch of liquid soap is enough to help slip them on.  I like them to twist a little under my hands.  Some people hate it, and if you do, you're better using a little alcohol instead of soap.  I push them far enough on so there is a little bit of tube showing at the end. I shall be putting bar ends on later, if I can find some nice blue ones.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0172-722461.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0172-722416.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's looking so good, I think I'll have a beer.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-3411709474686654360?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2008/12/handlebar-grips.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-14924660.post-6255322228961986157</guid><pubDate>Tue, 16 Dec 2008 05:00:00 +0000</pubDate><atom:updated>2008-12-16T06:00:00.316+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>cycling</category><category domain='http://www.blogger.com/atom/ns#'>building a bicycle</category><title>Wiring up the front derailleur</title><description>Out comes the front dérailleur packing spacer.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0166-723608.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0166-723556.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tug the cable taught, measure up and, with a sharp knife, cut off the excess cover.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0173-750491.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0173-750475.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Remember to have the 'third hand' to hand, so to speak.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0168-723431.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0168-723425.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On with the shield bellows and thread through the stop screw.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0174-778684.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0174-778670.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Check, using the trigger-shifter that everything works.  Then torque up.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.threaded.com/uploaded_images/SANY0176-725996.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://www.threaded.com/uploaded_images/SANY0176-725982.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Whilst holding a beer in the other hand of course.&lt;div class="blogger-post-footer"&gt;&lt;!-- AddThis Button for Post BEGIN --&gt;
&lt;div&gt;&lt;a expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&amp;amp;url=" + data:post.url + "&amp;amp;title=" + data:post.title' target='_blank' title='Bookmark and Share'&gt;&lt;img src='http://s9.addthis.com/button1-share.gif' width='125' height='16' style='border: 0px; padding: 0px' alt='Bookmark and Share' /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!-- AddThis Button for Post END --&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14924660-6255322228961986157?l=www.threaded.com%2Fblog.htm' alt='' /&gt;&lt;/div&gt;</description><link>http://www.threaded.com/2008/12/wiring-up-front-derailleur.html</link><author>noreply@blogger.com (threaded)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item></channel></rss>