Sunday, April 16, 2006
These silly machines remind me a lot of how computer systems are designed and built. For example, in my current project, here are the steps required to process a transaction:
- User presses an onscreen button to start transaction.
- Client application gathers all the data currently displayed.
- Client application generates an XML message to be sent to the system.
- Client application compresses the XML message into a binary format.
- Client application encrypts the compressed message and sends it over the network to the front-end processor.
- Front-end processor decrypts the message.
- Front-end processor decompresses the XML message.
- Front-end processor sends the XML message to the transaction processing engine.
- The transaction processing engine parses the XML.
- The transaction processing engine performs one or more SQL operations to process the transaction.
- The transaction processing engine generates an XML response and sends it to the front-end processor.
- The front-end processor compresses the XML response.
- The front-end processor encrypts the compressed XML response and returns it to the client application.
- The client application decrypts the XML response.
- The client application uncompresses the XML response.
- The client application parses the XML to determine what the transaction engine did, then informs the user of success or failure.
Only about three of those steps that do anything useful. All the rest seems a lot like setting up marbles and dominoes just because it's fun to watch them get knocked down.
Tuesday, April 11, 2006
Power Razor Problem
A couple of months ago, I wrote about how much I liked my new Gillette Fusion Power razor. I still like it, but I have hit a snag.
Yesterday morning, the motor stopped running. I didn't consider it to be a big deal, as it still had the original battery. I just put in a new battery, and it worked fine while I finished my shave.
But then this morning, it stopped again, after just a minute or so. I tried turning it back on, but the little power light would just flash and the motor would stop after a few seconds. I swapped in yet another new battery, but that didn't help.
I used my best hardware-diagnostic techniques (blowing on the contacts and rapping the unit against the counter a few times), but it was dead. I left it sitting for a few hours, thinking that maybe some water got somewhere that it's not supposed to go, but it's still dead.
I like the razor enough that I bought a replacement. I did some Google searches trying to discover whether this is a common problem, but I didn't see any other reports. So for now, I'm willing to accept that I was just unlucky.
The nice thing about a razor like this is that, when the motor stops, it's still a perfectly serviceable razor. It works almost as well unpowered as it does powered. In contrast, when my electric shaver quits halfway through a shave, I have to go out into the world half-shaven.
Monday, April 10, 2006
Web Hosting Providers Changed
It took a couple of weeks to get all the DNS issues squared away, but my kristopherjohnson.net and kristopherjohnson.com sites are now set up with A2 Hosting. No complaints so far, but I haven't really done anything other than set up e-mail.
If anyone sent me e-mail during the past few weeks, and didn't get a response, try again now.
Unfortunately, I didn't have a current backup of all my data, and my old hosting provider wouldn't let me get at it, so I lost some stuff along the way. The biggest loss was the Remoting.Corba wiki, which is not really very valuable but which has sentimental value for me. Fortunately, I found that the Wayback Machine still has it cached, so I can visit it: http://web.archive.org/web/20050305050741/http://kristopherjohnson.net/cgi-bin/rc/wiki.pl.
Sunday, April 09, 2006
I'm still alive. I don't usually need to note that fact, but it seems to be what everyone wants to know.
On the Ground
I took the Accelerated Freefall (AFF) Level 1 class last week, but didn't get to jump due to weather. I called the dropzone manager yesterday to see whether today would be a good day. She told me that several other people had taken the class last week, and everyone was trying to get a jump today, so the schedule was a bit crowded but she could probably squeeze me in. I called this morning, and she suggested I show up around 1:30 or 2:00.
I arrived at the dropzone at around 2:00, and discovered I had already been scheduled for the next planeload. However, the jumpmasters and instructors were already in the air, so the schedule was changed so that I could get my prejump briefing while the next load was going, and then I'd be in the load after that one.
I met one of the instructors, John D., who conducted the prejump briefing. This was a review of the most important stuff that I learned last weekend, concentrating on the situations in which I would deploy my reserve chute, and how I would handle other emergencies. We also practiced the exit from the plane a few times.
I also met the other instructor, Woody, who gave me a few other pointers, then he helped me get suited up. The equipment consists of a jumpsuit, a wrist-mounted altimeter, a helmet, a radio, and the pack containing the main and reserve parachutes. He checked all my equipment, and then had me watch him check his own.
We boarded the plane. Since I'd be getting out last (after all the real skydivers), I got in first. I sat with the pilots' seats at my back, with my instructors at each side, and then about ten more people packed in with us.
As the plane taxied toward the runway, I felt a surge of anxiety. I wasn't afraid of death or injury. It was more like the kind of "fear" one has when standing in line for a rollercoaster. It's not a fear of getting hurt; it's anticipation of upcoming moments of unpleasantness when the big drop starts. I was also worried about doing something stupid that would get me yelled at.
The Climb Up
As the plane climbed, the anxiety went away as I focused on what I had to do. The instructors had me describe the events of the upcoming jump. A guy seated in front of me was about to make his 25th jump, which would make him eligible for his skydiving license, so we chatted and wished one another good luck. I watched my wrist altimeter as we climbed. At around 9,000 feet, the instructors helped me turn on and test the radio, then did a final check of my equipment.
There was some discussion among the jumpers of which direction the landing pattern would be. As in an airplane, you want to land going into the wind, to minimize groundspeed on touchdown. The wind had been blowing out of the north most of the day, but during the last load, it had unexpectedly shifted to the south, causing many of the last load's jumpers to make a downwind landing. They decided to assume the wind would still be from the south, and planned the pattern accordingly.
At 13,500 feet, the door opened, and the people in front of me started jumping out. The instructors directed me toward the door. One instructor stood in the doorway, and then I stood next to him. I turned my head into the below-freezing 100-mile-per-hour wind, and took a quick glance down. I did the "hotel check" (check-in, check-out), shouted the count, and then let go.Then I was floating in the air, head down, with the instructors holding on at each side. The feeling was very peaceful, except for the wind. I got into the arch position, and got stabilized with my belly pointing toward the ground. I did the "Circle of Awareness" check: looking at my heading, checking the altimeter, looking to the instructor at my left, and to the instructor at my right. One of them gave me the hand signal to straighten my legs (your legs tend to fold up behind you due to the wind).
An instructor signaled me to do three practice pulls. (I should have remembered to do this myself, but my brain wasn't working very well.) I reached back and felt where the main parachute handle was. I did it two more times. I got a couple more signals to straighten my legs during this exercise.
Then I did my Circle of Awareness again, and noticed we were at around 8,000 feet. You fall 1,000 feet in about six seconds when in freefall. So I had about twelve seconds to enjoy the view before we got down to 6,000 feet. I don't remember any of those twelve seconds.
At 6,000 feet, I locked my gaze on to my altimeter as I'd been trained. At 5,000 feet, I waved my arms (which signals that I'm about to pull the chute), and then said "arch, reach, pull" to myself as I reached back and pulled out the chute.
The opening of the chute was very gentle. I just felt myself gradually being pulled from the belly-down position to a feet-down position, and the pressure of the pack's straps transferred from my shoulders to my legs. I was supposed to count "1-one-thousand, 2-one-thousand, 3-one-thousand, 4-one-thousand" to myself to give the chute adequate time to open, but I forgot that. Instead, I just looked up and saw a nice big square, stable, bright yellow parachute with no holes or tangled lines. Everything was perfect.
After a quick glance down, I grabbed the steering toggles which were above my head. These are two lines that are attached to the rear corners of the canopy. When you pull them down, they act like flaps on an airplane. I pulled both down, and I slowed down, just like it was supposed to work. Then I did 360-degree turns to the left and right by pulling the toggles one at a time. Everything was still perfect.
At this point, I was a little less than 4,000 feet above ground. I steered toward "the playground," an area just west of the airport where I could do whatever I wanted until I it was time to start the landing pattern. I made a few sharp turns. The chute was very maneuverable and easy to control.
By this time, my instructors had landed, and one of them told me over the radio to perform a practice flare, so I pulled both steering toggles down to my knees, and I felt my body swing forward beneath the canopy.
I had a little more time to play on my own, but upon reaching 1,000 feet I turned toward the airport. The instructor told me which direction to turn, and it confused me a bit, because everybody else seemed to be going the opposite way. The radio was only one-way, so I couldn't ask him if he was sure. I decided to trust him and do what he said. I "flew" a downwind leg, base leg, and then turned onto final, just like in a plane. Upon turning final, I saw the windsock and it showed I was going into the wind. Good.
I steered so that I was parallel to the airport's runway, about 20 yards to my right. There was plenty of open grass in front of me, so I didn't have to worry about hitting anything hard. From my experience in the airplane, and from other parachutists, I knew most people have a tendency to flare a little bit high, so even though I thought I was close to the ground, I waited until the instructor told me to flare. When he did, I pulled both toggle down as far as they would go.
The chute leveled out and started slowing down. It looked to me like I was a little too fast for a stand-up landing, so I pulled my feet up in front of me, and then rolled onto the ground.
I sat up. I heard "Good skydive" over the radio.
On the Ground Again
I gathered up my stuff and walked back to the hanger. It was a long walk, not because it was very far, but because I was carrying all that junk and was careful not to drag the canopy along the ground.
I took all the stuff off in the hanger, and got my debriefing from the instructor. He said I had done pretty well. The mistakes I made are the typical ones that first-time jumpers make. I didn't go into the proper arch position upon exiting the plane, which is why I was upside-down for a few seconds. I didn't keep my legs straight. I twisted my body too much during the practice pulls. He had to prompt me to make the practice pulls. But on the plus side, I had good altitude awareness ("Know thy altitude" is the skydiver's Golden Rule), I responded to all the signals they gave me, and my touchdown was soft.
He filled in my logbook, clearing me to move forward to Level 2 of the AFF program. So if I make another jump, I'll get to learn some other skills, like turning or flying forward during freefall.
I'm not sure I have the patience for skydiving. From hanging around the dropzone a couple of days, it looks like there is an awful lot of sitting around doing nothing between plane loads. If one spends an entire day skydiving, it's really only going to add up to five or ten minutes of freefall. I'm not the kind of social extrovert who would enjoy spending that much time hanging out with strangers in a hangar. The $100/hour airplane rentals seem like a better use of time and money.
The jump itself was a lot more pleasant and relaxing than I had expected. It felt like floating in the air, with a strong arctic wind. I thought the initial exit would cause a dropping-rollercoaster-like feeling until hitting terminal velocity, but I never really felt like I was falling. I've read one explanation of this phenomenon, which said that you don't really feel anything because when you let go of the plane, you are traveling 100 MPH into the wind, and your forward motion decreases as your vertical motion increases, so your speed doesn't change much. I don't really buy this explanation, but maybe there is something to it.
My landing roll didn't hurt at the time, but now, a few hours later, my knee feels a little stiff. I suspect I'll be sore tomorrow.
I don't have any pictures or video of my jump. The dropzone does provide videos for people who pay for them, but I figured I'd only need the video to show off to other people, and that's not why I did this. If anyone wants to know how my jump looked, just grab any of the thousands of other skydive pictures or videos off the web, and you can use Photoshop to paste my picture on top.
Will I jump again? I don't know. If the dropzone was 30-minute drive away, instead of a 90-minute drive, then I definitely would. If I do decide to get more training, I'll probably rent a hotel room near the dropzone for a weekend so that I can do several jumps over the course of a couple of days.
Would I recommend it to others? I'm not comfortable recommending that people do something that might cause them to get hurt, but I'd say that this was a lot of fun, and I never felt like I was in any danger. The amount of training needed for the initial jumps is pretty small, so it doesn't require a big investment in time or money to give it a try.
I don't think I'll be as anxious the next time (if there is a next time). Of course, it is easy to say that now, while sitting at my computer with a glass of beer.
So what's next for Kris? Bungee jumping? Running with the bulls? Russian Roulette? Stay tuned for the next exciting adventure...
Friday, April 07, 2006
Beyond Dick and Jane
I actually had fun for a few hours at work this week. It was a surprise.
Normally, I am required to write brain-dead-simple C++ code. I have to write the kind of code that any idiot we hire off the street can maintain. I can't use templates. I can't use exceptions. I can't use overloaded functions. I can't use multiple inheritance. I can't use abstract base classes. I can't use anything in the <algorithm> or <functional> headers. Basically, I can't do anything that might confuse people who haven't read past Chapter 4 of The Complete Idiot's Guide to Learning C++ in 24 Hours for Dummies.
I find this frustrating. I think it's like writing one of those Dick and Jane books. See Spot. See Spot run. See Sally. See Sally run. file.open(). file.write(data). file.close(). Yawn.
Some people think it is good to restrict oneself to a "sane subset" of C++. I disagree. I don't want to use complex features unnecessarily, but I have seen many cases where code would be much, much simpler if somebody would just use some simple templates or exceptions. Without its "advanced" features, C++ is not a very expressive language. People who aren't comfortable using those features really shouldn't be calling themselves C++ programmers, in my opinion.
On Tuesday afternoon, the boss gave me the green light to write something exactly the way I wanted to write it. We had a complex problem that we thought would be best solved by using templates, exceptions, and other "advanced" C++ features. So I did. I used exceptions. I used class templates. I used member templates. I specialized member templates. I even had to crack open a book to figure out some of the syntax. It was challenging, and I learned some new things.
I stayed until almost 11:00 PM that evening. I didn't want to leave. I created something I thought was beautiful. I even wrote some documentation to explain it to others, because I was proud of it.
Unfortunately, the code didn't stay beautiful. Wednesday afternoon, we decided the code needed to do more than what I had designed it to do, and I couldn't figure out how to add those features while maintaining the beauty. So it gradually changed from that wonderful ideal into prosaic Dick-and-Jane-style code.
But that's okay. For a few hours, I was free to follow my muse and to remember why I got into this business in the first place. Now that I'm the lead programmer for this product, I hope I'll have more opportunities to try things My Way.
Monday, April 03, 2006
No Jump Yet
When I woke up this morning, I checked the weather forecast. It called for overcast skies and scattered thunderstorms all day, so I decided not to make the 90-minute drive to the drop zone.
Of course, it turned out to be a beautiful day. I kept looking at the sunny skies, hoping for a thunderstorm to start so that I wouldn't feel like such an idiot. We finally did get some thunder at around 4:00 PM, but that didn't make me feel any better.
I'm hoping to take an afternoon off later this week to try again. Unfortunately, we are in a crunch time, so asking my boss whether I can take time off to maybe kill myself before finishing my work may not go over very well. My boss would prefer that I put my life at risk some time after the current project is over.
Saturday, April 01, 2006
Skydiving, Day 1
I've decided to try skydiving. No, this is not an April Fool's post. (Mom, you may want to have a glass of wine before reading further.)
I'd never seriously considered skydiving until recently. I'd heard about tandem jumps, where a non-skydiver gets attached to an instructor who takes care of doing everything. That didn't appeal to me. I didn't want to just be a passive passenger on what was essentially a very expensive and possibly fatal rollercoaster ride. I wasn't interested in jumping out of a plane just to be a thrillseeker; I wanted to learn something about skydiving.
Recently, I started investigating soaring (gliders), which somehow turned into an interest in hang gliding, which somehow got me looking at skydiving again. I learned that a tandem jump is not the only option for someone who wants to try skydiving—there is also the Accelerated Free Fall (AFF) program, where the first-time jumper has a couple of instructors holding on during freefall, but then the student takes full control after pulling the parachute. On subsequent jumps, the student gets more control, and by the fourth jump, the student does everything with no hands-on help. This is the kind of challenge that appeals to me.
I signed up with Skydive Monroe for the AFF Level 1 course. Unfortunately, Monroe is about 90 minutes away from home, but it's the closest dropzone I could find. I've flown over and done touch-and-goes at that airport a few times, so I had some familiarity with it.
There was one other person taking the AFF Level 1 class with me today. Scott took the class and made his first jump about a year ago. He loved the experience, but he didn't have the money to continue. Now he is planning to take all the lessons within a span of a few weeks. He asked me if this was my first jump, and when I answered yes, he said, "Cool. You're going to shit a brick."
The weather was cloudy this morning, so we didn't expect to get to jump today, but we went through the ground school course with our coach, Doug. This was a few hours of learning how a parachute works, how to achieve stability in freefall, how to open the chute, how to land, and how to handle lots of different emergencies. It felt a lot like pilot training.
After class ended, the sky was starting to clear, so we thought we might actually get to jump. Unfortunately, high winds and turbulence caused the jumpmaster to keep us AFF students grounded. It was frustrating to watch load after load of tandem jumpers and experienced skydivers do their thing. There was a slim hope that the winds would die down as evening approached, but an hour before sunset, things were still bad, so we gave up.
I'm going to call tomorrow morning to find out if I might get to make my first jump then. As of now, the forecast calls for cloudy skies and a 40% chance of thunderstorms, so I'm not hopeful.
I need to find a pastime that is not so dependent on the weather.