Professor Niklaus Wirth and I taxied out to runway one-seven just as the sun began to rise. Thanks to SwissAir’s inability to keep track of luggage, we’d left late the day before and only made it to Oklahoma City by nightfall.
The weather is the most important consideration when it comes to flying. Engines are reliable. Navigation is fairly simple. It’s the weather that concerns small-plane pilots the most. On this day in 2007, the weather was good—almost. There was a strong, bumpy wind gusting from the west. Luckily the wind was dry, which meant our path was free of clouds or thunderstorms.
“Six Six Seven Five Lima ready one-seven right. Ready for VFR departure to the west,” I announced.
“Six Six Seven Five Lima cleared to take-off. When able, fly zero niner zero degrees.”
I pushed in the mixture, propeller, and throttle. Three-hundred horsepower came alive to do my bidding. Once the plane reached 65 miles per hour, I pulled gently on the yoke, and the nose moved up. I could feel the wheels leave the ground. Planes moved differently in the air than when they’re rolling down a runway. A glance at the vertical speed indicator confirmed we were starting to climb.
“Positive rate. Gear up,” I muttered to myself, repeating phrases that plane crews of all sizes say to each other. I tapped the brakes to stop the spinning wheels, reached to the right of the panel, by Wirth’s knee, and moved a lever up. Three lights just to the left of the lever went from green to red. Then the red lights went out and a single orange light, the one with “up” printed next to it, told me the gear was safely locked in place.
Wirth was looking out the right window as we flew over the Will Rogers World Airport. Air traffic control gave me a sequence of headings that took us to the east and then to the west after a large turn to the north, climbing all the while.
“Six Six Seven Five Lima, frequency change approved,” said the last controller for the class C airspace around KOKC. We were now free to go where we wanted, at the altitude we wanted, and didn’t have to announce it to anyone if we didn’t want to. Flying in the United States, under Visual Flight Rules, requires no air traffic communications or approvals. We’re free.
I planned the flight like I plan all my cross-country flights: paper maps, a plotter, a circular slide rule called an E6B, and a pad of preprinted flight-log forms. These plans, of course, usually last until the wheels leave the ground. Then something changes. Weather, rerouting by ATC, or just an impulse to go a different route to see something new, all alter the plan. Sometimes it’s a subtle change, but other times not so much. (At least in VFR flying. Instrument Flight Rules often have changes in one's route, but mostly the plan is flown. Airliners almost never have to change because they have the routes down. The fly them every day.)
I keep thinking about how the process of flying is similar to the process of writing software. When I first started learning my craft (I'm still learning), I thought that a person “wrote” software the same way we write essays in English class. I quickly realized this wasn’t the case.
Next, I thought that I must learn the process to “design” software, to engineer it, like engineers who design bridges and airplanes. But studying the methods of the day, the 1970s, I couldn’t find much that worked. I tried Nassi–Shneiderman diagrams, Warnier/Orr diagrams, and HIPO charts I studied books by Myers, Yourdon, and others who purported that an algorithm could be used to design algorithms.
None seemed to work. Software wasn’t “designed.” Something else was going on.
I stayed low as we flew across the scratchy brown Texas Pan Handle. The earth was spotted with circles of green centered around wells that fed the great irrigation booms, making it possible to grow food where none could otherwise grow. The wind was in our face, and the turbulence began to worsen.
I worried about my passenger. He had made his first appearance in this world in 1934, the same year Frank Capra made It Happened One Night, but he was doing great. He loved flying.
The majority of airports don’t have control towers, but just about all of them have something called an automated weather observation system. These stations transmit current weather reports around the clock. A computer voice announces sky cover, temperature, dew-point, and wind direction. Pilots tune into whatever airport stations are ahead and learn the weather just beyond their vision. Today, I’m listening for gusts.
As I pass Amarillo, I tune in Tucumcari: “Wind… three… four… gusts… four… four.”
Gusts, 44! Holy cow! I suddenly didn’t feel so good about making Albuquerque.
An old pilot saying goes “when it comes to aviation weather, what you see is what you get.” In this case, I didn’t want to get what I had heard. I turned the plane around and headed back along I40, landing in Amarillo to wait out the wind.
The pause was a great treat. Not only did we avoid the dangers of flying in such buffeting weather, we had another opportunity for conversation.
During my early days of searching for how to design software, I discovered a couple of resources that made a lot of sense. I found Pascal liberating because it was so natural, small even, that it could be fully learned. I also stumbled across Software Tools by Brian Kernighan and P J Plauger. It used a dialect of FORTRAN to teach how to create software without fancy diagrams or methods. Instead, the authors explained how one writes software a little bit at a time, slowly adding to the software until fully functional. First, a “Hello, World,” then a bit of what you wanted to do. Then a bit more, adding code to the existing code like rings on a tree.
I found a letter to the Editor of the Communication of the Association for Computing Machinery (also known as CACM. Some mistakenly call the ACM, the Association of Computer Machinery, which always gives me a chuckle. I imagine computers hobnobbing in the machine room after hours, like the home appliances in Tim Hunkin’s The Secret Life of Machines.)
The letter was written by Edsger Dijkstra, a pioneer of computer science, and was titled “Go To Statement Considered Harmful.” In it, Dijkstra demonstrates that the highly used Go To statement was unnecessary. Programmers could do everything with only four primitives: sequence, selection (IF), iteration (WHILE), and nesting. This was the birth of Structured Programming. It’s what we all do so naturally today.
While we waited out the wind and talked, I discovered something I hadn’t known before. I mentioned to Wirth how much influence that small letter to the editor had on me, how I’d studied it, meditated on it, and attempted to apply its philosophy until it became second nature. Klaus smiled. In truth, it wasn’t a letter at all, he said. Dijkstra had mailed in a handwritten article, like he always did, but it was too short to be printed in CACM as an article, so it was printed as a letter to the editor.
Guess who happened to be the editor that year? None other than Niklaus Wirth. He gave it the now famous title “Go To Statement Considered Harmful.”
Fill-in-the-blank considered harmful is a much-overused witticism today, but the original piece was earth-shattering. The world before the article and after couldn't have been more different. Software was a tangle of Go To statements. FORTRAN only had IF and GOTO in those days, no ELSE, WHILE, or FOR. Only a simple looping DO that iterated an integer. And BASIC was as limited as well. While ALGOL’s influence on programming languages made its mark on IBM’s PL/I, adding the “while” and “if-then-else” constructs, even most PL/I coders still used gotos inside a procedure.
After the Letter to the Editor, a whirlwind of change began. Soon, finding a single GOTO in one's code was an occasion for derision. Today, some languages have the GOTO statement, and some don’t. Java, PHP, Oberon, Python lack the keyword, whereas Go, C, C++, Objective-C all do. (I guess GOTO has to be Go from Google.) The term “structured programming” describes programming after the anti-GOTO revolution.
The day in Amarillo wore on. The winds subsided late into the afternoon as they tend to do. The sun is the source of all our weather, including winds. As its light hitting the terra firma gets lower and lower, the heat lessons which is the source of shifting air.
We load back up in 6675L and crank up. The roar of the 300 horsepower Continental IO–520 is reassuring as I flip up the landing gear. The air still has some motion to it, so we’re jostled about a bit on climb out from runway 2. The tower bids us goodbye. The sun is low. We fly to the three VORs, the radio navigation stations used by all airplanes, large and small.
In less than two hours we have climbed over the Sandia mountain range and descended into the Albuquerque basin. I throttle back, cleared to land on runway three-zero. I carefully richen the mixture. The airport is over five-thousand feet above sea level. To push in the fuel mixture would cause the engine to run rough, maybe even quit. I don’t realize it, but I’ve lined up with runway two-six, the long runway.
“Albuquerque tower, six six seven five lima, mind if I just land on two-six?”
“Approved” comes the response. It’s just a long taxi to the fixed base operator, where we have a rental car waiting.
As we load into the rental car with our bags, the sun sets over the western rim of the valley. The colors of the red land and the deep blue darkness of the sky are almost overwhelming. Moments like these are why we fly. We’re able to see beauty that many never get to see. In the car with the Good Professor, I feel fortunate. Very fortunate indeed.