Tuesday, March 27, 2007

Tire swag!

Right now I'm running Anakees on my 1150. Good road tires. I will buy another pair. But with spring (more or less) here, I want to get some practice riding the 1150 off-road, since I'll certainly be on dirt in Alaska and Canada. So I bought some Continental TKC80s, knobby tires capable of both dirt and street. Throw in a tire pressure monitor (hey Mom & Dad — it's safety gear!) and some bling tire irons from Motion Pro, and it's Christmas in, uh, March.

It's pretty funny how the tires were "packaged." The SmarTire pressure monitor and tires were both delivered today by UPS, but by two different trucks. When the first truck gave me the monitor, I asked the UPS guy if there was another package. Maybe a big one? He said: "Yeah, you the guy with the tires?" Yeah, that's me.

Huh. Wonder how he knew they were tires. Must be in a big box that says TiresUnlimited.com in big letters or something.

Nope:


I got a pretty good kick out of that. Installation this weekend, if I'm not too busy with work.

The other pair of tires are Pirelli MT21s for my DRZ400.

Saturday, March 24, 2007

Itinerary

Well, the first iteration anyhow. It'll surely change. But here's the idea. Times given are rough dates of arrival.

7/15 — OBX
7/21 — Wilmington, NC
7/23 — Sarasota
7/25 — Key West
8/02 — Denver via Texas & New Mexico
8/13 — Seattle
8/17 — Whitehorse
8/18 — Fairbanks
8/19 — Prudhoe Bay
9/11 — Cambridge, MA

A bit about me

Me, slightly hungoverHello. Welcome to my blog. I've never done a blog before. But then I haven't really had much of a reason to in the past five years, and before that .... Well, before that I'm not sure the word blog had been coined yet. That's me to the right, looking grumpy and maybe a bit hungover.

The reason I haven't had too much to blog about in the past five years is because I've been in grad school. Working my ass off to get a PhD in astrophysics from MIT. At this point it's been so long and grueling that I sometimes forget why I decided to go down this road in the first place. As a snappy comeback when someone questions my credentials? It does sound a bit silly. Of course, the real reason is because I've always been fascinated with space — both the mystery of what's out there and the adventure of human space flight. I certainly wouldn't mind going up there someday myself.

Anyhow, the past five years have been hard. But with only a few months remaining (holy crap! so much to do!), the end is in sight. And I need a vacation. A long and awesome vacation. Hence this trip.

I started riding about three years ago. You see, the MIT physics department has three general exams that you must pass in order to get the PhD: a test of your knowledge of undergraduate physics (5 hours, 20 questions); a test of graduate physics (5 hours, 4 questions); and finally an oral exam on your specialization, in my case astrophysics. Assimilating enough physics to pass one of these exams requires at least a month of doing nothing but studying for 40+ hours a week. That hurts the human brain. A lot. It makes it do crazy things like ... what the hell, sign up for an MSF course and learn to ride. Buy a bike. Have that bike explode on you. Buy another bike. Also, learn to play guitar! It's kind of like a mid-life crisis in fast-forward.

I had the second, non-exploding bike for about a year. A Honda Shadow 750CD, their chromed-out, mid-displacement cruiser. It was a good bike. But I've never been one to take things half-way, so I wanted to ride it all year round. After a trip from Boston to PA and back for Christmas 2005, I started to realize that the Shadow needed to be upgraded. I really needed to install heated grips, or ....

Or, I could buy a new bike. I think it was a craigslist ad in which BMW's awesome R1150GS first caught my attention. An "adventure touring" bike. Upright seating, off-road capabilities, bigger gas tank. And heated grips. And a million other items that are better cataloged elsewhere. Even its purely utilitarian Mars-rover aesthetics captured my astrophysicist's heart.

I've had this bike for a year and a half now, and man, do I love it. And man, does that love cost me the big bucks. It is a farkle magnet. For the non-bikers, a farkle is an extra bit of gear for the bike. Things like aftermarket shocks, a GPS, heavy-duty sidecases, an auxiliary gas tank, tire pressure monitors. All good examples of farkles, and all ones that happen to be on my bike (or will be by the time of the trip). Luckily for my wallet, I think I'm pretty happy with this setup — not much more to put on! Even luckier, this kind of bike is known to last forever. With proper maintenance, Beemers are famous for staying on the road after hundreds of thousands of miles. (Right now it has a mere 40k.)

I bought this bike to ride it! Anywhere and everywhere, may I never again own a car. Motorcycling has rapidly become a defining hobby for me. So I really can't think of anything better than finishing my obligations here at MIT, getting on that bike, and riding it as far as I can across this country. This blog will be the story of that trip, and all the preparations leading up to it.

Nerdy stuff

So ... starting the blog. I could either (a) add meaningful content, or (b) add slick javascript counters, zoomable google maps, etc.

Obviously, I chose (b).

And in case you want to do the same, here's what I did.

The count down.
I can't have a road-trip blog under the name "space-jake" without having a countdown to launch. It's pretty simple. Just add an HTML/Javascript page element with the following code:
<font face="Courier" size="+1"><b>
<p id="CountText" align="center"></p>
</b></font>

<script type="text/javascript">
// Code loosely adopted from hashemian.com/tools.

TargetDate = "07/13/2007 08:00 UTC-0400";
DateFormat = "T %PM %Dd %H:%M:%S";

function CalcDigits(T, UnitLen, UnitWrap, LeadingZero)
{
s = ((Math.floor(Math.abs(T) / UnitLen)) %
UnitWrap).toString();
if( LeadingZero && s.length < 2 )
s = "0" + s;
return s;
}

function UpdateCount()
{
var dThen = new Date(TargetDate);
var dNow = new Date();
T = Math.floor((dNow - dThen).valueOf() / 1000);

s = DateFormat;
s = s.replace(/%PM/g, (T <= 0) ? "-" : "+");
s = s.replace(/%D/g, CalcDigits(T, 86400, 1000, 0));
s = s.replace(/%H/g, CalcDigits(T, 3600, 24, 1));
s = s.replace(/%M/g, CalcDigits(T, 60, 60, 1));
s = s.replace(/%S/g, CalcDigits(T, 1, 60, 1));
document.getElementById("CountText").innerHTML = s;
}

UpdateCount();
setInterval("UpdateCount()", 1000);
</script>
Just change the TargetDate and DateFormat variables as you like.


The map.
The map was a bit harder. I found some good instructions for how to include google maps in blogger, but they didn't quite work. I kept getting an error message about incomplete XML tags when I tried to copy the script line that loads google's javascript into the template code.

So instead I put that line in a HTML/javascript page element. Here's the contents of that element:
<script type="text/javascript">
place = "Still in Cambridge, sadly.";
mapLat = 42.363741;
mapLong = -71.105694;
mapZoom = 10;
</script>

<table cellspacing="0" cellpadding="0"><tr>
<td width="160">
<a style="cursor:pointer;cursor:hand"
onclick="OpenBigMap()">
<script type="text/javascript">
document.write(place);
</script>
</a>
</td><td width="40" align="right">
<a style="cursor:pointer;cursor:hand"
onclick="map.setMapType(G_NORMAL_MAP)">N</a>
<a style="cursor:pointer;cursor:hand"
onclick="map.setMapType(G_SATELLITE_MAP)">S</a>
<a style="cursor:pointer;cursor:hand"
onclick="map.setMapType(G_HYBRID_MAP)">H</a>
</td></tr></table>

<div id="map" style="width:200px; height:200px">
<br>Map loading...</div>

<script
src="http://maps.google.com/maps?file=api&v=2&key=MYKEY"
type="text/javascript"></script>
So, there are the definition of the current loation, all the interactive page elements, and the script line to load the google maps API. Be sure to change MYKEY to your google maps API key. Sign up here to get one.

The code to setup the map must go elsewhere. (Otherwise it crashes IE. Found that one out the hard way.) In the template HTML, insert the following between the <head> and <body> elements:
<script type="text/javascript">
//<![CDATA[
var map;
function SetupGMap()
{
var mapField = document.getElementById("map");
if( GBrowserIsCompatible() )
{
map = new GMap2(mapField);
var pos = new GLatLng(mapLat, mapLong);
map.setCenter(pos, mapZoom);
map.addControl(new GSmallZoomControl());
map.addOverlay(new GMarker(pos));
}
else
{
mapField.innerHTML = "Sorry, your browser
won't support a Google map here.";
}
}

function OpenBigMap()
{
var pos = map.getCenter();
var type = map.getCurrentMapType();
var zoom = map.getZoom();

if( type == G_SATELLITE_MAP )
typeText = "&t=k";
else if( type == G_HYBRID_MAP )
typeText = "&t=h";
else
typeText = "";
posText = pos.lat() + "," + pos.lng();

window.open("http://maps.google.com/maps?q=" +
posText + "&ll=" + posText + "&z=" +
zoom + typeText, "MapWindow");
}
//]]>
</script>
And then add the onload and onunload attributes to the <body> tag:
<body onload='SetupGMap()' onunload='GUnload()'>
That's it. If there's some functionality that doesn't seem to be covered by this code, then ... I've probably been hacking with it. But that's the basics.