It’s PC gone mad, I tell you

When I was in the fourth year juniors, way back in the history of time, my Dad brought home a Sinclair ZX Spectrum. It was the first computer we had, and while I admit that we (my big sister, my little brother and I) mostly used it for playing games, I also started using it to write basic programs. (By basic I mean simple, and not those written in BASIC, although the basic programs I wrote were written in BASIC). 

At first I tended to play with graphics, but I soon learned I had (and still have) very little talent for that. While I understand the basic of form and web-page design, I generally tend to make them as functional as possible without giving any thought to aesthetics and user interface design.

So I moved from graphical programs to what I would describe as system programs. By the time I had finished junior school and moved on to senior school, I had already written a program to manage a database of videos and video games. Compared to modern databases it was truly appalling, and I suspect if I were able to go back and look at the code, I would be somewhat ashamed of what I wrote, but still – the fact I wrote a database system at the age of eleven is something of which I am quite proud.

I continued to write programs, sometimes taking them from various computing magazines, sometimes making them up, sometimes taking them from computer magazines and then adapting them to my needs.

For my final year project at high school (when I was fifteen/sixteen) I wrote a suite of D&D programs. The first allowed you to create and manage a character, the second allowed you to create and manage a dungeon and the third allowed you to run the character through the dungeon. 

It wasn’t great. There was no way to manage the dungeon once the game had started – writing a fully functional AI program is beyond be now, let alone when I was sixteen, so there was no "dungeon master" element of the game – and the character and dungeon design was very, very basic. 

However I passed the computer course, and the program was rated as very good. 

I moved on in to the sixth form, but didn’t take any computing courses there. Instead I took maths, physics, chemistry and general studies. But, due to events beyond my control, I pretty much failed all of those courses and ended up with pretty crappy grades.

Never the less, I went off to university, and I bought my first laptop. Again, by modern standards, it was very under powered. To give you some idea, the web-browser you are using to view this entry would have taken up about 10% of the hard drive and probably about 50,000% of the memory.

One of the first things I did was to install Turbo Pascal 6 – not the most flexible languages, but one of the easiest to use. It was designed as teaching language, to allow students (and others) to pick up the basics of computer programming in an easy and structured manner. And, to this day, it remains one of my favourite languages to program in, even though it has been superseded – first by Delphi, then by C#. 

Time went by, and I continued to program, even while I was working in other jobs (notably a lot of public service jobs – even though I am not all that confident and am somewhat shy, when I am talking to a member of the public on behalf of someone else, I am a completely different person) and then I went back to university to get a proper qualification in computer programming, because while I was quite good at what I did, it is hard to convince employers of that without some documentation to back it up.

My first "proper job" – as a software developer for The Company – taught me a lot. Not only about programming, especially Object Orientated Programming (something I took to almost at once – if I were the religious type, I would say that OOP is tantamount to being the word of god, but since I am not, I won’t), but also a great deal about network support. I had the fortune/misfortune to be seated opposite the door to the bosses’ office. And, as a result, any time there were problems with the network, they came out, found me and asked me to fix it. 

After a while, I ended up studying up on networking systems on my own time, partly out of self-defence but also because – again – the beauty and simplicity of the tcp-ip subsystem borders on the divine (if I believed in such a thing).

But, as with all things in life, my time at The Company came to an end, and I moved on to my current job at The Hive.

The Hive (not its real name, in the same way that The Company was not the name of the company I worked for before The Hive) is the first of a new model of shopping centres. We have a number of units of various sizes that shops can move in to (which tends to lead to smaller, individual companies rather than larger chain stores), and each of these units has a fully integrated computer system with database storage, hard drive space, financial software and so forth.

It allows shops to come in and set up without having to pay for their own infrastructure set up and associated costs. Which, as I mentioned before, tends to lead to smaller companies as opposed to larger chains, because they tend to have their own ways of working and their own infrastructure and internal systems.

In total, we have around fifty businesses, and sixty units. The recession has hit us a little, but not as bad as my bosses (The Trinity) were predicting.

My job has three main parts – most of it is supporting the IT infrastructure (rather than the physical infrastructure – I am a programmer, not a carpenter) and debugging all the problems that pop up, the second is providing custom software for our customers when they need it. While we provide a fairly comprehensive set of tools for the businesses, we can’t predict what every customer will need, but we are willing to help them along if they do need more than we provide.

The third part is where my experience in public service comes in – since we have a relatively small staff, I am also responsible (at least in part) for dealing with customer complaints and inter-shop disputes. They don’t happen often, but it seems my bosses trust me enough to smooth things over.

I have to admit, I love it. I get to spend my time doing what I love – programming and playing with computers – but occasionally it gets broken up and get released in to the big wide world for a  bit. 

However today – today was not one of the better days. 

We have a centralised filing system for documents that relate to the shopping centre. They run from terms and conditions, to maps, to user guides about the software and networking systems, to all sorts of other things. We also have a central jukebox that pumps music in to the stores (which they tend to like, because it has a wide range of music and it means they don’t have to pay the licensing fees for the music, since we have paid them already).

Today started off quietly, but within an hour of the centre opening, it became apparent that the songs being requested by the stores were not the songs they were getting. And the documents they were pulling down from the intranet were not the ones they wanted.

Normally when wehave problems with the network, it just stops letting people access the files – the music stops, the documents aren’t available and so on. And that’s generally because the MCP has failed in a catastrophic manner. It doesn’t happen often – the last time was three years ago, and lead to me spending thirty two hours straight at the centre (my general shift is eight hours during the day while the shops are open).

But the fact files were being randomly substituted for others was more than a bit confusing, and – instead of spending the day updating the disaster recovery software (like I was supposed to be doing), I spent most of it working in the MCP, debugging and tracing the fault.

The MCP is the nickname for the three servers that make up the core of the control system. The employee who put the system in originally was as much of a computer nerd as I am, and was as much of a fan of TRON as I am. But oddly, the three original computers were named Peter, Paul and Mary, rather than Kevin, Alan and Lora. 

Each one of the computers has been replaced since the system was originally set up, and now we have Marcus, Caius and Aro (the alternatives were Harry, Ron and Hermione or Rod, Jane and Freddy. I think we went with the best choice!)

I won’t bore you with all the details as to how I solved the problem, but it turned out that one of the configuration files on Aro had become slightly corrupted, and the offset values it used to access the music and documents had been altered slightly. So when it thought it was pulling out Document A, it was getting Document Z and when it was looking for Burning Down the House (tune 923) it was getting We Are The World (tune 319). 
 

There was a pattern in how the numbers were being mixed up which is what lead me to the file on Aro, but it took me a fair while to figure that out and almost melted my brain in the process. 

Once the file was corrected, everything went back to normal, and peace was restored to the kingdom. 

Of course – we (the other codemonkeys and IT bods) have no clue what caused the corruption in the first place – there was a minor upgrade to the system a few weeks ago, but if that was to blame then we would have seen these errors a lot earlier.

But, for now, we are just happy that it is functioning again, and people can get the music they want. (Although the Christian bookshop playing "Bring Your Daughter To The Slaughter" was something I never thought I would hear, even if they found it slightly less amusing than I did) so all is right in the world. 

Which is nice. 

Log in to write a note