Actively Reading
|
Introducing Ethics | David Robinson, et al
Socrates Cafe : A Fresh Taste of Philosophy | Christopher Phillips
|
|
On-deck
|
Agile Software Development | Alistair Cockburn
The Hacker Ethic | Pekka Himanen, et al
Counter Hack | Ed Skoudis
Practical Unix and Internet Security | Spafford, Garfinkel
|
|
Read
(since 9.16.99) |
The Career Programmer | Christopher Duncan
A Beautiful Mind | Sylvia Nasar
Me Talk Pretty One Day | David Sedaris
Euclid's Window | Leonard Mlodinow
Ava's Man | Rick Bragg
Affluenza | John DeGraaf, et al
sed & awk | Dougherty, Robbins
The Unix-hater's Handbook | Simson Garfinkel, et al
XML/RPC | Simon St. Laurent, et al
Core J2EE Patterns | John Krupi, et al
eXtreme Programming Explored | Wake
Software Craftsmanship | McBreen
XML-RPC | St. Laurent, et al
Mastering Regular Expressions | Friedl
Programming Ruby | Thomas, Hunt
Slack | DeMarco
Advanced JavaServer Pages | David Geary
Effective Java | Jeremy Bloch
Learning the vi Editor | Lamb, Robbins
The Secret House | David Bodanis
Unix Tricks and Tips | Kirk Waingrow
Learning the Korn Shell | Bill Rosenblatt
Geeks
| John Katz
Hitchhiker's Guide to the Galaxy | Douglas
Adams
The
Cathedral and the Bazaar | Eric S. Raymond
Stranger in a Strange Land | Robert Heinlein
Several Books on Solaris and Unix Admin
It's
Not About the Bike | Lance Armstrong
The
Humane Interface | Jef Raskin
The
Pragmatic Programmer | Andrew Hunt
The Water-method Man | John Irving
The
Nudist on the Late Shift | Po Bronson
Does the Center Hold?: An Introduction to Western
Philosophy | Donald Palmer
Principles of Transaction Processing | Philip
Bernstein
In the Beginning Was the Command Line | Neal
Stephenson
The Tomb | HP Lovecraft
The Lurking Fear | HP Lovecraft
Secrets, Lies, and Democracy | Chomsky/Barsamian
Hannibal | Thomas Harris
eXtreme Programming eXplained | Kent Beck
Philosophy for Dummies | Tom Morris
Sophie's World | Jostein Gaarder
Clear Thinking | Hy Ruchlis
Chomsky for Beginners | David Cogswell
Philosophy, the Basics | Nigel Warburton
Surely You're Joking, Mr. Feynman! | Richard
Feynman
The Lord of the Rings | J.R.R. Tolkien
|
|
Listening
|
Remain in Light | Talking Heads
Good Dog, Happy Man | Bill Frisell
Revival | Gillian Welch
|
|
|
|
Thursday, November 30, 2000
|
Ahhhh. Finally recovered my blog archives. I was starting to get a bit worried!
|
|
|
Spinning workout last night. Rode home tonight. It's getting darker earlier - no surprise there. I didn't freeze too badly tonight because the day was fairly warm and sunny. I feel like I can tell a difference in my power production from the spinning workouts. I averaged 18.1 (with a tailwind) to Prince Street, and backed off a lot on the rest of the ride home for an all-inclusive average of 15.8mph. Not good, not bad.
I've been pulling my hair out at work a lot lately. We've lost two people from the team 1) an architect peer of mine, so I picked up his stuff, and 2) our configuration management person - I picked up her stuff, too. It's starting to get to me. The CM procedures and the environments that we deploy into for testing, training, etc., were in total disarray. I'm the type of person that can't move forward if there's crap in the way. I feel like instructions for doing builds should take no more than a few lines of documentation in a web page, and that all environments should be as logical and similar as possible, so I've spent tons of time re-doing a lot of scripts and directory structures, and rewriting the procedures. Meanwhile, I'm studying up on the intricacies of CVS in order to effectively branch our source for better control. My coding practices follow me into every other task, it seems.
|
|
Monday, November 27, 2000
|
Well, it was a very nice Thanksgiving break. It had been a long time since my last vacation, so four days off was great.
I actually did a one hour spinning session on Thanksgiving morning, which was very intense, but made for a fairly guilt-free turkey day. I took Friday off -- no workouts. But I did another spinning session on Saturday; and this session was even more intense than the Thursday session. Yesterday, I did my normal weight workout.
Since I'm riding home today I finally got around to retightening my front spokes last night at about 9:00 (see my diatribe on this topic a couple of entries down). I first tensioned the two floppy spokes that seem to always develop on this wheel, then I went around the wheel once, tightening each spoke a quarter-turn. I then did a quick trueing to make up for any warpage that occured during the tightening phase.
The weather looks pretty reasonable this week so I'll try to ride at least twice. I intend to get in a spinning session at least once a week, too, so I should be able to keep my cycling legs through the winter.
|
|
Thursday, November 23, 2000
|
skb's virtual cave is a large site covering, well, a lot of stuff. Worth a look if you're a geek.
|
|
Wednesday, November 22, 2000
|
I decided not to ride today, but since the weather had relented a little bit, I did ride home yesterday. I only had to navigate a couple of small icy areas, and I actually made it home without my toes going to sleep. However, it occured to me during the ride how cold and lonely it is to ride home in near dark alongside the Platte River in winter. There were tons of geese around, making me wonder if they're a little behind schedule in their migration.
I find that I ride much harder (though not necessarily faster) in cold weather. The cold works in two seemingly contradictory ways: first, it's cold, which keeps me from overheating when I exert myself, second, it's cold, which makes me want to get the hell home because I'm freezing. I have no real data to back this up because I'm riding my "winter" wheels and haven't moved the computer magnet to this set. My legs were really burned out by the time I got home and started relaxing. My upper body was also a bit sore from Monday's workout because I'd stepped up my weights a bit, so I was really thouroughly tired.
On the way home from last night's ride, I stopped in at the bike store to complain about their service. A bit of background is in order: I'd taken both "winter" wheels (they used to be my only wheels) in to them to have the wheels rebuilt. The reason is that spokes kept loosening on the front wheel (every ride, loose as a piece of spaghetti), and I'd broken a spoke on the rear on two different occasions. I almost never break spokes, and was getting tired of retightening and trueing the front. I'd been told before by another bike shop that the rear rim was warped and that's why I keep breaking spokes. My assumption was also that the front wheel just wasn't built correctly in the first place. So, I took the wheels in, and at great length described my troubles and basically said "price is no object - make these wheels right". A few days later I go to pick up the wheels and I asked the guy who supposedly rebuilt them if the rear rim was indeed warped. He said "well, you had a broken spoke". Well, DUHH, as if I didn't know that already!! So I suspected right then that he'd assumed I'm the typical ignorant customer and so he just did the minimum - a spoke replacement and trueing on both wheels. This was further confirmed when I got the bill: $10. "Seems cheap", I thought, "but maybe they're cutting me a break because I'm such a good customer." So, back to last night, as I was riding home I started hearing a tell-tale squeak from the front wheel. Sure enough, I checked the spokes at a stop light and one of them was as loose as could be. This infuriated me because I'd paid (but not much) for a rebuild, and clearly it was not done. But not only that, I paid in time. Time when I couldn't ride these wheels. Time that I'll now lose when I bring them back in for the "special" service that they've now promised me.
|
|
Saturday, November 18, 2000
|
Still haven't ridden since the 9th. Sigh. The snow has come a few times, with just the right timing to make it impractical (and maybe dangerous) to ride outdoors. However, I continue to do weight training, which I always preface with a 15-minute LifeCycle warmup. Now that it looks as though I'm going to miss more rides, I'll bump up my LifeCycle time.
On Wednesday, I tried "spinning" for the first time. That worked out great. My rec center offers the classes once a week until December, when sessions will be held twice a week. If I attend both sessions I'm confident I'll keep my cycling legs all winter, regardless of whether I can ride outside.
My weight has been climbing again, while my body fat measurements have been falling (from an inflated figure, so it's not that impressive that they're falling), in general. I guess my weight has risen a bit in response to my less frequent riding, combined with the weight training. My clothes don't feel any tighter, so I'm hoping the weight gain is mostly innocuous. Hopefully spinning will keep it in check (it's a very intense 45-minute workout).
|
|
Wednesday, November 15, 2000
|
A great site on OO Design. I can't figure out who runs the place, or what they do exactly (the site isn't "salesy" at all - uncommon). All I know is there's some good stuff there, notably a review on Together/J 3.0 (TJ is currently at 4.0+), which is my favorite Case/IDE tool. Have a look - it's worth it: Objects by Design: Home
|
|
Tuesday, November 14, 2000
|
I haven't ridden since the last update. Too much cold, snow, and ice. I might get a ride in this week, if I'm lucky. Maybe tomorrow. If I don't ride tomorrow, I've made a commitment to myself to do a spinning workout at the rec center. Perhaps if I spin at least once a week when I don't cycle, I can keep my legs. Regardless, I am back to weight training, which is a good thing.
|
|
Friday, November 10, 2000
|
I've cycled home the last couple of days, even though it's been pretty cold (~35 degrees) and dark at my commute time. Wednesday I took the Platte River Trail (PRT) route home, which totals about 17 miles. Last night I took the Cherry Creek Trail (CCT) route, which is about 22 miles. I'm able to brave the cold and dark for two reasons: appropriate clothing and lighting. Having these needs covered, I can make no excuse for avoiding a ride, other than icy/snowy roads (and even this can be overcome, but I'm less adaptable in this area).
What probably causes me the most discomfort during a ride is cold toes. Yesterday, I forgot to bring my toe covers in, which was a grave mistake. So grave that I took the bus to the nearest bike shop at lunch and bought a pair of Pearl Izumi booties. These are full-coverage, insulated, water and wind resistant shoe covers that I'd been wanting anyway because my toe covers leave a little to be desired. While at the shop I tried on some gloves and ended up with a pair of Pearl Izumi insulated gloves as well (the next most uncomfortable body part during cold rides has been my hands). $100 later (yikes!), I'm fully outfitted for the evening's ride.
The booties worked fine, but my toes were still pretty cold by the end of the ride. I'm convinced they'd have become uncomfortably cold earlier in the ride if I'd just worn my toe-covers. The gloves were great in terms of temperature control, but the insulation between the inner and outer liners of the gloves (which is present even on the palms) cause them to feel "slippery" because the inner and outer layer can move independently of each other. My hands got a bit sore in the early part of the ride, probably because I was subconsciously overcompensating for this slippery feeling. However, my hands were fine by mid-ride.
My new lighting system is an Apex DLI dual-beam setup I bought from Performance Bike Shop. They make use of up to 26 watts of power to output of up to 646 lumens. They're pretty darn bright. I can definitely get by on one beam unless I'm moving very fast with little ambient light (such as on some sections of the bike trail). They're designed with one flood lamp (for normal use), and a high-power spot lamp (for fast riding, and to really be noticed by cars). The lamps can be independently adjusted and focused, and each provides three levels of output. The battery is surprisingly small and is NiMH for "memory-free" recharging. Unfortunately, the supplied charger is a 14-hour trickle unit and you have to be careful not to overcharge. The high-end charger is expensive (why?), so I think I'll stick with the supplied unit for now. This setup was very expensive, but at the same time, much more reasonably priced than competing units. I figure that being able to ride through the winter is worth the expense.
|
|
Wednesday, November 08, 2000
|
They Write the Right Stuff is an interesting article about mission-critical software development, and how near perfection can be achieved. Be sure and check out the comments attached to the article.
Now, onto my personal soapbox:
Scale Your Processes
From the tone of the article, and from the comments attached, there seem to be a lot of people who think that all software should be built this way. I disagree. In short, my argument is that software processes must scale.
The NASA folks are working for a nonprofit, government-funded project that has no competition. They've been working on this code for 20 years (unless I read the article incorrectly). They take forever to create meticulous specifications for each function point they intend to implement, and they use rigorous inspections to find defects before the software goes to production. Additionally, (and I'm taking a bit of a liberty here, since I don't really know NASA's business) I suspect that engineers are defining the requirements for the software engineers at NASA. There's little "impedence mismatch" in this scenario between specifiers and creators.
Contrast this with the typical for-profit, product development or IT, software organization. They have market pressures, and a need to make a profit. In the case of an IT department, the software isn't even the focus of the business. Business and productivity (B&P) software, most of the time, is not mission- or life-critical. A bug in most B&P software represents only inconvenience, whereas a bug in NASA's software represents a possible loss of life. Generally, your requirements are coming from a businessperson who has little interest in expressing in gnat's-ass detail every possible requirement of the software to be produced. They'd much rather make sweeping statements about general functionality. Makes sense -- they're not engineers. They're just trying to help the business make money. Big difference.
Given the above, do you still feel that all software developers should be required to follow the processes followed by a life-critical development team? I don't. I shouldn't have to do this, but I'll further illustrate. To use the simplistic model that many people like to use, let's talk about blueprints. Let's say we need to build two bridges. One team is going to build a footbridge to cross a creek, and another team is going to build a multilane suspension bridge that carries rush hour traffic over a bay.
Should both teams hire an engineering company to help design their bridges and produce detailed blueprints of every detail of construction? Should both teams spend a year making preparations for the bridge construction? Obviously not. As a matter of fact, the footbridge team could throw a log down over the creek and call their job done. If someone falls off the log, well, they get wet. OK, that's a bug. Attach railings to the sides of the log, or accept that one person in a thousand may fall off the log. The point is, software ranges in depth of requirements from footbridge to suspension bridge.
This is not to say that process isn't important. It's key. It's just as important, however to ensure that the process is scaled to the actual requirements of the business or enterprise. An IT director shop that demands CMM Level 5 of his organization is heading for trouble. They'll never (in business time) get anything done. A NASA director that doesn't demand CMM Level 5 and six-nines precision is in bigger trouble. One size does not fit all.
Software Ain't a House
Since I'm on the subject of using physical construction techniques to argue about software practice I'd like to take this opportunity to address a common myth about software development. The myth essentially states that software development should be like other disciplines such as building construction or circuit board creation. My response to this is "bullshit".
Software, being nonphysical, just doesn't exhibit properties that allow it to be constructed like physical assemblies. Software exists in minds, which have infinite capability for creativity. So, the constraints of software are infinitely less limited than those of physical assemblies. Given no constraints, it's difficult, if not impossible to have people agree upon what features software should have to solve a given problem.
In the physical world, constraints are pretty obvious, and expectations tend toward the practical. Construction of physical assemblies also has the additional benefit of history. We've been building houses for a long time -- we'd better be great at it.
|
|
Saturday, November 04, 2000
|
I've been keeping a detailed spreadsheet of ride data since I started training for the TOSRV back in February. I intend to keep this log up as long as I ride. Being a total geek, I like to do analysis on the collected data from time to time. In that spirit, here's my approximate miles-per-month for the year 2000. My total miles as of today is 2,104.

The chart is labeled to show the two months in which I did major rides (the TOSRV and Courage Classic). Clearly doing those rides had an impact on my logged miles.
|
|
|
My ride home Friday was uneventful, except for the fact that it started out at about 42 degrees, and had to be 35, max, by the time I got home. My feet were freezing! I made pretty good averages (I think I ride faster when it's cold), with 17.9 mph at the Prince St. split and 16.4 overall.
Because of Tuesday's hair-raising ride home in the dark, I finally sprung for some nice headlights. They're Apex DLI dual-beam with a total of 24 watts of output. They were reviewed pretty well on MTB Review. I'm looking forward to trying them out. The only problem is now I'll have no excuse, other than ice and snow, not to ride this winter.
Speaking of riding this winter, I finally got around to switching back to my (rebuilt) Mavic CXP-23 rims and new Michelin Idilis touring tires. Now I can ride the crushed gravel trails as well as the paved roads - my ride should be a lot cushier, too, since the Idilis tires are 38mm in diameter, and have a max pressure of 75lbs. I hope they don't slow me down too much.
I do fear that this combo will result in me getting more flats. Why? Well, the CXP-23 rims are fairly aero, and so I need to use long-stem tubes in them. Well, guess what? It's hard to get heavy-duty long-stem tubes. It's also basically impossible to find long-stem tubes designed for tires any larger than 25mm in diameter. I guess the assumption is that if you're buying long-stems, then you must have aero rims (true), and therefore, you must be running narrow tires, and you must also be a weight weenie (false). Problem is, since I'm forced to run skinny, lightweight tubes in big tires, the tubes are stretched more than they're designed to do, and therefore are much more susceptible to flatting. I'm hoping the tires are thick enough to prevent stuff getting thru to the tubes. I guess we'll see about that. The thing that's scary about flats in the winter is they're not only a nuisance, they're dangerous to your health if it's very cold and you can't fix the flat.
All that being said, I love the way my bike looks with fat tires - very moto! I'll try to post a picture soon.
I'm still interested in getting a BikeE recumbent. I bid on one on eBay, but lost the auction by a hair (I didn't want the bike bad enough, I guess). Anyway, I just got a bonus at work, and it's burned an even bigger hole in my pocket, so I may just go for a new one, rather than trying to get one off of eBay. Besides, if you get one off eBay, where are you going to take it for warranty work? Local guys probably won't want to fix your auction-won bike.
|
|
|
Use the Commute Calculator to determine how much money you can save by bicycle commuting rather than driving.
|
|
Wednesday, November 01, 2000
|
Long time no write.
I rode home yesterday, even though it was pretty chilly (45 degrees), wet, and very overcast. On this particular ride, I had one of those incidents that brings out the ultraviolence in me (perhaps I shouldn't be reading American Psycho). Anyway, I'm booking down the bike trail, hissing along on the wet pavement and leaves, and up ahead I see a couple walking on the left side of the trail (this seems to be common for some reason). The male half of the couple is on the right and is simultaneously talking on a cell phone and leading his dog, who's on an extendable leash. The dog, of course is to the far right of the trail, which means he's created an obstruction. I call out "passing", in order to give them the option of pulling the dog back to the left and continuing their wrong-headed left-side walking so that I can pass right, or to move to the right so that I can pass left. I don't really care. The woman looks around a bit, and the guy seems to pull the dog in a bit in response to my announcement, so I take this as a "pass right" signal. However, as I near and pass, the dog starts reeling out on his lead, into my path. I start saying "watch your dog, watch your dog, watch your DOG", to which the clueless, losing, left-side walking, cell-phone-talking, mealy-mouth dufus says "it's better to say 'passing on the left'". I'm amazed, to say the least, and reply calmly "I called it, asshole!!", and keep on trucking. God, does riding fast ever get my fight-or-flight responses on edge. For the next five minutes, I considered turning around and going back to explain carefully that he's an idiot, and maybe it would have been even "better" if he wasn't so busy talking on the phone and walking on the wrong side of the trail with his dog on a long leash across the trail. I really wanted to give him a piece of my mind but two things stopped me: 1) It wouldn't have changed a thing. 2) It would have made me lose time.
By the time I reached Greenwood Village it was basically dark. I had my weak headlight on and there are no streetlights in this area. It was the first time I've been genuinely scared while riding with traffic. I do have a very bright rear blinker, and had reflective clothing on, but I still felt very exposed. Plus, cars wouldn't pass me and I was causing a backup. So I did something pretty uncharacteristic for me - I moved over to the bike path and slowed way down because I couldn't see a thing. I stopped once and tried to call MB to rescue me, but the cell signal was exceedingly weak, and she wasn't answering anyway, so I continued on. I made it home alive, but convinced that I need to buy some real lighting equipment. That ain't cheap, but neither is my life.
|
|
 |