Archive for December, 2009

2009

Thursday, December 31st, 2009

Of ik er van ben – of niet – doet niet ter zake. Bij deze schrijf ik er een. Een terugblik. Omdat zij het ook doen. Kuddegedrag natuurlijk, maar wat zou het.

Het was mijn  tweede jaar als wedstrijdrenner. Bij het B-garnituur – da’s waar – en zonder succes bij de wegwedstrijden, maar ik ben gegroeid. Zo werd ik tweede tijdens een trainingswedstrijd van mijn onvolprezen wielervereniging en reed ik een aantal korte uitslagen tijdens tijdritjes die er door de bank genomen niet zoveel toe deden. Zoals in Streefkerk, onder het toeziend oog van een aantal heuze fans.

Het meest trots ben ik echter op de progressie die ik geboekt heb tijdens de monstertijdrit. Daar reed ik mijn pr aan flarden en bleef op het 122,4 kilometer lange parcours steken op een gemiddelde snelheid van 37,1 km/u. Voorwaar een prestatie die het melden waard is.

Het belangrijkste pr dat ik dit jaar brak was echter die op het thuisparcours van Woubrugge. Met zeven seconde weliswaar niet de progressie die ik had gehoopt, maar wellicht dat het daardoor makkelijker is om e.a. in 2010 beter te doen.

Teleurstellingen waren er ook.  Zo bleef ik net onder de 40 km/u op een winderig Texel, greep ik officieel net naast de bloemen tijdens het CK, trad toe tot het kamp der dertigers, en kneusde ik mijn rib tijdens de lompste actie van 2009.

Ik raakte zelfs in een serieuze winterdepressie, totdat mijn nieuw aangeschafte crosser me daar uittrok, en ik heuse winterpret beleefde op de fiets.  Hierdoor trapte ik nog net 6.730 kilometer weg. Minder dan in 2008, en nog veel minder dan gepland, maar beter dan gevreesd in oktober. Nu de blik weer vooruit en verder met de trainingsopbouw. Ik heb mooie doelen voor het nieuwe jaar. Daarnaast: Terugblikken is ook zó 2009.

Winterpret

Sunday, December 20th, 2009

Omdat de fraude moest worden gecompenseerd, m’n moeder me wel weer eens wilde zien, m’n liefje heel hard met haar promotie bezig is en dus andere dingen aan het hoofd had én omdat het weer gewoon te mooi (al dacht niet iedereen daarover gezien negatieve reisadviezen en heus weeralarm) was om binnen te blijven zitten, besloot ik dat het vandaag een mooi moment was voor een lange D1-training. Lekker op de cyclocrossert richting Lopik, om ter plekke te controleren of ons wielertalent nog steeds genoeg rust neemt, en genoeg spiermassa opbouwt.

Om met dat laatste te beginnen: ziet er prima uit. Komt wel goed met ’t manneke. De training zelf was echt fantastisch. De knisperende sneeuw onder de noppen. De otomobielen die zich glibberend  door rotondes manoeuvreren, waar ik heerlijk strak door heen kon sturen. Ja, vandaag was ik bijna net zo snel als de otomobiel op Neerlands binnenwegen.

Dat was ook wel de plek om te fietsen. Die binnenwegen. Fietspaden waren in geen velden of wegen te bekennen. Zij zijn ongetwijfeld niet weggelopen, maar te bekennen, ho maar. Alles wat sneeuw wat er blonk. Dat had wel een nadeel: Pekel. Maar goed, bij paps en mams thuis dat er maar even netjes afgeborsteld. Dat was wel nodig ook.

Na een korte pauze met gebakken ei, cola ̩n chocolade was de inwendige mensch weer afdoende versterkt. Zeker toen de stroomvoorziening er ter plaatste de brui aan gaf wist ik het zeker. Terug naar huis. Daar is het behaaglijk warm en wacht de boerenkool met worst en spekjes. Liefde gaat Рzeker na een lange training Рdoor de maag.Dus voor dat de schemer inzette, weer op de fiets, en gaan.

Dan denk je dat je een bekende route rijdt, maar met veel sneeuw in inmiddels ingevallen duisteris, valt dat toch best tegen. Zo stond ik oppeens volledig ongepland in Driebruggen. Gelukkig had ik de Garmin bij me. Voor de niet ingewijden, dat is een soort TomTom, maar dan een die als fietst ook acceptabel doet. Zo kon ik 100,59 kilometer later toch nog op tijd aanschuiven voor een heerlijke maaltijd. En met dank aan m’n nieuwe Sugoi broek: geen centje pijn.

ISO 8601

Friday, December 18th, 2009

Probably you are familiar with ISO. Some guys in a big office creating tons of paperwork every year. One of the standards they created is 8601. One of the items it describes is the number of the week, witch is commonly used.

Unfortunately Microsoft didn’t add an implementation for this week number in its .NET framework. A colleague of mine found one and added it to our extensions:

namespace HelloWorld.Extensions
{
public static class DateTimeExtensions
{
/// Returns ISO WeekNumber (1-53) for a given year.
///
The datetime.         public static int ISOWeekNumberOld(this System.DateTime dt)
{
// Set Year
int yyyy = dt.Year;
// Set Month
int mm = dt.Month;
// Set Day
int dd = dt.Day;
// Declare other required variables
int DayOfYearNumber;
int Jan1WeekDay;
int WeekNumber = 0, WeekDay;
int i, j, k, l, m, n;
int[] Mnth = new int[12] { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
int YearNumber;
// Set DayofYear Number for yyyy mm dd
DayOfYearNumber = dd + Mnth[mm - 1];
// Increase of Dayof Year Number by 1, if year is leapyear and month is february
if ((DateTime.IsLeapYear(yyyy) == true) && (mm == 2))
DayOfYearNumber += 1;
// Find the Jan1WeekDay for year
i = (yyyy - 1) % 100;
j = (yyyy - 1) - i;
k = i + i / 4;
Jan1WeekDay = 1 + (((((j / 100) % 4) * 5) + k) % 7);
// Calcuate the WeekDay for the given date
l = DayOfYearNumber + (Jan1WeekDay - 1);
WeekDay = 1 + ((l - 1) % 7);
// Find if the date falls in YearNumber set WeekNumber to 52 or 53
if ((DayOfYearNumber <= (8 - Jan1WeekDay)) && (Jan1WeekDay > 4))
{
YearNumber = yyyy - 1;
if ((Jan1WeekDay == 5) || ((Jan1WeekDay == 6) && (Jan1WeekDay > 4)))
WeekNumber = 53;
else
WeekNumber = 52;
}
else
YearNumber = yyyy;
// Set WeekNumber to 1 to 53 if date falls in YearNumber
if (YearNumber == yyyy)
{
if (DateTime.IsLeapYear(yyyy) == true)
m = 366;
else
m = 365;
if ((m - DayOfYearNumber) < (4 - WeekDay))                 {                     YearNumber = yyyy + 1;                     WeekNumber = 1;                 }             }             if (YearNumber == yyyy)             {                 n = DayOfYearNumber + (7 - WeekDay) + (Jan1WeekDay - 1);                 WeekNumber = n / 7;                 if (Jan1WeekDay > 4)
WeekNumber -= 1;
}
return (WeekNumber);
}
}
}

Not only is this an extreme unreadable piece of code, it seems to be invalid as well. So I decided to create something more understandable:

namespace HelloWorld
{
/// Represents a date as specified by ISO 8601 week date.
///
/// See: http://en.wikipedia.org/wiki/ISO_8601
/// and: http://en.wikipedia.org/wiki/ISO_week_date
///
public struct Iso8601WeekDate
{
private int m_Day;
private int m_Year;
private int m_Week;
private DateTime m_Date;

/// Initializes a new instance of the Tjip.Iso8601WeekDate structure to the specified System.DateTime.
///
The date of the ISO 8601 WeekDate.         public Iso8601WeekDate(DateTime date)
{
// Only the date will be available.
m_Date = date.Date;
// Set the year.
m_Year = date.Year;
// The day is oke by default, Unless its sunday (int value = 0)...
m_Day = (date.DayOfWeek == DayOfWeek.Sunday) ? 7 : (int)date.DayOfWeek;

// Now the week number.
DateTime startdate = GetFirstDayOfFirtWeekOfYear(date.Year);
DateTime enddate = GetFirstDayOfFirtWeekOfYear(date.Year + 1);
// The date is member of a week in the next year.
if (m_Date >= enddate)
{
startdate = enddate;
m_Year++;
}
// The date is member of a week in the previous year.
if (m_Date < startdate)
{
startdate = GetFirstDayOfFirtWeekOfYear(date.Year - 1);
m_Year--;
}
// Day of the week.
int dayofyear = (m_Date - startdate).Days;

// The week number is not zero based.
m_Week = dayofyear / 7 + 1;
}

/// Gets the date component of this instance.
public DateTime Date { get { return m_Date; } }
/// Gets the year component of the date represented by this instance.
public int Year { get { return m_Year; } }
/// Gets the week component of the date represented by this instance.
public int Week { get { return m_Week; } }
/// Gets the day component of the date represented by this instance.
public int Day { get { return m_Day; } }

/// Gets the date of the first day of the first week of the year.
///
/// Source: http://en.wikipedia.org/wiki/ISO_8601
///
/// There are mutually equivalent descriptions of week 01:
/// - the week with the year's first Thursday in it (the formal ISO definition),
/// - the week with 4 January in it,
/// - the first week with the majority (four or more) of its days in the starting year,
/// - the week starting with the Monday in the period 29 December – 4 January.
///
public static DateTime GetFirstDayOfFirtWeekOfYear(int year)
{
DateTime start = new DateTime(year, 01, 04);
while (start.DayOfWeek != DayOfWeek.Monday)
{
start = start.AddDays(-1);
}
return start;
}

/// Represents the Tjip.Iso8601WeekDate as System.String.
public override string ToString()
{
return ToString("YYYY-Www-D");
}
/// Represents the Tjip.Iso8601WeekDate as System.String.
///
The format.         ///
/// Representations of the following formatting are allowed:
/// - YYYYWww
/// - YYYY-Www
/// - YYYYWwwD
/// - YYYY-Www-D
///
/// [YYYY] indicates the ISO week-numbering year which is slightly different
/// to the calendar year (see below).
///
/// [Www] is the week number prefixed by the letter 'W', from W01 through W53.
///
/// [D] is the weekday number, from 1 through 7, beginning with
///
/// Monday and ending with Sunday. This form is popular in the
/// manufacturing industries.
///
public string ToString(string format)
{
switch (format)
{
case "YYYYWww": return string.Format("{0}W{1:00}", this.Year, this.Week, this.Day);
case "YYYY-Www": return string.Format("{0}-W{1:00}", this.Year, this.Week, this.Day);
case "YYYYWwwD": return string.Format("{0}W{1:00}{2}", this.Year, this.Week, this.Day);
case "YYYY-Www-D": return string.Format("{0}-W{1:00}-{2}", this.Year, this.Week, this.Day);
default: throw new NotSupportedException(string.Format("The format '{0}' is not supported.", format));
}
}
/// Returns the hash code for this instance.
///
/// A 32-bit signed integer that is the hash code for this instance.
///
public override int GetHashCode()
{
// It should be fast, so shift.
//       ..3.....6............14 = 23 bit
// bits: DDDWWWWWWYYYYYYYYYYYYYY
int hash = this.Day + this.Week >> 3 + this.Year >> 9;
return hash;
}
}
}

And to extend it to System.DateTime:

namespace HelloWorld.Extensions
{
public static class DateTimeExtensions
{
public static Iso8601WeekDate ToIso8601WeekDate(this DateTime dt)
{
return new Iso8601WeekDate(dt);
}
/// Returns the (ISO 8601) number of the week.
///
The datetime.         /// The (ISO 8601) number of the week.
///
///  Source: http://en.wikipedia.org/wiki/ISO_8601
///
public static int ISO8601WeekNumber(this DateTime dt)
{
Iso8601WeekDate weekdate = new Iso8601WeekDate(dt);
return weekdate.Week;
}
}
}

Not only is this imho much easier to read (and working correctly), you can format it like ISO spected it.

Fraude

Wednesday, December 16th, 2009

Sinds enige tijd houd ik online mijn kilometrage bij. Vanaf vandaag verstrekt deze website naast de gelogde ritjes, ook informatie over het totaal der tellerstanden. In een klap werd duidelijk dat ik – gelijk de accountant van ’s lands grootste kruidenier – door het seizoen heen, meer dan honderd ‘overige’ kilometers ten onrechte had opgevoerd als trainingsarbeid.

Ik heb ze direct afgeboekt op de balans. Tevens bied openlijk mijn oprechte excuses aan, voor dit zware vergrijp:
O, wijze trainer (en andere gedupeerden), ik zal het nimmer weer doen, ik beloof beterschap.  Wees mij genadig, het was niet met kwade opzet, en ik maak de gemiste trainingsarbeid dit jaar nog goed.

Hopelijk stemt dit mild en blijft het bij een berisping en een niet al te zware straftraining…

Fan

Sunday, December 13th, 2009

Vroeger was ik fan – zoals vele kleinzonen – fan van m’n oma. Ze was een creatieve tanteoma, die schilderde, wandkleden maakte, en met de figuurzaag nachtlampjes kluste, maar bovenal was ze een goede kok. Befaamd en geroemd werd haar chocoladecake. Ook als kleine jongen ging de liefde al door de maag, en het moge vanzelfsprekend zijn dat we zouden trouwen, en dat ze dan elke dag chocoladecake voor mij zou bakken. Een korte blik op mijn postuur doet vermoeden dat het hier nooit van is gekomen. En dat is juist: mijn oma overleed in het vroege voorjaar van 1988. Haar fan bleef rouwend achter.

Het duurde lang voordat ik mij weer fan zou noemen. Het was in de zomer van 1996. Ik had een verzamel-CD gekocht van rocklegenden, en een van hen bekoorde mij bovenmatig. Zijn naam was Jimi Hendrix, en het gitaarspel dat hij ten beste gaf, was – en is – van uitzonderlijkefenomenale klasse. Ongeëvenaard. Bijkomend voordeel was, dat hij al jaren niet meer onder ons was. Dat verdriet zou me bespaard blijven.

Ik had niet gedacht dat ik ooit een derde persoon aan dit illustere rijtje zou toevoegen. Houd me ten goede, mijn geliefde voldoet aan alle randvoorwaarden, en ik adoreer haar zeker. De verhouding tussen een fan en een held is echter geen gezonde basis voor een liefdesrelatie. Ik ben liever haar minnaar én geliefde.

Nee, mijn nieuwe held is een wielrenner. Hij levert noch buitenaardse fietsprestaties, noch schakelt hij de overwinningen aaneen. Nee, hij praat en schrijft met een bezieling over de sport dat het een aard heeft. Daarin ontziet hij zich niet. Steevast weet hij met een overdosis zelfspot de situatie te kenschetsen. Hij is het bewijs dat je geen groots kampioen of talent hoeft te zijn, om te genieten van wat je doet. Plezier en toewijding zijn vele malen belangrijker. Het vervuld mij als volger met dat zelfde warme gevoel.

En om misverstanden uit de weg te ruimen: het is geen koekenbakker, zeker niet. Hij heeft alleen de pech dat de meesten die langzamer zijn dan hij (en dat zijn er velen) doorgaans niet opstappen als er een wedstrijd wordt verreden. En ik heb al strijdend op de fiets, al menig maal mij meerdere moeten erkennen in mijn held. Sterker nog, ik heb bijkans eenmaal verslagen. Tijdens de proloog van de GP Vijfhuizen. In het daaropvolgende criterium liet hij me alle hoeken van de steentjes zien…

Vandaag – ik was getuige – was het niet anders. Graag was ik vandaag de strijd met heem aangegaan, maar deze kneus is gebleseerd. Ook andere renners waren verhinderd, en zo stond mijn held in een wel heel karig startveld aan de start. Dat deerde hem niet: hij ging tot het gaatje. Met waarden om trots op te zijn (Int.: 63%; D3: 37%; D2,D1, H: 0%) volbracht hij de missie. De bloemen en een plekje op het hoogste schavot waren zijn deel.

Toch is zijn reactie op deze overwinning typerend. Hij was liever derde bij de veteranen geworden mét concurrentie. Het was hem gegund. Nu nog even geduldig wachten tot hij ons in eigen persoon deelgenoot maakt van zijn belevenissen op zijn blog. Ik ben voorwaar benieuwd!

Krak

Wednesday, December 9th, 2009

Al enige tijd ben ik minder tevreden over m’n – archaïsche – pedalen. Vooral de BBB-variant die ik op twee van de drie fietsen heb gemonteerd hebben kuren. Zo af en toe zegt – tot op heden alleen de linkerzijde – krak, en is er een palletjeveertje afgebroken.

Derhalve heb ik onlangs nieuwe – naar het schijnt hippe – pedalen besteld: Speedplays.  Maar zoals dat gaat: eerst moesten de oude er af. Dus vrijdag met de steeksleutel in de weer. Drie van de vier gingen prima. Die laatste had wat meer voeten in de aarde. Dus ik met m’n volle gewicht op de bovenbuis, en afzetten. Krak! Auw!

Dat deed zeer. Maar ik ben een bikkel – naar het schijnt, want ik ben tijdrijder – en had er in eerste instantie geen last van. Dus zaterdag een zware Tacxtraining,  en zondag ’s ochtends een cyclocrosswedstrijd en ’s avonds het liefje zo nu en dan opgetild, zodat ook zij de capriolen van Rammstein op het podium kon ontwaren.

Tot gisteren. Het begon serieuzer pijn te doen. ’s Nachts heb ik alleen op m’n rug gelegen – draaien ging niet meer – en liefje vond dat ik maar naar de huisarts moest. Ik heb dus een rib gekneusd. Mocht ook direct door naar LUMC voor fancy plaatjes. En de komende vijf weken rustig aan, en niet te veel lachen: dan hoor ik een krak.

Bruin

Sunday, December 6th, 2009

Het was mijn ontgroening. Vandaag, tijdens de SwiBo-cross, op de lokale omloop van m’n wielercluppie trad ik aan tegen een grote horde jonge – en minder jonge – mannen die op hun mtb’s en cyclocrossers hun competitie afwerken.

Vanaf de start had ik het zwaar. Het deed zeer, heel veel zeer. Mijn hartslag schommelde tussen de 5 slagen boven mijn omslag punt en 1 slag onder mijn maximum. De blubber kwam uit mijn oren, en was met geen mogelijkheid van mijn bovenbenen meer te krijgen. Ik ben niet gevallen – dat schijnt voorwaar een prestatie te heten –  maar naar een half uur was de koek op. En dat terwijl de opgave was om vijftig minuten plus een rondje zandtaartjes te bakken.

Het was het mooi geweest. De kleur van mijn kleren en fiets waren duidelijk niet groen meer…

Tacxen

Saturday, December 5th, 2009

Ik tacx, zij kijkt tv tacxt, wij tacxen. Een raar werkwoord, voor een rare bezigheid.

Vandaag had ik een afspraak met een fotograaf. Zo’n echte, met een hele tas spullen, drieduizend lenzen (of was het nu met lenzen van drieduizend euro?) en megahippe camera. Hij moest bestuurders vastleggen. Nu valt er op de rollenbank of op de Tacx  niet zoveel te sturen natuurlijk, maar dat weet zijn opdrachtgever gelukkig niet.

Binnen trainen is niet mijn favoriete bezigheid. Ik kijk de hele dag al naar beeldschermen, en zelfs in een D1 gutst het zweet al van het lijf.

Maar goed, ijdel als ik ben had ik van te voren bedacht dat het er wel een beetje indrukwekkend uit moest zien. Dus ik had een flinke interval training gepland voor mezelf. Afzien met een hoofdletter A.

En dan stap je na drie kwartier bezweet en totaal uitgewoond af:
– Zit de foto die je zocht er tussen?
– Ja, de vijfde of de zesde die ik schoot.
– En hoeveel heb je er geschoten dan?
– Ach, een stuk of negentig denk ik…

30

Tuesday, December 1st, 2009

Tja, u kent ze wel – u bent immers een renner, of bekend met mijn rare hobby’s – toerrijders. Mannen met buik, een te dure fiets, en dito pretenties. Ze rijden geen wedstrijden, of beter gezegd: Elke rit is er eentje.  Een race tegen de klok. Tegen de kilometerteller, tegen de magische grens van dertig. Toerrijders rijden dolgraag minimaal dertig kilometer per uur. En nog liever: dertig kilometer per uur gemiddeld.

Ik ben geen toerrijder. Daarnaast heb ik die dertig altijd een lachertje gevonden. Wat stelt het nu helemaal voor? Je hoef er je best niet voor te doen. Het gaat bijna vanzelf. Veertig daaarvoor moet je moeite doen. Dat is hard werken, dat doet zeer. Dan begin je pas mee te tellen.

Ik zat fout. Dat werd vandaag heel pijnlijk duidelijk…

p.s. Als het door velen voorspelde buikje is waargenomen, zal ik dat ook laten weten.