Professional Principles

I’ve been watching a lot of videos of presentations given by Brett Victor. This particular video was particularly inspiring. It helped me understand something about myself and my relationship with my work that I hadn’t been able to put my finger on before now. I realize that you may not have an hour to spend watching this video right now. If not, please consider bookmarking it and having a look at it later. I’ll try to give you a few clues as to why you might want to do that.

In this talk, Brett talks a lot about having a guiding principle that motivates  his work. Most of us just go to work and do the best we can to produce the work that is assigned to us. This is a valuable way to live your life but it leaves people like me unsatisfied. I want to create things. I want to discover new things that haven’t ever been discovered before. I want to change the way we do things for the better. This entails a lot more thinking and introspecting than just showing up and doing the work that is assigned to us the same way that it has been done by everyone else that has done it before.

Brett talks about his principle and gives examples of how he has modified the tools he uses to comply with his principle. He also gives an example of another person’s principle and how he worked to apply it and ended up changing the face of modern computing. I have a  yearning to do this kind of work. I’ve got a lot of introspection to do in order to figure out what the principle is that I want to champion.

Watch the video. Brett is much more eloquent than I am in explaining what he means and that will help you to understand my ramblings here a little bit better.

Night Life in Huntsville, Alabama

I went to the Huntsville Amateur Radio Club (HARC) meeting tonight. My friend, Bob, got a plaque for being Ham of the Year. Then they had a very well done video about the club’s Field Day activities this year. Our club has earned first place in our division for seven out of the last ten years. We did very well this year but it remains to be seen whether we came in first again or not.

After the meeting, Bob and I checked out the grand opening of the new Straight to Ale tap room at Campus 805, one of the local Huntsville craft breweries. They had an impressive real time video menu that displayed what was currently on tap and what was in line to be tapped next. They also had a room full of pin ball machines.

After we finished our beer there, we walked done the hall to the Lone Goose Saloon where there was a guitar duo called Chelvis & da Bean playing. We had another beer and were impressed with both the music and the venue.

I get out so rarely, it’s nice to take advantage of the lively night life that Huntsville has to offer. I can’t wait until Straight to Ale has their Brew Grass Jam at their new digs next month.

A Different Kind of Programmer

Early on in my career I decided that I liked working with computers that were working correctly better than fixing ones that weren’t. I had already worked as a programmer professionally while I was in the Army and at one other job. I had taken the job as a technician because it was a big raise in salary and had much better benefits. When my new employer found out that I could program, after about six months of working for them as a digital repair technician, they immediately moved me over to programming full time.

I was a rather rare kind of programmer at the time in that I understood computer hardware while at the same time knowing how to program. This landed me in jobs that were known as system programming. System programmers write software that interacts directly with the hardware like operating systems and device drivers. In my case, I wrote network software. This was in the time before the internet when Bill Gates had sworn that computers running Microsoft Operating Systems would never be connected into networks. That was something that big companies did with their big computers. He also said that no one would ever need more than 640 Kilobytes of memory on a PC.

I wrote programs that copied files from one computer to another across the network. This was before TCP/IP became the common software upon which the internet was built. In those days, there were significant differences between the way that files were stored on different operating systems. In particular, DEC computers running the VMS operating system had lots of optional attributes that described files in their system. The Unix file system on the other hand had relatively few. The problem arose when you transferred a file from VMS to Unix. You lost information about the file if it used any of the optional attributes that VMS had and Unix didn’t. Then when you copied it back to the VMS system, it was difficult to restore those attributes so that the programs running under VMS would be able to use the files properly.

We worked for months creating rules that inferred what kind of data was in any given file and what the intelligent defaults were when we created a VMS file from a Unix file. I didn’t realize it at the time, but I was actually doing rudimentary artificial intelligence programming. I enjoyed doing that work a lot.

Years later when I came to work at my current employer, they were using the file transfer software that I had written on their computers. I felt proud of that software but not enough that I wanted them to know I had anything to do with writing it. I was ready to move on to new challenges.

Memories of the Early Days of Microcomputers

When I first became interested in computers I was in high school. Most computers were expensive. Digital Equipment Corporation had just started supplying college laboratories with digital logic that was affordable for building dedicated digital lab equipment. My uncle Kell worked in such a lab building hardware to support experiments. I remember browsing through the DEC catalogs and handbooks when I would visit him.

Then, soon after I graduated from high school, Popular Electronics published a two part article on how to build a microcomputer called the Altair 8800. A small company in Arizona was selling a kit of parts along with a printed circuit board and a cabinet. The Altair had toggle switches for entering ones and zeros and lamps for displaying binary values. I had no idea of how to program but I wanted one.

Soon, there were many single board microcomputers, many fully assembled. There was the Kim I and the COSMAC Elf. These computers sported calculator style keypads and seven segment numeric displays. They also had interface chips that allowed them to be hooked up to teletypes or the new terminals that were initially called glass teletypes. And I wanted one of each.

Then there was a period characterized by computers with built in keyboards that produced video signals that could be fed to a regular television using an adapter that converted the video signal into a TV signal. The Apple II and the Ohio Scientific C1P were examples of these. I owned a C1P for a short while.

A little bit later, Commodore came out with the Commodore Pet computer that had a built in display and a built in cassette tape recorder to store programs on. I worked on a Pet writing Computer Assisted Instruction while I was in the Army.

Another computer or this era was the Radio Shack TRS-80. I wrote a program for my father on one that he borrowed from the school where he taught. The program computed a salary schedule based on a matrix that ran years of experience along the X axis and level of education along the Y axis. There were three of these matrices, one contained the number of individuals in each category, one contained the salary for each category, and the third contained the amount that each category would cost. I then summed all the cells of the last matrix to compute how much that salary schedule would cost. He was able to successfully negotiate a substantial raise for the teachers in his district using the program. This was before VisiCalc was invented.

I’ll write more about the evolution of small computers in a future post.

Putting the Horse Before the Cart

Periodically I revisit aspects of programming that excite me. Lately, I have been reading articles by Bret Victor and remembering things that have gotten me excited about programming over time. I have been thinking about how I can incorporate these ideas into my daily work. It is a formidable challenge.

Back during the Elizabethan period there was a revolution in productivity in agriculture. It arose when someone figured out that the ox could pull a plow much easier than it could push a plow. Up until that time they had assumed that an ox would push the plow like a person does.

We have been making similar assumptions about computer programming. In particular, we have structured our computer languages to be easy for computers to translate rather than easy for people to program. This has resulted in programming getting a reputation for being difficult and boring.

Writing a program should be more like creating a painting or writing a song. When I pick up my guitar to write a song, I don’t usually have anything more than a fragment of an idea. Sometimes I may just start playing around with chords and melodies until something strikes my fancy. I write the song by taking these ideas and playing around with them, varying the melody, the harmony, and the rhythm until I discover something interesting.

The very best experiences that I’ve had while programming have been in a similar environment. I have taken an interesting idea and implemented some small aspect of it. Then I try modifying what I’ve written to see what happens when I change different parts of it. It is interesting to observe that in most cases I have been using an interactive programming language. That is, a language that accepts an expression and responds immediately with the result of evaluating that expression.

We learn to build things by trial and error. If we will just change our approach to programming so that it more closely resembles creative play, we will realize an immediate and astronomical increase in productivity. As long as we continue to develop programs like we build bridges producing good software will be an expensive and risky business at best.

Revolutionary Ideas Rediscovered

I have rediscovered a video that has profoundly influenced my ideas about how we think and use computers to help us learn about the world. The video is a presentation by a programmer and rather deep thinker named Bret Victor.

In this video, The Humane Representation of Thought, he imagines a new way of communicating. He talks about a concept that he calls the direct manipulation of dynamic behavior. This is a different approach to getting a computer to support the thought process. He emphasizes the use of all the senses and all the capabilities of the human body.

He talks about the fact that we have constrained our communication to words and numbers and drawings that are all represented in two dimensions using ink on paper or pixels on a flat screen. Not that these are bad ways of representing ideas but rather that they ignore the other senses other than sight that we have to perceive and interact with the world. Senses such as hearing and touch. The ability to perceive depth through visual and auditory clues. The sense of touch. The sense of proportion that comes from standing next to something and walking the length of it.

I highly recommend watching his video and exploring his web site to better understand his brilliant concepts. Any descriptions that I write are insufficient to communicate his vision and I think that is just more evidence for his point.

It’s All in There Somewhere

I want a place to stash stuff on the web. I want to be able to find it later without remembering where I put it. I want it to be relatively secure from other people’s prying eyes but it would be nice if I could make certain things accessible to anyone or at least to people to whom I had given explicit permission for access.

I want to be able to stash anything from a short text note to a complete document, a simple URL to an entire web site, a few random values to an entire database. I want it to be accessible from my desktop, my laptop, my tablet, my phone, or any of the numerous, internet connected gadgets that are cropping up all over the place.

I’d like to be able to get a readable representation of the items in the stash using a web browser. This may (or may not) require a web application to massage the items into a readable form.

This post began when I sat trying to figure out where to stash a reference to a web site that I was interested in along with some brief notes about it. This comes up more often than I would have expected and I have tried many different solutions for it.

The first, most obvious solution was bookmarks. The problem with bookmarks is that they are browser dependent and require that you either use a browser that maintains a central registry of your bookmarks or that you copy your bookmarks manually from platform to platform. The central registry approach requires that you trust the operator of the registry, usually not a problem for me but definitely a problem for some of my more paranoid acquaintances.

Another problem with bookmarks is finding stuff that you bookmarked later. None of the bookmark schemes has a particularly good search mechanism. Perhaps I gave up on them before they implemented something useful but I have this huge ball-of-mud collection of bookmarks that I  have been collecting for ages and I have all but stopped adding to it because I can’t find anything when I look for it and I can’t trust that the link will still be active if I do find it. Bookmarks also ignore the aspect of wanting to store documents and other data in the repository.

An approach that addresses that last objection is to store notes on Dropbox or one of the other network file systems. That has (at least) two problems. First, you have to be able to access the service from everywhere. My employer views these stores as potential data leaks for corporate espionage and blocks them with our firewall. This would probably be true of any service that provided the features that I am looking for. Second, storage is less than half the problem. Finding the data is the harder part. Rendering it in a readable fashion can be challenging as well.

Then there are the online notebook applications like Evernote. They are pretty close to what I’m wanting but they are also kind of pricey. I suppose a business model that meets my requirements while not costing an arm and a leg is another requirement. I should look at Evernote closely and see where it falls short.

Perhaps I just need to go start hacking away and see what I can come up with. If it is useful for me, it will be useful for other people. And I’ll learn a lot about myself and the way I use the computer along the way.

 

Salute to One of My Heroes

It’s a bittersweet pleasure, sitting here listening to Garrison Keillor broadcast his last episode as host of A Prairie Home Companion. It has been a constant favorite of mine through the years. He has captured the best of small town middle America. He may tell stories of Lake Wobegon, Minnesota but there is a touch of Lake Wobegon in all the small American towns I have ever lived in.

He has a sense of humor comparable  to Mark Twain and a singing voice that blends well with the musical guests that he has hosted year in and year out for forty two years. I didn’t discover him until he had been on the air for almost a decade but I’ve been a fan ever since then.

I was worried that we were going to lose the show all together but last year Garrison started grooming Chris Thile to take over for him. It will be a different show but I am confident in this bright young star’s ability to keep the show’s standards high. He is one of my favorite musicians and he has revealed a sparkling sense of humor in the shows that he has guest hosted this last year.

So farewell Garrison. We’ll miss the weekly dose of the news from Lake Wobegon. I’m sure there are things you want to do and places that you want to see. Good luck and God’s speed. And as you always say, “Be well, do good work, and keep in touch.”

Internet Miscommunication Part 2

I watched a video the other day. It described a phenomenon that is called a Filter Bubble.  The phenomenon is, put simply, that your view of the world is slanted by the fact that the posts you see are filtered by what a web site knows about your preferences. For instance, Facebook selects items to show you based on people that you have selected as your friends. As such, they probably have similar tastes and opinions to yours. If you support a particular point of view, either your friends do too or you get annoyed by there rants and mute them. Consequently, over time you hear only one side of the story. Then, when something like an election or a referendum happens, you are surprised that it goes the way it does. You are blind sided by the fact that you have self selected just the parts of the story that you want to hear.

What can be done to remedy this problem? One thing that comes to mind is to actively seek information from diverse sources. Another suggestion is to seek information from diverse types of media, for instance, news papers, magazines, radio, and television.

The sad thing is that we have been so indoctrinated by the convenience of the internet that we have become lazy. It takes too much effort to read magazines and news papers. It is work to sort through them and decide what we are interested in. There is no Google for the physical world. There isn’t even an easy way to search media like film and television. YouTube is a start I suppose. Note that YouTube is owned by Google.

The important thing is, no matter where you look for information, look for as many different sources as you can. No one channel is going to give you the entire range of ideas on a given issue. And for goodness sake, don’t depend on Facebook as your primary source of news.

Internet Miscommunication Part 1

I was lucky enough to be working in the networking department of an up and coming software company at the beginning of my career. As a consequence, I had access to email before most people in the world. Even then, it was apparent that email was a volatile communications medium. At first we attributed it solely to the fact that it didn’t have the benefit of the subtle back channels that facial expression, body language, tone of voice, and inflection offer our face to face communication.

Upon further reflection though, it occurs to me that we have been communicating with the written word for centuries. There was something else in play here. For instance, it was easy to send email and once you hit send, it was gone. It was easy to write a quick note. It was more like an informal conversation so it was approached with less thought than a physical letter might. It took more discipline than most of us could muster to read what we had written carefully to make sure it couldn’t be misinterpreted.

And then there was the fact that the person, or persons, with which you were communicating weren’t present to give you immediate feedback, either positive or negative. This delayed any corrections that might be made to the message until the recipient had had time to stew about it for a while. And when they had built up a head of steam, it was, again, too easy to snap back a confrontational reply without due consideration. Thus were flame wars invented.

At the time, we thought there might be something to the idea that email was only used by technical types who didn’t have the best reputation for social skills. Only time and the rise of the public internet would disprove that theory. It seems that anyone, socially adept or not, was equally capable of miscommunicating via email. And the situation just got worse when the discussion forum was invented.

I have more to say about the evolution of online interpersonal communication. So much more that I am going to post this as part one. In part two I will explore some of the unexpected social impacts that arose from the vast social networks like Facebook.