English: Upgrading Menu
English: Upgrading Menu (Photo credit: Wikipedia)

I’m a little late with this post because of an issue with my computer. An upgrade resulted in me not being able to send and receive emails. While this is partially fixed I still have work to do.

I’ve been in the business for decades so I’m acutely aware of how things can go wrong in an upgrade. Sensible systems administrators take backups, plan out the upgrade in as much detail as they can and probably spend more time getting ready than in actually performing the upgrade.

Embed from Getty Images

This pays huge dividends, but still, not infrequently, things can go wrong. The wrongness can be major, with a totally destroyed system, or minor, as in niggling irritations like something behaving slightly differently after the upgrade.

Computer firms and software suppliers often make huge efforts to make an upgrade work easily and cleanly, and many have put in place systems to make it easier to upgrade their software or back it out if something goes awry.

Microsoft Windows wordmark
Microsoft Windows wordmark (Photo credit: Wikipedia)

There are various levels of upgrade – a small part of a program may need to be upgraded, or the whole program may need to be upgraded, or indeed the whole operating system, Windows or what have you, may need to be upgraded.

In the early days of computer systems upgrading would mean downloading some source code or source code changes called “patches”, making changes to the existing source code, compiling it and then installing it into a particular location on the computer.

English: C++ source code for an (unfinished) p...
English: C++ source code for an (unfinished) program, shown in the geany editor, screen shot Svenska: Källkod (c++) för ett ofärdigt program visad i geany (textredigerare), skärmbild (Photo credit: Wikipedia)

The technical terms don’t matter too much. I just want to convey how complex and manual the process was. That is fertile ground for errors to creep in. You download a bunch of code, trusting that it will work and fix some problems, some of which you may not even be aware of, and then transfer them to the existing source code.

You may mistype something, or mistakenly overwrite something in the existing source, feed the new code into the compiler, and out pops a new program, which you then transfer into the correct location and cross your fingers and test.

English: Works Records System - schematic
English: Works Records System – schematic (Photo credit: Wikipedia)

Incidentally a compiler is also a program and as such it has bugs which need to be fixed. What if you update or patch the compiler and it breaks? You can’t remove patch and re-compile as you just broke the compiler!

The solution is to reinstall the original compiler that came from the supplier, and potentially patch that to the point before you broke it. Or, if you a sensible system administrator, you restore the original compiler from the backup that you took before the upgrade. Either solution is tedious and frustrating.

Administrator interface in WordPress blog system
Administrator interface in WordPress blog system (Photo credit: Wikipedia)

Operating systems are the biggest upgrades that can be done. They are also the most dangerous because they are big and complex, which multiplies the chances of hitting problems or ending up with a system that doesn’t work.

Operating systems upgrades used to come as a magnetic tape or two, and a small book or manual of instructions. IBM for instance used to supply several books of instructions, hints, cross references, dependency lists and so on for each major upgrade. The necessary books for looking after IBM mainframes amounted to a library and that was what it was called.

Reel of 1/2" tape showing beginning-of-ta...
Reel of 1/2″ tape showing beginning-of-tape reflective marker. (Photo credit: Wikipedia)

IBM and others quickly realised that something needed to be done to help the system administrators to install, maintain and operate their big computer systems. Otherwise people would end up with unusable systems, and IBM would have to spend time and money helping them fix them up.

So the concept of a package was conceived and from very early in computing history, everything was supplied to the customer as a package from the actual operating system down to the programs that ran the printers.

English: The Siemens SIMATIC S7 SATEP 7 V5.4 S...
English: The Siemens SIMATIC S7 SATEP 7 V5.4 Software Package. Deutsch: Das Siemens SIMATIC S7 SATEP 7 V5.4 Software Paket. (Photo credit: Wikipedia)

A package was a cluster of programs that provided some feature or facility on the computer. Packages requisites and dependencies on other program – it would be no use installing a package that needs stuff printed, like an accounting package, if there was no printing package already installed.

Computer manufacturers also moved away from providing source code to customers. They supplied, for example, a printer driver or a compiler in binary, ready to run, form, so that the program binary could be simply dropped in place and it would run right away.

Embed from Getty Images

I’m simplifying a little, as there were other program chunks that, while they weren’t compilable source code, could not be run as supplied and which had to be intimately connected to other program chunks to produce a runnable program.

Nowadays the average user, professional or home, of the Windows operating system has never seen source code. All updates through Windows Update, and programs like browsers, games, utilities and other programs, are binary distributions, binary packages that the operating system installs for you. The Windows operating system doesn’t even provide a compiler.

A Nuon DVD player with a video game controller
A Nuon DVD player with a video game controller (Photo credit: Wikipedia)

This whole distribution system for programs and updates requires very rigid interfaces between the bits of the operating system itself and other programs which are not part of the operating system, and this is, when you know what is going on in the background, truly amazing.

Indeed, a Brazilian Windows systems operator can confidently install a program on his computer, which communicates with him in Portuguese, and so can a Windows systems operator in Finland or even Japan. All can expect that the program will work almost perfectly on all these diverse systems.

中文: (Photo credit: Wikipedia)

It’s slightly more blurry in the Unix/Linux world. There the operator or maintainer is given an option – use packages similar to those used with Windows or use source code. Many Unix/Linux users these days will never have knowingly compiled source code packages, though sometimes the package maintenance system may compile code for them. However this is rare.

Some Unix/Linux users however like to compile some things for themselves, so that they can get the very latest versions of things, and some even compile their whole systems from the ground up though this is rare.

Diagram of Monolithic kernels
Diagram of Monolithic kernels (Photo credit: Wikipedia)

So when you complain about your Windows system installing updates when you shut it down, reflect that things could be worse – you could have needed to compile them yourself.

Embed from Getty Images

All things are connected

English: computer network IP address
English: computer network IP address (Photo credit: Wikipedia)

There are networks everywhere. Not just the Internet or the LAN at work, but everywhere. A network could loosely be defined as being comprised of a number of nodes and a number of connections between them. A node is a point or thing which is connected through a connection to another node. A connection is what joins nodes together. This rather circular definition will do for now.

A family can be described by a network. Let’s consider a typical average nuclear family with parents and 2.4 kids. Errm, on second thoughts, lets make that 3 kids. If each person in the family is a node, we can’t really have 0.4 of a kid.

A Date with Your Family
A Date with Your Family (Photo credit: Wikipedia)

So there are multiple connections between any one family member and another. The father has a connection with his wife, his daughter and his sons. The daughter has connections with her father, her mother and her brothers. One way that this could be shown in a diagram is to draw a pentagon, each vertex of which is a member of the family and lines between the family member showing the relationships.

That’s a total of 15 interrelationships in a small family. Actually depending on the way you look at it, there may be more, as the father is the father of his daughter but the daughter is not the father of the father (obviously). This can be looked at at two relationships, one from father to daughter (A is B’s father) and another from the daughter to the father (B is A’s daughter), or one relationship between father and daughter.

Embed from Getty Images

If you consider that there are two relationships between any two family members, then each relationship can be considered to have a direction and a value. “A is B’s brother” and “B is A’s brother”, for example. Alternatively the relationship could be simple viewed as “brothers”, in which case the relationship has a value, but is non-directional.

I’ve described the familiar relationships in detail to hopefully bring out the facts that relationships between nodes and connections can be complex or describe complex situations. It’s entirely a matter of what you want the network to show.

English: Semantic Network with 7 nodes and 6 links
English: Semantic Network with 7 nodes and 6 links (Photo credit: Wikipedia)

The Internet is what people tend to think of when someone says “network” and it is indeed a complex network with myriads of interconnections across the globe, but in another way it is quite simple. Basically you have a computer, say your desktop or laptop, connected to the Internet. When you request a webpage, your request is sent to another node on the network, which then sends it to another node, and that forwards it on to yet another node and eventually the request arrives at the destination.

The clever part is that you might think that every “node” on the Internet needs to know where all the other nodes are, but in fact all it needs to know is where to send the request next.

English: nodes
English: nodes (Photo credit: Wikipedia)

It seems almost magical. Your computer doesn’t know where wordpress.com is, though it does look up its unique address (known as an IP address). It still doesn’t know where wordpress.com is, so it sends the request and the IP address to your ISP. Your ISP looks at the IP address and sees that it isn’t one local to the ISP, so it passes it on.

As noted above the message is passed on and on until it reaches its destination and then more magic happens as the remote machine responds to the request and sends the response all the way back. It may even travel back by a different route.

Embed from Getty Images

The magic is that some of the nodes know around 200,000 addresses on the Internet and where the next step should go. These addresses are in the most part partial in that the address will be like the street address, without the building number.

So although the Internet is a complex network with many many connections between nodes, the basic principle by which it works is simple, based on an address lookup system (DNS) and a simple unique address for each device on the Internet.

Embed from Getty Images

(OK there’s more to it than that, but the complexities are mainly at the “edges” of the Internet and mainly spring from the need for security and for organisations to have a “gateway” or single address on the Internet).

When we plan a journey over the road network, we generally have some idea of where we are going or we get out a map. We then scan it for the start and end of our journey and work out what direction we need to travel and the intermediate towns.

1945 map of the Pentagon road network, includi...
1945 map of the Pentagon road network, including present-day State Route 27 and part of the Shirley Highway. (Photo credit: Wikipedia)

But if we travelled like a message travels on the Internet we would first travel to the nearest town and ask someone where we need to go to get to our destination. He or she would point us to the next town to which he or she believes we should go. We would then travel to the next destination and ask again.

It would seem that such a process could result in us going round and round in circles, but eventually we will reach a place where the traffic director knows a large part of the roading network and is able to redirect us to another city which is known to be closer to our destination. Once we are on the right road, the process will eventually result in us reaching our destination.

Road to the A48 near Llancarfan - geograph.org...
Road to the A48 near Llancarfan – geograph.org.uk – 1297530 (Photo credit: Wikipedia)

Another network is the network formed by people we know and the people that they know, and the people that they know and so on. There is a theory that to from you, to someone you know to someone they know and so on, it takes six or less steps to reach any person on the planet. This is referred to as “six degrees of separation“.

Similar numbers can be calculated for smaller sets of people. The Kevin Bacon Number relates movie stars through films that they have starred in with other people. Number higher than 4 are rare. The Erdős Number relates people by the number of scientific papers that they have co-authored.

head of Paul Erdös, Budapest fall 1992
head of Paul Erdös, Budapest fall 1992 (Photo credit: Wikipedia)

These somewhat whimsical numbers do demonstrate how closely linked the human race is. So far as I know no study has been done of the importance of bridging individuals is. I’m talking about those who perhaps emigrate to a country, thereby directly linking together two populations that may be less loosely connected, increasing the connectivity and reducing the number of degrees of separation.

Six degrees of separation.
Six degrees of separation. (Photo credit: Wikipedia)