Steve Jobs

Steve Jobs was Originally Posted on March 18, 2013 by

I am watching an old “lost” interview with Steve Jobs and he talked about early computers. He talked about an idea that I expounded on here before and have mentioned in passing in a few blogs. That is everyone should know a bit of computer programming, because it helps you learn how to think. This is also why I explain some technical ideas, hoping that readers might get a bit of knowledge in how things work.

One of my suggestions is to think about how traffic at a stop light works. If you watch one for a while, you will notice that it probably follows a repeatable cycle. Then after years of using them with a strict timer, engineers added sensors to determine if the cycle needed to change to allow more traffic to pass when it is needed.

So briefly, if you wanted to try a computer program, you can just block it out like this.

Looking at one side of the intersection, the green light comes on and stays green for 20 seconds. Then the green light goes off and the yellow light goes on for 5 seconds, then the yellow light goes off and the red light goes on for 20 seconds.

It is simple enough to look at something already running, but how do you start the system from off? No lights are lit, so you have to be careful that no lights in the system come on to cause traffic to hit each other, thus when a light is green, the light to the left or right is red. So starting up a system from off might require all lights to come on as flashing red to indicate the system requires all sides to stop. Then perhaps all sides will turn steady red and after a cycle, the primary road sides turn green and the regular cycle starts.

My reasoning would be to flash the lights red to get every-ones attention that the system is starting from off. You certainly want to make sure that the lights do not come on initially in all directions as green!

So as you think about items and time, you begin to think like someone programming a computer. Things don’t just happen, they are coddled in a certain way, very carefully.

During the initial Shuttle launch there was a malfunction and the liftoff was delayed. There were 3 computers that determined when the engines should fire. It appeared that each computer was configured to start up and listen to see which computer was the 1st to boot and it would be the controller. The others would then become slaves. Well, they booted the computers and nothing happened. As the announcer explained, I turned to someone sitting next to me that they needed to boot them in order, not at the same time. Minutes later Mission Control announced they would cycle the computers one at a time. The reported next to me asked “How did you know?”. To me it was common sense. They were similar computers and probably not configured to randomly pause during boot. It turns out that was the case. So, to a computer person, when you tell me to stop at the stop sign, there had better be a command to start after stopping :-)

There are probably better examples I could give, but I think you get the idea. Even simple things can have a complex set of instructions to it. Perhaps you have two things that cannot happen at the same time, or two things that must happen at the same time. What if they do?

In many computer programs there is a routine that starts with “This should never happen, but…”, and then they print some kind of message like “I don’t know how we got here”.

Decades ago I wrote a program to do inventory. People were to enter numbers in certain places, like the quantity on hand. Rather than accept characters, I issued a warning that said “I think you entered other than numbers here”. For things like quantity there could only be numbers from 0 to some limit like 999. No commas or negatives were allowed.

It amazes me that now-a-days, websites don’t allow you to enter telephone numbers with () around an area code and – between numbers. It is so easy to strip them out and count the digits that are left and see if it looks like a telephone number. years ago before the U.S. changed it, we also would look at the second digit of a long phone number because if it was a 0 or a 1, it was an area code. If they entered 7 digits and the second digit was a 0 or 1 we would reject it. Now we don’t because that no l0nger holds true.

So even though you may not know computer programming, I still think it does not hurt to learn a bit. One of the first and easiest languages to use is BASIC. It is actually quite powerful and easy to learn. A simple program to take 2 numbers, add them and display the result might be:

10 Let A = 2
20 Let B = 3
30 print (A + B)

Then when you type RUN, it prints the result.

RUN
5

One of the first programs I wrote probably looked like that. I soon graduated to asking for values rather than forcing them. Then soon after I was entering programs from a book. One of my favorite ones was to calculate the sunrise and sunset times for the latitude and longitude where I was. I would enter the coordinates manually, but soon found I could hard-code them in the program and then display a list of cities identified by a number. You would enter the number and the computer would substitute that citys coordinates and show the sunrise and set times for that city.

Ahh the good old days before smartphone and GPS systems that automatically do that for us now.

Anyway, these are the things I was thinking about during the Steve Jobs interview. he mentioned that HP “hired” him at something like age 12. I started there at a much older age. Still, we both had indoctrination into computers at a young age.