Category Archives: Basics

Computer Programming Ducks

Time to start talking more about programming. It’s one of my defining aspects. I’ll try to make it as interesting as possible for the non-programmers. For the programmers, I’m sorry, but that means sometimes I’ll have to get a little basic or skirt a few corners. Feel free to use the Comments section!

True computer programmers, the ducks taking to the water of making software, are their own special kind of odd duck. Life is filled with different ducks: sales ducks, art ducks, factory ducks, music ducks. Lots of ducks. I’m just saying that computer programmers float in a different part of the pond.

I know this because I’m one of the flock. I have been for over three decades. That’s right; I’ve been doing this since before some of you reading this were born. It would be nice to believe I’ve figured at least some of it out by now. Feels like I know a thing or two. One thing I’ll say: I do know this part of the pond. Been here a while!

Software: It’s just zeros and ones

Software is an abstraction of a process, for instance a calculator process or a spreadsheet process. It can be the abstraction of the process of managing payroll or process operating a machine (even of flying an airplane). The process is also an abstraction. Knowing how to use a spreadsheet or fly an airplane is abstract. Actually doing it is concrete.

Software is an abstraction of an abstraction! And that’s my point: there’s a lot of abstraction in computer programming.

Physically software is just a long string of numbers. In fact, it’s really just a string of things and not things. Holes in paper; or not holes in paper. Magnetic domains magnetized; or not. Tiny electronic switches turned on; or not. You can represent software as a string of black and white jellybeans. It’s all the exact same thing. What matters is the pattern of thing and not thing.

The final product is created out of thin air and is nothing more than a string of numbers. (And yet it can do so much.) The final product is an abstraction filled with abstractions of its own.

Starting at the bottom, the string of ones and zeros form a complete package of information: a software application. The standard that describes how to organize the bits as a software application is an abstraction. The context for the bits is specified by the standard, so it embodies the encoding information needed to make sense of the bit pattern.

The bits themselves clump into small packages (bytes, or more properly, octets) of eight each, which is important for network transmission and storage. The whole octet thing is an abstraction. Not to mention the related UTF-8 and Unicode abstractions regarding bit clumping. Not to mention the abstraction of various computer hardware architecture.

Now the packages of eight bits, the bytes, are clumped into small groups, usually, of four (4 x 8 = 32). These are called words. In some cases, the words are of two bytes (2 x 8 = 16) or eight bytes (8 x 8 = 64). The phrases “32-bit” and “64-bit” refer to this is the level of abstraction. The software is a string of words now rather than just a string of bits. The words are meaningful in the (abstract) language of the program.

A computer program uses an abstract language to describe abstractions such as lists, containers and pipes. It uses them to implement the abstract design of the program. The implementation, the string of words, must be executed (run is the friendlier word) for the abstraction of the program to spring to life. The context in which the program is executed (run) is one more abstraction!

Abstractions on top of abstractions using abstractions to do something concrete.

Even our tools are abstract. Programmers are tool users; the good ones are also tool makers. And our tools are as abstract as our product. In fact, most tools are the product of some other programmer! The key tool any software maker uses is a software writing tool, but there are many important others: analyzers, debuggers, organizers and wranglers. Without them we couldn’t do our abstract job.

So it’s no wonder we’re a little different.

Software Design

Software development is hard to describe or compare, because it depends so much on the use of abstraction. There is a continuum of professions based on how much abstraction they tend to require from their workers. You may not realize the degree to which you use abstractions at work and in life. (But that’s a discussion for another time.)

Still, many professions focus on concrete objects: doctors focus on bodies; chefs on food. Police, fire, nurse, EMT, social workers of many types see people in need. Factory workers make concrete objects; salespeople sell them, marketers advertise them; technicians fix them; maintenance crews clean them and junk them. And that’s the short list.

Other professions deal more with abstraction. Architects and Mechanical Engineers, for example, deal with drawings and models, which are abstractions of buildings or machines. They start from a pure abstraction, the idea and design, and work to build a concrete thing. [In passing, computer models and 3D printers have made the abstractions much more concrete. We’ve come a long way since faded blueprints.]

Lawyers and accountants deal even more with abstraction; the books only record the abstractions of justice and cash flow. Even the objects of their professions, clients and businesses, can be abstractions. A corporation is an abstraction, but it can have lawyers and accountants, and recently it has achieved legal “person” status. At some point business and law come down to people; that’s where it becomes completely concrete.

Composers, poets and other artists are heavily into abstraction. As with law and accounting, the paperwork often just stands for the real product. Artists have in common with architects that they design a product from an idea. The final design is an abstraction represented as lines, notes or words on a page (or bits stored in memory). Architects go on to realize their design by building it; some artists build their design, others perform it (some may record the performance). In some cases, a book for example, the design is copied, and others bring the design to life by reading the text.

Mathematicians and theoretical physicists are entirely in the realm of abstraction! In some cases, 11-dimensional objects for example, a concrete object is not possible. Or took place long ago; the Big Bang took place a very long time ago! In other cases, the forces, energies or times involved are far beyond our technology. They could be concrete in theory, but we’re not likely to pull it off any time soon.

Software workers are similar to architects; they design from an idea. But once completed, the design is the product. Software is like a book in this sense. And like a book, it is read (or run). More than just read, the software design is performed every time you run that software. The software design that is your browser (Chrome, FireFox, IE, Safari, Opera, et alii) is performing right now, acting like a browser, which is how you can read this article.

Software Engineers

I don’t like the term Software Engineer. Real engineers have licenses and certifications and prescribed educations. No such exists (currently) for software makers. It is still a new craft in our society (it goes back only to the 1950s or so), and we haven’t caught up to how complex and demanding it really is. Anyone can use the term Software Engineer, so it doesn’t have the meaning it could.

The meaning it could, should, have is the same meaning as for Civil, Electrical, Mechanical and other Real Engineers. It should mean a prescribed area of knowledge and skill for anyone who would be an Engineer. Until software education and the software profession catches up with reality, I continue to resist the term.

Knowledge Workers

People who work with software are sometimes called knowledge workers, but I think that’s also poor terminology. All workers use their own knowledge as well as the business’s knowledge. Some professions require more base knowledge than others, but it is still a continuum. I just think it’s a vague way to specify a profession.

I’m fine with computer programmer, actually.

Maybe that’s low brow, but I like it. I’m fine with software designer or software maker (but not software engineer). Bit wrangler is a fanciful, fun term, although byte wrangler sounds a little more dangerous. You can’t really say you make holes in paper anymore.

I kinda like telling people I train silicon life forms.


Sideband #39: “Star Trekking It”

As a quick Sideband sidebar to the Star Trek holodeck article just published, I want to mention a metaphor I use to refer to a common science fiction fan phenomenon. The metaphor has a label: “Star Trekking it.”

A while back I mentioned another metaphor: “doing a Boston.” This is like that. It’s a specific reference applied to a general situation. In this case, the metaphor is a general idea in a specific context: explaining away ridiculous stuff in Star Trek.

And make no mistake, Star Trek needs plenty of explaining!

Continue reading


Sideband #38: The Next Hill Over

Imagine standing on a very tall hill in middle of a thick forest. Your hill is tall enough to take you above the trees; when you look out over the trees, you can see for miles around you. Ahead you can see another hill sticking above the trees; this is your goal.

You want to reach that hill.

A question arises; you are asked, “How long will it take to reach yon hill? What will you need along the way?”

Continue reading


What is Science Fiction?

I recently asked the question, “What is Art?” Answering that one is a real challenge, and the answer may be entirely subjective. This time I’m asking a question that is almost as difficult: “What is Science Fiction?” The answer may turn out to be just as subjective, and just as much of a challenge, but I’ve always thought the tough questions are the most interesting to explore.

I may, or may not, be an artist (but I know what I like!) and suffice to say I have only dabbled in art over the years. Science fiction, however, has filled my life as long as I’ve been picking my own reading material. I suspect that, overall, my fiction reading (and I read a lot of fiction) is at least 80% science fiction. It could be more. Most normal fiction leaves me disinterested, no matter how insightful it might be. I live in the real world; I want stories that take me far, far away, be it conceptually, spatially or temporally (if only temporarily).

Only authors that bring something newly invented to the table really hold my interest.

Continue reading


God: Three Questions

When it comes to a spiritual position, there are at least three major positions you can take. There are three metaphysical questions you can ask yourself. Each question, if you answer “no,” halts the process and defines your position.

The questioning continues so long as your answer is “yes.” As the questioning continues, you approach a more and more specific concept of “God(s).”

Basically, it’s a flow-chart that calculates your metaphysical point of view.

Continue reading


Sideband #34: The North Star

I had a small dinner party last night so that some friends could come over for some ‘za and beer and catch up on the latest antics of Nancy Botwin and company on Weeds. Per the old saying, “A good time was had by all.” Or to put it less passively, “As usual, we had a blast! (And that Nancy… craaaaaaa-zy!!)”

However, in the course of conversation I realized not everyone knows about the magic behind our north star (Polaris by name) and found myself taking the virtual podium to explain. It’s one of those things that’s common knowledge to many but may come as a complete surprise to others.

So, for those of you not familiar with the navigational magic behind the north star, here’s the deal.

Continue reading


What is Art?

An old and challenging question is, “What is art?” The question is probably as old as art and artists; the moment someone made a cave painting, someone else probably asked, “But is it art?”

It’s possible the question cannot be answered in any objective way; we may each have a personal definition of art. Here are some of my thoughts on the matter.

First, there are (at least) three distinct questions one might ask regarding art:

  1. Is it art?
  2. Is it good art?
  3. Do I like it?

This essay is strictly about the first question. Critical review (whether a piece of Art is good) and taste (whether you like it) are separate matters.

Continue reading


God: Universal Apprehension or Delusion?

One of the things that strikes me about the idea of God is how universal that idea is. To the best of my knowledge, every society in every age has had some sort of spiritual core belief.

I used to state this as the assertion that every society believed in some sort of god or gods, but it was pointed out to me that Buddhists don’t actually have a god. They do have some metaphysical entities, and more importantly, Buddhism is certainly a belief in a metaphysical reality that transcends this one.

So the question is: if humans universally find themselves finding God(s), what does this mean?

Continue reading


Big Bang? Let there be Light?

In an earlier post, I wrote that:

The problem for any honest theist is,
“What if it isn’t true?”
The problem for any honest atheist is,
“What if it is true?”

Ultimately both represent ways of looking at the universe. There is no factual conclusion, no proof, about either one; both are matters of faith and belief.

Science can argue all it wants that the Logic and Scientific Method is superior to believing in an ineffable reality but given all we do know and all we don’t know, in the end it is still just a worldview.

Continue reading


Sideband #13: The Number 42

Nearly all science fiction fans share a meme about the number 42. This meme comes from the Douglas Adams book, The Hitchhiker’s Guide to the Galaxy, one of the great “modern classics” (an apparent oxymoron, but it is just shorthand for ‘a recent work that is so good that someday it will be counted among the classics’). The book is the first in the “increasingly misnamed” trilogy that shares its name.

The trilogy is “increasingly misnamed” in that it now has five books. The joke is that, in science fiction, trilogies are as common as aliens, spaceships and time travel. In fact, depending on the context, there are two trilogies that have easily earned the sobriquet, “The Trilogy.” (Issac Asimov‘s Foundation series in the context of pure SF; and, of course, J.R.R. Tolkien‘s Lord of the Rings books in the context of SF + fantasy.)

In any event, the number, 42, is the answer to the question.

Continue reading