Work's been crazy-busy lately and I've started training for next year's Pumpkinman Triathlon, which may help explain the lack of tweets and blog posts. The banners went up in South Berwick and I decided to train for it for next year (holding to the "that which does not kill me" adage). It ostensibly takes twelve weeks to train for the sprint course, so I should be able to do the half-Iron by next September. I may try for a few others in-between.
My Garmin Edge 305 keeps powering off on the wretched, bumpy roads so it's back to the factory for service. Thankfully, the Garmin Forerunner 305
is a good backup and the (ugh) IFRAME below shows the first recorded route of the sprint course.
(To be fair to Garmin, the only way to do the embedded Google Maps widget is to have it be an IFRAME so the source is their domain - which is required for them to be able to use their API key...IFRAMEs are still *evil*, tho.)
Kickstarting the triathlon training has been fun and informative. We're starting up at the Seacoast YMCA to give Mary some water & exercise time as well as some time to do laps for me. I'll try to post progress, but "progress" is highly subjective (and I'm my biggest critic).
When not attempting to make my heart explode, I've been taking advantage of the cool temperatures and lugging the boyz on local hikes (starting hiking season a bit early). I've also been helping them get ready for soccer season (they are both starting soccer). Ian's innate athletic ability continues to amaze me and Jarrod's focus on the minutiae will make him a decent technical player. It's been great fun sneaking time on local soccer fields.
When not engaged in outdoor or repair activities (fixing pipes and our formerly broken microwave), I've been brushing up on Haskell, re-watching Invader Zim
, honing my Vietnamese cooking skills and impatiently waiting for the Froyo update for my HTC Incredible (and playing a bit of StarCraft 2 and Torchlight).
Work beckons (again)...
Managed to get out and enjoy the beautiful weather & terrain today (60°F, moderate wind, nothing but sun & clean/dry roads with hardly a car, truck or motorcycle on them). Got a 1/4 century (25 miles) in (no time for a longer ride). Made the arduous work on the bike trainer in February worth every, boring minute.
Those who use cadence sensors have probably had their fair share of pedal magnets fall off. Between accidents and just minor wear, I go through 1-2 of my Garmin magnets per year, partly due to how poorly they are designed to attach to the pedal.
I was at Gregg's Cycle up near the Alderwood Mall (Lynnwood, WA) and noticed a cheap replacement Cat Eye cadence pedal magnet and decided to give it a try. The way it attaches is much more secure than the Garmin magnet and it works perfectly with the Garmin wheel sensor.
You can grab it directly from Cat Eye for less than $2.00 USD (hit that page and search for "169-9766") or from Gregg's for just a bit more (but, it's local if you happen to be in the greater Seattle area).
I am officially entered into the Seattle to Portland Bicycle Classic and will be joining 8,999 other crazy people for the ~200 mile ride this July.
I'll make sure to post blog entries during this "training phase" (the Cascade Bicycle Club - of which I am now a member - provides training guides for the event and hosts training rides).
Many thanks to the Seattlest Blog for the timely reminder (as slots fill up rather quickly).
Jobs' keynote may have been the center of attention at Macworld 2008, but Garmin took the wraps off of Bobcat, an OS X-only application that will no doubt be the center of all things Garmin GPS-related on your Mac.
It's a beta (sigh) and Universal application for OS X 10.4+. There is no word on whether they will be charging for the 1.0 release, but I suspect the app will remain free since they make the big bucks on the map$.
Bobcat has the following features:
If you want to get your Garmin maps from your PC to your Mac, they've put together a guide [PDF] to help you along (you'll need MapConverter for your PC).
Here's a look at the Bobcat main screen:

I'll post a full review of Bobcat once I put it through its paces (loading my PC maps, importing from my various Garmin GPS devices and testing out the general functionality).
You can entertain yourself until then by perusing the new Mac section on Garmin's site and loading some of their Mac software. If you're at Macworld definitely stop by their booth and cheer them up (Steve can't have all the attention there).
I've said it before, Garmin Is Evil. Not evil in the bad, serial killer way, just evil in the enticing-folks-to-part-with-their-hard-earned-money-by-introducing-new-gadgets-with-killer-features way.
Their latest incarnations of evil are the Edge 605 and the Edge 705, two new cycling computers that have GPS capabilities. The first noticeable difference from the Edge 305 (which I own, along with the ForeRunner 305) is the gorgeous color screen reminiscent of their eTrex series. Both units are also bigger – 2" x 4.3" x 1" vs 1.75" x 3.7" x 0.9" – and have a higher resolution display – 176 x 220 vs 128 x 160. Battery life is also better – 15 hrs vs 12 hrs (and I've been very happy with the battery life of the 305), plus the new models sport a microSD card slot to hold map/route data (similar to the eTrex) – this would have been handy on some of my Seattle exploring rides this summer (I would up carrying both my ForeRunner 305 and eTrex.
However, you'll want to focus your investment on the 705 since that's where the major new mojo lies (the 605 doesn't even work with Garmin's heart rate and speed/cadence sensors).
The Edge 705 will interface with 3rd-party power meters, which hardcore cyclists will appreciate since that's the best way to accurately measure training effort. The other killer feature is the ability to share courses, workouts and saved rideswirelessly with other 705 units in range (3 meters). It will make shop rides much more efficient since you won't need to ensure folks have cue sheets (just these expensive bike toys).
All units (even my old school 305) will work with Garmin's forthcoming Connect service (which will be a combination of their MotionBased site plus new features).
If I manage to sell enough old tech to get one of the new models (both available in time for Christmas for ~$430.75 USD and $541.65-$709.07 USD) I'll write up a review.
(You can review the full technical comparison here.)
Apart from traversing Tiger mountain, I also managed to get in a coastal-to-burke-gilman ride in and paid a visit to Alderwood Community Church (which I'll be heading back to as well).
The highlight (apart from my attempt at making chili in my tiny abode) was the purchase of a Wii (Mary suggested it, so I'm not sure what they've been slipping into her Diet Coke back east). I may do some game reviews as we all finally come together and start playing it. Despite what you may have heard, finding one was as easy as going to SAMS Club and taking a ticket up to the counter. It's amazing to see how Nintendo can keep such a tight hold on pricing controls, even when it comes to Wal-Mart (SAMS Club is just a subsidiary of the giant retailer). The console is (like all consoles) a potential money pit, tho. Controllers; accessories; games; etc. A good racket.
We should close on the old house Friday if all works out and be settled here (partially) on the 12th and completely on the 18th.
Not wanting to be stuck at the apartment all day this fine Labor Day weekend Saturday, I ventured out down to Pier 52 to hop on the Seattle<->Bainbridge Island ferry. The goal was to do this route which goes from where I temporarily live (in the Fremont district of Seattle) to the terminal, then from Bainbridge up through Kingston, then down from Edmonds to where it all started from. It's about 46-50 miles with a ton of hills.
My fitness GPS won't turn back on easily and kinda died at the Edmonds terminal, so no actual route from it will be posted (there is a great map at the first URL). I can tell you that I was pretty tired and the summary info on the unit (the one time I managed to get it to power up) said I burned well over 3600 calories. It sure feels like it.
Bainbridge is idyllic and picturesque. I see why so many folks move there. You can choose from wooded areas, coastal vistas or (ugh) developments - all at price ranges that we will never be able to afford.
I didn't stop to take too may pictures (mostly snapped some on the ferries), but you can see part of the Olympic mountains and some other shots here.
I went for a 54.5-mile bike ride Saturday on the Burke-Gilman trail and part of one of the connecting river trails (Snohomish, I believe). [Click on the small map for a larger version.]
Started off in the residential setting, moved through a city-setting, then kept cruising between tree-covered, lake-side and river/forest setting.
Some of the downhill streets to get to the start of the trail were very scary for someone who is used to tiny hills back in Bethlehem. It kept feeling like I was going to cartwheel down them.
There were tons of cyclists ranging from group/shop rides to parents with children in tow. The weather was perfect and there are many places to stop and catch a view. The hard part is getting through the city of Seattle with all of the stops and starts. The second hardest part was smelling breakfast cooking at all of the restaurants and houses along the trail.
Now to do a full century.
Garmin released version 2.0.3 of their Training Center for OS X on May 4 (I signed up for notifications but never received one). Changes include:
More info here.
Ascent is, as I've said before, what Garmin's Training Center should be. However, despite the plethora of enhancements over the past few months, the app is still not scriptable and doesn't have that whole Web 2.0/blogging/social networking goodness concept built into it.
Since it exports KML and natively integrates with Google Earth now, it seemed strange that it doesn't integrate more with Google Maps. To remedy this, I've built a small AppleScript folder action that has some of this functionality, provided you've got a web-space you can "scp" into.
First, you'll need to download the script (KMLtoGoogleMaps.scpt). Since it relies on the ability to scp data to a directory in your web space that is the accessible directly via a URL, you'll need to edit the script and change the variables ssh_dest and kml_URL to something that makes sense for you setup. The script also relies on your scp/ssh setup using certificates without passphrases. There are notes in the script if you need to work with passwords or passphrases, tho.
Next, create a folder and attach this script. Go to Ascent and save out a KML. NOTE: Google Maps KML integration does not like spaces in filenames, so make sure there are no spaces. (If I get enough requests, I'll mod the script to handle this automagically.)
If all went well, you'll see a Safari page with Google Maps and your route displayed. You can then use the Google Maps tools to do various things with the route.
Please report any problems with the script, revisions to the script, or requests for enhancements to the script in the comments.
Script code after the jump.
Enjoy!
A reader (yes, a reader of at least one of these blog posts...hard to believe it, eh?) pointed out in a comment today that Montebello Software makes an interesting app called Ascent which seems to fill in many of the gaps Garmin left with it's new OS X Training Center, and provides some extra functionality to boot.
Alas, you'll have to wait for a review since I won't be able to play with Ascent until tonight or tomorrow. It's nice to have options, tho, and it's great to see another GPS-enabled OS X app out there.
My interest in learning the secrets of the Garmin Training Center for OS X user data file was renewed upon learning that the author of TrailRunner added the ability to import GTC data directly into that app. After a cursory search for clues on the format of the "Training Center.gtc" data file, I managed to find the needed bit of knowledge after digging through one of the forums over at MotionBased. One of the posters - saeedi - suggested it was a sqlite database. After making a copy of the file, I opened it up with sqlite3, tried a ".schema" command and was greeted with the following:
CREATE TABLE ZCDABSTRACTSTEP ( Z_ENT INTEGER, Z_PK INTEGER PRIMARY KEY, Z_OPT INTEGER, ZORDER INTEGER, ZBELONGSTOPLAN INTEGER, ZISCHILDOF INTEGER, ZITERATIONS INTEGER, ZNAME VARCHAR, ZISRESTING INTEGER, ZCOMPLETIONCRITERIA INTEGER, Z5_COMPLETIONCRITERIA INTEGER, ZPERFORMANCEZONE INTEGER, Z12_PERFORMANCEZONE INTEGER );
CREATE TABLE ZCDACTIVITYPROFILE ( Z_ENT INTEGER, Z_PK INTEGER PRIMARY KEY, Z_OPT INTEGER, ZMAXHEARTRATE INTEGER, ZNAME VARCHAR, ZGEARWEIGHT FLOAT, ZACTIVITYTYPE INTEGER, ZDEVICE INTEGER );
CREATE TABLE ZCDCOMPLETIONCRITERIA ( Z_ENT INTEGER, Z_PK INTEGER PRIMARY KEY, Z_OPT INTEGER, ZBELONGSTOLEAFSTEP INTEGER, ZTARGETCALORIES INTEGER, ZTARGETDISTANCE INTEGER, ZLIMIT INTEGER, ZLIMITTYPE INTEGER, ZTARGETTIME INTEGER );
CREATE TABLE ZCDDEVICE ( Z_ENT INTEGER, Z_PK INTEGER PRIMARY KEY, Z_OPT INTEGER, ZID INTEGER, ZMAXSCHEDULEDPLANS INTEGER, ZMAXCOURSETRACKPOINTS INTEGER, ZMAXCOURSEPOINTS INTEGER, ZMAXSCHEDULEDPLANDATES INTEGER, ZPRODUCTNAME VARCHAR, ZMAXCOURSELAPS INTEGER, ZMAXUNSCHEDULEDPLANS INTEGER, ZNAME VARCHAR, ZMAXCOURSES INTEGER, ZPRODUCTID INTEGER, ZSOFTWAREVERSION INTEGER, ZOWNER INTEGER );
It certainly looks like it's a sqlite database. Just to verify, I tried a few SQL commands:
sqlite> select zproductname from zcddevice ;
ZPRODUCTNAME
--------------------
EDGE305
Forerunner305
sqlite>.output gtc-tree.html
sqlite>select * from zcdtreeitem
While not the prettiest schema, it's workable. Once I get more time to dissect it a bit, I'll post some code to extract runs/routes and maybe even take a shot at a widget.
Nike has introduced a beta of their new "Map It" feature which allows you to draw routes of your runs on what looks like Google Maps. A pretty nifty mashup, especially given that it's all embedded in a Flash application within the existing Nike+ site.
You start off with the ability to navigate to the area you want to start mapping in (NOTE: you can click on these screen captures to see them full size and in a new window/tab) and then select "Draw a route" and click on the map in segments until you've finished your path:

When you are done, selecting "Save" brings up the following window where you can enter details about your route and make it public. The keywords are there to help other folks find interesting routes to run (if you've marked a route as "public").

Once a route it saved, you can go back and look at or edit the details, rate it (which - if public- is probably an average of all ratings for the route).

Since you can associate your runs (previous or new) with a route, you can track progress by route and see how many runs you've made on a particular route. When reviewing routes back on the map, you can see the filled-in mileage label.

The mapping feature is in beta, and it would be an extremely cool mashup to be able to take data from your GPS (i.e. Garmin ForeRunner) and have the route built automatically. This should be even easier now that the Garmin TrainingCenter is available on OS X and Windows. It's also great to see Nike keep adding to their Nike+ site features.
Managed to play with the app a bit more today and jotted some notes.
Device Import
The OS X Training Center software reads from the Edge 305 and ForeRunner 305 fine, though the PC version has a nice progress indicator that the OS X version lacks. There were some issues with Parallels (need to do more investigation), but doing some USB settings reconfiguration on the Parallels side cleared things up.
Activities
The PC version will also auto-categorize your activities (running, cycling, etc) upon import. The OS X version does not even have pre-made categories (you can make "folders") and you cannot shift- or command-click to do multiple activity selections in order to perform a bulk move. This is frustrating, but workable after the initial device import is complete since you are just moving individual activities at that point (or very few, at least).
The PC version also allows you to move your cursor along the graphs and see the associated data (speed, pace, heart rate, etc). There is no provision in the OS X version for this functionality yet.
You can also get a more detailed breakdown of each activity and compare activities with the PC version. Again, this functionality is lacking in the OS X version.
"Macness"
Any app developed for OS X gets held to a higher standard than those for the PC since folks expect Apple developers to do the right thing whenever possible. This means conforming to standards and having the app behave like other Mac apps.
Many things, such as user profile information (even multiple profiles) and unit display preferences definitely belong in a "Preferences..." menu. Garmin needs to do this at a minimum. Garmin's application help is not integrated with the Help Viewer (how difficult can it be?!), and has interesting viewing requirements:
NOTE: The graphics in this Help system are optimized for monitor displays set at 1680 x 1050 screen resolution. Viewing this Help system at resolution settings other than 1680 x 1050 can result in reduced image quality.
1680x1050!!! So, we need to own a big, honkin' wide screen monitor, eh? (BTW: the help looks fine in any Safari view, so I think the Q/A team missed this error)
It has no AppleScript elements, leaving you no choice but to resort to UI scripting - which is a pain. Many Mac folks are going to want to do "stuff" with the data in this app and having a simple, programmatic way to export/convert from the main database format to something usable should have been an out-of-the-box feature (I'm thinkin' Dashboard Widget displaying last activity with basic stats).