Home server project – HP Microserver

HP MicroserverThere are a few computers in our house. I have a PC on my desk. I have another PC connected to the TV which we use for watching and recording TV, films, music, and playing games. I have a netbook in the bedroom for those days when I can’t get out of bed, and an Android phone which I use for music and video too.  My wife has a laptop and an Android tablet computer.Keeping track of our files on all of that can be a bit chaotic and so I have an old PC which works as a file server – a central repository for all of our music and video files which all of the other devices can fetch files from.

That file server consists of an old under-powered PC which runs FreeNAS and has a couple of not-quite-worn-out laptop disks in it because those were all that I had. Since this server isn’t very fast or reliable, Last week I bought a 2TB hard disk to replace the dying disks. I also had an email from ebuyer (my normal source of computer parts) which featured a HP Microserver for £229 with an offer of £100 cashback from HP. A new server capable of running four disks with low power consumption and a warranty all for £129 seemed like a fantastic deal to me, so yesterday I bought one. (It had gone up by £10 though.) The server came with a 250GB hard disk which is a bonus since hard disks are still very expensive after flooding in Thailand destroyed several factories recently.

HP Microserver - open

I intend to use the new server to hold all our music and video as before, plus our photographs. I will store all my files and documents on it, and I will backup the other computers to it. Now that I have my new server I have to work out what operating system I am going to run on it. My old server has FreeNAS installed onto a 2GB USB memory stick, and the hard disks are formatted with ZFS for high file integrity. I could do the same with my new server but since the new server is a bit more powerful (Dual-core CPU, 6GB RAM) I want to also run a couple of Linux virtual machines on it and I can’t easily run virtual machines with FreeNAS as the host operating system. I don’t want to run a file server from a virtual disk either, to avoid any data loss. Oracle Solaris has ZFS so I could run that on the new server and then run VirtualBox on that to host my Linux VMs. Another option is to run a bare metal hypervisor like VMWare ESXi or Citrix Xenserver, and then run Linux and FreeNAS as clients under that. I still wouldn’t want to serve my files from a virtual disk but I could give the FreeNAS virtual machine direct access to the 2TB hard disk. The only question then is where the virtual machines reside. I would prefer not to use the 250GB disk as that would be a welcome upgrade in my Media Centre PC which currently has a horrifically slow IDE disk which struggles to record two programmes at once. I could possibly host the virtual machine for FreeNAS on a USB memory stick too, maybe even the same one as ESXi is installed on although I don’t know if that can be done. I am curious as to whether ESXi could load a second virtual machine through an iSCSI drive served up by another one of it’s clients but that does seem like a recipe for slow operation and data loss.

Comments on which way to go are welcome.

Why kids should learn to program computers

I believe that children should be taught computer programming at school and they should be taught it early on. There are arguments against this. Who needs to program a computer, anyway? When will the average person ever need to do that? That’s technical stuff. No normal person is interested in that. It’s for nerds.

Or is it?

Modern civilisation lives on knowledge. Information. Information is everywhere, in everything that we do. We learn, we write down what we have learnt; we create art, and store it, copy it, distribute it. We do newsworthy things and we broadcast news. This is the information age, and it runs on Information Technology.

In this information age it is vital that we can all produce, modify and access information and that means using computers. There are not all that many jobs that do not involve a computer in some way. Few people would disagree that using a computer to access the internet, produce documents and so on should be taught at school but I think it should go further than that. I think that children should be taught to write computer code; the lists of instructions that tell the computer how to do everything from adding up the numbers in your spreadsheet to moving an alien across your screen. (Not such different tasks as you might think!)

There is logic to my thinking. To the average person, a computer is a mystical object. It has, they think, a mind of its own. Computers DO things without reason or maybe just to spite them. Except that is not true, but without knowledge of what goes on inside the computer it seems like it.

Programming isn’t creating the computer, it’s operating it. It’s like driving the car rather than building it or being a passenger. Creating a computer program gives the programmer an understanding of what computers really do. Once it is understood how a list of instructions can add two numbers together or draw a picture on the screen it starts to become easier to work out why the computer always pops up that incomprehensible message when you try to do something that it doesn’t like. It is not just that learning programming makes it easier to understand computers either. Britain was – is – very good at creating computer software. When manufacturing has all moved to countries with cheaper labour, creating new computer software and games might be one of the few areas where people can make a living. Like all languages, learning to speak to computers is best done at a young age and those that do so find it easier to write software later in life. Then there is the joy of actually creating something yourself, and the convenience of creating something that works the way you want it to instead of the way that some distant programmer wants it to. There are plenty of jobs where it would be useful to be able to tell the computer what to do instead of waiting for someone else to tell it. Scientists need to store and analyse data from their observations and experiments. Sales managers need to be able to extract meaningful information from customer databases. Both of these situations could be speeded up by knowing what the computer can do and how to do it quickly.

A BBC computerSo if programming should be taught to enable people to make the most of the information age, how should it be done? In the eighties every school had a BBC microcomputer. Homes had Sinclair Spectrums, Ataris, BBCs and C64s. The important thing about those computers is that the first thing we saw when we turned them on was an empty screen waiting for computer code to be typed in. Sure, the first thing many people would do is type LOAD “” to fetch a game from cassette tape, but everyone would eventually get around to typing 10 PRINT “Steve is great” / 20 GOTO 10 and from there people would often become curious about what else they could tell this computer to do. The current batch of programmers in their thirties and forties are good at what they do because of early exposure to simple computers that practically demanded that the end-user programmed them. Modern computers just don’t present the same opportunity to program them. To program a modern computer you have to realise that you want to program the computer, and then find out what you need to install to help you do that before you can even get started. Free software is available on the internet to get people started but hardly anyone knows that it is there.

This is why I think that programming should be taught very early at school. Children can sit down at a computer that already has what they need to program it and can be guided through the steps. Some children might not enjoy it but they will at least have encountered the basic ideas that make a computer function, and have some understanding of why things work the way they do. Other children will discover a talent for programming that they might otherwise never realise, and they can go on to produce great things.

As well as teaching programming early on, I also believe that concepts like web browsing and word processing should be taught at a young age. These things aren’t optional, they are used in nearly every other subject at school. As using a computer is a fundemental skill to be taught to everyone anyway, I think that the IT GCSE must allow thost that are interested to go a lot further than that. A GCSE in IT should teach advanced programming and computer science, not things that everyone should already have been taught like how to make a Powerpoint presentation.

I realise that there are other demands on time in schools and also that many people will not be interested in computer programming. I should point out that there are plenty of things that people might not be interested in but should still learn the basics, for example, cooking. I’m not calling for years of lessons on the subject of programming. What I would like to see is just a few lessons somewhere between the ages of 7 and 14 (preferably nearer 7) which take children through creating a simple game. Just enough to capture the imagination and explain simple concepts. Children at that age would hopefully still be curious enough to be interested.

Apart from teaching programming in schools, there should also be more opportunities to learn at home. One intriguing project that might help with this is the Raspberry Pi project. Raspberry Pi is a tiny computer the size of a credit card which will connect to a TV just like those eighties computers and will have all the tools necessary to learn programming already on board. It should be a case of plug in and start writing code. The best bit, though, is that the Raspberry Pi is expected to cost about £15. These things should become ubiquitous and everyone should have the chance to program a computer.