tag:blogger.com,1999:blog-149246602010-05-09T22:31:59.841+02:00Threadeds' Eclectic Blog'Tis only threadeds thoughts, comments &
miscellaneous abuse about, well, anything really.threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.comBlogger303125tag:blogger.com,1999:blog-14924660.post-78981298650462720772010-05-09T22:31:00.001+02:002010-05-09T22:31:59.911+02:00This blog has moved<br /> This blog is now located at
http://threadeds.blogspot.com/.<br /> You will be automatically
redirected in 30 seconds or you may click <a
href='http://threadeds.blogspot.com/'>here</a>.<br
/><br /> For feed subscribers, please update your feed
subscriptions to<br />
http://threadeds.blogspot.com/feeds/posts/default.<br />
<div class="blogger-post-footer"><!-- AddThis Button for
Post BEGIN -->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-7898129865046272077?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-10206969435852864282009-10-19T17:58:00.003+02:002009-10-27T14:59:11.015+01:00Manually start that background tasks thingy in XPSome 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:<br /><br />Rundll32.exe
advapi32.dll,ProcessIdleTasks<div
class="blogger-post-footer"><!-- AddThis Button for Post BEGIN
-->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-1020696943585286428?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-64421764840288685112009-10-19T13:36:00.004+02:002009-10-19T14:01:14.623+02:00An XSLT to convert an XML file into a CSV<code><br /><xsl:stylesheet
version="1.0 <br /><br />
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"<br /><br
/><!-- IF_THE_PIVOT_IS_A_SUBTYPE_IT_NEEDS_TO_GO_IN_HERE
--><br /><br /> ><br /><br />
<br /><xsl:output method="text"/>" <br
/><br /> <br
/>    <xsl:template
match="//PIVOT_GOES_IN_HERE"><br /><br
/>        <xsl:apply-templates
select="*" /><br /><br
/>        <xsl:text>&#x0D;&#x0A;</xsl:text><br
/><br
/>    </xsl:template>"
<br /><br /> <br /><br
/>    <xsl:template
match="//PIVOT_GOES_IN_HERE//*"><br /><br
/>        <xsl:choose><br
/><br
/>            <xsl:when
test="count(child::*) > 0"><br /><br
/>                <xsl:apply-templates
select="*" /><br /><br
/>            </xsl:when><br
/><br
/>            <xsl:otherwise><br
/><br
/>                <xsl:text>"</xsl:text><br
/><br
/>                <xsl:value-of
select="."/><br /><br
/>                <xsl:text>"</xsl:text><br
/><br
/>            </xsl:otherwise><br
/><br
/>        </xsl:choose><br
/><br
/>        <xsl:if
test="position() != last()"><br /><br
/>            <xsl:text>,</xsl:text><br
/><br
/>        </xsl:if><br
/><br
/>    </xsl:template><br
/><br /> <br /></xsl:stylesheet><br
/><br /><br /></code><div
class="blogger-post-footer"><!-- AddThis Button for Post BEGIN
-->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-6442176484028868511?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-90886757925368221852009-10-12T20:13:00.001+02:002009-10-12T20:15:07.951+02:00In Memory of Common SenseToday 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:<br /><br />- knowing
when to come in out of the rain;<br /><br />- the early
bird gets the worm;<br /><br />- life isn’t always fair;
and<br /><br />- maybe it was my fault.<br /><br
/>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).<br /><br />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.<br /><br
/>Common Sense lost ground when parents attacked teachers for
doing the job that they themselves had failed to do in disciplining
their unruly children.<br /><br />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. <br /><br />Common Sense lost the will to live
as the churches became businesses and criminals received better
treatment than their victims.<br /><br />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.<br
/><br />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.<br /><br />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.”<br /><br />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.”<br /><br />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.<div
class="blogger-post-footer"><!-- AddThis Button for Post BEGIN
-->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-9088675792536822185?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com1tag:blogger.com,1999:blog-14924660.post-26893342604498813482009-09-14T06:08:00.003+02:002009-09-14T06:27:00.884+02:00Make a 2GB SD card usable for an Oregon Scientific
ATC2KFormatting 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.<br /><br />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<br /><span
style="font-weight: bold;">ls /dev/rdisk?</span><br
/><br />Assuming you discovered the card appears at rdisk6s1
from the command above.<br />Create a new FAT16 MS-DOS file
system<br /><span style="font-weight: bold;">newfs_msdos
-v VOLUME_NAME -F 16 /dev/rdisk6s1</span><br /><br
/>Now create a partition table<br /><span
style="font-weight: bold;">diskutil partitionDisk
/Volumes/UNTITLED 1 MBRFormat "MS-DOS FAT16" "UNTITLED"
2000M</span><br /><br />Now the card will appear on
the desktop at UNTITLED.<br /><br />Remember to <span
style="font-weight:bold;">eject</span> from the desktop, so
it can be used.<div class="blogger-post-footer"><!-- AddThis
Button for Post BEGIN -->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-2689334260449881348?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-70074073609781031492009-08-24T09:49:00.004+02:002009-08-24T10:17:55.586+02:00Ritter Classic 2009The <a
href="http://www.ritterclassic.dk/">Ritter Classic</a> 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.<br /><br />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 <a
href="http://tv2sport.dk/">TV2 Sport</a> amongst others. So
I shall ask for some links when I find them.<br /><br
/>My statistics:<br />118.8km in 4 hours 1 minute and 47
seconds, <br />Speed: averaged 29.5km/h with a maximum on
78.8km/h<br />Heart rate: average 140 bpm maximum 175 bpm<br
/>Cadence: average 83 rpm with a maximum of 125 rpm.<br
/><br />My route on <a
href="http://connect.garmin.com/activity/11806570">Garmin
Connect</a><br /><br />Link to <a
href="http://www.ritterclassic.dk/documents/00028.htm">Google
Earth kml file</a>.<br /><br />The <a
href="http://results.ultimate.dk/liveappc/front/standings.php?eventid=665&template=uss.htm&Distance=1&Category=S_M&TimingPoint=Finish&submit=Vis+Top+50+liste">Top
50 result list</a><div
class="blogger-post-footer"><!-- AddThis Button for Post BEGIN
-->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-7007407360978103149?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-55362461746794622362009-02-09T12:49:00.002+01:002009-02-09T13:41:38.081+01:00Minimal code to perform logging in Google AndroidTo produce log message in Google Android is
really quite easy.<br /><br />At the top of the file in
the imports section add: <code>import
android.util.Log;</code><br /><br />And then in
your code you add <code>Log.d(TAG,message);</code><br
/><br />Where <code>TAG</code> and
<code>message</code> are strings.<br /><br
/>It is considered good form that the TAG is a constant for the
class.<br /><br />So I put something like this at the top
of the class <code>private static final String TAG =
Foo.class.getName();</code><br /><br />There are
several levels of logging and in level order these are
<code>Log.v(), Log.d(), Log.i(), Log.w()</code> and
<code>Log.e()</code> <br /><br />Where<br
/>v = verbose<br />d = debug<br />i = info<br
/>w = warning<br />e = error<br /><br />The
logging is performed by LogCat which can be accessed via the adb tool
that comes with the Android developer kit.<br /><br
/><code>tools/adb logcat</code> will start logging at
the <code>INFO</code> level as that is the default.<br
/><br /><code>tools/adb logcat *:V</code> will
log everything at <code>VERBOSE</code> level.<br
/><br /><code>tools/adb logcat Wibble:W</code>
will filter most things and only show those log statements with the
tag <code>Wibble</code> at the
<code>WARNING</code> level.<div
class="blogger-post-footer"><!-- AddThis Button for Post BEGIN
-->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-5536246174679462236?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com6tag:blogger.com,1999:blog-14924660.post-61374316789089569512009-02-05T16:13:00.002+01:002009-02-05T16:32:06.532+01:00Minimal code to display a Toast message in Google
AndroidToast 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.<br /><br
/><pre><br /> // show the frost pist message using the
Toast widget<br /> Toast toast = Toast.makeText(context, "Woo
hoo, toast", Toast.LENGTH_LONG);<br /> toast.show();<br
/></pre><br /><br />I find the
<code>context</code> is normally part of the method
signature. <br /><code>Toast.LENGTH_LONG</code>
keeps the message up for a few seconds.<br /><br />There
is a <code>Toast.LENGTH_SHORT</code> if you don't want
the message to hang about for too long.<div
class="blogger-post-footer"><!-- AddThis Button for Post BEGIN
-->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-6137431678908956951?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-73315356960600147792009-02-05T15:35:00.004+01:002009-02-05T16:03:26.519+01:00Minimal code to retreive a GPS location in Google
AndroidHere I describe the minimal code to retrieve a
GPS location in the Google Android OS.<br /><br />First
up, a GPS location listener.<br /><pre><br />class
GPSLocationListener implements LocationListener {<br /><br
/> public void onLocationChanged(Location location) { <br />
double latitude = location.getLatitude();<br /> double
longitude = location.getLongitude();<br /> }<br /><br
/> public void onProviderDisabled(String provider) {<br />
// TODO Auto-generated method stub<br /> }<br /><br
/> public void onProviderEnabled(String provider) {<br /> //
TODO Auto-generated method stub <br /> }<br /><br
/> public void onStatusChanged(String provider, int status, Bundle
extras) {<br /> // TODO Auto-generated method stub <br />
} <br />}<br /></pre>Somewhere else, probably in
the <code>Activity</code> you need to tie this listener
in. Here is an <code>onCreate</code> from a minimal
application's <code>Activity</code>.<br
/><pre><br /> /** Called when the activity is first
created. */<br /> @Override<br /> public void
onCreate(Bundle savedInstanceState) {<br /> <br />
super.onCreate(savedInstanceState);<br /><br />
setContentView(R.layout.main);<br /> <br />
GPSLocationListener gpsLocationListener = new
GPSLocationListener();<br /> <br /> LocationManager lm =
(LocationManager)getSystemService(Context.LOCATION_SERVICE);<br
/><br /> long minTime = 600000;<br /> float
minDistance = 10;<br /> <br />
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime,
minDistance, gpsLocationListener);<br /> <br /> }<br
/></pre><code>minTime</code> 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.<br /><br /><code>minDistance</code> is
a request to trigger the listener when the device has moved by this
distance.<br /><br />You also need
<code><uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission><br
/></code> in the applications
<code>AndroidManifest.xml</code> file.<div
class="blogger-post-footer"><!-- AddThis Button for Post BEGIN
-->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-7331535696060014779?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-75389768955220876102009-02-05T15:09:00.005+01:002009-02-05T16:07:44.610+01:00Minimal code to send a SMS from Google AndroidA minimal code for sending a SMS message from
the Google Android OS.<br /><br />This code assumes
you're in an <code>Activity</code>, which is where it
gets <code>this</code>:<br /><br
/><pre><br /> PendingIntent pendingIntent =
PendingIntent.getBroadcast(this, 0, new Intent(), 0)<br
/><br /> SmsManager smsManager =
SmsManager.getDefault();<br /> <br /> String receiver =
"5556"; // the phone number of the device to send the SMS message
to.<br /><br /> String message = "This is the SMS message
I want to sending";<br /> <br />
smsManager.sendTextMessage(receiver, null, message, pendingIntent,
null);<br /></pre><br /><br />What it
requires from <code>this</code> is actually just the
interface to the <code>Context</code>.<br /><br
/>The <code><uses-permission
android:name="android.permission.SEND_SMS"></uses-permission></code>
is also required your build's
<code>AndroidManifest.xml</code> file<div
class="blogger-post-footer"><!-- AddThis Button for Post BEGIN
-->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-7538976895522087610?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-41430563917349856922009-02-04T14:01:00.003+01:002009-03-31T07:39:46.370+02:00HønsekødsuppeHønsekødsuppe til 4 personer<br /><br
/>En høne på en og en halv kilo, eller halvanden kilo passer
bedre.<br />En spiseske salt<br />Cirka to liter
vand<br />To eller tre gulerødder<br />Et kvart
selleri<br />En persillerod<br />En porre<br />Et
løg<br />Fire hele nelliker<br /><br />Stik
nellikerne ind i løget.<br />Tag bladerne fra porren og brug
dem til suppevisk<br />Skær grøntsager i tern.<br />Kom
alt i gryden, untagen kyllingen.<br />Vær sikker på at hønen er
død, en stor hammer kan hjælpe dig her.<br />Pluk hønen, og
fjern indvoldene.<br />Kom nu kyllingen i gryden.<br
/>Kog i to timer ved svag varme.<br />Omrøres med jævne
mellem rum.<br />Salt og peber efter ønske.<br /><br
/>Server og spis op, uden hyl og skrig!<br /><br
/><a
href="http://www.berlingske.dk/article/20090331/danmark/703300093/">Avis
artikel</a><div class="blogger-post-footer"><!--
AddThis Button for Post BEGIN -->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-4143056391734985692?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-52475326449083517172009-02-03T19:07:00.004+01:002009-02-03T19:45:05.694+01:00Telling the android emulator where you are.Once <code>telnet</code>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.<br /><br
/>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.<br /><br />So to fix a position like 55.623131N
11.997169 becomes 11.997169 55.623131<br /><br
/><code><br />telnet localhost 5554<br />Trying
::1...<br />telnet: connect to address ::1: Connection
refused<br />Trying fe80::1...<br />telnet: connect to
address fe80::1: Connection refused<br />Trying
127.0.0.1...<br />Connected to localhost.<br />Escape
character is '^]'.<br />Android Console: type 'help' for a list
of commands<br />OK<br />geo fix 11.997169
55.623131<br />OK<br /></code><br />Note it
uses proper decimal, such that 55° 35' 10" becomes 55.58611111.<br
/><br />For extra fun the <code>geo</code>
command can even take a real <code>nmea</code>
message<br /><code><br />geo nmea
$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47<br
/>OK<br /></code><br />And if you tell the
mapping application in the emulator to 'My Location', off the map
will fly.<div class="blogger-post-footer"><!-- AddThis
Button for Post BEGIN -->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-5247532644908351717?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-14555042435841596712009-02-03T17:37:00.002+01:002009-02-03T18:46:15.189+01:00Sending an SMS into a Google Android emulator.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...<br /><br />What you do is
<code>telnet</code> 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.<br /><br /><code><br />telnet
localhost 5554<br />Trying ::1...<br />telnet: connect to
address ::1: Connection refused<br />Trying fe80::1...<br
/>telnet: connect to address fe80::1: Connection refused<br
/>Trying 127.0.0.1...<br />Connected to localhost.<br
/>Escape character is '^]'.<br />Android Console: type
'help' for a list of commands<br />OK<br />sms send 5556
Hello!<br />OK<br /></code><br /><br
/>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.<div class="blogger-post-footer"><!-- AddThis Button
for Post BEGIN -->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-1455504243584159671?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-30080670229356243752009-02-02T18:33:00.005+01:002009-02-03T16:11:33.192+01:00Running multiple Android emulatorsA little script to fire up multiple Google
Android emulators that have their own image, i.e. can save their data
separately.<br />It then kills any adb server that may be
running, starts a new one, and lists the running emulators.<br
/><br /><code><br /><br />#! /bin/bash
<br /><br />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"' &<br
/>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"' &<br
/>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"' &<br
/>sleep 30s<br
/>/Library/android-sdk-mac_x86-1.0_r2/tools/adb kill-server <br
/>/Library/android-sdk-mac_x86-1.0_r2/tools/adb start-server
<br />/Library/android-sdk-mac_x86-1.0_r2/tools/adb
devices<br /><br /></code><br /><br
/>-skin HVGA-L : 480x320, landscape, puts the emulator of the
screen sideways<br /><br />There are other options for
skin: <code>HVGA-P</code> is default.
<code>QVGA-L</code> gives a 320x240, landscape and
<code>QVGA-P</code> is 240x320, portrait<br
/><br />-data droids/droid-01.img : a different number for
each running emulator ensures they save their data to their own
area.<br /><br />-verbose : lots of logging information.
Can slow the emulator down to the point where they give error
messages because they run things too slow...<br /><br
/>-logcat : the first rule of logcat is: no one talks about
logcat.<div class="blogger-post-footer"><!-- AddThis Button
for Post BEGIN -->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-3008067022935624375?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-84414041211881129462009-02-02T13:35:00.009+01:002009-02-02T17:55:42.248+01:00Getting and building Google Android from the source
code on Mac OS XInstall XCode version 3.0, available from <a
href="http://developer.apple.com/technology/tools.html">http://developer.apple.com/technology/tools.html</a>.<br
/><br />Install MacPorts, available from <a
href="http://svn.macports.org/repository/macports/downloads/MacPorts-1.7.0/">http://svn.macports.org/repository/macports/downloads/MacPorts-1.7.0/</a><br
/><br />Open up a terminal, check /opt/local/bin is at the
start of $PATH, and run<br /><blockquote>sudo port
selfupdate</blockquote> Hopefully it'll say something like:
<blockquote>Password:<br /><br />MacPorts base
version 1.700 installed<br />Downloaded MacPorts base version
1.700<br /><br />The MacPorts installation is not
outdated so it was not updated<br /></blockquote>Get
these packages from port, with the following
command:<blockquote>POSIXLY_CORRECT=1 sudo port install gmake
libsdl git-core gnupg</blockquote>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.<br /><br />Installing repo<br
/><br />Go back to your home directory: <blockquote>cd
~</blockquote>If you don't already have one make a bin folder:
<blockquote>mkdir bin</blockquote>Make sure it's on the
path: <blockquote>export PATH=/Users/threaded/bin:$PATH<br
/>echo $PATH</blockquote>Download the repo script:
<blockquote>curl http://android.git.kernel.org/repo
>~/bin/repo</blockquote>Look to see if it is executable:
<blockquote>ls -al ~/bin/repo</blockquote>Most probably
it isn't so: <blockquote>chmod a+x
~/bin/repo</blockquote>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.<br /><br
/>What I did:<br /><ul><li>launch
/Applications/Utilities/Disk Utility</li><li> select "New
Image"</li><li>Save As: mydroid (in my home
directory)</li><li>Volume Name: mydroid<br
/></li><li> Volume Size: 16 GB (had to do this a
couple of times before it 'took')<br /></li><li>
Volume Format: Mac OS extended (Case-sensitive,
Journaled)</li><li>Encryption:
none</li><li>Partitions: single partition - Apple
Partition</li><li>Image Format: read/write disk
image<br /></li></ul> The OS should mount the .dmg
file created, at /Volumes/mydroid, and we use this for the following
work:<br /><blockquote>cd
/Volumes/mydroid</blockquote>Run repo init to get the files:
<blockquote>repo init -u
git://android.git.kernel.org/platform/manifest.git</blockquote>If
you get a permission denied, then you've forgotten to do the chmod to
repo mentioned above, like I did. ;-)<br /><br />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.<br /><br />Now you can get
the files: <blockquote>repo sync</blockquote>Again this
is long-winded, so there's time for yet another coffee.<br
/><br />Now, finally you can:
<blockquote>make</blockquote>If you get:
<blockquote>build/core/main.mk:64:
************************************************************<br
/>build/core/main.mk:65: You are building on a case-insensitive
filesystem.<br />build/core/main.mk:66: Please move your source
tree to a case-sensitive filesystem.<br
/>build/core/main.mk:67:
************************************************************<br
/>build/core/main.mk:68: *** Case-insensitive filesystems not
supported. Stop.</blockquote>That'll be because you are not
where you think you are, but should rather be inside a
Case-Sensitive, Journaled file system. ;-)<br /><br
/>Another chance for several more cups of coffee. Lots of warning
messages fly by on the terminal that don't really mean that
much.<br /><br />You can see if it works by dragging the
newly built emulator to a terminal window:<br
/><blockquote>Volumes/mydroid/out/host/darwin-x86/bin/emulator</blockquote><br
/>which should illicit the response:<br
/><blockquote>emulator: ERROR: You did not specify a virtual
machine name, and the system<br />directory could not be
found.<br /><br />If you are an Android SDK user, please
use '@<name>' or '-vm <name>'<br />to start a given
virtual machine (see -help-vm for details).<br /><br
/>Otherwise, follow the instructions in -help-disk-images to start
the emulator</blockquote><div
class="blogger-post-footer"><!-- AddThis Button for Post BEGIN
-->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-8441404121188112946?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com2tag:blogger.com,1999:blog-14924660.post-16848179341683172142009-01-10T06:00:00.003+01:002009-01-10T06:00:00.735+01:00Ready for the first rideSo here it is ready for it's first test
ride.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0237-752992.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0237-752961.JPG"
alt="" border="0" /></a><br /><br />Looks
great.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0239-720970.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0239-720928.JPG"
alt="" border="0" /></a><br /><br />Hmm, deserve
a beer for that.<div class="blogger-post-footer"><!--
AddThis Button for Post BEGIN -->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-1684817934168317214?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com6tag:blogger.com,1999:blog-14924660.post-62745508248919320952009-01-09T06:00:00.002+01:002009-01-09T06:00:01.339+01:00Seat, attempt 2Ah ha! I've missed out a seat. Borrowed one from
another bike for now.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0232-777641.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0232-777612.JPG"
alt="" border="0" /></a><br /><br />Looks the
business.<div class="blogger-post-footer"><!-- AddThis
Button for Post BEGIN -->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-6274550824891932095?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-84769825180133767842009-01-08T06:00:00.002+01:002009-01-08T06:00:00.497+01:00PedalsDug 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.<br
/><a onblur="try {parent.deselectBloggerImageGracefully();}
catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0228-755471.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0228-755429.JPG"
alt="" border="0" /></a><br /><br />Little felt
washers to protect the medal / resin interface on the cranks.<br
/><a onblur="try {parent.deselectBloggerImageGracefully();}
catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0229-720593.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0229-720588.JPG"
alt="" border="0" /></a><br /><br />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.<br
/><a onblur="try {parent.deselectBloggerImageGracefully();}
catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0231-784584.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0231-784580.JPG"
alt="" border="0" /></a><br /><br />And there it
is. On.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0230-756675.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0230-756671.JPG"
alt="" border="0" /></a><br /><br />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.<div
class="blogger-post-footer"><!-- AddThis Button for Post BEGIN
-->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-8476982518013376784?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-30001380678152272282009-01-07T06:00:00.001+01:002009-01-07T06:00:00.755+01:00Adjusting the rear derailleurThe 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.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0226-773039.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0226-773035.JPG"
alt="" border="0" /></a><br /><br />So easy it
is probably not worthy of a beer, but I'll have one anyway.<div
class="blogger-post-footer"><!-- AddThis Button for Post BEGIN
-->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-3000138067815227228?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-72294382962135209362009-01-06T06:00:00.001+01:002009-01-06T06:00:00.309+01:00Adjusting the front derailleurNow 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.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0217-739944.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0217-739940.JPG"
alt="" border="0" /></a><br /><br />Just spun
the cog and checked the gears changed OK.<br /><br />As
it is otherwise another step completed it is a good enough excuse to
have a beer though.<div class="blogger-post-footer"><!--
AddThis Button for Post BEGIN -->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-7229438296213520936?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-45317342692380700452009-01-05T06:00:00.002+01:002009-01-05T06:00:00.300+01:00SeatHere'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.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0210-700448.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0210-700383.JPG"
alt="" border="0" /></a><br /><br />De-bagged!
There is a little lip on the inside so it will only go on the seat
tube one way up.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0211-767645.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0211-767640.JPG"
alt="" border="0" /></a><br /><br />A little
anti-stick paste wiped on the inside and on the seat-tube it
goes.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0212-732669.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0212-732665.JPG"
alt="" border="0" /></a><br /><br />But now
realise I have no seat. Hmm. Have to think about what to do here.
Shall have a beer.<div class="blogger-post-footer"><!--
AddThis Button for Post BEGIN -->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-4531734269238070045?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-76802603584837065072009-01-04T06:00:00.003+01:002009-01-04T20:31:43.276+01:00Install the chainA nice SRAM 9 speed chain - PC981<br
/><a onblur="try {parent.deselectBloggerImageGracefully();}
catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0201-764942.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0201-764584.JPG"
alt="" border="0" /></a><br /><br />Just lay it
across the front, remembering to feed it through the front
dérailleur.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0203-742471.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0203-742437.JPG"
alt="" border="0" /></a><br /><br />Lay it
across the back and feed it through the rear dérailleur.<br
/><a onblur="try {parent.deselectBloggerImageGracefully();}
catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0204-715234.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0204-715200.JPG"
alt="" border="0" /></a><br /><br />The magic
link. I like magic links as I like to take my chain off quite often
and clean it in a wax bath.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0205-790304.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0205-790136.JPG"
alt="" border="0" /></a><br /><br />The chain is
not seated right as the dérailleur needs a little fine
adjustment.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0207-761332.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0207-761300.JPG"
alt="" border="0" /></a><br /><br />And there we
have it.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0209-735570.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0209-735537.JPG"
alt="" border="0" /></a><br /><br />Another beer
is called for now.<div class="blogger-post-footer"><!--
AddThis Button for Post BEGIN -->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-7680260358483706507?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0tag:blogger.com,1999:blog-14924660.post-87573711297441740172009-01-03T14:29:00.003+01:002009-01-03T14:55:50.787+01:00Put the tires onHere'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.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0183-788239.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0183-788235.JPG"
alt="" border="0" /></a><br /><br />And a couple
of spiked tires will be perfect for riding on the ice.<br
/><a onblur="try {parent.deselectBloggerImageGracefully();}
catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0184-761858.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0184-761854.JPG"
alt="" border="0" /></a><br /><br />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.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0185-728638.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0185-728634.JPG"
alt="" border="0" /></a><br /><br />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.<br
/><a onblur="try {parent.deselectBloggerImageGracefully();}
catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0186-796707.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0186-796703.JPG"
alt="" border="0" /></a><br /><br />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.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0187-769825.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0187-769795.JPG"
alt="" border="0" /></a><br /><br />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.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0189-732565.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0189-732489.JPG"
alt="" border="0" /></a><br /><br />Fit the
tires.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0190-796207.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0190-796203.JPG"
alt="" border="0" /></a><br /><br />Pump them up
a little harder than what I use for racing.<br /><a
onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0195-763963.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0195-763960.JPG"
alt="" border="0" /></a><br /><br />See the
valve comes through now.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0196-732973.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0196-732969.JPG"
alt="" border="0" /></a><br /><br />And onto the
bike go the wheels.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0198-797359.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0198-797327.JPG"
alt="" border="0" /></a><br /><br />Looks even
more like a bicyce now.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0200-750216.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0200-750183.JPG"
alt="" border="0" /></a><br /><br />Time for a
beer.<div class="blogger-post-footer"><!-- AddThis Button
for Post BEGIN -->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-8757371129744174017?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com2tag:blogger.com,1999:blog-14924660.post-83593680247493359682008-12-18T06:00:00.000+01:002008-12-18T06:00:00.947+01:00Wiring up the rear derailleurNeatly trim the outer shield leaving
approximately 10mm showing<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0177-753904.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0177-753896.JPG"
alt="" border="0" /></a><br /><br />Thread on
the sealing bellows<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0179-724703.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0179-724696.JPG"
alt="" border="0" /></a><br /><br />Thread
around to the attaching screw. Use the 'third hand' to pull it all
taught.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0180-790336.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0180-790327.JPG"
alt="" border="0" /></a><br /><br />At full
pull, set the limit screw.<br /><a onblur="try
{parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0182-740110.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0182-740029.JPG"
alt="" border="0" /></a><br /><br />So easy, I
wonder if I even deserve a beer for that. I'll have one whilst I
think about it.<div class="blogger-post-footer"><!-- AddThis
Button for Post BEGIN -->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-8359368024749335968?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com2tag:blogger.com,1999:blog-14924660.post-34117094746866543602008-12-17T06:00:00.001+01:002008-12-17T07:34:52.567+01:00Handlebar gripsAs the brake housings are blue I sourced some
blue handlebar grips.<br />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.<br /><a
onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"
href="http://www.threaded.com/uploaded_images/SANY0172-722461.JPG"><img
style="cursor: pointer; width: 320px; height: 239px;"
src="http://www.threaded.com/uploaded_images/SANY0172-722416.JPG"
alt="" border="0" /></a><br /><br />It's looking
so good, I think I'll have a beer.<div
class="blogger-post-footer"><!-- AddThis Button for Post BEGIN
-->
<div><a
expr:href='"http://www.addthis.com/bookmark.php?pub=threaded&url="
+ data:post.url + "&title=" + data:post.title'
target='_blank' title='Bookmark and Share'><img
src='http://s9.addthis.com/button1-share.gif' width='125' height='16'
style='border: 0px; padding: 0px' alt='Bookmark and Share'
/></a></div>
<!-- AddThis Button for Post END
--><img width='1' height='1'
src='https://blogger.googleusercontent.com/tracker/14924660-3411709474686654360?l=www.threaded.com%2Fblog.htm'
alt='' /></div>threadedhttp://www.blogger.com/profile/14939293458902056129noreply@blogger.com0