Software Legos

I have been programming for over 20 years now. The year I learned to program (in Fortran) was the last year the university had punch cards. By the next semester I was using a line printer and the next year a CRT. Only two years later I had purchased an Apple ][, although I was mainly working on minicomputers. (If you are too young to remember, they actually used to break things down as micro, mini and mainframe. There were never any maxi-computers, just super ones.)

Throughout my career I have loved making things work the way they should and have absolutely abhorred it when the tools stopped me from getting the results I wanted or making the tools work was the largest part of my job.

As a programmer what always attracted me to Apple was the fact that it was easy to get the results I wanted. The tools seemed to be made by people who were trying to do the same sorts of things I was. Software (and hardware) are just layers of logic, piled one atop the other. You use the components to build your application or widget or whatever much the same way you build with legos. Lately though, I have the feeling that I am building with a box that includes legos, duplos, bionics, and technics all jumbled together. I have programmed an occasional unix system since almost twenty years ago. But I am not a unix programmer. Let me digress.

I have always had this theory that if you could graph technology on a cartesian plane with ease-of-use and power as the axes, then the further you move away from the origin, the less likely you are going to be willing to move back. Likewise the nice diagonal line formed by power=ease-of-use is the best path to travel. I have observed people moving in this cartesian plane as they learn new technology and I have developed a corollary based upon human nature. Once you move a substantial distance on the graph so that you are further away from the origin, then you tend to believe that you have reached the pinnacle of technology and are euphoric and love that technology for some time. You will even ignore its flaws. You will also be blind for some time to any other technology further from the origin. This is because you believe you have reached the pinnacle.

power vs ease graph

Jump far enough and you might even evangelize the technology to others (who may think you are nuts.) Eventually if you are the type to learn new things you will get dissatisfied and you may even make improvements or you will jump to a better technology. Some people who don't like change will stick where they are until forced by circumstance to move. If they are lucky they will move further from the origin. The complexity of technology is what makes things work this way. It is often hard to know whether a new technology is "bettter" without a substantial learning curve. For example, my theory wouldn't be as effective for people moving to new homes because it is pretty easy to see whether there is another better home out there.

Now back to my original line of thought. I was never a unix programmer because I wanted to travel the path power=ease-of-use. Unix on the other hand seems to be plotted closer to the power axis. But since OS X the Macintosh has been split into two layers. As a user you can still be on the path. As a programmer what is really bothering me at the moment is that putting together parts in unix is often like trying to attache a lego to a duplo. Or sure they look alike from a distance.

A lot of what happens under the hood in unix and in open software is like that. There is some great library out there that does just what you want. And it has all kinds of optional and variable bits so that it can fit with many other legos. Only you need to connect to a duplo. If it is open software then at least you can modify it. But as a Macintosh programmer I am discouraged by the fact that I am spending too much time fixing my tools.

Last Saturday I decided to install subversion on my server (I have a small Mac/PC network) so that I could use it from my main box and still check out and build on a laptop or what have you. Plus I really need a better way to track changes than my old standby of archiving the whole project folder by copying it somewhere.

Only this morning can I get back on task. The installation of subversion was a royal pain. And I don't even want to talk about my experiences with installing Mac OS X Server, or using CSS, or moving my family's accounts onto the server, or yes even working with this blojsom blog! Sure things have gotten way more powerful so that I can attempt to do new things. But the parts won't fit together without a file and a mallet.

Add new comment

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.
  • Only images hosted on this site may be used in <img> tags.
  • You can align images (data-align="center"), but also videos, blockquotes, and so on.
  • You can caption images (data-caption="Text"), but also videos, blockquotes, and so on.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.