April 1, 2014

Jeff Cup

Jeff cup was a day for the hard men. The weather played a bigger role in the race than any team, or individual rider. The high for the day was an optimistic 42 degrees, but the wet cut to the bone.

Breakaways dominated the early races. With conditions what they were, I believed a small group could win my race. I spent the first half of the race riding the front trying to cover the moves I believed to be dangerous. I paid dearly for my efforts. A couple guys were able to carve out at most 20 seconds, but the wind shut down those efforts.

The field was strung out, single file, thanks to efforts throughout the race by Kelly and DC Velo. Hearing the bell on the final lap was a relief. Thoughts of numb extremities disappeared, and finishing strong renewed my motivation. The last lap was hard. We hit the hill single file, on the limit, muscles aching, belly breathing, and trying to get it over with as fast as possible. I pushed hard only to realize the group was now two. That was my race. I cruised to the line, towed by three Harley guys.

212 x2
Credit: Igda Warner (velogirl22.smugmug.com/2014-Jeff-Cup)

The Good

  • Covered the dangerous moves
  • Pushed my mental and physical limits
  • I am happy with my positioning throughout the race
  • Comfortable on the descents in the wet

The Bad

  • I knew race would split on last lap, but did not hit the hill further towards front
  • Allowed self doubt, the cold, and fake fatigue to limit me on the first lap



April 1, 2014

Black Hill Circuit Race

Before the race I could feel the effort I put into RIR the day before. I was definitely nervous about the level of fatigue in my legs.

Sitting on the rollers for 35 minutes before the race helped. The first few laps were mellow, no real attacks. Kelly and DC Velo were both motivated, so I knew if a break were to go, they would be the instigators. I spent effort on one move that I thought would be the race's move. The move was too early, and people were too motivated. A sprint decided the race.

123 xl
Credit: Igda Warner (velogirl22.smugmug.com/Sports/2014-Bike-Doctor)

The Good

  • Legs felt great despite fatigue from previous day
  • Read race right, had confidence race would result in a sprint finish

The Bad

  • Positioning, I was too complacent with sitting in
  • Took risks I should not have (I feel like I rode like a ding dong)



March 31, 2014

Richmond International Raceway Criterium

First race of the season with quite a large field. The race was won on the first lap of the race where a group of 4 guys took off. The break shrank to 3, but they were able to lap the field despite the stiff headwind.

1962867 672612689464245 1675115432 n
Credit: Nick Davis Photography (facebook.com/NickDavisRichmond)

The Good

  • I recognized that the break was a winning move
  • Went 'all in' trying to get across to the break away twice
  • Fitness felt good

The Bad

  • While fitness was good, I felt discouraged by the success of the break, and as a result lacked motivation to contest sprint



February 27, 2014

I have a serious appreciation for NSAttributedString. Cocoa's string constructs, while initially complex, provide power that I wish every language had. I recently implemented a small demo application. The application's sole purpose is to display posts from the App.net global timeline. While the application was quite simple, I wanted to display hashtags embedded in posts in a different color.

Luckily NSAttributedString makes this quite simple. My approach required two steps. First, using a regular expression, find all words starting with '#'. Next, apply a predefined style to all hashtags in the post. The code below demonstrates the simplicity of hashtag highlighting using NSAttributedString.

NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:text];

// this regular expression should probably be smarter, but it works
NSRegularExpression *regEx = [NSRegularExpression regularExpressionWithPattern:@"#[a-zA-z0-9]+" options:0 error:nil];

[regEx enumerateMatchesInString:text options:0 range:NSMakeRange(0, [text length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {

   NSRange range = [result rangeAtIndex:0];
   [string setAttributes:@{NSForegroundColorAttributeName: highlightColor} range:range];
February 19, 2014

For about eight months, design demons have delayed a product I need to ship. I am finding it difficult to design something that feels native to iOS 7, yet includes subtle styling cues to show I care. Attention to small detail, the detail that a user would take for granted is what makes an app great. If you never notice what I did, but can sense the thought put into the product, then I will feel like I succeeded.

Logarithmic scaling is something I discovered that helps add weight to the user interface. In testing, I found linear scaling of alpha values is too inhuman, and impersonal. Users deserve a feeling of resistance to destructive visual elements. The swipe-left-to-delete paradigm often times does not have enough friction. There needs to be some initial resistance to the action before a linear response is appropriate.

As a result, where it fits, I have changed my linear animations to model the curve of the natural log.