A Plea for Compassion

I don’t know what to think any more. Everything that I was taught about decency and honesty and fair play seem to have been thrown out. I hesitate  to post this because I’m sure there will be people that will use this as an excuse to try to advance their pet theories and or candidates. I don’t want to hear it. I just want people to be decent and respectful of others. You don’t have to agree with someone to be nice to them.

Everyone doesn’t have to believe the same things or have the same goals. The world would be a much poorer place if that was the case. We used to be able to have civil discussions about our differences but it seems that lately no one wants to listen to anything that anyone else says. And when you do listen, more often than not all that any says are personal attacks. Things like “How could you be so stupid to think that?” There is no discussion of facts or even agreement to peacefully disagree.

It is hard to live in a world where I’m afraid to voice my opinions because of the hateful personal attacks they might arouse from strangers. This is no way to live. This is not freedom. This is not democracy. Look deep in your heart and find some compassion. Think about how the other person feels about a situation. Hold a rational discussion based on facts. You might learn something. So might they. You will both feel better about each other.

Contemplating How We Create

Some days when I sit down to write, I just want to get my words down as quickly as possible so that I can get on with the things that I have planned for the day. Today, I am in less of a hurry. It is paradoxical that since I’m not in a hurry, I am able to express my thoughts more quickly and clearly than I usually can. I think it is, in part, giving myself permission to think about what I have to say. This may entail periodic pauses to think about the next thing that I want to say. So long as I don’t get lost in thought, that’s okay.

Actually, depending on whether or not I am productively daydreaming, it is even okay if I get lost in thought. Sometimes that’s how new ideas percolate up to the conscious level of our minds. We just have to carefully pay attention as it emerges. My ideas often come as snippets of images. I’m also very influenced by music and other sounds in my environment. I am sometimes distracted by them so there is a constant tension between inspiration and distraction. That is probably the case all of the time. Who is to say when a distraction may become the focus of the inspiration? It has happened to me as  often as not.

Being able to recognize those inspirations and experiment with them dynamically is what Brett is talking about in so many of his presentations. I want to use the tools that he demonstrates in his presentations. They illustrate an exciting approach to thinking about things. At one point Brett made a distinction between two styles of programming, engineering vs. authoring. I have always though of what I did as authoring.

I have always been concerned about writing programs that communicate with others. It is interesting that Brett is more concerned with building tools for people to communicate their ideas. It is a different approach to using the computer. He does have thoughts on how to program as well. It is a strange fractal idea, communicating ideas about the tools that you are using to communicate.

I’ve always felt that thinking was a fractal activity. I think that is why artificial intelligence is such a hard thing to achieve. I use the term artificial intelligence here with what I consider to be its typical connotation. Without the ability to think about the way you think and to modify the way you think dynamically, you aren’t really intelligent, are you?

I have experienced the pleasure of exploring a system interactively. It is patently obvious to people that approach programming from that direction that immediate reflection of the consequences of your changes is essential to productive development.

When you are creating, you often don’t really know where you are going with an idea. You start off in some direction and see what happens. The journey informs the destination. As you get to one place, the next place suggests itself. This happens whether you are writing a song or a novel, solving a packing problem or creating an algorithm to sort a multidimensional array.

Another aspect of creating is that it is rarely about manipulating symbols. Even writers work from inspiration that is something other than the words they write. They imagine something in terms of images or sounds or other sensations. They translate those experiences into words that attempt to communicate them to the reader. Words often fall short. Pictures are usually more expressive.

And then, there is the dynamic experience. It may be a picture that you can change by clicking on it or a song that you can affect by waving your hands in a particular way. There is often a computer involved but it isn’t absolutely necessary. A Rubic’s cube teaches you a lot about mechanical geometric transformations. A musical instrument teaches you a lot about music. These are all examples of dynamic media for creating dynamic experiences.

The main reason that we overlook the dynamic nature of computers is that we are stuck in a pen and paper mind set for solving problems and expressing the solutions. This is a truth that has been laying under the surface of my consciousness for decades and I  have only just been able to understand it, thanks to the work of Brett Victor. I need to reflect more on how to incorporate it into my daily work. I need to keep my eyes open for insights that will inform my choice of a principle to champion.

I haven’t said anything about that yet. It is probably best left to someone else who has discovered their principle to explain it. I just know that deep solutions are not focused on a particular problem but rather on how we go about solving all problems.

I sometimes think that the best of my blog posts are channeled instead of being written. I’m not sure where they come from but it is more like reading something that someone else is writing than writing it myself. This post has been an imperfect rehash of a lot of the ideas that I have learned from watching the Brett Victor videos online. It is interesting to note that although the principle that he walks away with is uniquely his own, many of the ideas that he bases his work on are from other visionary pioneers. He credits them in his work.

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.”