ZFS and Ubuntu Home Server howto

A while ago I bought myself a HP Microserver – a cheap, low power box which has four 3.5″ drive bays and an optical drive bay. I bought it to run as a home server which would back up all my data as well as serve up video, music and photos around the house. I had decided before buying that I wanted to store my data using the ZFS filesystem since ZFS was the only filesystem at the time which offered guaranteed data integrity. (It still is the only filesystem of release quality which offers this, although BTRFS is catching up.) I have become almost obsessed with ZFS because of the overwhelming benefits it offers but I won’t go into them here. Instead I recommend watching this talk by the creators of ZFS (Part 1, part 2, part 3) or read through the accompanying slides. [PDF]

HP Microserver - openI meant at the time to write about how I set up my system but never did get around to it, so here is what I did in the end. The server arrived with 2GB of ECC RAM and a 250GB hard disk. I eventually upgraded this to 8GB RAM and added two 2TB hard disks, although I started with one 2TB disk and added the second as a mirror when finances allowed. ZFS checks the integrity of the stored data through checksums and so it can always tell you when there is data corruption but it can only silently heal the problem if it has either a mirror or a RAID-Z/Z2 (Equivalent to RAID 5 or 6.)

ZFS is available as part of FreeNAS, FreeBSD, Solaris, and a number of Solaris derivatives. I initially installed FreeNAS 8. FreeNAS runs from a USB stick which I put in the handy internal USB socket, but while that was great for storing and sharing files it was not so good for running bittorrent on or using SSH to connect from out of the house. I also tried Solaris but I ended up going back to what I know and using Ubuntu Linux 12.04 LTS. Although licensing prevents ZFS from being included with Linux it is trivial to add it yourself.

I have assumed a certain level of knowledge on the reader’s part. If it doesn’t make much sense to you then you might be better off with FreeNAS or an off-the-shelf NAS box.

After installing Ubuntu and fully updating it I did the following:

sudo add-apt-repository ppa:zfs-native/stable

sudo apt-get update

sudo apt-get install ubuntu-zfs

…and that was it. It is a lot more complicated to use ZFS as your root filesystem on Linux, so I don’t.

Update: as of Ubuntu 16.04 ZFS will be supported directly. You will be able to install ZFS with the following rather than adding a third-party repository:

sudo apt-get install zfsutils-linux

Next, I had to set up the ZFS storage pool. The creators of ZFS on Linux recommend that you use disk names starting with /dev/disk/by-id/ rather than /dev/sda, /dev/sdb etc as they are more consistent (particularly the wwn identifier) so look in that folder to see what disk names you have.

ls -l /dev/disk/by-id/

The example pool name given is tank but I strongly recommend that you use something else. To create a single disk storage pool with no mirror:

sudo zpool create tank /dev/disk/by-id/wwn-0x5000c5004f14aa06

To add a mirror to that later you would type:

sudo zpool attach tank /dev/disk/by-id/wwn-0x5000c5004f14aa06 /dev/disk/by-id/wwn-0x5000c500400303dd

Or if starting with two disks to put in a mirror, your initial command would be:

sudo zpool create tank mirror /dev/disk/by-id/wwn-0x5000c5004f14aa06 /dev/disk/by-id/wwn-0x5000c500400303dd

I prefer to use mirrors as they are generally faster, however if you want a RAID5-type setup use:

sudo zpool create tank raidz1 … … … (3 or more disk identifiers)

The system will create your storage pool, create a filesystem of the same name and automatically mount it, in this case under /tank.

“sudo zpool list” will show you that a pool has been created as well as the raw space in the pool and the space available.

“sudo zpool status” will show you the disks that make up the pool.

Screenshot showing output of zpool list and zpool status commandsWhile you can just start storing data in your newly-created filesystem (in /tank in our example) that isn’t the best way to use ZFS. Instead you should create additional filesystems within your storage pool to hold different types of data. This will allow you to do things like set compression, deduplication, quotas and snapshots differently for each set of data or backup an individual filesystem with zfs send. You use the zfs command to create your filesystems. Some examples:

sudo zfs create tank/music

sudo zfs create tank/videos

sudo zfs create tank/backups

The above examples will create filesystems in the pool and will automatically mount them as subfolders of the main filesystem. Note that the name is in the format pool / filesystem name and there is no leading slash on the pool name.

Check that your filesystems have been created:

sudo zfs list

Screenshot showing output of zfs list commandNow we need to share the data, otherwise it’s not much of a server. ZFS will automatically manage sharing through NFS (Unix/Linux) or SMB (Windows) but you must first install the server software. For sharing to Windows clients use:

sudo apt-get install samba

To add NFS use:

sudo apt-get install nfs-kernel-server

You don’t need to configure much because ZFS handles most settings for you, but you might wish to change the workgroup name for Samba in /etc/samba/smb.conf.

To share a ZFS filesystem you change a property using the zfs command. For Windows clients:

sudo zfs set sharesmb=on tank/music

sudo zfs set sharesmb=on tank/videos

For Unix / Linux clients:

sudo zfs set sharenfs=on tank/backups

Or you can share the whole lot at once by sharing the main pool. The sub-filesystems will inherit the sharing property unless you turn them off:

sudo zfs set sharesmb=on tank

sudo zfs set sharesmb=off tank/music

You can check whether your filesystems are shared or not:

sudo zfs get sharesmb,sharenfs

At this point you should be able to see your shares from other computers on the network but you probably won’t have permission to access them. You will need to ensure that the file permissions and owners are set correctly, and you will also have to add an account and set a password for  use when connecting through Samba. If your username is ella then use:

sudo smbpasswd -a ella

to set your Samba password, and make sure that ella has permission to access all the files in your shared folders:

sudo chown -R ella:ella /tank/videos

Other useful features of ZFS that you should look up include snapshots and zfs send/recieve. I hope this short guide has been helpful if you are trying to set up a ZFS server. Let me know in the comments.

Updated 29/02/2016 to remove some personal details, add information about ZFS support in Ubuntu and add some explanations noted in the comments.

How to download from BBC iPlayer using get-iplayer for Linux

You can download BBC shows from iPlayer using software for Linux called get-iplayer. Because get-iplayer downloads the whole programme before watching there are no buffering problems. The files are also handy for producing clips from shows. get-iplayer is operated through typed commands but it’s not too difficult. Here’s how to install and use it on Ubuntu Linux.

Open “Terminal” from the main menu. You will get a window you can type in.

get-iplayer guide open terminal

Type: (Or copy and paste)

sudo apt-get install get-iplayer

Enter your password when prompted to allow the software to install.

get-iplayer guide install 1

Press enter at the next prompt to continue.

get-iplayer guide install 2

If all goes well then you should end up back at a command prompt like this.

get-iplayer guide installed

get-iplayer needs to download the list of programmes on iPlayer. Type:

get-iplayer --refresh

get-iplayer guide refresh

Then a list of programmes will be displayed.

get-iplayer guide programme list

The list is too long to view properly. There are two ways you can address this. To browse through the whole list, type the following.

get-iplayer | less

Then you can scroll up and down the list using Page Up and Page Down or the up and down arrows. Press q to get back to the command prompt.

Alternatively, you can search for what you want.

get-iplayer newsnight

Put quotes around the name if it has spaces in.

get-iplayer "daily politics"

Either way, the bit you need to know is the number on the left. That’s the number that you type to actually download the programme.

To download your chosen programme type this.

get-iplayer -g 610

Replace 610 with the number of your choice.

get-iplayer guide download 1

You’ll see some information about the video file and then a display of how much has been downloaded at the bottom.

get-iplayer guide download 2

After the download has finished the .flv file will be automatically converted to a .mp4 file.

get-iplayer guide downloaded

Open your home folder and double-click the file to watch it.

get-iplayer guide done

Why Take The Flour Back are wrong and I’m leaving the Green Party

A group calling themselves Take The Flour Back are opposed to Genetically Modified wheat. Their plan is to visit Rothamsted Park on the 27th of May 2012 and destroy the GM crops being grown as part of the experiment described here:

“Scientists from Rothamsted Research are conducting a controlled experiment to test wheat, genetically modified to repel greenfly and blackfly, which could help reduce pesticide use and promote sustainable agriculture in the future.”

Scientists from Rothamsted Research recorded this video in an effort to open dialogue with the protesters.

You can read a written message from the scientsts here: Rothamsted Appeal Letter [PDF file]


The protest group make a few assertions in favour of their vandalism:

Rothamsted have planted a new GM wheat trial designed to repel aphids. It contains genes for antibiotic-resistance and an artificial gene ‘most similar to a cow’.

Rothamsted deny that they have used any genetic material from cows.  In fact, the odour is produced by a protein called (E)-β-farnesene which is also produced by hundreds of other plants including plants which we consume, such as Hops. Rothamsted state: “To suggest that we have used a ‘cow gene’ and that our wheat is somehow part-cow betrays a misunderstanding which may serve to confuse people or scare them but has no basis in scientific reality.”

There is no market for GM wheat anywhere in the world.

This isn’t true. Plenty of GM products are sold and consumed, although some of that is through abusive behaviour by large US businesses. That is a different problem to address. Perhaps they mean that people are generally opposed to GM food, but whether true or not that should not stop experiments that could have far-reaching benefits. People should be allowed to make their own choice. I fully support the idea that any product sold which contains GM ingredients should be labelled to allow people to choose.

This experiment is tax-payer funded, but Rothamsted hope to sell any patent it generates to an agro-chemical company.

Rothsted completely refute this:

Our work is publically funded, we have pledged that our results will not be patented and will not be
owned by any private company – if our wheat proves to be beneficial we want it to be available to
farmers around the world at minimum cost.

Take The Flour Back continue:

La Via Campesina, the world’s largest organisation of peasant farmers, believe GM is increasing world hunger. They have called for support resisting GM crops, and the control over agriculture that biotech gives to corporations.

I wonder how this organisation can support this statement. I do not believe that GM crops increase world hunger, but I do know that large companies are abusing patents to force the purchase of GM seeds in many cases. This is a problem with those companies and not with GM products.

‘Take the Flour Back’ will be a nice day out in the country, with picnics, music from Seize the Day and a decontamination. It’s for anyone who feels able to publically help remove this threat and those who want to show their support for them.

Wrong. That should read:

Take the Flour Back’ will be a nice day out in the country, with picnics, music from Seize the Day and vandalism and destruction of scientific experiments before the evidence can be gathered by people who fear what they do not understand.

A news story on the Green Party website also added:

The trial is happening in the open air, meaning that when it starts to flower it can cross contaminate other wheat crops and wild grasses. This is a real threat.

However this is false. The wheat used for this experiment is self-pollinating and the flower fertilises itself rather than dispersing pollen through the air to another plant. The seeds are too heavy to disperse in the wind and the plant has no adaptations to facilitate insect pollination. Even so, the researchers have taken precautions against contamination:

The GM plots will be separated from the edge of the trial by 10 meters of barley (or space) plus a 3 metre ‘pollen barrier’ of wheat that helps to contain pollen from the GM plants within the trial site. All these plants are treated as though they are GM and harvested /destroyed at the end of the trial. There will be no cereals grown for 20 metres outside the boundary of the site and no wild relatives of wheat that can cross with our cultivated variety exist in the vicinity.
Couch grass species, distant relatives of wheat will be controlled in a 20 metre wide area around the trial site to avoid any slight possibility of cross-pollination.

The right to protest

I am completely in favour of a right to free speech and the right to protest, even with people that I do not agree with. However, I am horrified at the idea of destroying scientific research. To make good policy we need knowledge, we need evidence. We obtain evidence through research. To destroy this research before we have any results is like setting fire to a library. Risk assessments have been carried out, precautions have been taken, consultations were carried out. Even if those who object did not engage at that time surely if there were a danger then they could attempt to stop things now through legal processes which will make a decision based on evidence. I think the protesters have probably not done so because the evidence is not on their side.

Why I am leaving the Green Party

I have explained why I oppose Take The Flour Back, but I am also resigning my membership of The Green Party over this issue. London Assembly Member and former candidate for London Mayor Jenny Jones tweeted on the 10th of May:


This was followed up with a news story on the Green Party website which repeated some of the false statements made by Take The Flour Back and announced that Jenny Jones would attend the protest.

I believe this represents support from the Green Party for vandalism and the destruction of scientific experiments. One of the reasons that I took a long time to join the Green Party after betrayal by the Liberal Democrats in 2010 was the anti-science attitude that I saw with their policies supporting homeopathy and reacting against many things out of fear and contrary to evidence. Indeed, the Green Party knew that this was a problem and recently made an effort to make their policies evidence based. I joined about three months ago when I thought that things had changed but this fiasco over GM experiments has left me feeling that I cannot trust the party. Perhaps I have given the Greens less of a chance than I did the LibDems but after one betrayal I am not waiting around for another.

I no longer feel that I can trust political parties. Manifesto pledges mean nothing. Promises seem to lead to the exact opposite behaviour. Politicians happily lie and mislead the public as to their true intentions. I’ve learnt my lesson. I sent in my resignation to the Green Party a few minutes ago and I will no longer support any political party.

There is a campaign by Sense About Science and a you can sign the petition asking people not to destroy research.

Further Reading

Take the flour back

Rothamsted Research

Rothamsted Wheat Trial: Second generation GM technology to emulate natural plant defence mechanisms

I wish to thank my wife and scientific adviser, Karen Sumpter (@missnfranchised)

What is a Raspberry Pi?

I have in my hands, at last, a Raspberry Pi. No, not a delicious item of food, but a tiny, cheap computer designed to encourage people to learn how it works and make it do something new.

Handheld Raspberry Pi

The Raspberry Pi has been brought into being by the Raspberry Pi Foundation, a charity who put their intentions like this:

We don’t claim to have all the answers. We don’t think that the Raspberry Pi is a fix to all of the world’s computing issues; we do believe that we can be a catalyst. We want to see cheap, accessible, programmable computers everywhere; we actively encourage other companies to clone what we’re doing. We want to break the paradigm where without spending hundreds of pounds on a PC, families can’t use the internet. We want owning a truly personal computer to be normal for children. We think that 2012 is going to be a very exciting year.

The people behind the idea want to address the lack of people studying for computer science degrees and they identified two problems which may cause this. One is that the way the computers (ICT) are taught in school is boring and business focused, teaching office skills and not computer science, and the other is that computers now are far more expensive and complex than those in the 80s, such as the BBC micro or the ZX Spectrum. Those computers, unlike the modern PC or Mac, encouraged tinkering, learning and extending.

I recommend that you watch this report from BBC Click which looks at the problem: Can a £15 computer solve the programming gap? [BBC Click]

To keep costs down, the Raspberry Pi uses an Arm processor – the same as in most mobile phones – and does not have very much memory. It is designed to connect to a TV so that an expensive monitor is not necessary. It uses the free Linux operating system which is also open to being modified by the end user. The intention is that simple programming software will be included with the Pi to enable someone to simply plug it in and start learning to write code. The copy of Linux which is recommended for the Raspberry Pi currently includes Scratch, which allows kids to create and animate “interactive stories, animations, games, music, and art” by dragging and dropping blocks of computer code.

The Raspberry Pi model B sells for approximately £30 once you add VAT and delivery and will be available from RS and from Element 14 / Farnell once they have the stock available. There will eventually be a Model A which will be a few pounds cheaper but will lack a network socket and will have only one USB socket. In addition to the Raspberry Pi itself you will need a memory card (SD card) to hold Linux, a keyboard and mouse with USB connectors, a power supply of the Micro USB sort used by many modern mobile phones, and access to a TV or monitor with a HDMI or a composite video connector. These may already be available but if not will add a few pounds to the cost.

At the moment the Raspberry Pi is mostly selling to hobbyists and enthusiasts rather than into education. That’s OK though; at the moment the software for the Pi requires quite a lot of experimentation and difficult-to-follow steps to make some things work and it isn’t really ready for prime time. Many of those people fortunate enough to get their hands on an early Raspberry Pi are working out the problems and feeding information back to everyone that will use one in the best tradition of open source software. By the time kids start to see these in schools in a few months there will hopefully be a lot more software ready to use without too much knowledge necessary.

Unless you already knew about the Raspberry Pi, you probably can’t have one at the moment. Interest in the Pi has been astonishingly high and I think that several hundred thousand people have placed pre-orders or signed up to reserve one. The initial batch was only ten thousand! I signed up for mine at 1 minute past 6 (am!) on the launch day three months ago and I have only just got one so new orders will take a few months yet.

Coming soon: I plan to write about getting started with the Raspberry Pi, what you need, and how to set it up and do something useful with it.

More Information

Can a £15 computer solve the programming gap? [BBC Click]

Computer programming at school [A Latent Existence]

Raspberry Pi: About Us [Raspberry Pi]


Computer game teaches depression management techniques

SPARX characters

A study carried out by the University of Auckland in New Zealand has found that using a computer game which teaches depression management techniques based on Cognitive Behavioural Therapy can reduce depression in teenagers more effectively than conventional treatment.

The game was developed by Metia Interactive under the direction of The Werry Centre for Child and Adolescent Mental Health at The University of Auckland and a number of actors, musicians and artists donated their skills to help create the game.

This video explains the thinking behind the game.

SPARX trailer

You can read the results of the study at the BMJ: SPARX study results

The abstract gives us this information:

Objective To evaluate whether a new computerised cognitive behavioural therapy intervention (SPARX, Smart, Positive, Active, Realistic, X-factor thoughts) could reduce depressive symptoms in help seeking adolescents as much or more than treatment as usual.

Interventions Computerised cognitive behavioural therapy (SPARX) comprising seven modules delivered over a period of between four and seven weeks, versus treatment as usual comprising primarily face to face counselling delivered by trained counsellors and clinical psychologists.

Conclusions SPARX is a potential alternative to usual care for adolescents presenting with depressive symptoms in primary care settings and could be used to address some of the unmet demand for treatment.

Although this treatment has only been tested in teenagers I think that is only because that is the focus of the centre where it was developed. Computer gaming is popular in a far wider age range than just teenagers. I hope that this kind of treatment could be used to treat adults too, not least because I think that I would gain much more from this method myself than I have from the conventional CBT that I have been treated with so far.

SPARX is intended to be available to the public soon, although no information is given as to whether there will be a charge for the game.

Read more at the SPARX web site

Project details: SPARX – Gaming helps fight depression

Press release: E-therapy effective in combatting youth depression

BMJ: SPARX study results


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.

Bringing the computer to me

My various illnesses keep me in bed a lot of the time. Not only that, but quite often I don’t have much choice about what position my body goes in. At my better times I can sit up in bed with my laptop or book on my lap. If slightly worse then I put my laptop on the shelf next to the bed and lie sideways to use it, but that can quickly lead to pain. If I am really exhausted then I quite often lie on my front with my phone on the bed next to my head and one hand on the phone to type with, however this still causes pain in my arm, hand and shoulder and sometimes my lower back too.  At my worst points the only near-comfortable position is completely flat on my back with my arms on the bed by my sides. This obviously makes it difficult to read a book, or use a laptop computer, or even just use my smartphone.

I do have other options for entertainment at these times – I could use the radio or an MP3 player to listen to music or audio books. However I use my computer extensively to keep in touch with friends (and chat to people to minimise my depression) and to write on my blog. If I have any chance of paid work in the future it is likely to be writing or programming with the aid of my computer and so being able to use it more in bed is quite important.

Ultra 510i Long Reach Inverted Wall Mount LCD Arm
Ultra 510i

I’ve been thinking about solutions to this problem. The logical solution to me would be to mount a computer monitor over the bed on an arm attached to the wall. This isn’t exactly easy since there is a shelf unit between the bed and the wall to the side of me which is quite a big gap to bridge. I could attach an arm to the wall behind the bed but again it has to extend quite a long way. In addition I want the monitor to be able to swivel for viewing above me or in front of me. There don’t seem to be many arms that fit the specification, although I have found two from ErgoMounts that might work. The Ultra 510i Long Reach Inverted Wall Mount LCD Arm (Pictured to the right) costs £411 while the Wall Mount VisionPro 500 Series Long Reach Gas Assisted LCD Arm (Shown below) costs £215 but is not quite long enough to be comfortable. With this solution I would have a computer of some sort next to the bed, and a wireless keyboard and mouse on my lap.

Wall Mount VisionPro 500 Series Long Reach Gas Assisted LCD Arm
VisionPro 500


Such a system might work, but is quite expensive and limited so what are the other options?

Duncan from Trabasack suggests that I could use a Trabasack Mini lap tray/bag to suspend a netbook computer from. The Connect version has a velcro front and points to attach straps, so I could attach the netbook to the Trabasack with velcro and use the straps to hang it from a simple arm attached to the wall which should be cheaper than an articulated arm. The downside of this is that I would have only the small screen of my eeePC 900 and it isn’t very powerful either, but I can use it to get remote control of the PC on my desk which would do all the work. Duncan has sent me a Trabasack to try, so I’ll report back on how that goes.

Trabasack Mini Connect eee PC on Trabasack

Another option which has caught my attention is virtual reality goggles. Basically glasses with screens inside, the best available are made by Vuzix. There is a whole range of Vuzix iWear. The Wrap 280 widescreen is the bottom of the range, but it has a resolution of 384×240 (That’s how many dots fit on the screen) which makes it useless for text-based computer work and barely usable for watching video. It is, however, available for £99 or even cheaper refurbished. The top of the range Wrap 1200 has an almost-acceptable resolution of 848×480 (still pretty low) but costs £399. The Wrap 920 looks like it might be worth a try though. It has a resolution of 640×480 which is what computers displayed about 18 years ago but is only slightly lower than what my smartphone displays so it might be usable. The 920 is £199 but is also available refurbished for £129. All three of these options would need a £40 adapter to plug in to the VGA output of a computer. I could use one of these displays in any position in bed, but whether I can use them for writing a blog post or chatting to people remains to be seen.

Vuzix Wrap


Microwriter - the original chorded keyboard
Microwriter - the original chorded keyboard

Then there is the question of keyboard and mouse. While it is straightforward to use a mouse on the bed, even with my eyes covered with display screens, a full size keyboard isn’t ideal. I can touchtype but I still have to keep my hands up on the keyboard on my lap rather than down by my sides where they are more comfortable. To solve this problem I have been looking at Chorded Keyboards. These devices use only a few buttons to type the whole alphabet by pressing combinations of keys at the same time. The original Microwriter would have been useful here but two modern versions I am considering are the CyKey and the Twiddler 2.

The CyKey (shown below) has nine keys instead of six but works with combinations of keys in a similar way to the Microwriter. It costs £74. It should work alright when placed under my hand on a bed and allow me to type without moving my hand around. Unfortunately I will still have to move my hand to use the mouse.

CyKey chorded keyboard
Twiddler 2 chorded keyboard
Twiddler 2

The Twiddler 2 (pictured on the right) has a few more keys than the Microwriter or the CyKey but the principle is the same. It has a thumb-operated pointer stick too so that it can replace both keyboard and mouse. The Twiddler is popular with designers of wearable computers because it can be used without sitting down and using a table. It is more expensive than the CyKey at $199 plus postage from the USA but looks to be the best option if I can find the money.

I am also planning to use a Raspberry Pi as my bedroom computer. The Raspberry Pi is a new tiny cheap computer intended for use primarily to encourage children to learn computer programming but it looks to have many other uses. It costs about £29 for the top model and runs Linux. I intend to use it as a Thin Client, to connect to my PC via Remote Desktop, meaning that it will show me what is on my PC in a different room, and my keyboard and mouse in front of me will control that PC.

All of this portable technology has given me some interesting thoughts. I could team up a Raspberry Pi with a Vuzix Wrap 920 display and a Twiddler 2 chorded keyboard. Add in my USB powerpack and a WiFi/Bluetooth adapter to connect to the internet, and I will have a complete wearable computer for use anywhere. I quite like that idea if I can possibly find the money. Now, about my early birthday presents…

Raspberry Pi
So new it hasn't got a case yet

Broken Tweetdeck

I’m more than a little baffled by the new version of Tweetdeck. It has lost significant functionality compared to the previous versions. The new version:

  • Can’t delete tweets.
  • Can’t see the twitter @ name responsible for retweets because only the real name is shown.
  • Can’t see from a profile whether that person is following me.
  • Can’t reply to or retweet tweets when browsing another person’s timeline.
  • Can’t send a tweet to Facebook as well as twitter when retweeting.
  • Doesn’t show all of my tweets that have been favourited or retweeted, especially after a restart.
  • Insists on quoting tweets instead of the traditional RT @name: tweet.
  • Doesn’t copy hashtags into replies.
It also has changes that I dislike but can live with. It:
  • Requires extra clicks to see conversations attached to a tweet.
  • Won’t let me click in a column to select what scrolls with the mouse wheel as it loads the details for the tweet clicked on.
  • Doesn’t reply to tweets within the columns any more, which means can’t reply to one tweet while composing another.
  • Loses a tweet in progress if it is closed.
  • The colour scheme includes significant white parts. The dark colour scheme of Tweetdeck helped me to communicate when migraines made white web pages hurt.

I’m baffled as to why they would break Tweetdeck like this. The cynical view is that Twitter want to break Tweetdeck so that people return to using the Twitter website directly, but that doesn’t entirely make sense. Tweetdeck provides abilities that Twitter just does not, like the ability to see tweets streamed in real time instead of periodic updates, and can show replies, messages and lists all at the same time alongside the timeline. If I were twitter I would brand Tweetdeck as Twitter Pro and call it a premium service. Instead they seem to be deliberately making it like the Twitter website and breaking it. Unfortunately there is still nothing better to move to.

Of CPUs and GPUs and FPUs and APUs

After looking at AMD’s new APUs combining CPU and GPU recently I asked the question “What is the point of integrating the GPU with the CPU when having the GPU in the motherboard chipset does just as well?” I had a couple of suggestions, including that it moved the GPU (a big heat source) under the main heatsink which might allow for better cooling. Now I have had a think about it some more and have realised a couple of other things.

Now that the memory controller is built in to most CPUs, moving the GPU in there too might allow faster and lower-latency memory access. Although probably still slower than having a dedicated GPU with GDDR5 RAM, the latency to access raw data from main memory will be improved.

More importantly, however, is the growing trend of offloading number-crunching tasks to the GPU using NVIDA’s CUDA or AMD’s OpenCL. Currently this is limited to software that has specifically been coded to make us of this function. Some high-end video editing effects plugins, video compression, Photoshop plugins, and some large scientific models are about all that make use of this. It looks like more and more things will be converted to make use of the extra power over time.

Since using the GPU marks a shift from using the CPU, the CPU could be simplified as these tasks move out. Current CPUs include plenty of Single Instruction Multiple Data (SIMD) instructions that could be replaced by GPU functions. The GPU can take care of both integer and floating point operations, so potentially the FPU could also be done away with. Actually, in AMD’s new FX Bulldozer architecture CPUs there is only one FPU between each pair of CPUs and so I wonder if this is because FPUs are less needed than main cores, or because of an intention to move floating point functions away from the CPU.

When you look at everything that can be moved from the CPU to the GPU, integrating the GPU in the heart of the computer suddenly seems like a much more sensible idea. I can envisage a time when CPU and GPU cores come in pairs (or 2 cores per GPU, or whatever the best ratio is) and the CPUs are much simpler devices without SSE SIMD instructions or FPUs. I know that it is AMD’s intention to make an APU combining Bulldozer with a GPU; perhaps we will see a Bulldozer-like design where the FPU in each CPU-pair module is replaced by a GPU.

Is this feasible?


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.