The Attention Economy

The internet has changed the formula for mounting a crusade. Before the internet if you had a cause that you wanted to advocate you first refined your message. You practiced your pitch until you perfected it. You practiced it by speaking to anyone who would listen. You spoke to them individually. You spoke to small groups. You spoke to groups as big as you could muster.

As you started getting your message down pat, you’d start gathering an organization that would help you to get the message out. They’d help you organize and plan. They’d book you on speaking tours to give your pitch to as many people as possible. It took a significant commitment and investment in time and effort.

Now you make comments off the cuff. You post 140 character sound bites on twitter. You don’t need a large organization. You don’t even particularly need any large commitment in time or energy. You can tweet anywhere while you’re doing anything.

What’s more, you don’t even need to attract followers who agree with you.  The only necessary thing is attention. If you can capture and hold people’s attention you can influence them in ways they will neither be aware of or perhaps even approve of. And it’s all because of the instant, inexpensive communication that the internet provides.

I leave it as an exercise for the reader to figure out how this relates to economic matters. But let me be clear, you should be scared. You should be very scared

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.

Change is Good

I want to encourage anyone that sees my blog posts on Facebook to click through and read them in their entirety and to comment on them. I write my blog to learn how to write things that other people might want to read. It is hard to learn how to do that without feedback.

I have made a lot of new friends since the first of the year (hi Larry :-)). And, I have renewed some old friendships. I am glad to have met these people. I was beginning to feel like I was in a social vacuum. I have always found NASA to be a very socially vibrant work environment. They strive hard to forge a community. They succeed for the most part.

I attended a Maestro User’s Group meeting this week. Maestro is part of the software suite that is written to control the Artemis hardware in the loop simulation system. It is ground breaking software. I am excited to get to use it. But beyond that, I am excited to be a member of a community that uses a piece of software and cares enough about it to periodically meet and talk about it.

I guess that establishes my bona fides as a true software (and space) geek. I remember when I was a teenager me and my friends were determined to build our own space ship and go to space. We never got very far on our private space program but I did end up working on the SLS program to build the next generation rocket that will take us on deep space missions further than mankind has traveled from the Earth before. I guess in that sense I am realizing my childhood dream.

This won’t be the first time that I’ve worked intimately with the space program but it is one of the most direct contributions that I’ve made. It gives you a sense of grave responsibility and pride to work on testing a launch vehicle that will be man-rated.

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.

The Purposes of Computer Programming Languages

Computer programming can be viewed on many levels. Superficially it is a means for specifying how a computer should perform a given task. If that were all it was, we could must enter a long sequence of numbers that correspond to the machine instructions to accomplish the task.

Modern computer languages go much further. They provide platforms for communicating, not only the specific tasks to accomplish but our assumptions about them, the structure of the data that they will manipulate, and the algorithms that will accomplish them.

But even beyond that, they provide a common language for people to talk to each other about programming tasks. As such, they evolve with the growth of our understanding of the activity of programming, its attributes, and the algorithms that are the final product of the activity.

To summarize, we write programs to enable the automated solution of computational problems by computers but also to communicate with each other about these computational processes. In the interest of clarity of communication, we have seen the trend of programming languages toward higher and higher levels of abstraction with an ever increasing investment in compiler technologies that translate these abstractions into efficient executables that provide the computer tasks that we set out to specify in the first place. It is ultimately this communication that offers their greatest benefit.

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.

A Red Letter Day

I finally got the information off of the hard drive that was in my iMac that died several years ago. I thought that it was gone but I have it back now, or most of it anyway. I suspect that there may be a few corrupted files on it but that is okay. I thought I had lost all of the information on it.

I will be making frequent backups of my data from here on out. The feeling of relief is incredible. I am going to be looking through it to see what all I recovered. The most important of the things that I recovered is the files that contain my father’s writing. I have lost so much of his legacy it is good that I didn’t lose them as well.

It makes me think again about my digital legacy. How am I going to make sure that what I write survives me after I’m gone. The short answer is that I can’t be absolutely certain but I can make arrangements. It really boils down to finding someone who survives you who cares enough to enforce your wishes.

I don’t even really know why it matters to me but it does. Perhaps it is the idea that having your ideas survive after you are gone is the only immortality you may ever have. In any case, I’m finishing the day happier than I started it.

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.

Another Spin on Life Long Learning

I tried to write about how much things had changed in my lifetime. After about a paragraph I realized that I had bitten off more than I could chew. Especially in one short blog post. That topic would take at least a book. Maybe several books. So I tried to narrow the scope of the topic a little bit.

I am a computer professional. Perhaps I could begin to describe how much computers had changed. In 1955 when I was born computers were huge. They took up entire buildings and had far less computing capability than the Fitbit that I wear on my wrist. When I went to look up how many computers there were in the world at that time, I discovered that there were a lot more than I had supposed.

After browsing some of the pages on the history of computing for fifteen minutes or so I began to realize that I had once again failed to limit the scope of my topic adequately. I was beginning to sense a theme here. It seems that the world had changed so much in my lifetime it was mind boggling.

So why wasn’t my mind boggled? Perhaps I was like the frog that started out in the pan of cold water and by the time he realized the water was boiling he was cooked. In much the same way, I was there for all the changes as they unfolded. Not that I was aware of all of them at the time. But I was aware of enough of them that I had the impression that I could keep up with them all.

But now, I am much older and wiser. I am beginning to have an inkling of how much I don’t know. If the amount that I don’t know keeps increasing at the same rate it has thus far in my life, I’ll be totally ignorant before I know it. I feel like my brain is shrinking in my head even as I write this.

And yet, I get up every morning and I spend a good part of the day trying to learn some small fragment of all that I don’t know. It’s futile, I know. But somehow, it is satisfying. It is how I’ve lived my life this far and how I intend to spend the rest of my life. I heartily recommend that you do the same.

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.

Language is Miraculous

Words are spells. Incantations that conjure up pictures in the minds of other readers. They can make us forget our troubles and remember our triumphs. They can inspire laughter and tears, sometimes both at the same time. By some estimates the average person has a speaking vocabulary of about 5,000 words that they use frequently, a writing vocabulary of about twice that many. A college educated person probably has a vocabulary of around 80,000 words.

Some people hypothesize that it’s mankind’s use of tools that set us apart from animals. Yet we see many examples of animals using tools. I think it is our use of language that sets us apart. I don’t think it is necessarily beyond the ability of animals. I know my dogs and cat have substantial vocabularies of words they understand. And there are animals, like parrots and crows, that can be taught to speak. In the case of parrots, I believe they often actually understand what it is they are saying.

The important thing is that they don’t create language of their own accord. There is something about the way our brains are wired that causes us to create language even if we aren’t exposed to language as we are developing. William S. Burroughs introduced the concept that language was a virus from outer space. This was reiterated in a song by Laurie Anderson. I’m not sure it is that far from the truth. It certainly changed the potential for acheivement of mankind.

It was after the development of language, mythologized in the story of the tower of Babel, that man became capable of coordinating his efforts to achieve monumental projects like the pyramids, and other prehistoric constructions. Language allowed man to pass on what he had learned to his children giving them a head start in learning new things about the world around them.

Written language extended the influence of a man past the people that heard him speak on to future generations beyond the sound of his voice. The limit of his influence was bounded only by the durability of the medium that he wrote on and the persistence of literacy.

I suppose that is what concerns me most about the modern trend that I see of glorifying ignorance and the bland acceptance of illiteracy. I could easily see us falling back into a new dark age if this trend is not stopped by those of us that value our linguistic heritage.

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.

Whatever Happened To…?

I’ve been thinking a lot lately about various people I’ve known at different times in my life. In my mind they are still the age they were when I knew them. For that matter, I am still a young man in my own mind. When I see the white haired man in the mirror in the morning it is startling. I have learned a lot since I was a young man but I still harbor the illusion of being the same person that I was then.

I recently changed task assignments. In my new assignment I work in an environment where several different contractors work together on the same team for a government customer. When I reported to the assignment I was pleasantly surprised to discover that several of the members of the team were coworkers that I hadn’t seen in over twenty five years. They had aged much as I have. They were still recognizable but they had grey hair and other signs of aging.

It has been disconcerting to learn who they have become. It has been an indication to me that maybe I have changed more than I realize. I hope I have changed for the better but that remains to be seen. You can only make those kinds of judgement by comparing the behavior of the person that you were with the behavior of the person you are now. It is hard to remember the behavior of the person that you were then. In any case, your memory of how you behaved will certainly differ from the memory of other people that you knew then.

Some of the people that I’ve been thinking about go back even further in my life than twenty five years. For instance, I’ve been thinking about the people that I went to grade school with. I have found some of them on the internet. One is a librarian. Another is a judge. I would never have guessed he would be a judge, much less a lawyer. The librarian was easier to predict. She always had her nose in a book.

I want to attempt to catch up with some of those people. One of the problems is that they live so far away from where I live now. Another is the fear that whatever we new about each other then will be so far in the past that we wouldn’t even recognize each other now, either externally or internally.

Then there is my best friend from junior high and high school. We haven’t talked to each other for years. I got the impression the last time I talked to him that he wasn’t particularly interested in talking with me. I suppose I can relate to that. It’s hard enough cultivating and maintaining friendship the first time around. After decades of neglect, it is understandable that you might not want to invest anything in a relationship that may evaporate just as quickly as it did the first time around.

I guess the only way you can find out is to try. There are so many ways to communicate in this modern society. We managed to keep in touch for ten years or so with pen, paper, envelopes, and postage stamps. We also used to exchange letters on cassette tapes. That will give you an idea of how long ago it was. I suppose I am just as wary of reestablishing contact as he was the last time I tried.

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.

Programming Principle to Ponder

In my years as a programmer I have discovered a number of simple facts about computers that aren’t obvious at first. I thought that I’d share a few of them with you.

The first is what I call the fundamental theorem of Computer Science. It is in any system you can trade processing for storage and vice versa. An example may serve to help illustrate what I mean. Say for instance you need a function that returns the sine of the integers between 0 and 89. You can either write an algorithm that computes the sine or you can have an array of 90 floats that are preloaded with the sine of the first 90 integers.

The first will be more expensive in terms of the time that it takes to return a result. The second will be more expensive in terms of the memory that it takes to store the table. The correct choice will depend on whether you need a fast answer or a memory efficient one.

Another fundamental principle of programming I learned from a book entitled The Pragmatic Programmer by Andy Hunt and Dave Thomas. They call it the DRY principle and it stands for Don’t Repeat Yourself. This principle was first espoused by database gurus in the form of first normal form.

The idea is if you store the same value more than one place in your program you run the risk of changing it in one of those places and forgetting to change it in the other. It is a simple thing to do but it helps avoid hard to find bugs.

One more and I’ll call it a night. It was first brought to my attention by David Heinemeier Hanson (or DHH as he is commonly referred to by the community), the original architect and author of Ruby on Rails. He calls it configuration by convention. To explain I need to describe how people handled configuration of their programs before.

There were two popular approaches. One was to specify the configuration of your program with so called command line options. These usually consisted of symbols, either single letters or entire words, that were associated with a value for the option.

This soon got rather cumbersome if there were a lot of options. The first attempt to simplify the specification of options was by creating a file that had a special syntax that made it easy for a program to associate the option specifier with the value to be assigned to the option. The problem was that the configuration file syntax was often complex and error prone. For example, XML was a popular syntax used in configuration files.

And, when people started using configuration files the proliferated such that every new library that you adopted in your program would have it’s own configuration file.

DHH observed that a large percentage of the things that are configured by configuration files can be established by having conventional configurations. For example, a common configuration parameter was the specification of the directory where particular files of interest to the application could be found. Instead, DHH established a default directory layout that the application used and documented it.

He asserted that software should be opinionated. It should expect things to be done a particular way and reap the benefits of simplification that these assumptions enabled.

I think the thread that runs through these principles is that the most important thing a programmer needs to do is think about the problem that they are trying to solve and ways that they can solve it instead of what most of us do which is to try to reuse techniques that were successful on previous projects.

This is only bad if it is done without careful thought about the project at hand. Are you trying to drive a nail with a monkey wrench? Programmers are often too quick to start coding instead of taking the time to think about the problem.

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.

Kellie’s Professional Origin Story

When I was a teenager, I was interested in electronics. I liked listening to AM radio broadcasts from all over the country. I read Popular Electronics magazine. I built small electronic kits and took apart old inoperable television sets for their parts but mostly to learn how to solder and desolder.

When I was in my first year of college Popular Electronics published a construction article on how to build your own personal computer. I had always been intrigued by computers and avidly read science fiction books and watched science fiction tv shows and movies. I wanted a computer. But the $600 price tag was way beyond my meager student finances.

I found a Plato terminal in the library and obtained an account on it. Plato was a time sharing system that provided computer based instruction in everything from psychology, physics, literature, and even computer programming. In particular, there were lessons on the Tutor language, the computer language in which all of the instructional material on Plato was implemented. I pursued it with great relish and wrote short animated presentations with it.

Time passed. I got married. We were extremely broke students. Inevitably my wife got pregnant and I had to look for a job. It was during a recession and I had no marketable skills. I decided to remedy that situation and spoke with an Army recruiter. I told him I wanted to enlist for the longest school that taught computers. I figured that they wouldn’t spend any more time than necessary on training and consequently the longest school would have the most content. I was right.

For the next year I learned every circuit in the commercial minicomputer that served as the ground control computer of the Pershing missile system. Along the way, I learned a little bit about programming from my course work and a lot about programming from magazines like Byte, Kilobaud, and Compute! to name just a few.

I tell this story to explain that my perspective on computers has always been two pronged. That is, I have an appreciation for both the hardware that comprises the computer and the software that runs on it. Most people in the computer business specialize in either computer hardware or computer software. I decided early in my career that I liked to write software but I also enjoy understanding how the hardware works so that I can make the computer do things that other people might not imagine that it was capable of.

Another of my long term interests has been in Artificial Intelligence. But that is a topic best left for another post. Dinner and the weekend beckon and I have managed to fulfill my daily writing goals early today.

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.

Crystal Ball Gazing

It used to be that there was a fundamental difference between Macintosh computers and PCs. I could give you the list of items but then if you are reading this, you probably already know what I’m talking about. I make no bones about being a fan of the Macintosh. I have also used various versions of Windows for almost thirty years. Not to mention all of the other operating systems along the way. I feel particularly qualified to say, the operating system wars are over.

Who won? We all did. Why is there still more than one operating system? Why are there more than one kind of car? People have different preferences. Most often it boils down to what they are familiar with. In my case, I am equally familiar with Windows, macOS, and Linux so it boils down to taste and habit. I think that the continued existence of multiple operating systems is essential to the continued evolution and improvement of all operating systems.

What is in the future of operating systems? That is impossible to say with any authority. It all depends on the imagination of the developers that write those systems. I do think I can identify some trends though.

Operating systems will evolve so that they fade into the background of the workflow. Take for instance the move toward so called cloud computing. Someone I work with once quipped “Cloud computing is just doing your work with someone else’s computer.” The point that he was missing was that you are doing your work without having to worry about what computer you were using. If you needed to access data on a central server, it felt the same to you as accessing data on your local machine. If you needed to enlist a bunch of processor cores to solve a problem with lots of independent data, the cloud can arrange for the resources without you having to worry about any of the details except paying the bill.

Opera recently announced an experimental browser called Neon that uses a paradigm of a desktop in the browser. Favorite URLs are represented by icons on the “browser-top” and different open tabs can be viewed in split screen mode or collapsed to icons along the side of the screen. These are interesting variations on the operational scenario of web browsing. This is particularly interesting considering the recent proliferation of web applications that run in the browser instead of on the native operating system.

So the days of “my operating system is better than your operating system” are over except for the inevitable arguments in junior high school lunch rooms. Adults have largely come to realize that it is a matter of choice and there really isn’t any compelling reason to prefer one operating system over another on a strictly objective basis.

Sweet dreams, don’t forget to tell the ones you love that you love them, and most important of all, be kind.