Saturday, October 27, 2018

Jobs vs Woz - The Closed vs Open Hand

Most people know who Steve Jobs was.  He was the charismatic and visionary frontman for Apple for many years.  He even managed a friendly coup at Apple when he took back the company he was ousted from.  He was a controversial person.  He had his fans and his detractors.  I think he certainly had his good points, but I am really more of a fan of the other less well known Steve of Apple, Steve Wozniak affectionately known as Woz.

Woz was the designer of the original line of Apple II computers.  He had a vision of computers as computers, for everyone.  A hippy vision of computing?  ;-)

What appeals to me more about Woz is that he was generous and wanted to give people something great.  His ambition lay more in personal accomplishment and also in sharing his knowledge with others.  When he created the Apple II computer he wanted it to be open.  He provided a schematic so that users could understand the computer, and so that they could modify it.  People even wrote books about how to do this.  Another example of this is that Woz included expansion slots so that people could extent the computer in this way.

When you turn on an Apple II you can program it right away.  There is a built in machine language monitor.  Depending on the model you can either use Woz's Integer BASIC or you can run Applesoft BASIC.

This version of an Apple computer is a real computer, for computing, by programming.  A computer is a device for a computer user.

Enter the computer as appliance.  :-/

Steve Jobs had a vision of computer as appliance.  This is purely a business perspective.  Sell more computers by marketing to the fat middle of the bell curve.

Of course he is not the only one to think this way.  Somehow progress in computing tends towards reducing it down to a touchscreen and away from programming and true computer literacy.  The Macintosh was a step in this direction.  This has a certain irony because the form of the Mac user interface was inspired directly by the Smalltalk windowing user interface, a programming system.  In addition to the appliance-like format of the Mac software, the computer itself was meant to be closed unit.  You need a special screwdriver to open it, and there are no expansion slots.

So the Mac was a closed machine, and it pointed other systems in this direction (i.e. Microsoft Windows).  You could purchase programming software for the Mac, but unlike other computers on the market there was no direct path to programming when you turned on the machine.  Why was there no easy programming option on the desktop when you started the Mac OS?  For more on this issue see Why Johnny Can't Code which is a popularly referenced article on this topic.

HyperCard eventually was made available on the Mac as an easy and fun programming tool and it was included free of charge for some years, but now it is gone.

Microsoft followed suit with Windows and they too also did not include even a version of their famous BASIC as an icon on the desktop of their new system.  I wrote Liberty BASIC back in the early 1990s as a response to this.  Microsoft eventually provided Visual Basic, but I strongly suggest the this should have been included, for free, and an icon to start Visual Basic should have appeared on the Windows desktop on startup.

I'm not going to suggest that there is some sort of conspiracy to dumb down the computer.  What I will say is that this amounts to a stupid and harmful mistake.  The computer is so powerful and wonderful as a creative too.  These new computers as appliances are depriving people of so much by simply omitting an easy and friendly programming tool.  A desktop icon to entice the curious to try something simple enough for children and powerful enough for casual applications programming.

So, what is really better?  How do you define progress?  What of the early 6502 and Z80 computers when compared to what we have today?  The new computers dwarf these charming old timers, but they are less powerful in terms of the concepts they omit from the user.

Saturday, October 6, 2018

Raise Your Computer Literacy to Mastery

There are different levels of computer literacy.
  1. Beginner - You know how to turn on a computer, open a web browser, use email and a word processor, etc. and maybe how to copy files around.  If you have been using a computer for many years and this is what you know, you are still a beginner.
  2. Power User - In addition to what the Beginner knows you also know how to tweak operating system settings and how to type some commands in a terminal or command window.
  3. Master - You know all the above and you also understand programming concepts.  Without this knowledge you are really at the mercy of the computer and software providers.
I like to compare this to understanding something about cars and how they work.  People who drive cars without automotive literacy face big challenges when buying a car (especially a used car), when the car breaks down on the road, and when bringing the car to the mechanic for repair.  Understanding cars improves driving skills, personal safety, and saves you time and money.
When schools first started teaching young people about computers they had a high concept of literacy and they tried to teach programming using languages like Logo, and Pilot and BASIC and sometimes Pascal.  Over time this eroded and computer class became more about just teaching the Beginner skill set described above.
Adults now are wowed by how much young people know about computers, but this is usually just a knowledge of computer trivia and of surface details, and not a deep understanding of computers at all.  We must be careful not to be hoodwinked by the semblance of mastery.
Real mastery is achieved only if you understand programming and have learned to make the machine do what you want.  Otherwise your computer will only do what other people have programmed it to do, and is that really what a so called personal computer is supposed to be?  I am including phones and tablets when I use the word computer, because clearly these things are computers.
A non-obvious benefit of mastery of computer literacy is the personal growth that happens when you learn to program because of the way it sharpens the mind.  Programming teaches analytical thinking and problem solving skills, and it can also be great fun.
I hope that this article encourages you the reader to raise your level of computer literacy!