Check Engine Light

The check engine light in my 2004 Matrix came on yesterday morning. I was kinda alarmed, so I stopped at an Advance Auto Parts. They helpfully checked the code in the OBD2 and turned out it was the first oxigen sensor.

I picked up a universal Bosch oxigen sensor (the OE one was not in stock and $30 more expensive). Last night I got it installed – took me about an hour because I didn’t cut the wires long enough, and the PosiLock wire splicing that was included in the kit was a pain to get right.

After installing it, I started the engine – the check engine light was still on. I was hoping it will turn itself off while driving to work this morning, but after about 10 minutes it didn’t. So I called the store and they asked if I did reset the computer (remove one of the battery connectors, preferrably the negative, for 3-5 minutes).

That seems to have done the trick – funny this step was not included in the directions.

Total cost: $75 parts, 1 hour labor.

The king is dead, long live the king!

As we here at rPath are trying to embrace standards [1], I got to work on CIM again. Kind of a deja-vu since, in a previous life, I started to write Cimbiote – a way to write CIM providers in python.

Cimbiote did not go anywhere in the past 2 years and a half, so I dusted it off and started to play with it. As it turns out, major pieces were missing: the ability to create references, support for associations etc.

When trying to add reference support, I found out from the sblim mailing list that there is still hope in the world. Today I finished packaging cmpi-bindings=contrib.rpath.org@rpl:2 and wrote a simple plugin that does not do much, but was enough to prove far superior to cimbiote.

[1] You, in the back row, stop chuckling. We all know that standards are wonderful things, as Tigger would say.

Awesome Umstead Park map

Backwoods Orienteering Klub is selling full-size Umstead Park maps. This is the same map we are using for our orienteering events, except that ours are generally scale 1:10,000 printed on a letter-size paper, whereas this is 1:15,000 printed on a much larger sheet (events are usually happening in about a quarter of the mapped area).

The park-maintained trails are marked with red on top of the standard orienteering black.

The level of details is amazing (what you expect from orienteering maps). There is history behind the map too, apparently after one of the major hurricanes (Fran, 1997) the map was redone and somewhere close to 15,000 trees were _individually_ mapped. Also, at some point you could see the trail of a tornado taking down a huge number of trees (1989) – now only impassible areas of overgrown vegetation.

To quote from the map description:

… Utilizing orthophoto base materials, detailed field surveys were performed in various stages by eleven different individuals over twenty-six yers. It took an estimated one thousand one hundred man hours of labor to produce this map. Drafting was done on computer using OCAD software. This map is printed, using soy based inks, on PaperTyger, a paper plastic laminate, making it water and tear resistant.

If you are interested in one, check out one of the retailers, or let me know and I can try to pick one up for you when I get mine.

Gear ratios

I was curious how important having a bicycle with 24 speeds (vs. 21 gears vs. 6 gears) is. I have an Iron Horse mountain bike with 24 speeds (3 gears front, 8 gears back). My daughter has a smaller mountain bike with 6 speeds (only 6 gears in the back). Obviously the wheel size matters a lot, but how much does having 24 speeds help *me* in particular? I know my 26″ wheels make me go faster than my daughter’s 20″, but wheel size being equal, how do various gear/sprocket combinations compare?

Being a geek by nature, I wrote a (python, of course) program to sort the speeds. Here is the output:

Front: [(0, 24), (1, 34), (2, 42)]
Back:  [(0, 32), (1, 28), (2, 24), (3, 21), (4, 18), (5, 15), (6, 13), (7, 11)]
0 (0:0): 0.750
1 (0:1): 0.857
2 (0:2): 1.000
8 (1:0): 1.062
3 (0:3): 1.143
9 (1:1): 1.214
16 (2:0): 1.312
4 (0:4): 1.333
10 (1:2): 1.417
17 (2:1): 1.500
5 (0:5): 1.600
11 (1:3): 1.619
18 (2:2): 1.750
6 (0:6): 1.846
12 (1:4): 1.889
19 (2:3): 2.000
7 (0:7): 2.182
13 (1:5): 2.267
20 (2:4): 2.333
14 (1:6): 2.615
21 (2:5): 2.800
15 (1:7): 3.091
22 (2:6): 3.231
23 (2:7): 3.818

What does this show?

First, the number of teeth in each gear (sprocket) for the front and back. They are sorted in reverse order front/back, since you will have the highest speed with the large sprocket in the front and small sprocket in the back.
Then, the first column represents the speed number, counting with the smallest front sprocket and each back sprocket, then the next front sprocket and each back sprocket etc. The second column shows which sprocket combination it represents (front:back). Third column is the ratio front/back (number of teeth). The higher the ratio, the higher the speed (and the harder you work).

What does this show?

Something I knew all along: I only need one front sprocket (the largest). I don’t do a lot of trail, even then I generally do 2:3 or higher, and on streets I’m using 2:4, 2:6 or 2:7. Notice how 2:0 is pretty high in the list, with a 1.3 ratio – and I feel like I don’t make any progress when I try that! This means that probably the combination of 8 sprockets in the back with the largest sprocket in front is way more than enough for me.

Again, I don’t do hard-core mountain biking, maybe if I did I’d find a need for the other two front sprockets. Can someone enlighten me if the other two front sprockets are really useful?

Terrible twos

Two years ago I started my employment with rPath.
Lots of things happened so far; I’ve learned a lot and I still feel like I have a lot more to learn. That’s a good thing, I believe if you think there is nothing more to learn it’s probably time to look for another challenge. Pico della Mirandolla allegedly said something along the lines of “I know everything there can be known, and even more than that”. I’ll try not to say the same thing any time soon :-)

VIM tip of the day

An operation I happen to do a lot:

Given a list of words spread on separate lines, sort the words.

One can try to do :sort or !sort on a range, but that will sort the lines, not the words inside the lines.

Easiest I found so far (but requires visual formatting which is only available in vim):

  • visual select of the lines you want to sort
  • !!fmt -1
  • visual select of the lines you want to sort
  • :sort
  • gw}

Clear as mud :-)

Explanation:

! will run the selection through an external program, in this case fmt (which is a Unix command to format a list of lines). -1 says to format with a text width of 1 character (which effectively breaks the words at the space)

:sort will sort the selected lines

gw} will format from where the cursor is to the end of the paragraph (re-joining the lines).

Half-marathon in Asheville

I can finally say I did a half-marathon – the Asheville Citizen-Times one. Here are the results.

Lessons to be learned (or random thoughts at the end of a long day):

  • Hilly courses are hard. I signed up before looking at the course elevation chart. I am glad I did, I may have changed my mind otherwise :-)
  • It is very hard to pace yourself on hills.I ran the first two miles at a 7:30 pace, downhill. I was pretty sure I won’t be able to keep that pace, it was faster than I was intending it to be (see below).
  • I noticed interesting strategies for handling hills during the race. My approach is to try to keep a steady pace going uphill just as going downhill. I’ve seen (especially) ladies going slowly up the hill and blasting past downhill. It was actually funny to see that the net result was about the same, since I would catch them up on the next hill. I briefly discussed this with another guy that happened to be in my vicinity for about 4 miles, and we agreed it’s hard for tall people to accelerate going downhill. It puts a lot of strain on the knees, the glutes and the core. There was at least one guy that was walking uphill just to go extremely fast on flat or down. I am not sure who is right, it may be a matter of preference.
  • Water stations are good, even though I was able to take only a sip out of every cup. Physics make it hard to drink while you’re running. The rest of the water was used for cooling off. Oranges provided a nice boost of energy at the last two stations.
  • The corollary for the first two miles going downhill was inevitably that the last two miles were uphill. That was unexpectedly hard. I felt great up to mile 11, but started to feel the pain after that. Probably also because my long runs during training were stopping at 10 miles.
  • I dreaded to look at the clock after I finished the race. I finally did it after drinking 1l of water, about 10 minutes after the finish. I was very pleased, given that the average pace was 8.09 when I hoped for 8:45 (since that’s what I found to be comfortable in training for a 10-miler).
  • Do not ask me if I will do this ever again. Right now I’d probably say “no way”.

After the race we got to enjoy Asheville – it’s a very quiet, very European city.

End of the summer

You know it’s the end of the summer when the kids are back in school. With our oldest being in a year-round school, that doesn’t quite make as much of a distinction as the “traditional” school does.

But this year the kids had a great summer. They spent 5 weeks with their grandparents (my parents), and then my parents visited us for another five weeks. My sister also visited us for a bit over 3 weeks, so we had a nice family reunion going on. Too bad I was so busy I didn’t get to spend enough time with them.

My parents left on Saturday, my sister left on Monday. My daughter was very sad that her aunt is going back home, to the point where we couldn’t make her stop crying – both Sunday night and Monday morning when she woke up extra early to say bye to my sister. Very emotional.

We’re now adjusting to being by ourselves with the kids (with the young one growing up, it’s a lot more exciting and challenging, since he’s very creative).

In other news: I decided to decline Todd and Monica‘s invitation to join them for the Rock’n'Roll half-marathon in Virginia Beach, VA. Too many people in the same place scare me (the race is supposed to have 20k participants). I’ll try to do the Asheville half-marathon, mid-September, instead.

There are lots of other things happening that keep me busy; just like in my previous post 3 months ago, I promise I will write about them in the near future :-P

Also in some future post, more about our own vacation in Paris and Munchen.