KludgeCode

is Ben Rudgers

Remarks: Epigram 4

This is part of a writing exercise around Alan Perlis‘s Epigrams in Programming.

Every program is part of some other program and rarely fits.

Great Chain of Being Interpretation –  The operating system may be considered part of the program  because the program makes calls to services provided by the OS. The CPU’s microcode is likewise part of the OS. But below that, it stops. It is programs all the way down to the hardware but no further. Hardware is the last turtle. [Interestingly, causal chains to an Unmoved Mover feel as if they are going down rather than up. We descend a causal tree. We climb to angels.].

Web of Life Interpretation – Let’s treat “program” and “algorithm” as interchangeable (we can discuss arguing about that later) and get ourselves into the land of processes. Now the line between algorithms held in volatile memory and those implemented by logic gates is arbitrary. If we consider human processes – call them “habits” out of love for Dewey – akin to algorithms then we can close the web up nicely. [I recognize it’s a stretch, so consider it a thought experiment]. Now we’ve got something along the lines of “users are part of programs and rarely fit.

Everything a user a user tries to do suffers from the incidental complexity of translation into ones and zeros. Whatever goals the user has or whatever actions they take which cannot be translated do not exist for the homunculus living inside our programs. The degree to which our program translates actions and goals into ones and zeros is  a measure of its simplicity for the user.

The easiest thing for software is failing to translate the user’s actions and goals into ones and zeros. This means that not doing something the user needs to do introduces complexity. Now they have to look for another tool for abandon their goal. Thus the sense in which something is simple for the user correlates to powerful software. This is the allure of Excel. It can make charts and calculate tips and maintain a list for groceries and even let the user write letters (o.k. it was actually Lotus123 my boss Greg used to use). Lotus123 was simple to use, but as a whole, not easy.

The same for GNU/Emacs – what could be simpler than typing in commands? The hard part is remembering all the commands and learning what they do. Notepad doesn’t have that problem because it doesn’t allow the user to fetch their email and maintain a calendar. Microsoft Office has the same problems as Emacs – and shares some with Notepad for the sake of Easy.

Determining the value of waterboarding logic to treat the user as software is left as an exercise for the reader.