Thus it was written….

1976 The beginning of flexible computing in pu...
1976 The beginning of flexible computing in public health. Auditorium A at CDC, converted to a war room for the Swine Flu crisis, is filled with epidemiologists and a Digital Equipment PDP 11 minicomputer the size of a refrigerator. A program called SOCRATES, written in FORTRAN by programmer Rick Curtis, allowed an epidemiologist to define questions, enter data, and summarize the results in tabular form without the aid of a programmer. (Photo credit: Wikipedia)

Have you ever noticed that a computer program never does exactly what you want? Oh, it will process your data for you, and produce results that you can use, or it will move those files from here to here, but may move ones that you didn’t want moving or leave ones that you did want to move. But it won’t do exactly what you want, first time with no hassles.

Of course you can make it work for you, make it do what you want more accurately, but you have to work harder to make it do so, and programs are supposed to make things easier, right? Take this very editor that I am using to compose this post. I thought the bold words above as I wrote, but I needed to perform an action to make them come out bold and another to ensure that the text after the bold words didn’t also come out bold.

JWPce is a Japanese Word Processor, this softw...
JWPce is a Japanese Word Processor, this software is under GNU license. (Photo credit: Wikipedia)

Of course this is a very minor consideration and if I were to find a program that changed the font to bold for one word and then stopped, I’d probably find it irksome to bold two words in succession. Also, I’d bet the house that there would be something that the first program did automatically or easily that would be difficult to achieve using the second program.

Those who are not programmers seem to have an ambivalent attitude to programs. On the one hand, if they are using a program and they can’t get it to work, they blame themselves. “I must be doing something wrong!” comes the impassioned plea. So the technophile in the household has to interpret what helpful statement “It doesn’t work!” really means and what how the program expects in the way of input. Problem fixed. Until the next time.

Broken mirror
Broken mirror (Photo credit: Wikipedia)

On the other hand, the non-programmer will accept it without question when the hero/heroine of the film briefly types something at the computer and the world is saved! Hooray! The sentient virus destroying humanity is defeated! Hooray again!

However these issues with programs are not bugs. The program is not doing something wrong. The issue is with our expectations of how things ought to work. It may well be that the program is designed to do things differently to those expectations, either because the programmer assumes that the way that he codes it is the way that people will expect things to work.

If the programmer gets a lot of issues with a particular feature of his program, he may decide to change it to fit more closely with the expectations of the users, and then send out an update. It is likely that he will then get a lot of issues from those people who have been using the program for a while and have come to expect it to behave the old way. The programmer can never win.

I’ve done quite a bit of programming over the years, thankfully mostly for myself. Every program that is written these days usually fits into what might be called an ecosystem. There are programs to gather data, programs to crunch data, and programs to display the results, but there are many programs to perform each of these three tasks.

English: 2008 Computex: A panel of embedded sy...
English: 2008 Computex: A panel of embedded system by DM&P. (Photo credit: Wikipedia)

For example, the results may be printed on a printer, either as a table of data, or as graph or pie chart, or in these days of 3-D printing, a physical object, or it may be displayed on a screen, or in any other way where the recipient can interrelate with it.

Data input may typed in, drawn in on a graphical input device, or it may be collected by some means or other from sensors or other devices. Your heartbeat may be collected from a number of sensors on your skin, read by a machine and be printed off on a roll or paper, while at the same time being displayed on a local screen. It may also be sent off to some remote location where specialists may peruse it.

Fetal heart beat 200 bpm. Ultrasound scan. Pro...
Fetal heart beat 200 bpm. Ultrasound scan. Provided as-is. Please feel free to categorize, add description, crop or rename. (Photo credit: Wikipedia)

In the middle, between input and output comes the processing or crunching of the data. This is what most people think of when they think of computer processing. Somewhat unfairly the input and output processes are relegated to only secondary interest. This is, however, what a program or system is written to do. Even so, input and output processes may be complex.

Data may be processed in several different ways in between input and output, and by several different programs. There are layers within layers. For example a program that takes advantage of a database uses many layers. The program which the programmer is writing will no doubt call programs (called APIs or interfaces) within the environment that he is working in which start the process of communicating with the database.

Read-copy-update
Read-copy-update (Photo credit: Wikipedia)

The API puts the programmers request into a form that the database expects and sends it to another process, not usually part of the programmer’s chosen system, which exists only to connect the programmer’s program (and any other similar programs) to the database.

At the database end the receiving part of the database system receives the request and passes it to the main database program, which checks it and executes it. During the execution process the database program makes calls to system programs which perform any necessary retrieval or writing of the data to the system’s file system, via the system’s hardware interface with the storage system.

I’ve collapsed many layers in the explanation above. The main point is that the programmer’s program is the tip of the iceberg, and there are many layers which are called into action during the execution of the program. To complicate things further, the system that the programmer uses to perform his work is also a program and has its own layers on top of layers.

This explains why programs don’t ever do exactly what you want. The programmer has to use utility programs which, while flexible can’t do everything. The utility programs are also flexible, but are interfacing with other programs, which while flexible also can’t do everything. And so on.

English: TM-database
English: TM-database (Photo credit: Wikipedia)

The more flexible a program is, the bigger it is, as it has be programmed to enable the flexibility. So, this forces constraints on it, which impose constraints on the programmer, whose program therefore imposes constraints on the user of the program. And those constraints are why the program can’t do exactly what you want, but usually, it’s close enough that the program is useful to the end user. Most of the time.

Angry Penguin
Angry Penguin (Photo credit: Wikipedia)

Real or virtual caving? What’s the difference?

Grjótagjá caves near Mývatn lake, Iceland. Fra...
Grjótagjá caves near Mývatn lake, Iceland. Français : Grotte et source de Grjótagjá près du lac Mývatn, en Islande. (Photo credit: Wikipedia)

A bit less than a year ago I posted about caves virtual and real. I’m going to expand a bit on this today.

I worked for many years as a Linux Systems Administrator, a job which I loved and to a large extent brought home with me. I run a number of Linux systems at home, including the computer that I am writing this on. I have a system that I refer to as my “server” which I use for backups and for things that might get in the way on my desk computer.

Tux, the Linux penguin
Tux, the Linux penguin (Photo credit: Wikipedia)

When Minecraft was a craze some time ago I didn’t get involved at first but when my grandkids got into it I became interested. In Minecraft you can build elaborate structures, but to do so you need to find and extract the necessary materials, and, depending on the server that you are using, fight off automatic monsters (“mobs”) and other players.

I installed the Minecraft client, tried it out and liked what I saw. However, playing on other peoples’ servers soon became less than satisfactory. I didn’t like the unrealistic ability to “fly” (not fall down when unsupported by things) and the combative aspects of the game were found on many servers.


Embed from Getty Images

So, I investigated and tried running my own Minecraft server. This is possible, and not particularly tricky, you still have to pay for the client. There’s nothing wrong with paying for things, of course, and I did pay for it, but being a Linux user I’m always interested in seeing if there is a free version out there. Not of the actual Minecraft naturally, but of a similar program.

Minetest is a very similar program to Minecraft, works in much the same way, but is free, and there were Linux packages available, meaning that the install was simple. So I installed the packages and started playing. (I later downloaded the source code and compiled it, but that is another story. The packages worked fine).

Install debian
Install debian (Photo credit: Wikipedia)

Pretty much everything that you can do in Minecraft you can also do in Minetest. The differences are minor. So everything I say from here on will probably apply to either program.

The game is all about assembling resources to build things, and you assemble resources mainly by mining. You whack a block (say stone) with a tool (say a steel pickaxe) and it disappears and appears in your inventory. When you have enough blocks you can build a wall of them by taking them from your inventory and placing them appropriately. That is the start of your fortress or palace.

English: Old house with flint front wall, John...
English: Old house with flint front wall, Johnson Street, Ludham This house on the A1062 has a beautiful front wall made of squared-off blocks of flint. (Photo credit: Wikipedia)

A plain stone building is boring, so you will want to acquire some fancy blocks to smarten it up and that is where the game shines. You can make fancy blocks to place on your building, but to do that you need to acquire resources and fabricate or “craft” them. The resources are found under the ground, which requires you to dig down to get them, which is of course where the “Mine” part of the name comes from.

If you dig downwards (on a slope, so that you can return to the surface eventually) you will sooner or later encounter a void or space where there are no blocks. Hopefully you will avoid falling to the bottom and dying. If you carefully climb down to the bottom of the void you are are the bottom of a virtual cave.

The Cave Automatic Virtual Environment at EVL,...
The Cave Automatic Virtual Environment at EVL, University of Illinois at Chicago. (Photo credit: Wikipedia)

The cave may have blocks which look slightly different to the normal blocks. These blocks contain resources, usually ores, that can be collected and used to make other special blocks. For instance a block with iron ores in it can be used to make steel ingots, which can then be used to make steel pickaxes and other useful tools.

The game’s caves are similar in many ways to real caves. The topography of the caves is varied, with narrow passageways in some places, deep clefts in others, potholes, and sometimes openings to the surface.

English: Middle Washfold There are several cav...
English: Middle Washfold There are several caves and pothole entrances near here. The top layer of limestone pavement seems separate from the rock beneath which has eroded in a different way. (Photo credit: Wikipedia)

Of course it is dark underground. That means that you need to manufacture torches and carry them in your inventory if venturing underground. A torch placed on the wall will illuminate a small area of the cavern leaving dark voids beyond the torchlight which might be interesting to explore!

The game’s caves often have, just like real caves, uneven floors and there will be much jumping over obstacles, and climbing up and down. Some caves do have flatter floors, as do many real caves.

English: Subglacial pothole on Pothole Dome.
English: Subglacial pothole on Pothole Dome. (Photo credit: Wikipedia)

Some game caves have sloping floor, much like a staircase, and the roof also may slope down, giving the impression of a sloping slit, as is often found in real caves. It is not advisable to skip down the slope into the darkness, of course, as the slope may end in a drop, as may also be found in a real cave.

Game caves are often elongated, just like real caves, and may form large interlinked caverns. Cross passages may start way up on the walls of the caverns, just as happens in real caves. It’s often possible to travel some distance more or less horizontally before one has to climb up or down to continue.

Game caves do not often contain water, which is unlike most real caves, and when they do the water is either in the form of a waterfall or a lake. Long flowing river of water are not common in game caves. Sometimes a cave will contain a lake of lava, or a lava fall which often looks spectacular. Both lava and water may form short flows but will quickly “seep” into the rocks.

Some of the potholes are spectacular. As they are underground and dark, one cannot see the bottom. Often they can edged or mined around and descended that way. Looking back up one can see the torches that one placed on the way down as tiny lights, often to spectacular effect.

An abandoned mine near Yerington, Nevada, Unit...
An abandoned mine near Yerington, Nevada, United States (Photo credit: Wikipedia)

I’ve explored both real caves and game caves, there is a great deal of similarity in the experience. In both cases, one has only limited visibility around one, one has a sense of void, and a sense that one may fall. There’s the thrill of discovery as one explores, and a sense of achievement. Unfortunately in the game caves, there are no stalactites and stalagmites to decorate the cave, but perhaps someone will write some in some time.

Entrance to the REACTOR, at the , a cultural /...
Entrance to the REACTOR, at the , a cultural / history museum in Athens. The REACTOR is a CAVE virtual reality system sold by Trimension. (Photo credit: Wikipedia)