Tuesday, May 31, 2005
A Milestone Reached
About a year ago, I started work as technical lead to develop a new product for my company. Today, we finally got the last piece of functionality working at the customer's site. I can finally say that I'm finished.
The project is not finished; there are still many more features the marketing people want to add. So it will go on, but not with me as the lead. I'll still be connected, and I'll help out as needed, but any new problems that come up will be somebody else's problems, not mine.
If this milestone had been reached six months ago, I might have been proud of my accomplishment. I might have been willing to stay on as the lead. But the last six months have been such a long depressing slog that I'm just glad it's over.
(raising a glass of bourbon) Here's to my next assignment...
Monday, May 30, 2005
My Kind of Programmer
From inessential.com, I found an article by an Apple-employed blogger explaining what happens if one sends a message to the nil object in Objective-C.
Sending a message to the nil object is not a particularly useful thing to do, and most programmers wouldn't bother to find out what the effect is, but this programmer has taken the time to figure out exactly what happens. There's no fear of assembly language, no problem with delving into the Power PC Runtime Architecture Guide for low-level details on the calling conventions, and the whole thing is presented in an easily understandable way (for programmers, anyway). I don't know the reason the blogger needed to figure this out, but I suspect it was just a desire to know.
I'd hire this person immediately, based solely on this one blog entry. It tells me more about the person's skills and attitude that any resumé or hour-long interview could. I know this person is a better programmer than anyone I've ever interviewed. Unfortunately (or maybe fortunately), Apple is a more attractive employer than I could ever be.
There have to be more people like this out there. Why are they so hard to find? And how can I get a job at the companies that value them?
Sunday, May 29, 2005
Ground Lesson #6
This was really close to being the day for my first solo. Winds were calm, the forecast called for good weather (except for isolated showers), and the airport wasn't busy. Radar showed a line of storms approaching from the southeast, but it looked like they wouldn't arrive for a few hours. It looked like we would have time to do a few circuits in the pattern where I could demonstrate a power-off landing, a go-around, and a couple of good landings, and then the instructor would let me go on my own.
But first, I had to pass the school's written pre-solo exam. This was a series of questions covering emergency procedures, information specific to the local area (ATC frequencies, how to stay clear of the overlying Class B airspace, etc.), and regulations that applied to student pilots. I missed one question, related to light signals from the tower, but I passed.
I called for a weather briefing. The briefer said that thunderstorms were approaching, so a VFR flight would not be recommended, but if we were just going to be in the pattern, it would be safe to watch for the storms and terminate the flight before they arrived. At this point, it looked unlikely that I'd get to solo, but we decided we'd go out and see whether we could get a little pattern practice done.
When we got out on the ramp, the sky looked bad, and we felt cold gusts of wind. I knew we probably wouldn't fly, but I started a preflight inspection anyway just to have something to do while we monitored the progress of the weather. After finishing the preflight, we packed up and walked back to the school. No flying today.
Saturday, May 28, 2005
DeskJet Support for Mac OS X
As I described a few days ago, my Mac lost the ability to print to a shared DeskJet printer. The solution was relatively easy (delete and recreate the printer), but I put off trying that for a while because I remembered the original setup of the printer being a frustrating experience, and I've already reached my monthly Macintosh frustration quota.
Why is it frustrating? Well, I have an HP DeskJet 5550 printer. So, when I go to the Printer Setup dialogs to select Printer Model, I choose "HP" and then look for "DeskJet 5550" in the list of HP printers. But that model is not listed.
So what do I do? Can I just choose any DeskJet model and hope for the best? Should I spend time investigating the 30 supported models of DeskJets to determine which is most like mine? Should I try Apple's "Generic Printer" driver?
Apple is not the bad guy here. HP is the organization providing the DeskJet drivers. Their support web site is no help. Apple's printing architecture is built on top of the open-source CUPS stuff, so I spent a little bit of time perusing Linux-related web sites and mailing lists looking for information on CUPS DeskJet drivers, but still couldn't find any information about my specific printer model.
The last time I did this for Mac OS X, I chose the "HP DeskJet 450" model, because I remembered that under Linux I had to use the "dj450" driver to print on my DeskJet. It turns out that the "450" in that driver name was the version number, and had nothing to do with the printer model.
I did find a few postings that suggested that HP's CUPS driver would work for any model of DeskJet, and so it doesn't really matter which model you choose. If that's the case, why provide the list? And if there is a need for a list because a few models have special behavior, why not provide a "Generic DeskJet" choice for the rest?
Anyway, I ended up choosing the "HP DeskJet 550C - Gimp-Print v5-0-0 Beta 2" printer model, which doesn't seem right but is the choice which is least unlike "HP DeskJet 5550." The printer seems to work fine, but I expect it all to blow up in my face.
Why Haven't I Soloed Yet?
The most-frequently-asked questions I get from people reading my blog are "Have you soloed yet?," "When are you going to solo?," and "Have you soloed yet?" The answers are "Not yet," "I don't know," and "Still not yet."
At this point, I have about 42 hours of logged dual instruction time. A lot of people get to solo with much less time than this. People training at uncontrolled airfields typically get to solo after 10-20 hours. At controlled airports, it takes a little more time because a student has to deal with the radio work, busy traffic patterns, and more complicated airport operations, but 20-30 hours to solo seems typical. So why is it taking me so long?
I'm tempted to answer "Because I suck," but I don't think that's true. Here are the real reasons:
- I am training at a "Part 141" school, which has a standardized curriculum to follow. I wasn't able to start progressing through the curriculum until I got my medical certificate, which veteran readers of my blog know was a seven-week ordeal. I had 20 hours of instruction before I could officially start Unit #1.
- This flight school has higher-than-average standards. For example, they require spin training and a significant amount of simulated instrument flight and ground-reference maneuvers before solo.
- PDK is a very busy airport. I've heard it is the busiest Class D airport in the nation, busier than most Class C airports. So it takes more time to learn how to handle everything that's going on, and more time for the instructor to be sure I've learned it.
- There were a few weeks in March and April where bad weather and instructor unavailability kept me from flying more than once every week or two. I get rusty quickly.
- Because I suck. This piloting thing doesn't come naturally for me. Flying is the most difficult activity I've ever tried and not given up.
While my 42 hours without soloing may be a little atypical, it's not extraordinary. Philip Greenspun is a smart guy, and didn't solo until 34 hours. The online aviation forums I browse are full of people who will admit to soloing after 40+ hours. This isn't a race, and I find it odd that some people brag about the fact that they soloed with minimal training.
When I read postings from people who just completed their first solo after 10 hours or less, I wonder how proficient they really are. Section 61.87 of the Federal Aviation Regulations lists a whole bunch of training requirements that a student pilot must meet before being allowed to solo, and I don't think they can be fully covered in just 10 hours. I suspect these students' instructors sign them off for solo as soon as they are capable of simply taking off and landing safely. I'm certainly capable of doing that, but that's not enough for my instructors.
I really am pretty close now. I'm confident that I'm ready to solo. I think my instructor just needs to see me fly for a couple of hours without doing anything stupid. It may be my next lesson, it may be a week from now, it may be two weeks from now. I'm not worried about it; it will happen when it happens, and I'm not in a hurry. I know when my instructor says I'm ready, I'll really be ready.
Friday, May 27, 2005
Flying Lesson #26: Spin Training
Today we did spins. What's a "spin," you ask? I'll give a drastically simplified non-pilot explanation (if you really want to understand it, there are plenty of other sources). First, we need to know what a stall is. A wing generates lift when air is flowing around it in the right way; a stall is a situation where the wing stops generating lift because the air is not flowing around it correctly. Stalls typically happen when an airplane is flying too slowly or turning too steeply. When an airplane stalls, it stops flying and starts plummeting. A spin is a situation where the airplane is stalled, and one wing is stalled worse than the other, causing the airplane to fall in a corkscrewing path. Once a spin starts, the airplane tends to keep spinning, so it can be difficult or even impossible to recover.
A significant percentage of General Aviation accidents are the results of stalls and spins. All pilots are required to practice and demonstrate stalls, not because stalling is a useful maneuver, but because all pilots need to recognize when a stall is imminent or in progress, and they need to know how to recover safely. While everybody practices stalls, many flight schools don't give their students any experience with spins; see this article for some explanation of the controversy between pro-spin and anti-spin instructors. My flight school requires all students to have training in spin recovery before they solo, and I'm glad that they do.
The preferred way to do spin training at my school is to go up with the chief flight instructor in the school's Super Decathlon, a fully aerobatic airplane. Unfortunately, the combined weight of the chief instructor and me would be about 20 pounds over the limit. We're not so huge that the airplane can't lift us; the problem is that the center-of-gravity of the plane needs to be within a narrow range for safe aerobatic flight. (I've been hoping to get aerobatic training someday, so I guess it's time to start losing weight.)
The Decathlon was not an option. The Piper Warriors that I usually fly are not certified for intentional spins, so we flew in the school's Cessna 172N. This was my first experience with the Cessna. Here's what I liked about it in comparison to the Warrior:
- The interior is more roomy.
- The control yoke is smaller and easier to use.
- You can open the windows. This is very important during the summer months, as those Warriors turn into ovens.
- It's easier to get into the plane. It's not much more difficult than getting into a big truck.
- You don't have to crawl around under the wings during the preflight.
- You can see out the back of the plane.
And here's what I didn't like about the Cessna:
- I bumped my head on a wing three times.
- I prefer the Warrior's manually operated flaps to the electrically operated flaps on the Cessna.
- This plane still has all the original basic 1978 avionics, with no upgrades. Some of the LED segments were inoperative. There was no DME (Distance Measuring Equipment).
- I found it hard to use the plunger-style engine controls. (But I'm sure I'd get used to them eventually.)
The instructor did all the weight-and-balance calculations to ensure that we were safe to do spins. To minimize weight, we left our flight bags behind and got into the plane with only our headsets and kneeboards. The instructor let me taxi to the runway, and I zig-zagged the whole way because the Cessna's steering is very sensitive in comparison to the Warrior.
Once in the air, I did a lot of turns to get a feel for the plane. We climbed up to 7,000 feet, so I got a much bigger view of the area than I normally get down at 3,500. I did a couple of stalls to get used to the Cessna's stall characteristics. Then, it was time to do the spins.
The instructor performed the first one. A Cessna 172 doesn't really want to spin, so it takes some work to make it happen. The procedure is to slow down to 60 knots, then go to full power and climb while using full right aileron and full left rudder. The effect is that the plane goes almost straight up while twisting a little, then suddenly the nose drops toward the ground and the plane starts spinning rapidly. After a couple of rotations, you're in a full-blown spin.
I didn't know what to expect. The instructor had warned me that lots of people throw up or have other kinds of distress, so I was expecting some intense roller-coaster-style sensations. It really wasn't too bad. I can certainly see how it would freak someone out who wasn't expecting it, and it would be terrifying at a low altitude, but up at 7,000 feet with an instructor sitting next to me, it compared to some of the tamer rides at Six Flags.
In ground school, you learn that the steps for recovering from a spin are to reduce throttle to idle, neutralize the ailerons, use full rudder opposite to the direction of spin to stop the rotation, pitch the nose down sharply to break the stall, then recover. Things didn't work quite that way in the 172. When the throttle is cut and the ailerons are neutralized, the plane stabilizes itself very quickly. At that point, you are in a steep dive, so you just pull out of it and it's all done. There's not much need for opposite rudder or downward pitch.
After the instructor demonstrated one, I did a few (I lost count). On a couple of attempts, I couldn't get it to "go over," instead ending up with just a stalling steep turn. The secret to getting it to work right was to gradually add the aileron instead of going to full aileron instantly.
On one attempt, we got to a full 90-degree-pitch climb, which is probably the closest I'll ever come to being an astronaut.
I was a little slow on cutting the throttle during the recoveries, so we were often going straight down very fast. It wasn't dangerous, but pulling out of those dives caused my instructor to groan a little. I'm wasn't sure if he was groaning due to the G-force or due to displeasure with my performance. (During the debriefing, he said it was a little of both, but no big deal.)
Each spin itself only lasted a few seconds, but between each attempt we had a few minutes of climbing back to a safe altitude and doing all the typical pre-maneuver activities. At around 3:00, the instructor said, "OK, we only have time for one more." I knew he was lying: we didn't really have time to do it again and get back to the airport before his next scheduled lesson, but he was enjoying it as much as I was. So we did one more and then headed home.
In summary, it was all a lot of fun, and a lot less scary than I expected. Days like this really boost my confidence. While flying I'm often afraid I'm going to bank a little too far, fly a little too fast or a little too slow, land a little too hard, or make some other minor mistake that will lead to disaster. It eases my concerns when I see how the airplane behaves in extreme circumstances and know I am able to handle it. I think it's a shame that many instructors avoid teaching this stuff.
Logged today: 1.6 hours dual in N739DB. Cost: $289.73.
Another Student Pilot
I ran across another blog written by a student pilot: Wow! Introductory lesson number 1
(By "ran across," I mean his blog showed up in my vanity watchlist of web sites that refer to mine. He's clearly an intelligent, discriminating reader.)
Thursday, May 26, 2005
Another complaint about my iMac: Since installing Tiger, I can no longer print to the HP DeskJet printer that is shared from my Windows box.
I haven't figured out the problem yet. It's possible that Windows is the problem, but all this stuff worked before I installed Tiger on the Mac. Nothing has changed in my Windows box for ages.
So my workaround is to "print" to a PDF file on the Mac, copy the PDF over to the Windows machine, then print there.
[UPDATE: I got everything working again my deleting the printer and recreating it on Tiger. Not too bad, I guess, but this is the kind of crap that Mac users didn't have to deal with back in the good old days.]
Wednesday, May 25, 2005
The kristopherjohnson.net domain has not been working for a few days. I received notification that the domain has expired, but no instructions about what to do to renew it. I've sent e-mails to my domain registrar and ISP asking what I need to do, but have received no responses.
One benefit of this is that I'm receiving a lot less spam because mail to my kristopherjohnson.net addresses are no longer being forwarded, but it means I may not be receiving important e-mails. So, if you've been trying to reach me by e-mail, and have not received a response, this may be why. If you're somebody I really want to hear from, you probably know another way to reach me.
[UPDATE 2005/5/27: I finally made contact with somebody who admitted to knowing something about my domain. Everything's back to normal. I received 653 spam e-mails overnight.]
Flying Lesson #25
I had a double-length lesson today. It was a great day for it: light winds, scattered clouds at 6,000 ft (far above the altitudes I'd be flying), great visibility, and a high temperature of 76 degrees, which is very cool for Georgia this time of year.
I practiced simulated instrument flight, a few different kinds of stalls, engine-out procedures, flight at minimum controllable airspeed, then did a bunch of touch-and-goes at Winder-Barrow Airport (WDR). I wasn't happy with my landings, but the instructor said I'm doing fine. My problem is that I usually land a little bit sideways, and he said he hadn't really cured that problem in his own flying until he was in his CFI training.
We did a full-stop landing at WDR to take a little break. We checked out the pilot lounge, which was a little spartan in comparison to the luxurious lounge at PDK's Epps Aviation facility. I bought a really good cookie at the Spitfire Deli.
After the break, we did a little more airwork (stalls and steep turns), then flew back to PDK. Things at PDK had been pretty quiet when we left, but were pretty busy on the way back. All the local news helicopters were taking off to cover a story (some guy was threatening to jump from a crane downtown), and we saw jets lined up on the taxiways waiting for their turns to take off. We got our clearance to land, but as we turned onto final we noticed a plane still sitting on the runway in front of us. So we had to go around that first time, but got to do a couple more circuits before a full-stop landing.
For today: 3.1 hours dual in N4363D, with 9 takeoffs and 9 landings, and 0.4 hours simulated instrument. Cost: $511.
Next time, we're going to do "spin training," meaning that we'll practice getting into and out of spins in the Cessna 172 (the Piper Warrior isn't certified for intentional spins). The instructor warned me to eat light that morning, avoiding any foods that might not want to stay in my stomach. It sounds like fun. I'll also be taking the school's pre-solo written test.
Tuesday, May 24, 2005
X-Plane Upgrade: It's EASY!
I use the X-Plane flight simulator. It has a lot of rough edges in comparison to Microsoft Flight Simulator, but it "feels" a little more realistic.
X-Plane is distributed on a DVD-ROM. It is large, because it contains lots of satellite imagery and other graphics. Updates to the software are available on the X-Plane web site, but the updates do not contain the scenery. So, whenever an update is available, you have to download and install the software, and then manually move or copy the graphics files from the original installation.
I have to laugh at the upgrade instructions. They start by saying "It's EASY," then provide a list of several steps that the user must follow. The word "Easy" is repeated several times throughout the instructions, to try to convince the user that what they are doing isn't very hard. It's true that none of the individual steps are very difficult, but when taken in total, it's a lot to do. And you have to repeat these steps whenever a new update is available (which happens every few weeks).
It would be easy for the X-Plane producers to provide an automated means of upgrading, but they don't. It would probably be pretty easy to re-organize the files so that a user only has to move a single directory from the old installation to the new installation, but they don't do that either.
It's such an annoyance that there are people who pay for subscriptions to XPlaneUpdate, a service that will automatically download updates for X-Plane much like Windows Update does for the operating system. While I admire the people who are filling this need, clearly the original developer's opinion that "It's EASY!" is not shared by many users.
If you have to keep telling your customers that your software is easy to use, you're probably wrong. Rather than working to convince them it's easy, work on actually making it easy.
Sunday, May 22, 2005
Flying Lesson #24
Two of the school's planes are down for maintenance (the mechanic is on vacation), so I got to fly the one Warrior I haven't flown before: N9127F. This plane is a "Warrior Deluxe," with extra avionics (an old GPS receiver and a lightning tracker), but there were a couple of things I didn't like about it:
- The seat was not height-adjustable, so I had to sit a few inches higher than usual. This may not sound like a big deal, but everything looked different from that angle, and I had to move my knees out of the way every time I turned the yoke.
- The radio sucked. It wasn't bad enough to cancel the flight, but everyone's voices sounded like the Daleks from Doctor Who. The instructor was annoyed, as he had been assured that the problem with the radio had been fixed earlier in the week.
Visibility was poor, around 7-8 miles or so. This is the worst visibility I've flown in (aside from the time we flew into actual IMC), so I kept asking the instructor if everything was still OK. He interpreted this as nervousness, but I just wanted to be sure that visibility was still above minimums. I don't think I'd be willing to fly in weather like this without the instructor present.
We practiced slips, a few S-turns over a road, and flight at minimum controllable airspeed (MCA). The MCA seemed a lot easier than usual. I asked the instructor whether this plane flew better at slow speeds, but he said it was just like the others, and his theory was that it was me that was better, not the plane.
We had a moderate crosswind on landing, and I haven't had to deal with a crosswind for a while, so I didn't do very well on the landings. The instructor says we've almost finished all the pre-solo work, so we'll spend a few hours this week just practicing landings.
For today: 1.5 hours dual in N9127F, with 3 takeoffs and 3 landings. Cost: $288.56.
Saturday, May 21, 2005
iMac With Headphones
Reasoning that my apartment neighbors probably don't want to hear Hüsker Du cranked up at 2:00 AM, I plugged some headphones into my iMac. When I plugged the phones in, the iMac's speakers were automatically disabled, as I expected. However, when I remove the headphones, the speakers don't start working again. I have to reboot the iMac before sounds are restored.
I'm hating this Macintosh more every day.
Well, I knew this would happen eventually: I bought an album from the iTunes Music Store, then later noticed that I already owned that album.
It would be nice if iTunes would give a warning when I try to buy something I already have. It would also be nice if I wasn't an idiot.
Friday, May 20, 2005
Ground Lesson #5
I got up this morning hoping that the forecast of thunderstorms was just a mistake. One look at the radar, showing a couple of bands of storms moving in from the northwest, quashed that hope.
Because of all the "interesting" weather, the instructor and I spent the time reviewing all the various types of observations, forecasts, maps, and other weather services.
We also went through the Airworthiness Directives (AD) and maintenance logs for a couple of the school's aircraft. We laughed upon seeing the first AD, which had a description like "prevent separation of the propeller from the engine." That one sounds pretty important.
Cost for two hours of ground instruction: $114
Thursday, May 19, 2005
It Didn't Totally Suck
I'm talking about Star Wars Episode III: Revenge of the Sith. The early reviews were right: it's not a bad way to end the series. There were good action scenes, snazzy special effects, and little of the tedious speechifying that Episodes I and II had. It had lots of lightsabers, and I really like lightsabers.
It's a good movie to see with a crowd. There are plenty of moments of laughter, and of group reactions to events that allude to the "future" movies. Yoda is even more of an action star than he was in Episode II, which brings on a strange mixture of laughter and "wow, cool!" from the audience. Darth Vader's first mechanical breath leaves everyone in awed silence.
Of course, it has its problems. Anakin's turn to the Dark Side happens quickly and easily. Padme's role is to just be worried throughout the movie. The dialogue is awful.
In a review of one of the Matrix films, the reviewer commented that he couldn't imagine Neo and Trinity hanging out with one another for more than ten minutes. I was reminded of that statement while watching the scenes between Anakin and Padme. As with Matrix, the love between the characters is supposed to be a major part of the plot, but it's not believable.
My biggest gripe is that in Hayden Christensen's performance, I still can't see any of the comfortable arrogance that I see in Vader in Episodes 4-6. At the end of Episode III, he's got the costume, but he doesn't have the swagger. My favorite Star Wars film is The Empire Strikes Back, and Vader is my favorite character. I like the dark humor in the way he manages his subordinates, and in the way he deals with the hero characters on Bespin. Vader must mellow quite a bit in the decades between Episode III and Episode IV.
Jar-Jar makes an appearance, but only for a second. It was enough to draw boos from the crowd, but not enough to ruin the movie.
Wednesday, May 18, 2005
Flying Lesson #23
It was another day of practicing things I've done before. The typical Wednesday rustiness plagued me, and bumpy air made things worse than usual. It was one of those days that make me wonder if I'll ever get good at this.
In hindsight, I wish I'd scheduled a double-length lesson today. The forecast for Friday calls for thunderstorms, so I probably won't get to fly then. I've scheduled a Sunday lesson. I'd like to schedule three lessons every week, but spending $800-900 per week on lessons is more than I can sustain - I'd have to start giving up little luxuries like cable, electricity, and dinner. For now, I'm going to schedule an extra lesson whenever the forecast calls for good weather.
For today: 1.3 hours dual in N9103M, with 3 takeoffs and 3 landings. Cost: $249.
Tuesday, May 17, 2005
Please Let Me Work
An amazing thing happened at work today: I sat in my cubicle for eight hours, working quietly on technical problems, with minimal interruptions. At the end of the day, I felt pretty good.
This mind-blowing experience helped me understand exactly what it is that has been making me so miserable over the past few months. I am a software developer, and I want to develop software. That's my talent. It's what I enjoy doing. It's what makes me feel like a valuable contributor to my employer and to the world as a whole. It's what gives me pride in myself. I don't get to do it much any more. That's what makes me sad.
It's not simply a matter of being "promoted" in higher-level less-hands-on positions. In theory, as a technical lead I am supposed to be making technical decisions and staying in touch with technical work. Instead, I spend most of my time in meetings or answering e-mail. My project has been stuck in idle for about six months while the higher-ups decide what the next step is, so there is no technical work to do. I've really just been twiddling my thumbs, fixing a little bug here and there. I'd be just as productive if I only went into the office about two hours per week. I'm doing everything I can to disengage from this frozen project, but unfortunately I can't get away until we finish the current stage, and with no progress being made, that's not going to happen for a while.
So, what can I do to get back to doing more "real work" more often? Well, I've asked my boss for new assignments, but he still wants to give me a rest. He can't understand why I am so angry and depressed about the fact that nobody is giving me work to do. He thinks he's doing me a favor by keeping me away from the busy people. But he's not. I feel best when I have lots to do, and when I am working with other people who have lots to do, and when I think the world is going to come to an end without Kris Johnson there to keep it all going.
I know I'm a workaholic and a prima donna, and I suspect that I overrate my skills and contributions. I don't care if I delude myself. Practicing my craft makes me happy, and I think it can be beneficial to others as well, if they will just let me do it.
If there's really nothing for me to do, I'd be glad to take a vacation or a leave of absence. But if I have to go into the office, I really want to work.
Sunday, May 15, 2005
Ground Lesson #4
I had a flying lesson scheduled for this afternoon, but we had a convective system moving through the area, so it became a ground lesson.
We reviewed the four questions that I missed on the FAA Knowledge Exam. After that, we reviewed the regulations related to airspace. I remembered most of the airspace-related regulations, but I'll admit that I've forgotten a lot of stuff since I took the exam. After that exam, I put all the aviation books away, figuring that I needed a little break, but it's time to start studying them again.
Saturday, May 14, 2005
iMac SuperDrive Not Working
I don't know what's gone wrong, but now whenever I insert a music CD, a CD-ROM, a blank CD-ROM, or a DVD into my iMac's SuperDrive, the drive spins for a few seconds and then the disc is ejected.
I installed Tiger from a DVD-ROM two weeks ago, so I know it was working then.
Apple products are supposed to be good, right?
[Update 2005/6/8: The SuperDrive has magically started working again. I don't know what did it; I tried it again right after the 10.4.1 update, but it didn't work then.]
I discovered yesterday that GNU Emacs built for Mac OS X doesn't work in Tiger. With a little Google searching, I found others reporting the same problem, but no resolutions. I tried rebuilding it from current CVS sources, but got compilation errors.
So I've switched to AquaMacs, an Aqua-native distribution of Emacs. I have no complaints so far, but really haven't done much with it.
Andrew Choi is working on a Carbon XEmacs that I may give a try. I've always preferred XEmacs to GNU Emacs.
After some playing around, I figured out how to build FSF's GNU Emacs from the current CVS sources. The Emacs configure script adds "-I/sw/include -I/sw/lib" to the compiler command line if Fink is installed. Unfortunately, Fink's headers lead to compilation errors. So I just renamed my /sw directory, re-ran configure, and now everything builds and works under Tiger.
Friday, May 13, 2005
Flying Lesson #22
I had a lesson scheduled today from 10:00 to 3:30. We decided to fly toward Winder-Barrow Airport (WDR), have a lunch break there, and then fly back to PDK. It was very hazy today, with visibility around 5 miles, but that didn't pose a problem because we knew how to get where we were going.
I practiced a few stalls. We were practicing these at 5,500 feet MSL, which was pretty clear when we started but which filled with clouds after a while. So we descended down near the surface to do some ground reference maneuvers, including a wind circle, rectangular course, and turns around a point.
We did a couple of touch-and-goes at WDR, then did a full-stop landing and taxied over to the building that holds the airport's administrative offices and the deli. The food was good, and there was a very pretty young woman behind the counter. The instructor now wants to talk all of his students into having lunch over there.
After lunch, we hopped back into the plane (after another full preflight inspection) and flew back to PDK, tracking a VOR for a while and then using the ADF (Automatic Direction Finder) to track toward a local AM radio station.
PDK was pretty busy as we approached. We had to wait a couple of minutes for a pause in the radio traffic where we could announce our intentions. We were cleared to land on runway 20 Left, but just as we turned onto final the tower asked us to switch to 20 Right. So I slipped over to the right runway, but then the tower said "Disregard last instruction; cleared to land runway 20 Left." So I slipped back over to the left runway. These changes screwed up my approach a bit, so my landing wasn't pretty. After landing, we got some more confusing instructions, so the instructor handled taxiing back to the ramp.
For today: 2.7 hours dual in N4363D, with 4 takeoffs and 4 landings. Cost: $314.12 (I'm not sure this is correct: I got charged for 2.7 hours in the plane, but for only 1 hour with the instructor).
Wednesday, May 11, 2005
Dear Valued Employees
An e-mail from Mark Hoffman, President of CNBC, shows just how much he cares about his staff.
Flying Lesson #21
There wasn't anything too interesting about today's lesson. We practiced lots of little things I've done before: unusual attitude recovery with the Foggles, simulated engine-out situations, and flight at minimum controllable airspeed. As is usual for a Wednesday lesson, I was rusty at first but got better. I made four landings, none of which were great but they weren't horrible.
I'm on unit 7 of the curriculum, which is only three units away from the solo, and it is clear that the instructor is focusing on getting me ready for that. We've scheduled a double-length lesson for Friday, and also a lesson for Sunday, so I'm hoping that having some more intensive training over the next couple of weeks will prevent any rustiness from creeping in.
For today: 1.7 hours dual in N4363D, with 4 takeoffs and 4 landings. Cost: $304.39.
Today there has been extensive coverage of the small plane that violated prohibited airspace over Washington, DC. Unfortunately, the coverage has included a lot of bad information.
For a description of the incident from the point of view of people who actually know something about small aircraft and the rules governing flights around the DC area, see the AOPA website: http://www.aopa.org/.
Tuesday, May 10, 2005
My company is the defendant in a patent-infringement case brought by one of our competitors. Today, I had to give a deposition. I've never had to do that before. The thought of spending a few hours locked in a room with lawyers, trying to remember events that happened over a year ago, constantly being afraid of saying something damaging to our case, filled me with dread. However, it wasn't as bad as I expected it to be. In fact, it was less unpleasant than going into the office would have been.
I won't describe the details of the case, but in a nutshell the plaintiff claims that our company infringed upon two of their patents when we created a product similar to one of their products. I was involved in the development and deployment of that product. So the plaintiff's lawyer's job was to get me to say something that (a) confirmed that our product does indeed infringe upon the patents, and (b) to confirm that we knew about the patents when we infringed upon them, as damages are increased if there is "willful infringement."
It wasn't too hard for me to avoid saying anything damaging, because thankfully I really don't know much about how the product came to be. I joined the company after it had been designed, so I honestly have no idea how its features were designed, who designed them, and whether those people knew they might be infringing on patents. "I don't know" and "I don't remember" were my answers to many of the questions.
The opposing lawyer tried to get me to describe our product's features using language from their patent. Our counsel, of course, had warned me to pay close attention to what I said, and to the specific words in the opposing counsel's questions. I was asked the same questions in many different ways, in an attempt to get me to answer differently, but I was able to stay consistent.
It took a lot of concentration on my part. My natural tendencies are to be helpful when people ask me questions. I want to explain things that they don't understand. I want to help them learn. I want to reach mutual understanding and agreement. My little trick to avoid being too helpful was to think of the opposing counsel like I think of an unreasonable manager or unreasonable customer, and to treat him accordingly: I gave him exactly what he asked for and was entitled to, but no more.
After a couple of hours of that, the opposing counsel started asking many questions that seemed irrelevant to the case. I answered all of the questions as well as I could, but I got a little worried because they didn't make sense and I had no idea where he was heading. I feared he would suddenly produce a "smoking gun" document that contradicted everything I was saying, causing our whole case to come crashing down, but that never happened.
One effect of my involvement in this case is that I am going to be a lot more careful about what I write in e-mail. He kept presenting me with e-mail messages from a year-and-a-half ago and asking me to explain them. In some cases, I couldn't remember writing them. Some had too-brief descriptions of technical issues that come across as gibberish now. Others held some embarrassing statements like "We didn't have time to do this right," which I don't think are relevant in this particular case but which I can imagine could be damaging in other kinds of disputes. Unfortunately, in a litigious society, it doesn't pay to be frank and communicative.
We started at 9:30 this morning. We took a lunch break at 1:00 PM, getting back into it at 2. A little before 3:00 PM, the opposing counsel finally said, "I have no further questions for this witness," and I was free to go.
Our counsel said that I had done well. He was as perplexed as I was about what the other lawyer was trying to get at during the last couple of hours. He noted that I had seemed nervous for the first hour or so, but then seemed really comfortable and cool after that. That wasn't how I felt.
Sunday, May 08, 2005
Happy Mother's Day
Saturday, May 07, 2005
One of the things that intimidates many (most?) student pilots is use of the radio. There is a vocabulary to be learned, rules to be followed, and stage fright to be overcome. The controllers and pilots all speak faster than it seems possible to understand. It can be especially overwhelming for a student pilot who trains at a busy towered airport, but all pilots have to deal with it eventually.
PDK is a busy towered airport, which made things difficult at first but it will make me a seasoned radio user by the time I get my certificate. I am getting pretty comfortable with the radio. I'd like to get more practice with using it, and somewhere along the way it occurred to me that becoming a ham radio operator might be fun. This also dovetails with my desire to learn more about electronics.
After a few minutes of investigation on the Internet to find out how one becomes a ham, I picked up a copy of Now You're Talking!, the training/study manual used to prepare for the Technician-level amateur radio license. To obtain the license, one must correctly answer at least 26 questions on 35-question written multiple-choice exam.
The process reminds me a lot of studying for the FAA exam. There are regulations, procedures, communications skills, and system operation principles to be learned. The question bank is published, so one can study the possible questions for the radio exam just like the questions for the FAA exam.
No Morse code is required for the Technician-level license. Knowing Morse code is also useful to a pilot, as it is used by radio navigation aids to identify themselves. I do plan to learn Morse eventually, but not right now. The Morse test consists of listening to five-word-per-minute code for five minutes, and then correctly answering 7 of 10 questions asked about the content of the message. If a Technician passes the Morse test, that operator is entitled to operate on some additional frequencies. Passing the Morse test is also necessary for the higher-level radio licenses. [UPDATE: I found a Morse code training program written by Ward Cunningham that I'll give a try: http://c2.com/morse/.]
I'm thinking of these future steps as "ratings," the term used by pilots to refer to additional privileges gained by getting training and passing tests. I'm developing an addiction to obtaining licenses, ratings, and other affirmations of my worth. That may not be healthy, but I'll learn a lot of cool stuff along the way.
Technorati Tag: ham
Blog o' the Crafty Doc
I ran across another blogger starting flying lessons: Blog o' the Crafty Doc. She takes pictures, which are probably a lot more effective than my textual ramblings in relating the experience.
Lipson-Shiu Corporate Type Test
I found a personality-type test that is a parody of Myers-Briggs and similar tests: http://www.andrewlipson.com/lstest.html
I scored as ILIG, but according to the page, no such people actually exist.
Friday, May 06, 2005
Nobody In Charge
Friday is a day off for me, but I was asked to attend an "important meeting" this morning. I attended willingly, hoping to see something good come of the project on which I've spent the last year of my life. After the meeting, I really wish I'd stayed in bed, and I seriously re-thought the not-quitting decision.
The meeting would have been very familiar to most developers. The business people had a big list of new features they needed implemented. They also insisted that the cost of the hardware must decrease, necessitating a change of hardware architecture which would also require a change of operating system. They want it to be cheaper and of higher quality, smaller and bigger, slower and faster. And they need it finished in three months.
The technical people, of course, balked at this. The hardware people had already identified some less-expensive hardware, but the software people weren't confident that the existing software could be ported to that architecture in the desired amount of time. The software people had some ideas about whch operating system would be easiest to port the application to, but the hardware people weren't confident they could find cheap-enough hardware that would run that operating system.
The techies asked the business people which was the highest priority: cutting the costs, adding needed functionality, or meeting the deadline. Of course, the business people answered that they need it all, and they need it now. When asked for suggestions of how to meet all these requirements, the business people said, "You're smart guys; you figure it out."
The above paragraphs were written from a techie's point-of-view, but I can see the business people's problem. The business people really do need it all, and they do need it now, or the product won't make it in the marketplace. They are looking to the techies to propose a set of possible solutions, but the techies are just saying "No, it's not possible." The business people want to explore various options in concert with the techies, but the techies just want to be told what they are supposed to build. The software techies and hardware techies are arguing with one another, and the business people (wisely) don't want to butt in on the technical decisions.
Everybody got frustrated. One person walked out, claiming that useful communication was impossible. The remaining people talked a while longer, but a lot of it was with raised voices. The meeting adjourned after 90 minutes with nothing gained and with strained relationships between the participants.
I've been thinking about this meeting, wondering exactly what went wrong and how it could have gone better. There are personality conflicts between some of the participants, so some measure of heated friction was probably unavoidable. However, this meeting was really just an intense replay of several similar meetings that have happened over the past few months. I think the main problem with this meeting (and with this project) is that there is nobody in charge.
When this project started a year ago, there was one business person and a couple of techies (myself and a hardware designer). I don't know how the business person felt about this arrangement, but I liked it. She told me what she needed, and I either figured out how to deliver it, or I explained why I couldn't and we'd work something out. She was the decision maker; I was the decision follower. Her requests were reasonable; I worked my ass off to fulfill them. The hardware person and I communicated with each other as needed. We got a lot done.
Now, as the project has grown in importance, several other business people and technical people have become involved. It is no longer clear who is in charge of what. Things only happen by consensus, and consensus is harder to reach as the number of people involved increases. We now have constant stalemate, and nobody is authorized to break the ties.
Take the software-vs.-hardware issue, for example. If the hardware designers were "in charge," they could select the hardware they want and then it would be the software developers' job to make it work. The software developers might not like it, but they could do it. Similarly, if the software developers were in charge, they could dictate the choice of operating system, the hardware designers would have to find something that supported the OS, and again we'd all be able to make it work. But with software and hardware being peers, and nobody at a higher level to choose one path over the other, nothing happens. We just keep arguing, as we have for several months.
How do we fix this problem? The obvious answer is that we need a project leader, but this company just doesn't work that way. The project managers in our company don't make decisions; they track budgets and schedules. The marketing people can direct expenditures of money, and pass along requests from customers, but they don't supervise the techies. The techies try to do what they think they are supposed to do, but they often get conflicting directions and suggestions from the various parties.
Every time I've seen a stalemate like this develop, it's been broken by the company president. I hear rumors that he's catching wind of what's going on, so maybe something will happen in the near future. I don't think this is the sign of a healthy organization.
Every team needs a leader. The leader shouldn't interfere with the team members using their talents, but whenever there are disagreements, the leader needs to make a decisions. In many cases, a wrong decision is better than no decision at all. The sooner you make a mistake, the sooner you can start correcting it.
If I was leading this project, I'd have no problem choosing a course of action, and I'm sure most of the other people involved could easily make their own choices. All we really need is for one person to say "Let's do this: . . .," followed by a concrete plan, and I'll bet everyone would go along with the plan, whatever it is.
I thought about doing that myself, but I know if I took that responsibility I'd have to go back to being a full-time miserable person rather than being a part-time happy person. Unfortunately, the temptation is very strong, as the only thing I hate more than working too hard is the feeling that I'm shirking my responsibilities.
Flying Lesson #20
I had a lot of fun in today's lesson, for the first time in a long while. The past few weeks have seemed like a lot of boring drills interspersed with complete confusion, but I was smiling through most of today's lesson.
The airplane needed a quart of oil. This was good, because after several weeks of having oil-filled planes, I finally got to add a quart of oil and the instructor could put a grade in the "Maintenance" area of my student record. It reminded me of how one gets merit badges in the Boy Scouts.
The instructor asked me to give him a passenger briefing, as if he was not a pilot. So I gave him the spiel about inserting the metal tab into the buckle to fasten the seat belt, pulling on the loose end of the belt to tighten it, and lifting the metal flap to release it. (Yes, you've all heard it hundreds of times, but the FAA does specifically require that all passengers get briefed on the fastening and unfastening of seat belts.) I asked him if he had ever been in a small plane, if he was prone to motion sickness or dizziness, if he was on any medications, and if he was feeling ill. I told him how to exit the plane in the event of an emergency, that he should not touch any of the controls or dashboard knobs, and that if he felt uncomfortable or nervous at any time he could let me know and we'd land as soon as possible. I asked him to be quiet during takeoffs, landings, and any other time I raised my hand. I told him how to close and latch the door, and the instructor willfully misunderstood all my instructions so I had to explain it in a few different ways. I forgot to ask him if he had been scuba diving (flying after diving is bad due to decompression).
The airport was pretty busy today. I didn't have to wait too long to taxi or takeoff, but there was near-continuous talk on the radio. The instructor noted that the controller had been there all day, and was impressed with how she had kept going through it all. This is our favorite controller: she knows what she's doing.
We practiced all the various kinds of stalls today. I think it was all the ups and downs and the losing and re-gaining of control that made it fun. At one point, we almost went into a spin during a banked stall, which was exciting in a terrifying sort of way, but I did the correct spin-recovery movements without thinking about it.
As we returned to the airport, we encountered a confused pilot. He had just taken off after a touch-and-go, and the tower told him to extend his upwind leg and then follow us on the downwind. Instead, he cut in front of us, but then turned back in an upwind direction. He was ignoring the controller's instructions, so the controller told us to follow him to keep him in sight. He seemed to be trying to make a 180-degree turn back onto the downwind leg, but was climbing above traffic pattern altitude and generally doing things that made no sense. His actions were so strange that the tower asked us if we understood what he was trying to do (we didn't). Finally the guy made contact with the tower, who gave him some instructions that got him out of the way so we could make our approach.
There was a bit of a crosswind and some low-level turbulence, and the instructor asked if I wanted him to take care of the landing. "No, I'll take it," I said. I overshot final by a bit, but got straightened out and made a really nice approach and a smooth landing. "Wow, I may just need to solo you today," the instructor joked, but his tone changed when I stopped on the wrong side of the hold-short line after turning off the runway. He says we'll do a lot of landings in the next lesson, to determine whether this good one was a fluke. I think I've figured out the perspective-related problems that caused me problems before, so I'm looking forward to a chance to show myself that I really have learned how to land.
For today: 1.3 hours dual in N9103M, with 1 takeoff and 1 landing.
Wednesday, May 04, 2005
Flying Lesson #19
I practiced steep turns and slow flight today. We also simulated some electrical failures and electrical fires. Electrical failures generally aren't critical in a small plane: the plane flies fine with all the electrical equipment turned off, so it's not as nerve-wracking as an engine failure. The procedure is basically to turn everything off, and then start turning things back on until you figure out where the problem is. If the engine-driven alternator has failed, then you need to minimize use of electricity, because the 35-amp-hour battery is all you have left.
I've worked out my problem with flaring too soon on the landings. My problem was that I was looking straight down, and not looking down the length of the runway like everybody knows you're supposed to do. (I always remember that when sitting in my living room, but always forgot when in the plane.) My landing-related problem today was that I was consistently coming in on the approach leg too high. We were landing in a northward direction, which I haven't done for a few weeks, so everything looked wrong. The terrain south of the airport is higher than the terrain north of the airport, so I had the illusion that I was lower than I really was and so I was reluctant to descend on the base leg. I had to do a lot of forward slips to lose altitude quickly, which made it difficult to have a stabilized approach. But while my approaches were ugly, the touchdowns weren't bad. I know I can make good approaches, and now I know I can make good roundouts and touchdowns, so now I just need to do them sequentially.
In the traffic pattern, for a couple of circuits we were following a Cessna that was flying a really wide pattern, and at a really slow speed. I'd like to blame that guy for screwing up my approaches, but I really can't.
For today: 1.6 hours dual in N4332L, with 4 takeoffs and 4 landings. Cost: $294.87.
iPodderX vs. Tiger
I noticed this morning that iPodderX has not downloaded any podcasts since April 29, when I installed Tiger. I upgraded to the most recent version (2.2.9), but it still didn't work.
Checking iPodderX's support forum, it turns out this can be fixed by selecting the Registration item in the application menu and clicking the Update Code button.
Sunday, May 01, 2005
Disappointed with Spotlight
One of the most-hyped features of Tiger is "Spotlight," the new desktop search engine. The OS now indexes all files so that you can now find documents containing specified text almost as quickly as one can use Google to find things on the Internet.
After using it a little, I am disappointed. Sure, it was cool the first time I typed in a string and it found a list of documents containing that string. However, there are several things that bother me about it.
First of all, there no longer seems to be a way to find a file by name. For example, say I want to add the Quartz.framework library to a Cocoa project, but I don't know where it is. Under the older Mac OS, I could select the Finder's Find... command, enter "Quartz.framework" in the search box, and the Finder would find it. Now, however, Spotlight and the Finder are incapable of doing that. If I enter "Quartz.framework" in the Find box now, the only result is the file "qc_howto.pdf", the documentation for Quartz Composer. This is a disappointing loss of simple functionality. Now I have to go to the Terminal and type something like "find / -name Quartz.framework" to find files by name.
I tried creating a Smart Folder for files where Name is "Quartz.framework," but no items were found. I also created a Smart Folder where Name Ends With ".framework," but that only found about ten items. I suspect the search ignores the /System folder and various other places; I'll have to figure out how to get around that.
[UPDATE: After reading a hint, I rebuilt the Spotlight indexes with "sudo mdutil -E /" and now the problems described in the above two paragraphs are solved. I don't know why this was necessary; I guess I'll need to set up a cron task to automatically reindex everything periodically.]
Next, I don't like the way that Spotlight shows the list of found documents. It simply gives a list of file names and dates. It doesn't tell you which folders contain the files, nor does it provide any context for the found text. Yes, there is a little 'i' button next to each file I can click to find out where it is, and I could open each file one at a time to examine the context, but again this is disappointing.
Maybe I'm expecting too much, but we are still at a point where it is easier to find things on the worldwide Internet than it is to find them on our own local hard drives. Or maybe Spotlight provides the features I want, but I'm just too stupid to figure it out.
Now I'm going to have to memorize the command-line options for find and grep.
Still No Mac OS X Alarm Clock
Even with the new Dashboard, Tiger still doesn't have an alarm clock. What is Apple thinking?