Tuesday, August 26, 2008

Why I Fly (Chapter 12)

The man who taught me to fly, Lewis, has remained a good friend of mine since we met in 1995. On Saturday he got married. Sandra and I have grown fond of him and are very happy for him. At the wedding his brother, Walt, described him as "having the capacity to be really excited about anything." As a result, hanging out with Lewis is always a hoot. But it also made for Lewis often chasing in a new direction, or after a new dream. Sandra and I often wondered if he was capable of settling down. But he seems to have been fully smitten.

Lew and his future bride set out to have a destination wedding. They jetted around the globe looking for "the place." They finally settled on Sun Mountain Lodge in Winthrop, a small town about 100 miles north east of Seattle – 100 miles in a straight line. By road, it takes nearly 5 hours and goes though some of the most ruggedly beautiful mountains and valleys in Washington State.

We took the plane OVER those mountains and valleys. As I was planning the flight, I thought over a couple issues. First, this is some of the most hostile territory in the state. There are no cities, no roads, no airports, not even any flat spots, just tall mountains, deep valleys, and steep ravines. Second, there were some tall mountains. And the highest one at 10,500 feet was nearly directly in out path. Third, we would be coming back at night. Fourth, there are flight paths that stay closer to civilization, and thus options in the event of something going awry, but that route takes you south to Seattle then east, and back north again. I’ve used that path in previous night flight.

I decided to take the twin engine Piper Seneca to speed the flight, allow for quicker climbs, and some redundancy in engines as we crossed the mountains.

Now, how do we get from the airport to the lodge? It is about 13 miles, too far to walk or bike in a suit or dress shoes. We called around and found Mountain Transporter offered a van service, but charged by the hour. And we would be at the wedding for several hours with the meter running. The lodge’s concierge was willing to pick us up and take us back, and get this, FOR FREE! The only catch was that the concierge got off work at 8:00 P.M. so we couldn’t stay much later than that.

The day of the wedding turned out to be a beautiful day for both the wedding and for flying. Sandra dropped the kids off at Grandma’s and while I picked up some SeaBands for her on my way to the airport to preflight the plane.

We prepared for take off: review engine out procedures, taxi on to the runway, hold the brakes, 2,000 RPMs, check the engines, release the brakes, ease in the rest of the power, verify runway alignment, airspeed indicator alive, 60 mph, verify runway alignment, 70 mph, verify runway alignment, a little back pressure to lift the nose, 80 mph, nose wheel off the ground, mains off the ground, accelerate to 105 mph, no usable runway ahead of me, retract the gear, accelerate to 120mph, trim for 120. 1,100 feet on the altimeter, we are 500 feet off the ground, so I banked the plane to the east, rolling the wings level, I pulled the engine back to 25 inches of manifold pressure and reduced the RPM to 2,500 for the climb. Whoa. That is a busy time.

As I cleared Paine’s airspace, I called up Seattle Radio to open my flight plan, and then switched over to Seattle Center for VFR flight following. We continued to climb. At 9,500 feet, Sandra asks "How tall is that mountain ahead of us?"

"10,500 feet. We are a thousand feet below the peak." I reply. "Our flight path will take us north of it, and we should be above it by the time we reach it."

About that time the air traffic controllers called us up "Do you have Glacier Peak in sight?"

"Affirmative. It is beautiful up here." We continued to climb, leveling out at 11,500 feet. I set the RPM back to 2,300, nursed as much manifold pressure out of the engines as the thin atmosphere could provide, and synchronized the propellers. The airplane settled down and continued to accelerate.

We were level for just a brief period when the controller asked when we planned to start our descent to Methow. Ahead I could see the ridge on the east side of Lake Chelan, and I had to clear that before I could start too much descending. Soon the lake was passing beneath us and I could see Steheiken out my window.

Rolling the trim wheel forward I started down over the ridge, picking the small town of Winthrop out of the golden brown valley in front of me. Sandra said "are we landing already?"

"Yep, but we are still too high. I have to lose some altitude quickly." As we descended over the ridges and hills, we started bouncing on the thermals. I pulled the throttles back to 16 inches of manifold pressure and continued to descend. As we got to within 4 miles of the airport, we were still too high. I made a arcing left turn to the north, went over the lodge, and then turned south back towards Twisp in shallow right turn. We were finally coming in low enough that I could make final u-turn to the left to end up entering left down-wind over the hills on the east side of the airport. I extended the gear, and ran the pre-landing check-list. Flaps out, we touched down and rolled out. I turned around on the runway and taxied back to transient parking.

Exactly one hour after starting the engines, they were shut back down.

The wedding was beautiful. It was held on the bluff overlooking the valley to the north. Since we have been friends with Lew for so long, we have developed quite a few mutual friends. It was fun to see so many of them gathered together, celebrating in honor of Lew and his new wife Stacy. And the conversations were a kick too. Lew had a long and varied career is several odd aviation jobs, and the crowd reflected his past. Sean did a tour as my flight instructor, and is now a pilot for Alaska. Lew’s friends from his east coast tuna spotting days were there (that was a colorful group). They were the perfect match for a delicious dinner.

Eight o’clock came much too soon, and after a bit of coordination the Concierge drove us back down the hill to the valley below and to the airport. We stopped along the way to drop off some of the house-keeping staff that was carpooling with us. It was a little after 9:00 P.M. as I began the preflight for the trip home.

Funny how earlier in the day, I did not notice the moon was out. But now that the sun was set, so was the moon. And in a small valley with rapidly climbing terrain on either side, I was missing that moon. It was DARK. Before starting the plane I stood on the ramp and looked north and south. From the ground I could see the silhouette of the hills against the night stars. I could see the faint lights of the next city down the valley. I examined the charts and found the highest points near the airport. I planned my assault of the inky blackness.

We taxied out to the runway, and I found the ridge lines and horizon against the stars. I planned my take-off. I recited the engine failure on take off mantra. I mapped in my mind my route ahead: Take off south, slight turn to the right to follow the valley floor. Climb. The throttles advanced. The take-off roll started. Full power.

We arced right, and headed towards Twisp. The plane climbed. But something else odd occurred. When we were below the ridges, their outline was visible against the star-lit sky. But from above, all the ridges disappeared into the dark back void below us. I could not see the rising terrain below me.

I knew that there are no mountains over the road. I stayed on course over the road as we climbed. We covered the ground between the airport and Twisp quickly – too quickly. We were over Twisp and the country highway’s lights south of the city were spaced too few and far between to assure we remained over the road. Worse, I was not high enough to leave the valley. I eased the plane to west side of the road below, and made a tight turn to the east, now headed back toward Winthrop as I continued my climb over the highway. When we got back to Winthrop we were high enough to clear the immediate hills. I had more maneuvering room. One more turn back towards Twisp and I was at 9,000 and climbing. Ready for to assault the North Cascades again.

"Black as ink" is not black enough to describe the mountainous terrain below. Once again, I was able to see the silhouette of Bonanza Peak and Glacier Peak. We continued to climb. I contacted Seattle Center for flight following. They wanted to know if I had the mountains in sight, and I did.

I had expected some turbulence on the ride home, but it was as smooth as glass. As we configured for cruise at 12,500 feet, I knew I had 2,000 feet between me and the highest point around me. We were above the mountains, but again the terrain vanished in blackness below. I had to calculate when we were past the mountains in order to descend.

My head was processing. I started with take off time, and distance combined with airspeed, and then an estimate of maneuvering time over the two small cities… 120 miles an hour, two miles a minute. Add in a bit for the forecast 20-knot headwind but if I had the forecast head wind I would expect a bit more turbulence. What are the actual winds? Just what is my actual ground speed? And a flash of numbers on the panel caught my eye. The DME displayed my closing speed on the Paine VOR.

Wait. The DME had just locked on to the Paine VOR. I tuned and identified the VOR to assure I was on the right one. I was 50 some odd miles away from Paine Field. That will work. I measured the distance from the Paine VOR to Glacier Peak – about 45 miles. In seven or so minutes we would be at 40 DME from Paine, at least 5 miles past the peak, and I could safely start down.

The lights of the cities surrounding the Puget Sound started coming in to view. Seattle, Everett, Bellevue. Dark spaces revealed bodies of water, ribbons of lights drew bridges. Ahead was the Hewitt Avenue Trestle and to the right of that, Lake Stevens. Past it is Port Gardner. We made it.

Seattle Center requested I notify them when I had Paine Field in sight, at which time they canceled my flight following. As we descended nearer to home, I slowed the plane from the high-speed descent, down to below 150 MPH where I could extend the gear.

Rolling the plane to the right to line up with the runway, I simultaneously extended the flaps. Soon we touched down just short of the fixed distance markers.

Back at Regal, there was a T-6 Texan parked in the Seneca’s space so we made another lap around the ramp looking for a space to tie down.

Engines shut down at 2.3 hours total time. Point three. An extra 18 minutes to climb over the valley, fly into the headwind, and taxi around? All in a good day of flying.

Thursday, August 21, 2008

And Speaking of voting...

I am proud to say have contributed to the a new national voting project, Vote 18. I created the inital website, and then worked with to get the new .php one up and running. Stop by and check it out.

Vote 18 has recently kicked off it's national tour and they are already getting some great media coverage. Kudos to Walt, Marco, and their team!

Friday, May 16, 2008

Why I Fly (Chapter 11)

As my one regular reader knows, I got my Multi-Engine license a couple of years back. However, I am yet to fly the twin-engine plane alone. I recently logged enough time to satisfy the insurance company, but then realized that I did not have a recent Instrument Proficiency Check (IPC) nor had I flown on instruments in a while, which the insurance company also requires to get signed off in the twin. Since I have a perfectly fine airplane of my own, I arranged to use it for my IPC flight a couple weeks later.

My real goal is to be able to take my wife out in the twin. I had hoped for a trip to the San Juans for dinner on my birthday, but alas it was snowing. We've had a run of rough and bumpy weather – including a later round of snow on April 20th, and when we finally got a break one Sunday afternoon, I started making arrangements for the trip to the aerodrome. I called over to Regal to reserve the plane, only to discover that it had been more than 60 days (67 days in fact) since I had flown the plane. Another rule shoots me down. Arg!!! How hard does this have to be?

Sandra's birthday is coming up this Saturday, and the weather is forecast to be CAVU, so I reserved the plane and a random instructor for last night to go jump through the next hoop.

As we were preparing for take off, the ATIS alerted us to "Fog to the north." Paine Field sits on a plateau 600 feet above the Puget Sound. So from where we were doing our pre-flight the fog a couple miles away and below us over the water was not visible. We were cleared for take off to the south, and as we climbed up, the fog over the Puget Sound came into view. Our rectangular path took us to the south a mile or two and then we banked right towards the west and then around to the north where we paralleled the runway we had just departed. Sure enough there just north of the field was a fog bank working its way from Port Gardner Bay up Japanese Gulch to the runway threshold.

Ahead and to our right there was a 747 coming in for landing. The 747's decent path kept it skipping the top of the fogbank as it slowed and the wings held the heavy plane aloft. Like the churning water left behind a large ship, the wake of the 747 swirled down and away from the airplane's path, cutting a valley into the fog.

The resulting valley in the fog was an excellent depiction of wake turbulence. As I turned onto final, I flew over the valley and above the flight path of the 747 landing further down the runway than it did, leaving the first 1,500 of runway behind me. Once on the ground we quickly reconfigured the plane for take-off.

As we lifted off, the tower controllers reported the wind had shifted and was no longer out of the south, and it was now coming in from the north. The wind that was pushing the fog away had turned, and was now pushing the fog on to the north end of the runway. We requested and received clearance for a right 90, left 270 turn back to the airport. Our flight path traced the letter "P" over the ground, and we were lined back up on the runway.

Again we touched down and reconfigured the plane for take-off. We lifted off over the fog, the tower controllers reported incoming helicopter traffic head-on, and requested we return to landing to the south. We flew the same "P" shaped approach, landed and taxied towards our parking space. Heading in we watched the Blackhawk fly the length of the runway, and disappear into the evening sky.

Epilogue. .5 hours of running engines and once again I'm a safe pilot according to the insurance company.

Saturday, May 10, 2008

Ego Surfing

I got a notice in the mail today that a patent I submitted in 2002 was accepted. Here is the list of things I consider cool achivement.
  • Inventor, U.S. Patent Application No. 10/179,858 : System and method for smart drag-and-drop functionality.
  • Joint Inventor, U.S. Patent Application No. 11/012,767 : Systems and Methods for Dynamic Application Patching.
  • Contributor to ECMA-357 ECMAScript for XML (E4X) Specification.

Tuesday, January 01, 2008

Improving the news, and entrapment.

As of today, there is a new law in Washington State, described as the Driving While Texting (DWT) law. Now don't get me wrong, I'm all for this law. Not long ago I was held up in a 90 minute traffic jam as a result of an accident on the express way caused by a guy composing an email on his blackberry.

The news reports all describe it as the Driving While Texting law. In fact nearly all the major local news outlets used the SAME TEXT from AP when reporting the story. And none included a link to the ACTUAL LAW.

Why has news reporting become so canned? Do reporters really put that little effort into their jobs? And why not link to the real law? HTML makes this so easy, even I can do it.

And the new law is MUCH different than the news report. According to the law, a driver can be cited for:

operating a motor vehicle while reading, writing, or sending electronic messages ... operating a moving motor vehicle who, by means of an electronic wireless communications device, other than a voice-activated global positioning or navigation system that is permanently affixed to the vehicle, sends, reads, or writes a text message, is guilty of a traffic infraction.

What is a text message? Is a series of letters a message? Most certainly -- reading a text message would be a violation. Is a picture a message? It could be, if it were a picture of a series of letters. What if the series of letters were the name of a road or city, like on a Garmin GPS? Use of this device in a moving vehicle is now clearly banned by RCW.

But more troubling, how about the Washington State Department of Transportation web pages that are INTENDED to be used by wireless devices? If I use this web page on my cell phone while driving, it looks to me like I am breaking the law. Is the state providing the technology to enable the violation of the law?

Looks like entrapment to me.

Wednesday, December 19, 2007

Good Political Ad

My friend Dave has been posting plenty of positive press on on his favorite candidate. So following his lead I'm making some political comentary of my own. I am not endosing the candidate here, but I am endorsing having fun with a process that has become painful.

This ad is just good clean fun.

Sunday, December 16, 2007

Kids play at piano recital

Yesterday was piano recital day. I forgot the real video camera, so I used my digital camera to record video, it is a Canon SD500 I got a couple years ago, it is not real clear, but still you get the idea. Click the play ">" buttons on the lower left of the image to see and hear them play.


Isaac, 11, first set


Isaac, 11, second set


Brittany, 14, first set


Brittany, 14, second set

Saturday, October 27, 2007

Thank you Sir! May I have another?

Imagine your doctor writes you a prescription, you bring it to the pharmacist and he has the medicine. But your insurance company wants your doctor to get the medication pre-approved before they will cover it, and that pre-approval is being held up in paperwork somewhere. You’ve used the medication in the past, so you know it will help. In fact you know that without this medication, you will have problems. So you decide to pay for the medication yourself. Your doctor prescribed it, your pharmacist has it, you need it, and you are able and willing to pay for it. Done deal, right?

Not if the State is your insurance company.

Our children are adopted. They came to us from the foster care system. You can listen to our NPR interview on real audio about the program we worked with. In the end, we have four wonderful children to brag about.

As a result of them coming out of the foster care system, each of the children came with “Adoption Support.” In our case, our children receive Title 19 medical assitance, what is more commonly known as Medicaid. This is not the same program as the hotly debated SCHIP program.

Long ago, we decided to put our children on our family insurance plan offered by my employer. We do this for emotional reasons. We don’t want our kids ever believing we wouldn’t pay for their health care, and translating that into some message of rejection.

So Medicaid functions as a secondary insurance policy. Whatever is not paid by our employer provided insurance is then covered by Medicaid. So that $15 dollar doctor visit co-pay is covered, the seven dollar medication co-pay is covered. The glasses that get broken before the two year cycle is up are covered. It’s nice, but it really doesn’t add up to any large sum benefits.

To maintain our eligibility we have to submit annual tax statements and jump through some hoops. Last year they required a second opinion before a medication could be covered, which resulted in a trip to a doctor they selected at Children's Hospital. This year just before school started, the State sent us a letter informing us they wanted all four children to go in for a check-up within 30 days. The doctor’s schedule is pretty tight with all the new kids getting ready for school and athletics, so getting four kids non-emergency medical attention is impossible. We got them in within 45 days, but we had to pull them all from a day of school.

Today I encountered the exact situation described in the opening paragraph, where the doctor prescribed, the pharmacist was able to provide, our primary insurance would pay for most of a medication,
but the State wanted pre-approval to cover only the CO-PAY. I tried to pay, and the pharmacist said he was unable to let me do that. If he were discovered accepting money from someone on Title-19 insurance, he could face penalties.

Gee thanks. I’m glad my government knows so much better how to take care of my family’s health than my doctor and I do. I can’t wait to have more government run health care.

Monday, October 15, 2007

Verizon Swing and a Miss

FIOS has hit my 'hood. 49.95 for lightining fast, 39.95 for merely blazing. But wait, there is more. I can get it as a "package" with home phone, internet, and cell service. But the pricing confuses me, and I contact customer support. Below is my conversation, with spelling corrections.

Your chat ID number is 10150791940.
Welcome to Verizon Live Chat. You have selected to chat about:
TN:425pppnnnn
Subject:Product Information / General Bill Inquiry
15:29:24 A Verizon eCenter Representative will be with you shortly. Thank you.
15:42:58 Estimated wait time is approximately 5m:39s's, we apologize for the delay. You are next in the line. A representative will be with you shortly.
15:43:09 Agent John has joined.
15:43:09 John: Chat ID for this session is 10150791940.
Roger: Hello, I am trying to figure out how to compare the cost of a bundle to my existing bill. According to the website, if I get fios (fast is good) I can get it for 39.95 vs 22.77 I am paying now. (17 buck for the extra speed). and phone in a bundle for 44.99, but my current cost is 34.34 (all taxes included) -- 10.65 extra. this bundle costs me more. how is that better?
John: You get Unlimited Long Distance, calling features, and state of the art Internet services.
Roger: but I use my cell phone for long distance already...
Roger: and the fios is 39.95 even with out the phone package.
John: Yes, perhaps the bundle is not the ideal package in your situation.
Roger: so is it just the extra calling features I get for the extra 10.65?
Roger: Seems odd that a bundle would cost me a bundle more.
Roger: that's too bad.
John: Long distance is the main advantage, and the features are included in the price.
Roger: I suppose the other advantage would be unlimited calling between my cell and my home.
John: If you have the Verizon Wireless, yes.
Roger: ok, so I’m not misinterpreting the offer.
John: I do not think so. Its a general offer, it may not fit everyone’s calling needs.
Roger: I had hoped the package would offer me more benefit.
Roger: Thanks for your time.
John:Thank you for your interest in the services.
Roger: :(
John: Do you have any other questions I can help you with today?
Roger: can you make the package help me?
John: The bundle is as listed online. There really are no options to rearrange this bundle. I apologize.
Roger: kinda figgered, but you asked. :D
John: I understand.
Your session is now closed.
Thank you. Have a nice day.

Sunday, August 19, 2007

The six Fs (don't get your hopes up)

My friend Adam observed there are six words that begin with F that motivate people in their jobs. I'll list them in alphabetical order
  1. Family / Friends - a job that provides an opportunity for you to spend time with your family. Imagine limited work hours, extra vacation, or even telecommuting.
  2. Fame - success at your tasks will make you famous. Think of Mark Andreeson, Jim Barksdale, Adam Bosworth, Bill Joy.
  3. Force - releasing a product that changes the world. Microsoft Office, Internet browsers, relational database.
  4. Fortune - If you succeed, you become wealthy. For some, this is to break $100,000 a year. For others it is to break $1,000,000.
  5. Freedom - to work on what you wanted. An example of this would be Google's 20 percent time.
  6. Fun - This job is just a fun place to be. Nerf rockets, positive feedback, video games, group lunch.

What motivates you?

Monday, July 02, 2007

The problem with learning from experience is the test comes before the lesson.

Insurance companies rule the aviation industry. As an example, in the 12 years I've had a pilot’s license, I've not had an accident resulting in any damage -- knock on wood. Admittedly I've had one declared emergency, and one near miss (and why is it a near miss? I was nearly hit!). I have accumulated an instrument rating, a complex endorsement, a high performance endorsement, spin training, advanced maneuvering and upset recovery training, a commercial license, and a multi-engine license, and am most of the way through my instructor license. I have also accumulated over 600 hours of flight time.

My commercial license allows me to charge people for rides in the plane. To get this license, I must have completed 250 hours of flight time. But the insurance company requires that I have 500, or double that amount of time, to be insurable. To get a multi-engine license (ME), I must have been trained by a federally certified instructor, and get his or her approval to sit for the test. Then I must be orally reviewed by a federally designated examiner. Once that is complete, I must also fly with the examiner so he can review my ability to operate the aircraft systems, under duress. With his or her approval I can have my multi-engine license. But then the insurance requires I fly the plane for an additional 8 hours with an instructor before I can fly it alone. To act as a co-pilot of a multi-engine charter flight, the insurance company requires 1,200 hours of time!

This is where today’s story starts. I have had my ME for a bit less than a year, and I simply have not made the time to acquire the time required to satisfy the insurance company, so Sunday morning I made plans to go bore some holes in the sky. I met my instructor with his favorite white chocolate mocha at the airport.

I prepped the flight school's Piper Seneca and we climbed aboard. We marked things off the check list in preparation for take off, and ran the plane down the runway to the south. After lift-off we climbed clear of the runway, retracted the gear, set the plane to climb at 120 mph, and performed the climb-out checklist. I turned right continued my climb on the crosswind leg, and exited the pattern toward the opposite side of the Puget Sound. Upon reaching 3,000 feet, I pulled the power back to 23 inches of manifold pressure and slowed the propellers down to 2,300 rpm. This is a good setting for cruise. The nose lowered towards the horizon and the plane accelerated up to about 150 mph, and I pointed the plane towards Port Townsend.

The nacelles that enclose the Seneca's engines open from either side and hinge in the middle. This allows for excellent access to the engines during preflight. However, the latches that hold the panels closed are notoriously finicky. As a final step after securing these latches, most pilots give the panels a good firm pat to make sure the are really latched. As the plane settled into cruise I had completed the cruise check list, closing the cowl flaps and turning off the fuel boost pumps. As an additional step, I scanned outside the airplane, with particular attention on the nacelle panels.

To no great surprise, the outer panel on the left engine appeared to have come open. But it was oddly opened. The front corner along the center hinge, nearest the propeller was open about two inches. As I looked at it, aside from being open, it seemed open wrong. And for a fleeting moment I wondered how, at 150 mph 3,000 feet above the waters of the Puget Sound, could it possibly be opened right? Being a master of the obvious, I pointed to the engine and said to my instructor, "That doesn't look good."

We quickly agreed that going back to the airport was the right thing to do. I banked the plane into a 180 degree turn, and contacted the tower. "Paine Tower, Seneca one six two niner two, we are returning to the airport for a full-stop landing," I said in my best pilot-in-command-radio-voice.

The controller in the tower responded "Seneca one six two niner two, make right base for runway one six right, report the ferry dock. Do you require assistance?"

Wow, "assistance." I didn't think I sounded stressed, how did he know? My instructor was urging me to slow the airplane down to 105 mph to reduce the aerodynamic forces on the panel that were clawing to peel the gap wider. I keyed the microphone and said "We’re doing OK." I was impressed with the controller. He had several other planes he was working, and we had just departed his airspace. But at hearing we were coming back, he rightly guessed that something unusual was occurring, and offered extra assistance. I briefly considered asking for runway one-one, which was straight ahead, but decided no, since the controller had several planes in motion, and my clearance was already in place. I didn't want to throw any curves in to the process as long as things were flowing. Plus runway one-six-right is twice as long.

The next plane to report in was north of me, or to my left, and requested to land on runway one-one, straight in front of me. Since I was headed to the left to join the right base leg, to allow new plane to land on one-one meant he would have to pass in front of me from left to right while I turned to the left behind him. The controller, still sensing something was amiss, refused the new request and assigned the new airplane to land on runway one-six-right with land and hold short instructions, thus preventing the other plane from passing in-front of my path. The controller then turned his attention back to me, gave me the current wind conditions as three-zero-zero at eight, and offered me a straight in approach to runway one-one, a much simpler path for me to fly.

With the winds coming 300 degrees, and me landing on a runway heading of 110 degrees, that meant they winds were blowing from nearly directly behind me, just off my left side. At 8 knots they were below my personal 10 knot tailwind landing limit. So I accepted the clearance.

We landed and turned off the runway into Regal’s parking area where we secured the plane’s engines and examined the open panel. Much to our surprise the finicky latches were still secure. But the forward hinge on the panel had failed and all left holding the front corner of the access panel down was a grounding strap. At this discovery my instructor and I agreed we were done flying for the day.

Even though I only got to log .5 hours of flying, I was once again struck by the lessons of the day. First was the ingenuity of the Piper engineers. The grounding strap could have been installed anywhere along the center-line of the cowl, but by placing it on the front of the panel, when the hinge failed, the grounding strap acted as a backup to hold against the 150mph wind. If the rear hinge had failed, no strap would have been necessary as the wind would have been pressing the trailing edge of the panel down. Second I was impressed again by the situational awareness demonstrated by the Paine Tower controllers. He knew something was up, and cleared a straight path for me without me even asking, all the while presenting me with current information that would aid me in making a decision. Third, I was impressed by the importance of knowing the equipment. There are a lot of things going on in the airplane, and the checklist is there to help us. It is important to run the checklist to keep track of all those things, but it is also important to know your equipment. Knowing to the latches are finicky, led me to visually verify them in cruise, and that resulted in me seeing the related failure.


Never let the plane take you anywhere your head has not already been.

Wednesday, May 16, 2007

Just the facts, ma'am

I am a local general aviation pilot, who occasionally generates airplane noise around Harvey Field. I have yet to grasp the difficult reasons for modifying the current runway alignment, but the latest set of misrepresentations, half-truths, and deception that passes for facts in has inspired me to write.

It is true the population of the area has swelled; however the FAA no longer considers it “other than congested” and it is a “congested area.” According to Federal Aviation Regulation (FAR) 91.119, this increases the minimum altitude from the misstated 500 feet to 1,000 feet above the highest obstacle, unless landing or taking off.

Further, the airspace over Harvey Field is not considered “free.” Starting at the ground up to 700 feet is “uncontrolled” but at 700 feet (300 feet below the minimum altitude) it becomes controlled “Class-E” airspace with very specific visibility, ceiling, and separation requirements as defined in FAR 91.127. At 6,000 feet, the airspace becomes even more stringently controlled “Class-B” as defined in FAR 91.131, requiring radio communication and approval from the SEATAC controllers.

The writer asserts a half-truth that Kirkland and Seattle are controlled all the way to the ground. They are not. Kirkland has the same controlled airspace as Snohomish starting at 700 feet and then it becomes the more restrictive space at 3,000 to 5,000 feet. Much of Seattle north of downtown is similarly classified.

It is true that part of Seattle does have some controlled airspace starting at the ground. But so does Marysville, Everett, Renton, Bellingham, Mukilteo, Olympia, Lynnwood, Spokane, Oak Harbor, Port Angeles, and Moses Lake! The reason? They all have large airports to which the writer objects! If you want controlled airspace, it comes with “super-sized” airports.

Flight plans are not required for any domestic visual flight, and are primarily designed for search and rescue to locate missing aircraft. Visual flight plans have no bearing on the aircraft being directed by air traffic controllers. The writer’s use of this point is purely a distraction.

Finally, it is a misrepresentation to claim the airport will be super-sized. There is no intention of attracting larger or noisier aircraft. The proposed runway changes REDUCE the useful length of the runway, and increase its distance from hazards.

If the community is expected to make good decisions about a difficult issue, we need to stick with facts.

Sunday, February 25, 2007

Getting Parameters to .ascx files

In .net, the preferred way of performing server side includes is to use the web control, or .ascx file. As I noted earlier .aspx files must have the html and body tags in them. but .ascx files do not. These are simply easy to use html blocks that can be plugged in to an .aspx file.

They also allow you to write code behind the html blocks, like the .aspx file does. However, passing parameters to the control is not apparent, so again hacking comes to the rescue.

Let's imagine an aspx file that selects an XmlNodeList from a document. Then each item in the node list should be passed to the control for formatting and inclusion in the webpage.

To pass that node, add the node to the Session, and then in the .ascx, always start by retrieving the value from the Session.

This creates a loose coupling between the .aspx and the .ascx which must be documented. I also like to create public string constants that are used for keys to the session context.

If there is any interest, I will post code samples.

Wednesday, February 21, 2007

Servlets in .net?

Today I am writing a website using .net 2.0, and one of the pages needs to return a .pdf rather than HTML. So the return back needs to not output the normal html headers and content. But in ASPX, every webpage must contain at least this:
<html><body/></html>

But once that is emitted into the stream, I am not outputting a .pdf any more. So I needed to subvert the streaming of that content.

Here's what I did:
<%@ Page Language="C#" AutoEventWireup="true" 
CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<% if (true)
{
Emit_Content();
}
else
{ %>
<html><body/></html>
<% } %>

Once the html tags were subverted, I was able to write the Emit_Content() function in Default2.aspx.cs. Note that byte array _buff and Int32 _got are member variables.

    /*
* Write out the contents of the
* pdf to the http response socket
*/
protected void Emit_Content()
{
try
{
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition",
"inline;filename=new.pdf");

Response.BinaryWrite(_buff, _got));
}
catch (Exception ex)
{
Response.Write("<html><body>" +
ex.Message + "</body></html>");
}
}

Saturday, January 27, 2007

More Funny Dell Stories.

One of the 20 or so Dell computers I support was complaining during startup that some of its memory was not working. If you tried a couple times, the computer would boot and run, but then eventually error out later on a memory read failure. The computer is still under warrantee, so I called Dell.

The support techs put me through the normal memory failure drill.
  • Boot the computer, hitting F12 (boot options) and select diagnostic utilities. Run the memory test. Failure.
  • Unplug the computer, remove the memory, clean the contacts with and eraser, and install the memory. Failure.
  • Remove both memory sticks and swap slots. Failure.
  • Remove just the stick from slot one. Computer Boots and runs fine.
  • Reinstall the memory to slot one and remove the memory from slot two. Failure.
By now we know the memory is bad, and that it is the memory in slot one. The support tech says he will be sending out technician with replacement memory for us. I counter that he can just send the memory, and I’ll install it at a time the system can be taken off line without disrupting the business.

So the support tech says “Are you comfortable installing the memory yourself?”

I laughed out loud and retorted “Um, I just took it out, cleaned, put it back in, swapped it, and removed and reinstalled them one at a time to help you diagnose the problem. You tell me if you think I can install the new ones.”

We both had a good laugh, which concluded with him admitting that he is required to ask.

The next day, I had new memory waiting for me. Dell delivers the fix, and good humor at the same time.

Friday, January 12, 2007

RAVE: I love bluetooth.

Long ago I gave up my regular flip phone in favor of a smart phone. Even as a nerd, I wanted to carry around the fewest gadgets possible. At first I had a TREO 600, a great phone to be sure, but it has some drawbacks.

What I really want is a phone with a built in PDA. What is available is a PDA with a built in phone. My idea of a phone is a flip phone. Something like a old Star Trek communicator -- flip it open and announce, "Kirk to Enterprise!" and a voice responds from the ether. One of my all time favorite phones was my old StarTac (ironic huh? StarTac vs Star Trek?). Then when the conversation is done, close the phone, and stick it in your pocket. Done, simple, fool-proof.

Instead I have a small brick I hold to my head. It does EVERYTHING I want from a PDA, but as a phone, it feels like I'm holding a VHS cassette to the side of my face. And corded headsets are frought with their own trouble. I was always catching the cord on something or dragging it along behind me. The cord evenutally caught somewhere, and the force of it jerking the plug from the recpical broke the contacts inside, making the phone usable only WITH a corded headset -- go figure!

I am at my core, frugal. My friends call me a cheapskate, and I'll accept that. I had been lusting after a newer treo, but my broken 600 was still under contract, and a new 650 or 700 with bluetooth was going to exceed my personal spending cap.

Then the the patron saint of the skinflints smiled on me. I was working on a customer's computer system, and he had a Treo 700w box on his desk. I asked him how he liked his phone.

"I hate it." He responded. "It is too big and bulky, so I got this instead." He remove a RAZR from is pocket.

"Would you sell me you old one?" I offered, hoping to buy it within my budget.

His response was curt and final. "No. Take it off my desk so I don't have to throw it away."

I bought a Jabra 250v headset off ebay the next week.

It was a breeze to connect, and has great sound quality. Now I have no brick by my face, no cords to get tangled, and I am one happy yacker! Give me a call some time.

Monday, January 08, 2007

Saturday, December 09, 2006

The magic of Python

One of my customers sells novelty toys. Cool gizmos to play with. They advertise on infomercials which are done by as third party. Buyers call the third party to place orders, and the orders are later sent to my customer in a comma separated values (csv) file. These orders then need to be loaded into their accounting system and sent to the credit card processing gateway; however, the csv file from the call center is not in a format that matches the csv file needed by the accounting system or credit card gateway.

Since Microsoft Excel will read and write csv files, I wrote a fairly large macro to read the file from the call center and rearrange the values into the formats the other systems wanted. I was pretty happy, until I noticed two items where Excel "helped" me.

  1. Credit card expiration dates are recorded as 03/09 meaning end of March, 2009. Excel sees that and says, "That looks like a date, but not quite all the digits are there." So it guesses that you are really talking about 03/09/2006 (this year), so now when I say output the date as MM/YY or 03/06, the credit card is already expired. I can correct this by telling Excel to out put the date as MM/DD. A hack to be sure, but it works until 2032.

  2. When Excel encounters numbers over 9,999,999,999 it decides to represent them in scientific notation. These numbers can be reformatted to display correctly but after 15 digits, Excel starts dropping digits off. So lets pretend your credit card number is 16 digits long (most are) like 1234 5678 9012 3456. Excel reads it as 1.234567 E+15, when I reformat it, the credit card number becomes 1234567890123450, losing the last digit -- a check digit by the way.
I'd like it if Microsoft gave me a don't-help-me-mode. Which they do, it is called Visual Studio. But someplace in between do-it-all and mess-the-data-up-right-away would be nice. What I'd really like is to have Excel read these values as sequences of characters instead of numbers. In fact, if I surround any value with =" value ", no matter what is in there, Excel treats it as a string when it reads it with no second guessing, and no "help."

Once the file was open by Excel it was too late. So I needed to find a way to put those =" " characters into the csv beforehand. I considered writing a small .net program, but then I thought about Python and did a quick google search.

From that search I ended with this.
# -*- coding: cp1252 -*-
import sys
import csv

args = sys.argv
inputCsv = args[1] + '.csv'
outputCsv = args[1] + '-post.csv'

reader = csv.reader(open(inputCsv, "rb"))
writer = csv.writer(open(outputCsv, "wb"))
for row in reader:
row[20] = '="' + row[20] + '"'
writer.writerow(row)

Which comes down to:
Open the input csv, and create an output csv, for each row in the file, wrap the 20 item with =" value ". That was easy. I should have written the whole thing in Python.

Thursday, October 12, 2006

Is the internet censored?

Today one of my friends sent me a link to a video that poured weak fuel on the 9/11 conspiracy theory. I won't post a link to it here. I don't want to add to the link count and drive up the videos ranking. I was offended by the intellectual insults that flowed during the opening moments I could tolerate sitting through. Thin and contortionistic logic -- stuff that my 12 year old son would have countered with ease -- was passed as "facts." No, this was not the video that Popular Mechanics already completely discredited, but it was of the same genera.

Then I stumbled across this article by Robert Cox. Interesting proposition. Will a capitalist system self-censor opinions other than those of the owners? His "web 2.0" reference is a head-fake since that title is normally associated with more dynamic ajax driven sites, but the questions he brings up should be pondered.