Moonshot programming

This iconic image shows Margaret Hamilton standing next to a printout of the flight software that she and her team wrote to control the Apollo Guidance Computer. I recently discovered that the code has been made available via a scan of the printouts, later re-typed as code, and uploaded to GitHub. The code is written in assembly, which consists of individual instructions to load, calculate, and act on data values. Today we use compilers so we can write code in higher-level languages that are easily understandable by humans, but at the time compilers were still pretty new, and the available memory was so limited that they wanted humans to do the optimization at the individual instruction level. Wow!

Here’s an example excerpt from the code. Even if you don’t know AGC assembly (I don’t), it’s possible to follow along due to the excellent comments.

I’m in awe of how this massive software engineering project would have proceeded (How did they test it? And without modern version control… did they use periodic printouts in case they found a mistake and wanted to roll back?) What an inspiring project!

Browsing the open issues on the project, they seem dedicated to increasing the quality of the content by carefully proofreading it against the original scans of the code printouts. What a labor of love :) But what a wonderful piece of programming history!

Helping wasps go to a better place

The other day, I discovered an enormous wasp nest (about 14″ in diameter) in a tree next to my house:

The next morning, Google helped me discover Dan Scollard, who comes out to remove wasps from homes, humanely “sends them to sleep” in a cooler full of dry ice, then donates them to a lab that extracts the venom for use in allergy shots. (!)

When he arrived, he said, “Oh, that’s a beauty. A lot of people say they found a nest as big as a basketball, but yours actually IS.”

My nest was constructed and occupied by the bald-faced hornet (which apparently is actually a wasp). Dan told me all about this wasp; he has a real admiration for them. I highly recommend reading about their life cycle and also viewing Dan’s photo gallery! These wasps are a useful part of nature, but risky to have next to your door where you (or unwitting visitors) could be suddenly attacked. Apparently this wasp can be quite aggressive and territorial.

Dan put on all of his gear, then vacuumed up all of the wasps around the nest, waited a bit for more wasps to come home from hunting, did a second vacuuming pass, and clipped the nest from the branch to remove it. He said it would hang it in his backyard so the queen (who had not emerged) could “live out the rest of her days in peace.” He said I could hold the nest with its lurking queen: gosh wow!

Me holding a wasp nest

What an amazing experience! It’s a joy to meet knowledgeable people who love their subject and use their knowledge to do good in the world. I’m much happier sending these wasps out to help people avoid severe reactions, and the process was so much better than dousing the nest with poison. Thank you, Dan!

Flying IFR to Aurora

On May 27, I flew with friends up to the Aurora State Airport (KUAO) for a safety seminar. It’s about a 30-minute flight each way. I’ve never actually visited the town of Aurora on the ground, but I’ve flown to the airport many times. Willamette Aviation does a wonderful job of bringing in great speakers and also serving treats like ice cream and pie – and for this event, a full BBQ!

By default, we planned to fly there VFR (visually). But when we gathered at the airport, the cloud ceiling was only 1500′ above the surface. No worries, perfect chance to exercise that instrument rating! We had five people going in two planes, with one instrument-rated pilot per plane. I filed KCVO DUBMY KUAO to set myself up for the RNAV 35 approach to KUAO, but ATC came back with KCVO CVO V495 UBG KUAO at 6000′, a longer route that would take us north before coming back south to make a northward landing. I hoped they might give us a shortcut along the way.

I was flying the slower of our two planes, so the faster one departed first and then we “held for release” until they were clear of the airspace and Cascade Departure cleared us to take off. The clouds were now at 1900′ above the ground. We climbed up via the SHEDD4 departure, punched through the clouds (which were only a few hundred feet thick) and then were on our way north. The clouds below us got thinner and I had this beautiful view:

Our lead plane was vectored off of V495 with the hoped-for shortcut to the RNAV 35 approach to KUAO. We were left tracking V495 much longer, but our vector finally came and we got to head over to execute the same approach. After joining the final approach course, we punched down through a thicker cloud layer, then executed a nice landing.

The seminar was about “continuation bias” and how it can lead to many bad outcomes, including CFIT (controlled flight into terrain). Here’s a nice summary of the high points along with great tips.

Afterwards we enjoyed the BBQ and then prepared for the return flight, which was also IFR. We had a lot of sunshine, and the clouds were higher (around 3500′), but we still got to plunge into and out of them. There is really nothing like that feeling – it is a thrill every single time!

One of the great things about flying this day were my companions! I had a great co-pilot who is working on his instrument rating and handled our ATC communications for practice (with me monitoring of course, since I’m responsible for the flight in this setting). I really enjoy flying as a team! We also had a passenger in the back taking his very first flight in a small plane. He took a lot of pictures and seemed to enjoy the thrill of ducking in and out of clouds too!

Looking forward as we returned southbound, above the clouds at 5000′:

Looking out to the side:

We returned to KCVO via the ILS 17 approach from SKIVE (a new waypoint for which apparently some folks say “skive” and others say “skeevy”). Once down through the clouds, we canceled IFR and crossed over midfield to land on runway 28.

One of the challenges of this flight was that with three people in the plane, it was near max gross weight. I did extra-careful fuel calculations and we were able to go with half-full tanks, but even so the plane’s performance in terms of climb rate and cruise speed was definitely lower than usual. However, it was a great flight, and I just love getting to sail through the clouds and maintain proficiency with instrument flight. Looking forward to next time already!

Learning Morse code with CW Academy

I signed up for the CW Academy online course with the goal of learning Morse code. You can learn this via self-study – there are many apps (e.g., Morse Mania) – but it seemed like more fun to have some synchronous time with other learners and to get to try to communicate live. I was inspired by my friend WT8P, who has taught this class in the past (sadly, not while I’m taking it!).

There are some great online tools available for Morse code learning and practice that anyone can use:

  • Morse code trainer: Listen to learn in progressive “sessions” that introduce a few new letters and numbers at a time
  • Morse code keyer: Practice keying your own Morse code using the `z’ and `x’ keys on your keyboard

We were instructed to set the “character speed” to 25 words per minute (wpm) and Farnsworth speed (spacing between letters/symbols) to 4 wpm. The goal is to hear the symbol patterns as a unit, rather than counting dits and dahs. 25 wpm is pretty fast, and it definitely takes practice to be able to discriminate similar patterns!

But apparently the real way to practice is to get a physical “paddle” that sends dits and dahs. I ended up getting this cute little paddle, which is “iambic”: you press one side for a dit and the other for a dah; holding one down gives you a stream of dit-dit-dit or dah-dah-dah; holding both gives you dit-dah-dit-dah…

On receipt, I discovered that it needed a keyer, which is what actually generates the signals (and “sidetone” sound so you can practice without sending your fumbles out on the radio). My teacher was kind enough to loan me a keyer until I can get something myself! I can now make dits and dahs to my heart’s content :)

So far I have learned (E, T, A, N), (O, I, S, 1, 4), (R, D, L, 2, 5), and (C, U) (they come in batches). My favorite letters are O and C, and my biggest challenges to send are L and R. My D and U also need some work. Letters are introduced in (roughly) order of complexity which also corresponds (inversely) to frequency. Here’s a great visualization of the alphabet and numbers 0-9.

Interestingly, Morse code wasn’t actually developed by Samuel Morse. Although he had the original idea to encode content in a similar fashion for transmission via telegraph, his encoding was quite different.

Class meets twice a week for an hour, during which our teacher drills us by transmitting Morse code words until we indicate we got (“copied”) them, and then we get a chance to try to send our own words, with varying success. After an hour of this, my brain DEFINITELY feels full. But in general, I look forward to learning, and practicing, more!

Signs for aviation, numbers, and emotions

Our American Sign Language class continues to build vocabulary and learn new things.

One of my favorite parts of the class is at the beginning when Dr. Eleweke asks us “HOW YOUR WEEKEND?” We don’t have enough ASL vocabulary to answer, so we type our answers in the chat and he teaches us the relevant signs on the spot. So at the start of our last class, I got to learn how to sign “ME PILOT” and “FLYING CLUB WASH PLANES”.

The sign for PILOT that we learned is FLY+PERSON (like teacher is TEACH+PERSON and student is LEARN+PERSON). The hand sign for FLY/PLANE is, charmingly, like the sign for “I love you” but held horizontally (and you get to zip it around to show the plane flying :) ). The PERSON (-ER) ending is a downward gesture with both hands held like blades in front of you. I also see that some people sign it as FLY/PLANE+DRIVER.

We learned a couple of signs for WASH, which allows you to distinguish between washing your hands (rubbing them against each other) versus washing a large wall or window (or airplane) (scrubbing an invisible large surface in front of you). For “FLYING CLUB” we had FLY plus C-shape hands making a circle in front of us, I think denoting a group of people.

Then in the lesson itself, we learned the numbers from 1-99.
Me: “What about 100?”
Dr. Eleweke: “We’ll do 100 next time. You are overlearning, ha ha!”

Double-digit numbers (22, 33, …) are signed with the same digit bounced to the left and right. Numbers that have two different digits from the range 6-9 (e.g., 67, 86, 98) are “rocking” numbers where you rock your hand from side to side so these digits are easier to distinguish. Curiously, you don’t do left-right for the first-second digit but instead “higher” for the larger digit and “lower” for the smaller digit. So for me, signing with my right hand, it’s 6-low/right + 7-high/left for 67 and 9-high/left + 6-low/right for 96. A little mind-bending!

Learning 1-99 seemed like the perfect opportunity to learn and practice things like “how old are you?” and generate personal answers, but this didn’t happen. Trying to think of ways to practice numbers, I did manage to interject “ME HAVE 7 NIECES, NEPHEWS” and I was thrilled that he understood me!

Next we learned several adjectives so we can answer HOW-YOU? and HOW YOU FEEL? These words include FINE, GOOD, HUNGRY, TIRED, HAPPY, ANGRY, EXCITED, PASSIONATE, SAD, CRANKY, ANXIOUS, SCARED, SICK, STRESSED, CONFUSED, CALM, HEALTHY, PATIENT, BUSY, FEEL STRONG, WEAK. Lots to practice before next time!

« Newer entries · Older entries »