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.

Computer programming at school

There has been an increasing movement recently to have more computer science and computer programming taught in schools. I wrote about this a while ago in Why kids should learn to program computers and several organisations have begun to campaign about this. See Games, government and the future of coding in the UK [Guardian Gamesblog] and Programming should take pride of place in our schools [The Observer]

To me, the campaign to teach computer programming and computer science in school is really in two parts. The first part is to expose children to computer programming at a young enough age that they get a chance to learn it while it is easy for them, and to allow some of them to discover a love of coding that they might otherwise never pay attention to. The second part is to make sure that those who then choose to study Information and Communications Technology (ICT) at GCSE level are actually taught computer science – transferable principles of computing – and not just how to use computers for business. At the moment the ICT GCSE really consists of office skills. Learning to use a word processor, spreadsheet, database, and make presentations is quite important but I believe that these are simple things that every child should know in order to do their homework. In effect the ICT GCSE is like teaching someone to write but only on headed paper branded with a Microsoft logo. It is a necessary skill made so focussed and narrow as to be a bit pointless. Those who have actually chosen to study computing ought to be given a much deeper understanding of how computers work and impact the world around us.

At school in the 80s there was a BBC micro in the corner of nearly every classroom. Some children played educational games on them. Some used the simple word processor to type up their work. Some of us discovered that we could make the computer do things by typing commands. Fun things. For example, the old classic:

20 GOTO 10

The next question after seeing this little gem is often “What else can I make the computer do?” Of course not everyone asked this question, not even a majority, but those who did often went on to acquire a new hobby and a love of learning about these machines. Many of those people entered the computer software industry and now produce games and applications for a living. Others may use their skill to apply information technology to their job in all sorts of industries. Without the same opportunity and prompting present in classrooms any more, that chance of an early introduction has been lost.

One argument for teaching computer programming in schools is that it is a useful skill for future employment. In fact writing software is one thing that the UK has a good reputation for in the global market. However less people are going into the software industry now and the UK needs more programmers to keep the industry going. This might well be due to children not being exposed to coding early on and never discovering their talent or love for coding. It might also be because computers in the 80s did very little without being programmed to do something interesting by the end user. Now we have games consoles and web browsers so that children don’t have to learn any coding at all to get entertainment from computers. Preparing people for work is not the only reason to teach programming; I think that part of school should be a chance to cover a wide range of subjects so that children can discover new things that they might then choose to study at a higher level or go on to learn on their own as a hobby.

This video from BBC Click talks about the Raspberry Pi project to get ultra-cheap ultra-simple computers back in front of children and into classrooms. Can a £15 computer solve the programming gap? [BBC Click] It also visits a classroom where 11 year old children are being given the chance to create computer games as an introduction to programming. It is very interesting to see how they seem to take to it easily and get very absorbed in the project. This is what is being lost if we do not introduce them to the subject at that young age.

I have seen the argument that computer programming should not be taught in schools because there are other more important subjects that should be taught. There are many things that children ought to learn about and not enough time to teach them. I can sympathise with this argument to some extent. There are important skills that ought to be taught. I would suggest that managing a household budget and cooking are two essential ones. However, children are also taught subjects that might be to develop indirect skills or might even be just for fun.  I think that they should be introduced to computer programming very young, between the ages of 6 and 12. At these younger ages I don’t think that there is such a conflict between subjects, although I could be wrong about this. At any rate, an introduction to programming would not need to be dragged out over a long period. It would suffice to introduce the subject in a few lessons and then allow those that have had their imagination captured by the subject to continue in their own time with access to school resources.

If those children then go on to study ICT at GCSE, they might be disappointed with its focus on office skills. Reform of the ICT GCSE only affects people that have chosen to study it. I know of many people who have been frustrated at what they were directed to study because it was what they already knew and does not stretch them, and because they were not taught anything more advanced. I would like to teach office skills to all students early on as part of other subjects, (I think that happens already) and then people choosing ICT ought to get the more in-depth teaching that they would like.

What do you think? Do you agree or disagree? Vote in the poll and have your say in the comments below.

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.