Archive for May, 2008


Thursday, May 29th, 2008

The initial reports of the GoldenCheetah beta for Windows are pretty positive. At least, it’s working for most people. The biggest comment is confusion over installation of the ftd2xx.dll driver. Another user had difficulty with write permissions in his home directory on Vista, however after being unable to reproduce the issue on my test system and speaking with him further it seems as though that may be an isolated case.

Anyway, we have some tasks and cleanup ahead. Our motivation is to get the next release of GC out in the next couple of weeks. I’m catching a quick breather before the rush of coding that will inevitably preface the release.

Fun ahead…


Thursday, May 22nd, 2008

After the days of hacking away at Golden Cheetah and C++ on Windows, doing some html/css/php/js coding is like a breath of fresh air. There is something somewhat comforting about how rigid C++ is…I can quickly find where I’ve messed up, even if it takes me a bit to figure out how to correct my bugs. These interpreted languages have vagueness, but it’s still fun to fire away at them and not have to deal with compiling or linking.

Anyway, I’m working on coding Kara’s new site and am using it as an excuse to learn jQuery. After tediously hacking the DOM in the past this is really easy. There is a download hit for the jQ library, but it’s not much more than a small image. I wonder how it will work on a mobile device…

The design challenge from my perspective is to make the code intelligent enough to speed up content management but not so obtuse that Kara won’t be able to directly edit the pages. In other words, a database driven CMS is overkill here. I also want to allow her to directly link to individual pages, if she needs to show of a particular project. So, it’s in progress, but half the fun is brainstorming the possibilities and making the code work, no? I’ll link the site when it’s live, but for now here’s the jQ code for generating the links on the fly:

$("#sidebar a").click(function(event){
	// this is verbose, but the steps are clear
        // it will create links from the button names
        var label = $(this).text();
	label = label.toLowerCase();
        //replace spaces with underscores 
        label = label.replace(/ /g,'_'); 
        //append the php file extension
        label += ".php";

	// update the html and go

GoldenCheetah for Windows…

Tuesday, May 20th, 2008

Golden Cheetah on Windows…is alive!

Justin and I have sorted out the connection issues with the USB cradle. We needed to explicitly set up the communication parameters before trying to speak to the PowerTap.

We changed D2XX.cpp:open() (For my bigger brain):

ftStatus = FT_SetBaudRate(ftHandle,9600);
ftStatus = FT_SetDataCharacteristics(ftHandle,\
if (ftStatus != FT_OK) {
    err = QString("FT_SetDataCharacteristics: %1").arg(ftStatus);

ftStatus = FT_SetFlowControl (ftHandle,\
    '0','0'); //the 0's are ignored
if (ftStatus != FT_OK) {
    err = QString("FT_SetFlowControl: %1").arg(ftStatus);

This opens the serial connection at 9600 baud, no parity check, one stop bit and no flow control using the D2XX driver from FTDI.

I’m going to have to write up a description of all of the build steps necessary to get it to compile in win32. The code base is the same, but the compile flags and environment have to be set up in a certain way. Also, we need libregex.a, libftd2xx.a and a linker script which aren’t provided in the GoldenCheetah source tree.

The windows binary is ready for testing, we just need to make it easily available somehow. Hooray. I need a break.

Drawing Automata

Wednesday, May 14th, 2008

Of course, I can’t leave well enough alone. It was inevitable that I’d shirk other responsibilities to play and tinker with the drawing automata program. I’m happy with the results (so far), and am planning on printing these two as a diptych in a large format.

Ellipses 11Ellipses 31

A slightly altered version which shows the animated drawing process. The parents fade away after they have spawned rather than persisting as in the above images.
Drawing Automata – Fading

More fun at ITP

Tuesday, May 13th, 2008

ITP had their 2008 Spring Show this Monday and Tuesday. I went yesterday to check out the projects and to confirm if this was indeed the place where I want to be. Again, I was very impressed with most of the work and the enthusiasm of the students, and had a good time chatting with quite a few people.

The atmosphere is energized there, and I couldn’t help but come away with a desire to play and tinker again. I am looking forward to becoming part of that community.

In the meantime, I thought it would be fun to throw together a drawing automata…to “stretch my mental legs” a bit. I’m posting this now because I need to peel myself away to get on to other “real” work….I can’t wait until playing around is my “job”.

Drawing Automata

More debugging…

Monday, May 12th, 2008

…needed. GC is still reporting a timeout when trying to download from the PowerTap. Today I got it to work by first opening HyperTerminal, connecting to the PT and sending a ‘V’ char, which caused the device to respond with it’s firmware version. Then, I disconnected and quit HyperTerminal and opened the download from device window in GC, which connected fine and downloaded as expected.

GoldenCheetah…on Windows

Friday, May 9th, 2008

GoldenCheetah Windows - SummaryVery exciting development….GoldenCheetah has been ported to Windows. Justin Knotzke did most of the leg work and got the first build going. He helped hold my hand through getting my Windows development environment set up.

Through much debugging I was able to pinpoint where the device communication was failing…and realized that there was an issue with the installed drivers. After a bunch of tinkering with the drivers, and ensuring that I was using the correct ftd2xx.h file it finally started to read from the PowerTap via the USB cradle.

Finally, we had to switch to Qt’s methods for creating a temporary file and writing out the data. In the process a bit of the data formatting got mixed up and created corrupted .raw files which caused GC to crash when the invalid file was read back in. The important bit (for my own future reference) was to setFieldWidth(2) for the data byte, then setFieldWidth(1) when adding the space delimiter or linefeed chars. It made the code a bit less elegant, but more importantly, it works.

GoldenCheetah Windows - Plot

So, more tinkering here on the newly minted Windows build of GoldenCheetah…then out to the mailing list for beta testing.

Wheel Building!

Friday, May 2nd, 2008

PowerTap wheel buildI finally built my first bicycle wheel. I’ve wanted to do it for a long while, but never got around to doing it. The opportunity presented itself after the Zipp 404 clincher rim laced to my PowerTap hub cracked, again. This has happened more than a few times to me, so I requested that Zipp replace the wheel without my PowerTap hub. Zipp came through for me, replacing the rim under warranty and providing a new Zipp hub at no cost. Thank you Zipp Speed Weaponry.

Anyway, I had the PT hub anxiously looking for a good rim. Our sponsor shop, Breakaway Bikes, hooked me up with a DT Swiss RR 1.2 rim, and I opted to use 2.0/1.8 Paul spokes and brass nipples. It was really nice to hand pick the components for the new wheel.

I used the procedure outlined by Gerd Schraner in “The Art of Wheelbuilding”. It wasn’t as difficult as I had always imagined it to be, and really methodical, almost therapeutic. I did overtighten the right side spokes, which caused me to round some of the nipples that had to be replaced, but nothing catastrophic. So far, the wheel has held up well. I’m looking forward to building another wheel…