An Honest Man

Today I got up, had my coffee, and headed out to play my first round of disc golf since starting my new job at NVIDIA. This time of year is very hot here in San Antonio, so I wanted to go early before it got unbearably hot.

I started off pretty well, and even made my second birdie of my (short) career! Here’s a photo I took of my tee shot; the light blue disc is hard to see, so I drew a yellow circle around it:

Within 3 feet!

The course is very hilly, and with the slowly increasing temperature and high humidity, I was definitely feeling drained by the halfway point. I just finished hole #10 when I looked at my disc bag and my stomach sank: it has a small zippered compartment where I keep my keys while I’m playing, and I noticed that the zipper had managed to work itself open enough for the keys to fall out! I hoped that they had fallen into the compartment with the discs, but after pulling them all out, I realized that they must have fallen out somewhere in the previous 10 holes. That meant that I had to walk back the course, retracing my steps and scanning the ground for them.

That is harder than it might sound, because as this is a practice round by myself, I frequently throw 2 or 3 different discs on a hole to test different flight patterns, throwing technique, etc. And each time I pick up a disc to make my next throw, I put the bag down. So that meant that I had to remember every throw I had made, and where it landed. It goes without saying that this took a very long time, and the heat and hills were starting to get to me.

I had retraced my steps all the way back to the tee at #4, and started walking to the basket at #3 when I saw a man playing that hole, walking towards me. I asked him if by any chance he had found a set of car keys, and he asked me “What color is your car?”. That seemed like an odd question; how would one know the color of the car that a given set of keys were for?? But I answered anyway: “Red. And the car key is black.” He dug into his pocket and pulled out the keys, telling me that he found them by the basket at #2. He mentioned that he had put a note on the car to let the owner know that he had the keys and was on the course.

So this man had not only found my keys, he walked all the way back to the parking lot so he could leave me a note!

The lost keys note

I started thinking about that: if he were so inclined, he could have not only stolen the car, but found my home address on the registration, and used the key to get into our home. Fortunately, he was a good person, and none of that happened. Instead, he went out of his way to make sure that I was reunited with my keys. So thanks, David, not only for finding my keys, but for helping to keep my faith in humanity alive!

Day 55: The Experiment Ends

54 days ago I decided to set myself a goal to work on during my period of unemployment and social isolation: I would publish a blog post every day, and spend at least 30 minutes on each. I’m proud to say that I was able to achieve that goal!

Tomorrow I start my new job at NVIDIA, so I don’t anticipate having the copious amounts of time on my hands as I have had these past few months. I will still blog occasionally, but only when I have something to write about, and time to write it.

What have I learned by doing this experiment? Well, to start off with, I learned that it’s very difficult to let go of something without polishing it to death. That is my normal mental state when I write, and as a result I end up not publishing a post if it doesn’t feel perfect. But setting the one-edit rule helped a lot. At first I would examine every single character to make sure I didn’t have any mistakes, or could have used different words for better clarity, or… the reasons go on and on. But after doing that for a few days, and realizing that the world didn’t collapse around me, it got much easier.

Another thing that made it easier is realizing how few people actually read these posts. I have tools that generate daily stats for number of visitors, and how many times any given post was read, and believe me, they were pretty low. The one exception was the post about finally getting a new job: that got over 300 views! I find that encouraging: that people were truly happy for me, and interested in how I was doing.

One other thing I learned is that writing any particular piece gets easier once you start. Most days I didn’t have a clear idea about what I would write, and would procrastinate until I either had to start something or break my streak. I’d start by writing whatever I could think of on the topic, and it was usually crap. But after a bit it would start to flow, and I’d end up deleting the first few paragraphs whose focus meandered aimlessly, and post the rest.

I’ll close this with a caterpillar update: Lazarus is still in his/her chrysalis, but so far 9 of the new brood have emerged as adult butterflies! Unfortunately, one of the 9 had deformed wings and couldn’t fly.

I took this picture this morning of one of the enclosures: you can see butterfly #9 up at the top getting ready to leave, several pupas attached to the stick assembly I made (and one pupa attached to the enclosure itself in the top right), and two caterpillars crawling on the cup of parsley, with their little poops dotting the paper towel flooring. It’s a butterfly production line!

Day 54: Honoring an American Hero

The word “hero” gets tossed around so much these days. Someone joined the military? They’re automatically a “hero” before they have done a single thing. It dilutes the word until it’s almost meaningless.

True heroes are few and far between. Yesterday we lost one of those heroes, Rep. John Lewis. For those who don’t know him (shame on your teachers!), he was an icon of the American Civil Rights movement. In fact, he was the last surviving speaker from the March on Washington in 1963, the event in which Martin Luther King, Jr. gave his “I have a dream” speech.

In 1965 he led the march to demand voting rights that was to start in Selma, Alabama, and go all the way to the capital, Montgomery. However, as they were leaving Selma and crossing the Edmund Pettus Bridge, they were met by 150 state troopers, who demanded that the march disband. The marchers stopped advancing, and stood in place. About a minute later, they began to be attacked by the state troopers with club, whips, and tear gas. Lewis himself suffered a fractured skull at the hands of the troopers. This attack became known as Bloody Sunday, and was the subject of a Federal investigation, in which Lewis testified about the events. Here is an excerpt from that hearing:

Lewis: . . . a State Trooper made announcement on a bullhorn or megaphone, and he said, “This march will not continue.”
Hall: What happened then; did the line stop?
Lewis: The line stopped at that time.
Hall: You stopped still?
Lewis: Yes, sir.
Hall: You didn’t advance any further?
Lewis: We stopped right then.
State Troopers stopping the marchers
Hall: Then what happened?
Lewis: He said, “I am Major Cloud, and this is an unlawful assembly. This demonstration will not continue. You have been banned by the Governor. I am going to order you to disperse.”
Hall: What did you then do?
Lewis: Mr. Williams said, “Mr. Major, I would like to have a word, can we have a word?” And he said, “No, I will give you two minutes to leave.” And again Mr. Williams said, “Can I have a word?” He said, “There will be no word.” And about a minute or more Major Cloud ordered the Troopers to advance, and at that time the State Troopers took their position, I guess, and they moved forward with their clubs up over their—near their shoulder, the top part of the body; they came rushing in, knocking us down and pushing us.
Hall: And were you hit at that time?
Lewis: At that time I was hit and knocked down.
Hall: Where were you hit?
Lewis: I was hit on my head right here.
Hall: What were you hit with?
Lewis: I was hit with a billy club, and I saw the State Trooper that hit me.
Hall: How many times were you hit?
Lewis: I was hit twice, once when I was lying down and was attempting to get up.
Hall: Do we understand you to say you were hit . . . and then attempted to get up, and were hit—and was hit again.
Lewis: Right
Alabama State Troopers attacking the marchers. John Lewis is the man in the foreground being beaten.

This event marked a turning point in the civil rights struggle, and six months later President Lyndon Johnson signed the Voting Rights Act into law. Johnson gave Lewis one of the pens used to sign that act, and Lewis proudly displayed that pen on the wall of his office in Congress, where he served for nearly 34 years until his death.

So imagine my surprise when I was returning from a conference in Atlanta a few years ago and saw him in the airport! I approached him, shook his hand, and thanked him for all he had done to make this country a better place. He was very gracious, and I didn’t keep him any longer. I immediately texted my wife to tell her my exciting news, and while she shared my excitement, she chastised me for not getting a photo. I really didn’t want to bother the man at the time, so I was fine with just meeting him in person.

A little while later I was heading to the men’s room to empty my water bottle before going through security, and I saw him in front of the entrance, taking a selfie with a custodian (who was clearly thrilled). So I approached him once more, blaming my wife for shaming me into taking a selfie. He was more than happy to do so, and…

Ran into one of the great American heroes, Representative John Lewis, in the Atlanta airport. He was gracious enough to let me take this photo. I was too excited to hold the phone still!

I’m not ashamed to admit that I was so in awe of meeting him that I rushed the shot, and the result was a blurry photo. Me, the big-shot photographer, screwing up an easy selfie!

Thank you once again, John Lewis, for all that you’ve done. You truly are a hero.

Day 53: An Engineering Mindset

I have spoken out many times about how much I dislike software developers granting themselves titles that include the terms “engineer” or “architect” in them. Those are titles that are earned through years of hard study and certification, just like doctors and lawyers.

Software development is not engineering. If I want to build a vaulted ceiling in my home, there are tables of the properties of materials that give the acceptable spans for any given size of component. If I have a 20-foot span, I can look at those tables and determine what I would need with steel beams, engineered wood beams, or plain 2×10 lumber.

Engineered Lumber & Beams | NICHOLS LUMBER AND HARDWARE
Each of these engineered wood beams has a known maximum span.

There’s no need to debug this; these are known values, along with gravity, weight, and all the other things that go into building design. And you could use a table for materials from 100 years ago, and it would still work today. Knowing how to apply these values in the structure behind the design of buildings takes years of study before one can legally call themselves an architect or an engineer.

The most apt term I’ve heard for a software developer is “gardener”. It’s accurate, as gardens take up-front planning, and like software, they need to be maintained. Both also have their share of bugs!

So while I won’t call myself an engineer, I do have an engineering mindset. What I mean by that is I strive to be methodical about things like program structure, testing, code review, version control, and the like. I enjoy working with teams who are like-minded in that regard.

An engineering mindset isn’t limited to software development, though. I find I do that with every task I do. Take washing dishes, for example. We don’t have a dishwasher, so they all need to be washed by hand. Nor do we have a drainboard, so they have to go on a towel by the sink. I don’t just wash them in the order that they are piled in the sink; instead, I re-arrange them so that they are stacked in the order to be washed in the left sink basin, with the right sink basin empty. Why? Because the drying area is on the right, and this makes for a neat left-to-right flow. First the flat dishes get washed and placed in the right sink. They are then rinsed off, then placed vertically leaning against the wall to help them dry evenly and quickly. Then the bowls and other things with depth are washed, with the eventual placement in the drying area determining the order. Finally the small things like utensils are washed and placed in any available spot left on the towel. This allows the most efficient use of the limited drying area while still allowing things to dry fully.

The other thing I try to optimize for is to minimize the use of hot water. I’ve come up with some routines for group wetting and rinsing that has cut the amount of hot water usage. I’ve even played around with how an item is handled while being rinsed in order to get the most efficient rinsing of all surfaces.

I have been developing this process over the 4 years since we moved into this small house, and I believe I have it down to as efficient a flow as possible. I’ve mentioned this to people, and their reaction is along the lines of “wow, you’re pretty OCD!”. But this isn’t anything like OCD: people who suffer from that condition say that they are perfectly aware that their actions are silly or even harmful, but are unable to stop doing them. I choose every one of these steps because it makes sense. If someone were to show me an even better way to do it, I’d switch in an instant.

That’s an engineering mindset: taking a process, even one as mundane as washing dishes, and always thinking of ways to optimize it. It doesn’t feel like work, though, it’s more like solving a puzzle. Some people like crossword puzzles or jigsaw puzzles; I like solving dish washing puzzles!

Day 52: Happy 10th Birthday, OpenStack!

I just saw this announcement from the OpenStack Foundation about OpenStack’s 10th birthday! Yes, 10 years ago this week was the first OpenStack Summit, in Austin, TX, with the public announcement the following week at O’Rielly OSCON. Yet most people don’t know that I played a very critical role in the beginning!

OpenStack began as a joint venture between Rackspace (my employer at the time) and NASA. I was on the team at Rackspace that developed and supported its aging cloud compute services, and we were looking to develop something from scratch that could be much more scalable than our current system. Around that time Thierry Carrez saw an announcement from a group at NASA about their development of a compute virtualization system, and suggested to the powers that be at Rackspace that this might be a better way to go instead of developing the whole thing ourselves. From that followed a lot of discussion among the executives at Rackspace, as well as some conversations with NASA, and the conclusion was that we would team up. One of the first things to do was to get the developers for both groups together to discuss things from a more technical perspective. And this is where I believe that I made a critical decision that, had I chosen wrong, might have resulted in OpenStack never happening.

The NASA team was a consulting group, Anso Labs, and they were arriving in San Antonio, and we had plans to take them out to dinner, but no idea where. It was then that I suggested The Cove, a local place with lots of outdoor seating, a relaxed atmosphere, good beer, and delicious food. We had a great time that evening, and we all got to know each other. Had we been in a more conventional restaurant, people may have only gotten to know the people sitting next to them, but since The Cove is open seating, we moved around a lot, talking about both the technical stuff and personal stuff.

Over the next few days we began reviewing the code and exchanging idea on what needed to be developed next, and those discussions went very smoothly, getting a lot done in a short period of time. I still maintain to this day that without that first night having beer and food at The Cove, OpenStack might never have become the success that it did.

You’re welcome.