Wednesday, December 17, 2008

note to self

Riding a fixie on snow without brakes is not a good idea. I just saw one fixie sliding into a car. Ouch.

Tuesday, October 28, 2008

PDC 2008

I am at Los Angeles attending the PDC. Lots of cool technology. Some of the stuff I am looking at includes:

These are all 'low hanging fruit' type of efforts that can be readily incorporated into my day to day work.

Monday, August 11, 2008

Time Trial

Finally raced my first time trial.

This is the second of two time trials in the race season that operates as an independent race. Other TTs that runs are part of some stage race which I am not ready for.

I grade my TT as a C+. My original target was 38km per hour. Based on an estimated distance of 36km (official distance is 36.4) I was pacing for 58 minutes hoping to start conservatively and have a slower 1st half.

I caught a ride around 5:30am and arrived at the location around 6:45am. I wanted to volunteer as well and my job was to assist in bike measurements. The commissaire was mostly enforcing the rule where the tip of the saddle needs to be 5cm behind the BB axis. There were a couple of guys and gals used the "morphological exception" by sliding their bum beyond the end of their saddles to get by the rule.

My start time was 10:56 so I have lots of time to get ready and warm up the bike measurements were finished.

It has been raining off and on that morning and sure enough when I start my warm up it was raining the hardest. I was soaked before starting. Just when I was about to start the rain stopped. The start house was actually the club trailer so that was kind of fun. I was nervous for a little while waiting for my start. There was nobody starting 1 minute before me. The guy that was supposed to start 2 minutes ahead but didn't show up until the very last minute so I was in the start house for almost 3 minutes. I didn't want to go too hard when I start because the first 2km or so was a slight downhill and I was hoping to save my effort for the final climb. I chose a cadence around 85 and was cruising above 40km very quickly. At that point there was a burning sensation around my crotch area. The bib shorts is not adjusted properly and it is rubbing in the wrong place. I chose to ignore that sensation and keep going as I do not want to stop and knew I could not fix the problem on the bike. The downhill comes gently to flats and I started pacing at 38km. I was thinking the course is not completely flat as my speed rolls down to about 36 and I would push it up to 39 and let it sink again (it could have been the rubbing - see below). It is a twisty course and it is hard to know where you are other than looking at the elapsed time on the watch. My heart rate monitor has been acting up for about 2 weeks before the race and it was only after 2 battery changes was I able to get it working the day of. For the first time in about 2 weeks I was able to know that my heart rate was hovering around 155-163. My threshold is 167 and my expectation was to push the HR up for the final 1/3 of the course.

The 5-6 guys following my start are all strong cat 1 or 2 riders, so I was passed a good few times before the turnaround. Lucky for me these guys are so fast (Will Routley the winner averages 10+kph faster) I did not know they were passing until they blew by. I did pass one woman after the turnaround before the bridge so that was a bit fun.

My pace was good and I was feeling comfortable (to a point) up till about 20 minutes to go. I wanted to push the pace up and found that my legs have been locked into automatic cruise control and refuse to cooperate. I tried shifting down to spin up but that only brought the speed down more so I have to settle for the same speed (36-38) and roughly the same HR which was mostly in the high 150s at that point.

The final climb was dreadful as I cannot garner any extra power to my legs and watch my speed go down while the HR stays the same. I slowed down to about 30 towards the end and clocked at 1:00:05. The guys did a re-measurement of the course and relabeled it at 36.5km so my average speed was 36.45.

At the end I found out my rear brake was rubbing the wheel. I did not realize it because the warm up was so wet and I cannot hear the rubbing. Afterwards I was told that I should have performed a test to just roll the wheels to check for rubbing.

Just like in Westside classic, my hamstrings were sore for a few hours after the race. This time I have problem sitting down so the car trip back to Vancouver was not very comfortable.

In hindsight my cadence should be higher (like 90-95) as my muscles were tired but I never taken advantage of my heart rate. If previous practices I find my HR dropping towards the end and my speed sank. So I should probably start around 160-163 and move it up that way. The lower cadence drill (4x10min at TT pace but 70-75 cadence) that John Tolkamp suggested helped my endurance but confused my cadence selection.

So between the rain, the brake rubbing, slow turnaround and my wrong cadence/HR selection I think I can save a minute at least. I wasn't too unhappy with the result as 1 hour was my lower bound and the conditions were not ideal. But then again you see other cat 4s and 5s doing really well so I do feel that I am not progressing at fast as I wanted.

Results are here. The bib numbers represent starting order.

Tuesday, July 29, 2008

Inconsistent Behaviour

I was helping to troubleshoot a problem with HttpWebRequest where a cookie came from the server but wasn't going back to the server.

The server (say sends the cookie in the header of the response with attribute The .Net cookie class interprets this according to RFC 2965 and adds a period (dot) in front of the domain. So when we try to get the cookies for this cookie is not included. Specifying something like

myCookieContainer.GetCookies(new Uri("")

works though.

The way I understand the RFC is that the domain should be instead of However both IE and Firefox accepts this and sends the cookie back so no web server developer or tester would ever pick this up because the major browser works.

Wednesday, July 23, 2008

White Rock Road Race

I volunteered as a driver for the White Rock road race. I got to drive an SUV carrying about 20 wheels in case somebody has a flat. I got assigned the men's race which was longer and tactically more sophisticated then the women's as it turns out.

At the starting line we were trapped behind the women's group which was supposed to start 5 minutes after the men. Of course there was a bit of a delay so after they started I have to push the car hard to overtake the women and chase back to the men's group. Due to logistics I did not get hold of the car until the morning of so trying to drive hard a new car is quite stressful.

The course has 2 sections, the loop up Columbia/Victoria and the Magdalene Ave switch-back. The Magadalene section is tricky because of all the lefts and rights. Driving the course the first time in a unfamiliar car is definitely not the way to do it in the first lap of the race. Anyways after a error or two we caught the group on the downhill after Magdalene section so things were turning normal after that.

In terms of work we have 2 flats. The 2nd flat was in a very awkward spot where the road is used 2-way. Once my car stops, cyclists behind me have very little room to pass me. Luckily there were no crashes nor much oncoming traffic from the women's peloton. Here is a view of the 2nd flat taken from the women's lead car:

The view from car is great. I got a race radio and can listen and communicate to the commissaires which were covering the race in front and at the back. I can see the whole pack riding and can listen to the progress of the breakaway group. It is like having the legs to follow these cat one or cat two riders and watching the whole race develop in front of my eyes.

The race itself is exciting as well. There was a breakaway of 4 riders for a few laps. The gap was at one point almost 3 minutes before Symmetrics and Jittery Joe decided to pull them back. At the last long lap Chris Horner decided to attack at the Magdalene switchback, the whole peloton then got shattered. Then when they do the short laps the tempo keeps going up and more and more people got dropped. At the end Chris dropped everybody else and claimed victory.

It was a fun thing to do and gives a lowlife racer like me a chance to contribute in Superweek. I would definitely do this again.

Wednesday, July 09, 2008

3 good weeks followed by...

All good things have to come to an end. :-(

Firstly it was some work related stuff that delayed my departure to make it to the Thursday night crit. That wasn't all bad as I took the opportunity to do some intervals and it was by far the hardest I have done all year.
That however leads into Friday: the schedule says do some time-trial pace intervals. My legs were dead. I have a day off and decided to sleep in instead.

So the delay pushed the time-trial pace intervals to Saturday before the club ride. It was raining lightly off and on and there were wet patches on the road. To save time I did the Chicks TT route. I was not doing too well. I was not pushing too hard when I hit the downhill portion of 16th towards Imperial Ave. I was thinking that I had a good line turning right when the rear wheel slipped. Immediately the bike was traveling sideways. I did a baseball slide at about 35kph on Asphalt. When I got up there was a car right behind me. The driver kindly offered to take me home and pointed out my right thigh/bum area is badly injured. I then realized that my shorts are ripped and I was bleeding. I decided to ride home slowly as my bike was fine as it probably will be better for me to keep the muscles moving.

When I got home I assessed the damage: right shifter was bent in - easy fix. Scrapes to right pedal and shifter. Most cuts to handlebar wrap. A couple of some bumps and bruises and one big skin abrasion about 4 inches by 4 inches. I was not bleeding a lot. I have been leaking fluid out of the wound for 2-3 days and it is finally coming to and end. Hopefully I can start training again in a day or two when the motion of thigh moving up and down does not cause a lot of pain and the skin has healed up enough.

The odd thing I still cannot explain is why the rear wheel slipped. I was well into the turn when it slipped. I was on my hoods implying more weight was on the rear wheel. So wetness should not be the explanation. More likely I hit a slippery patch or sand.

Friday, June 27, 2008

3 weeks of training

After the A race, it's back to build 1. I borrowed a trainer with power display to see how I am doing power-wise.

The first week I did some test to see what type of power I can sustain.
The second week I did this pacing exercise. I was able to do 10-8-8-8-6-6-4 minutes with average power somewhere between 245 and 255.
The third week I did a 12km time trial test run at Iona. I still think I can pace myself better but the numbers are already way better: 19:32 for 12.4km out and back. Average speed 38.1kph. My previous runs in April and May were about 35kph.

This is the best training phase I have had all year. Let's see what the next 3 weeks can do.

Thursday, June 05, 2008

Westside Classic 2008

I am not too happy with my race and I am not too unhappy about the race as well. Going in I know it will be hard for me to follow the main pack up the hill. Someone said the first two laps will be hard and it was. At lap one there was a gap after the climb but I was able to bridge back with a bit of time to get ready for the second climb. By lap two I have lost sight of the main pack. We formed a group of six (and later seven) that rode together for most of the race - knowing that we can't bridge up. At the last climb there were seven of us - four from the same club. I tried to set the guys up by forcing the tempo and blew up half way up Camosun. Four guys left the pack - three of which are from my club. Yet still the coveted 42nd spot when to the lone enemy. I could have regrouped to try to sprint for 2 more positions but did not try hard enough doing so.

I felt stronger this year than last but unfortunately not strong enough to be in the big group. Looks like climbing up Camosun in the big chainring is a requirement for next year. From a numbers perspective I am about 10 places better than 2007 and time-wise I am about 10 minutes faster as well. I also have improved on my turns, especially the two turns entering and leaving SW Marine drive.

Here are some photos. And here is the official results page.

Wednesday, June 04, 2008

To shut down a computer in .Net

I was testing something and needed to shutdown a computer. Wanted to look for an example and couldn't found one anywhere. So here is what I have written:

ManagementClass MC = new ManagementClass("Win32_OperatingSystem");
ManagementObjectCollection ObjCol = MC.GetInstances();
//there is only one object in the Collection
foreach (ManagementObject MO in ObjCol)
  MO.Scope.Options.EnablePrivileges = true;
  MO.InvokeMethod("Shutdown", null);

Note that if you skip the EnablePrivileges line you will get a exception with the message:
Privilege not held

This assumes the identity of the process has the privilege to shutdown the computer under normal conditions.

Wednesday, May 21, 2008

knocked down but not out

I was commuting to work, rolling down Dunbar towards 16th. Like any other morning there were a few cars backed up. As normal I slowed down as there are traffic and pedestrians around. Suddenly an SUV decided to turn right in 18th - probably to avoid the traffic as I was approaching the car. I yelled, braked and tried to turn in the same direction (probably in that order as well) but eventually hit the SUV and was down.

The driver came out and checked if I was alright. A few pedestrians (there is a Starbucks at that corner) came out to see if I was alright as well. Well luckily other than 2 scratches on the right knee, a bump on the right hip, a bump on the right shoulder and a bruise on the left arm, and more cuts on the handlebar wrap me and my bike are both ok. So I stood up, checked that I can continue on my bike, talked to the driver (not yelled) and ask him to signal and check, and went on my way.

Lessons learned:
- I should have counter-steered. The fact that turning right shows up on my manoevres is a blessing.
- I should have been slower when approaching slowed cars. I had a similar run in with a car 7 years ago but that was worse. So I have improved. :-)
- I am alright.

Today's EV count is 2.

Tuesday, April 29, 2008

weird and lucky

I got to deliver this guy a cheque. He lives in Kits and I work downtown. I thought about sticking it in an envelope and mailing it out but something just does not feel right. (weird #1) I have to hop over to the school at lunch time today. The sun is out so I decided to take a detour and drop off the envelope at John's place.

While I was heading over, somebody in an SUV was honking at me. I thought about chasing him down but don't have the legs to...

I was not able to access his mailbox (lucky #1). I could not see his name in the directory so I called the building manager. She told me that he moved a while ago. (weird #2) So I sadly turned around and head back to downtown. While on the way to Burrard bridge, a pedestrian was waving at me. It was none other than John himself! So I yelled, stopped and dropped him my envelope. (lucky #2)

That's not all. John told me he gave me an updated address in another email. When I got back to the office I forwarded the updated address to our membership director. Turns out the address and postal code do not match (weird #3). So even if I caught the updated address the cheque might still not get delivered (lucky #3).

My EV count today is technically 1 although if I count non-cycling guys too its 3.

Wednesday, April 23, 2008

we'll see how this goes

First time in my riding life I broke a chain while riding. I was going uphill and felt like the chain has skipped off. Lucky when it happened I was close to a bike shop and got help. The owner and mechanic knocked 4 links off and send me on my merry way. He said the drive train is still good for another 6 months although I have doubts and estimated 3 months. I have been very tentative with my commuter bike since and actually rode my race bike to work the majority of times - partly because of training and partly because I don't feel comfortable about the chain.

Last Saturday was my fourth ride after the fix. It snowed Friday night and the road was wet so I thought it might be better to ride a bike with fenders. I left the group and was on my way home. I was actually saying to myself that I should go to buy a new drive train when the chain snapped again! Stranded between Richmond and the airport I called for help using the universal repair kit known as the cellphone. While waiting for the support car to arrive I decided to try fixing the chain. The theory is that you can knock 2 more links out and at least ride home with a shortened chain. After 20 minutes of fumbling around I was at the point where I could try to put the pin back in when the support car arrives.

I bought a new drive train the same afternoon along with the necessary tools. It does look like I would need a new drive train every year so the tools are worth investing.

Last night I finally got the time to put the drive train on to the bike. The rear cassette was relatively easy once I figure out the chain whip and wrench should be position like scissor handles. Next come the hard part: the cleanup of the bike. The rear derailleur was so filthy I spent about an hour cleaning it up. The chain I bought (SRAM 991) is very easy to install because of the powerlink feature.

We will see how long this drive train will last. The previous one lasts about 13 months and the one before that about 2 years.

Today's EV count is 2: I met 2 EV guys riding.

Friday, April 11, 2008

the season till now

I went to the last road race of the Spring Series as a 'C' race - a race that I used as training and done without preparation - and it was hard.
The course is the 'snake': a 10km loop with a climb about 600m in length with average grade of 10.4% and max gradient of 15.4%. Using my granny gear of 39-27, I was climbing with a cadence of 50's to 60's which was very uncomfortable. The first lap I climbed sitting down (which I prefer), the 2nd lap a coach was yelling "stand up" (to his people that was around me) so I tried standing up. My heart rate shot through to the roof and my quads were sore after the climb.

On every lap after the climb people get away. People like Stuart has the ability to accelerate after the climb. If they were around me I would try to sit in the group and try to bridge back. Because I do not have as much acceleration I would lose contact with the chase group and have to ride in time trial pace all the way down the hill to catch back to the pack. At lap 4 just ran out of gas. Lap 5 I was at "tempo" - a notch below time trial effort and rode with a guy. By lap 6 I have let that guy go at rode at a warm down pace. Climbing that hill was hopeless so I stopped after lap 6.

Anyways not a bad day - weather held up, race conditions was acceptible. No accidents in the C race. Can't really complain.

A couple of things I have learnt that day: when the roads are dirty with manure, you have to spit out the first squish of water you drink to rinse the nozzle and avoid getting sick. It was a bit of a mess but I survived. Also for older cyclists it looks like more training at zone 4 (time trial pace) to 5a (a little bit above) is more useful than short intervals at zone 5b (which is my max range).

Yesterday I did my first Time Trial Test: 8 miles, full pace. It took me more than 20 minutes which averages about 35kph. When I got home I was wobbly and hungry. It was more intense than most of my workouts this year. Definitely more of this type of training in the coming weeks.

Wednesday, March 12, 2008

bone head

I got a new bicycle computer last year with 2 bike support and installed the second bike kit on my commuter bike. Everything was working fine for a week or so.

On Monday morning I realized I have no cadence reading. I tried adjusting the magnet thinking it might be knocked out of alignment but to no avail. When I was home I looked at the bike and realized that the cadence sensor wire was severed. I wrapped the cadence sensor wire around my down tube and slid the wire between the tube and the shifter wire. The shifter wires are just bare wires. As I was shifting the wire act as a saw and finally chopped the cadence wire. I tried reconnecting the wires. The wires are very thin it is hard to get it back working. I might need another cadence kit.


Tuesday, February 26, 2008

i think this is a bug

I am writing a little app that hosts the Internet Explorer/Webcontrol control to navigate our production site and get some page load values. Somewhere on a page we have the following html snippet:

<input name="foo" type="checkbox" id="foo" />

Both IE and Firefox render this as a checkbox without the check mark.

When I interrogate the attributes inside the HtmlElement object, here is the interesting bit:

GetAttribute("Value") returns "on"
GetAttribute("checked") returns "False"

I wrote a loop to get all the input elements inside the <Form> tag to construct a post data string so the natural choice is to use the Value attribute because it seems to work for all input types. So the post is sending in foo=on for this input. ASP.Net happily interprets it as checkbox value=true and created a different behaviour that took me a while to track down and isolate.

Monday, February 04, 2008

job fair

Last week I was manning the company booth at a job fair in UBC. Here are some FAQs that I developed towards the end of the day:

Q: Is Thomson Financial an insurance company?
A: No.

Q: Is it an investment fund?
A: No.

Q: what is the company like?
A: we like to eat, don't drink a lot and like to work out and/or participate in sports.

Q: Does your company makes DSL Routers?
A: No. And we do not make seatposts, nor stems nor headsets.
Listed on BlogShares