Victoria College First Lego League 2014 – We won!


For the past 2 months I have been working with a group of excellent year 9s (also known as year 8 in England and Wales) from Victoria College, Belfast on the First Lego League competition.

I have competed in the competition as a student now 3 years running and as I am now too old, decided I would love to mentor a new team, preferably near Queens University, Belfast.

After chatting with W5 (Northern Ireland STEM centre and regional organisers) and  a rather surprising and unpredictable set of events, I ended in Victoria College, just 5 minutes down the road from Queens accommodation (Elms village).

The team

By the time all of this was organised and we got started, it was the 4th of October, putting the team 1 month behind all the other teams in Northern Ireland who received their kit at the start of September.

The students chosen to take part were 21 year 9 girls in a “Learn to learn” class. This will be ringing alarm bells with First Lego League veterans as the team sizes are limited to 10 students. As the class was this size, they were split into 2 groups to work with the final decision on those representing the school in the team of 10 being taken the day before the competition. The 11 additional students not on the team (got a day off school and) came down to W5 to support the 10 on the team.

Through their learn to learn classes, the girls were provided with 90 minutes a week to work on the competition, but any First Lego League team will tell you, that is nowhere near enough! So on top of this, the girls in separate groups (project, robotics, programming) came to after-school sessions and also a number of Saturday afternoon sessions to get the needed work finished.

It was great to see the girls build their teamwork, programming and presentation skills throughout the competition.

The competition day

So on 2nd of December we arrived at W5 in the Odyssey arena as by far the single largest group and were informed we were on first!

Robotic games

The robot going to throw the ball into the net
The robot going to throw the ball into the net
Making sure it is perfectly lined up
Making sure it is perfectly lined up

On the first match of the day, the girls scored 185 points. This stayed the highest score overall till after lunch when Dalriada School and Magherafelt High School both also got 185 points bringing it to a 3-way tie.

In the end, the winning team was decided by their second highest score.

The girls also had a number of other sessions (each weighted 25% in the overall award) including.

Robotic Design

Showing the Robotic Design judges the robot
Showing the Robotic Design judges the robot

Core Values

Core values judge asking the girls about their teamwork
Core values judge asking the girls about their teamwork


A lot of work (and conductive thread sewing) went into making their project, Rainbow the dog. Given the competition is still ongoing, we will not be releasing full details on Rainbow, but will say she contains a Raspberry Pi. The judges were extremely impressed with the overall idea and loved the prototype. They were also impressed with the breadth of research conducted by the girls including a number of surveys.

Taking questions from judges
Taking questions from judges
Two rather impressed judges
Two rather impressed judges
Rainbow the dog
Rainbow the dog

The Result

In the award ceremony the girls were awarded the

Robotic Games award

and were awarded…..

The Champions award!


This is the overall Northern Ireland FLL award meaning they now progress on to represent Northern Ireland in the UK and Ireland finals in Loughborough in February 2015.



A well deserved celebration by the team from Victoria College
A well deserved celebration by the team from Victoria College


A huge congratulations to the girls! Their hard work and commitment really has paid off.



A few thank you’s are due.

First, huge thank you to Kanios Software, the team sponsor for Victoria College. Without them, we would not have been able to get the robot and pay registration fees.

Next, huge thanks to W5 and especially Aideen Johnson who works tirelessly to organise sponsors for every team, NI registration and then organise the big event in December. Basically none of it would happen without Aideen. Thanks also to W5 for some of the above photographs.

Finally, to everyone else who we ended up chatting to along the way (especially the project) and threw ideas at us (or answered our surveys), thank you!


Thanks girls for the awesome card
Thanks girls for the awesome card

Should you learn to program before university?

This is response to Ryan Walmsley’s post recently where he concluded the answer to the above question to be no. Here is my response.


Ryan brings up a number of interesting points on how he believes MIT Scratch should only be used with kids up to the age of 11. I highly disagree with this statement. Scratch is  an amazing platform for a beginner of any age! I have taught kids as young as 5 to even a 70 year old with Scratch. I really don’t think age has anything to do with it as a beginner is a beginner.

Like many universities, the Open University is faced with the issue that 90%+ of its students have never coded before. Although I don’t believe the module should be a full year, I guess it depends on the number of hours expected every week (is a full time course vs part time etc).

The Open university is far from alone in teaching using Scratch. Many universities in the United States use Scratch to teach their first year students. has produced a great video explaining why.

In the first few months, it is in my opinion more important to teach students the constructs and problem solving associated with computer science than teaching syntax. Syntax is different for every language, Scratch lets you move onto any language after where as jumping straight into a text based language may lock certain syntax into students heads as being associated with for example an if statement.

Although I will admit Scratch 1.4 is not a tad limiting for use with university students after more than a few weeks, Scratch 2.0 adds objects and a number of other items, making it much more suitable. Even better though would be Snap or byob.

Should we discourage students from learning programming before the course?

This though is the bit I personally disagree with most. Ryan concludes no, we shouldn’t be teaching kids to code.

Computer Science already has the highest dropout rates in UK universities (9.8%). Is this because it is just too hard for 9.8% of students? I don’t think so, I believe the high dropout rates are due to the students being misinformed about what Computer Science actually is. At school you already get a chance to study modern languages, art, business studies, history etc. All these subjects have direct follow on subjects at university and have much lower dropout rates. The students picking them have a rough idea what to expect given they may have been studying them for 7 years already at secondary school. With a majority of students, Computer Science is not an offered subject, how are they meant to have a clue what to expect if they don’t get a chance to try it out beforehand in school?

Many students do Computer Science as they believe it will follow on from A-level ICT, something which they then discover is very far from the truth.

Chicken and egg

It is a chicken and egg scenario though. If enough students study Computer Science in school, universities can add it to the requirements, but given it is statistically seen as a harder A-level, students won’t take it unless they are really interested in the subject until they need it for universities.

Some universities have taken the first step, I have to applaud my own University, Queens University Belfast who provide lower entry requirements for students studying A-level Computing. It is currently in the minority though in doing this, but more are starting to follow suit.

Pick a course that is right for you

It is ultimately up to the student though to pick the correct university for them. It is their job to read the fine details of their course and decide if the course content is right for them. If it isn’t especially in England, perhaps consider looking into a different university given there are quite a few with most having similar fees.

To conclude

To conclude, do I think students should be given the opportunity to code from KS2 onwards? Yes, it gives them a better ground to make a decision on a university course.

Do I believe MIT Scratch is worth using in universities? Yes, although would recommend Snap over Scratch due to more functionality.

I won an award! (or 2..)

On Tuesday 28th October 2014 I travelled to London to the house of commons with my family for the TalkTalk Digital Heros 2014 award ceremony in the House of Commons.

For those unaware what the Digital Hero awards are, they are an award scheme organised by TalkTalk, Go on UK, Citizens Online and the Mirror that is designed to celebrate people who use digital technology to bring about social change.

I had made it through shortlisting and a public voting voting rounds in the Next Generation category (a special category for a “young person”) and had been informed back on the 29th September that I had won the category! Winning the category came with £4000 to spend towards my project (teaching kids in Northern Ireland to code) and a Macbook air.

So on Monday I travelled to House of Commons from Northern Ireland (where the weather was terrible!) to the award ceremony.

Before the ceremony started I (after a bit of a wild goose chase) met up with Alan O’Donohoe, the recipient of the Volunteer Digital Hero award for his awesome work with Raspberry Jams (and piles of other events!).

Before heading in we got some photographers with the houses of parliament in the background.

TalkTalk-award 2014-10-28 at 15-16-54


The ceremony itself was in the Strangers dining room in the House of Commons.

After a brief introduction speech from John Fisher (Chief executive of Citizens Online), the award ceremony got underway with each recipient of the category awards getting presented their awards.

I was awarded my Next Generation award by Claire Sutcliffe (Co-founder and CEO of Codeclub).

TalkTalk-award 2014-10-28 at 16-44-52


They then announced the overall TalkTalk UK Digital Hero 2014 award winner as “Andrew Mulholland”!

Given that there were so many other amazing and deserving projects, it was a complete unexpected shock to win the award!

This overall award comes with an additional £5000 to spend towards teaching kids to code!

TalkTalk-award 2014-10-28 at 16-51-05

TalkTalk-award 2014-10-28 at 17-35-54
All the winners and judges together


Gregory Campbell, MP for East Londonderry
Gregory Campbell, MP for East Londonderry
Speaking with Sajid Javid (UK Secretary of State for Culture, Media & Sport)
Speaking with Sajid Javid (UK Secretary of State for Culture, Media & Sport)

TalkTalk-award 2014-10-28 at 17-38-17

Huge thanks to everyone who voted for me in the public vote stage!


Accessing full Raspberry Pi SD card on a Mac

It can be annoying that on Windows and Mac by default they are unable to see the data partition on a Raspberry Pi SD card.

It is able to see the BOOT partition as it is formatted FAT32, a standard format used by a lot of different types of removable drives like flash drives and it can be read by just about every operating system.

The other partition, the one with the data on it is EXT3, the standard Linux filesystem format. Windows and Mac do not officially support it but as Mac OS is Unix based, it is a little easier to implement a driver for it that with Windows.


Just a word of warning, the fuse-ext2 driver is far from as polished as the NTFS (Windows) and HFS (Mac OS) drivers built by companies with entire teams to maintain them. Because of this there is a much higher chance you will corrupt or kill your SD card.

Although it has never happened to me, the chance it there.

You have been warned

Fuse for OS X

The first bit needed is Fuse (Filesystem in UserSpacE). Basically Fuse allows you to load additional filesystem drivers in as a userspace program. AKA it loads new filesystem drivers as user programs!

So go grab the most recent version (currently 2.7.0) from here and run the installer.

The important bit is when you get to the “Installation Type” section you must select all 3 options (including MacFUSE Compatibility Layer”).

Once the installation is complete, restart your computer.


Now we have the ability to add filesystem drivers, lets actually add the one we want. Although the name of the driver is Fuse-ext2, it also supports ext3 so we are fine.

You can download Fuse-ext2 from here then run the installer selecting all the default options.

That is it, ext3 filesystems connected to your Mac should now pop up as normal external devices in Finder.

But wait, I can’t edit them? They are read only!

Correct, by default Fuse-ext2 disables write access as it is still experimental and dramatically increases the chance of corrupting the SD card.

If you are happy with read only access and want to play it safe, reboot your computer to make sure everything is cleared out and you are done.

If though you want read/write access and you have read my big warning and are happy to take the risk, then open a terminal (search in spotlight for terminal or it is in utilities in your applications folder) and enter in

sudo nano -c /System/Library/Filesystems/fuse-ext2.fs/fuse-ext2.util

This will open up the fuse-ext2 configuration file in a commandline text editor called nano.

Scroll down (using the arrow keys to move around) till you find the mount function. Comment out the OPTIONS= and copy in the new line.


The final section should look like this.

function Mount ()
    LogDebug "[Mount] Entering function Mount..."
    # Setting both defer_auth and defer_permissions. The option was renamed
    # starting with MacFUSE 1.0.0, and there seems to be no backward
    # compatibility on the options.
    # OPTIONS="auto_xattr,defer_permissions"

    # The local option is only enabled on Leopard. It causes strange

To save the text file, hold the ctrl+x keys, then hit y followed by enter.

Now, just for good measure do one last reboot and that should be it.

Final Warning

One final suggestion, make sure you properly eject any filesystem using the ext2 driver! Pulling it out without ejecting is a sure fire way to get the SD card corrupt and only costs you a few seconds. Remember pulling out a pen drive without ejecting has a small chance of corrupting it and with this because you are using a driver that is a lot less stable, you are dramatically increasing the chance!

TalkTalk Digital Heros shortlisted

As some people have seen, I have been shortlisted for the TalkTalk Digital Hero’s Next Generation award!

To Vote    >> Click Here <<

If you just want to vote, then click this button!
If you just want to vote, then click this button!

What is TalkTalk Digital Hero’s?

TalkTalk Digital Hero’s is about recognising people who use technology for good. There are 9 categories in total and I have been shortlisted for the Next Generation category. The winner is decided by a public vote which is open till the 25th September.

The winner of each category receives the title of a digital hero and also £5000 to put towards continuing their project.


What is your project?

Showing kids how fun Computer Science is while supporting teachers across the UK to do the same!

The slightly longer description is…

1. Running Raspberry Pi and Computer Science workshops across Northern Ireland and continuing to run the Northern Ireland Raspberry Jam (which will hopefully now be monthly) to inspire kids and adults alike and show them how fun Computer Science can be!

2. Supporting continued development of RaspberryPi-LTSP, my software for setting up and managing Raspberry Pi classroom’s. It makes it possible for teachers to effectively use Raspberry Pis on a day to day basis in a classroom. So far I have done all this for free in my spare time. The software is completely free and opensource. Full details of RaspberryPi-LTSP can be found here

3. Supporting Computer Science teachers and educators across the UK. This has involved me providing teacher training, speaking at teachers conferences and developing educational resources for teachers.

I do all 3 of the above already in my spare time and for free – but this is becoming harder and harder as I start to need to earn money to help fund university. Winning this would allow me to continue my work and invest even more time into it!


What can I do?

The simplest thing you can do is vote for me! Vote on as many devices you can get your hands on! It takes 10 seconds, that is it.


Once you have done that, then please share this page with everyone you know via Twitter, Facebook etc!


Also, another Raspberry Pi community member, Alan O’Donohoe is up for the Volunteer award for his work with Raspberry Jams so vote for him too!

Vote for Alan

Raspberry Pi Classroom infrastructure – Raspi-LTSP

For installing and getting started, check out the new project site including all the documentation –

Raspberry Pis are great for schools, they act as a sandbox for teaching kids Linux, electronics (using GPIO pins) and programming using awesome applications like Minecraft Pi or Sonic Pi.

The Raspberry Pi recommended operating system, Raspbian, has been designed to be run standalone and come packaged with just about all you need to get started. Just download the image and stick it on an SD card, simple right?

The problem…

Simple until you decide to go all in and get a classroom set of Raspberry Pis. Now you have got 20-30 Raspberry Pis, but also 20-30 SD cards to maintain! How do you deal with it if you have more than 20-30 students? Few options.

  1. Give them each an SD card. This can have a few issues though if all the students in your school will be using them.. 100, 200, 300 SD cards to maintain!?!?!
  2. Have multiple user accounts on each Raspberry Pi, but make sure none will ever be needed at the same time.
  3. Just use builtin Pi user on a set of 30 SD cards, pupils save their work to their pendrive. This brings the problem of having to plug a pendrive in at end of every lesson, if you want to save stuff in the class, you also need a (powered) USB hub.

All of the above options are a bit rubbish, there is no single perfect answer.

One big issue though with all of the above is, what if an SD card or pendrive fails?……..

What if? If using any of the above options, it is gone… All that students work is gone, lost forever! This makes none of those options suitable for use with important coursework (GCSE or A-level CS)

At the Raspberry Jamboree last year, this point was brought up. The suggestion was the “magic pendrive”. The Raspberry Pis were configured to dump all the students work onto a special pendrive when it was plugged into the computer. This sounds simple and like a good solution, but when it needs to be done at the end of every lesson, it starts to get a little less viable.

This is what led me to start looking into a better way.

 The better way

At the time I watched the Jamboree panel, I had been playing around with LTSP (Linux Terminal Server Project).

It is a project that brings together a number of base packages from the Debian/Ubuntu software repositories plus a pile of custom scripts, to create a system that allows full Linux clients to boot off a network, aka not using the machines own hard drive. It supports 2 main types of clients

    1. Thin clients - These are clients that are basically dumb terminals into the server, no processing is done on these clients, all processing is done on the server. For Raspberry Pis this would for example let you run non Raspberry Pi software, or operating systems (like Ubuntu) but does not have access to Raspberry Pis GPIO or camera port, it also requires a powerful server for a classroom. A client for the Raspberry Pi already exists, called BerryTerminal
    2. Fat (/thick) clients - These are clients that just really use the server as a hard drive. All the processing is done on the Raspberry Pis, you have full access to the GPIO pins and camera port, but are stuck with the usual Raspbian OS. It also does not need a powerful server.

At the time when I was looking into this, there was no instructions for using LTSP with Raspbian fat clients or Raspberry Pis in general as fat clients.

After plaguing some developers in the LTSP IRC channel, we eventually figured out how to get LTSP to build clients for the Raspberry Pi. Then started the long laborious process of properly building Raspberry Pi Raspbian OSs.

How hard could building Raspbian be?

In short, quite…

The Raspberry Pi foundation make a lot of changes to a default Debian build… They do this through a tool called spindle by Alex Bradbury. The main issue for me with Spindle is it contains a lot of unneeded stuff for my system, seeing as LTSP does a large chunk of the build. I also didn’t want all the changes they made, mainly because some broke LTSP so had to be careful what a picked.

By the 25th February, 2014 (just in time for the Raspberry Jamboree) I had got a rough basic clone of Raspbian working, this wasn’t enough though, as the system had to be easy and complete as many tasks a teacher would need as possibly, with a press of a button.

Raspi-LTSP back on 25th of June, not many features...
Raspi-LTSP back on 25th of June, not many features…

So then new features like full Epoptes integration, Picontrol integration, NBD compression, student work collection system, auto installing software and a few others were added.

This brings us to the stage we are at now, a stable (ish) usable system designed to be easy to use for teachers.

Raspi-LTSP now full with features and options allowing teachers to really easily customise their Raspbian install
Raspi-LTSP now full with features and options allowing teachers to really easily customise their Raspbian install!

Yeah, but how does it work?

It actually isn’t too complicated.

Few prerequisites though.

  • Raspberry Pi is connected to the server via a switch or network hub
  • A router handling IP addresses (DHCP) is on the network or you set one up on the serverThe
  • Raspberry Pi has the boot files on its SD card, these are autogenerated when the server installs Raspi-LTSP and are tied to the servers IP address.
  • Raspi-LTSP is installed on the server and the server is turned on.

As long as all those are met, then the below sequence of events should occur

  1. When powered on, the Raspberry Pi loads the kernel, initrd, cmdline.txt file and config.txt file
  2. Kernel reads the config options and loads the initrd.
  3. An initrd (also known as an initramfs) is a simple, very small Linux filesystem used to chainload other filesystems, in our case a filesystem over the network
  4. The LTSP scripts in the initrd grab an IP address and try and contact the server
  5. If successful, it mounts the Raspbian filesystem off the server, as COW (Copy on Write)
  6. Copy on Write is a special setup that is similar to read only, but the OS is able to change the files. When it reboots though, these changes are lost.
  7. Once mounted, it runs some more LTSP scripts to finish setting up the client. These include setting up NBD swap. This is compressed swap in case the Raspberry Pi runs out of RAM.
  8. Finally LDM (LTSP Display Manager) loads up, allowing the user to log in

    The login screen for Raspi-LTSP powered by LDM
    The login screen for Raspi-LTSP powered by LDM
  9. Once the user logs in, their home folder is then mounted. Their home folder is stored at /home/user on the server.

So why should I use this?

A few reasons

  1. Centralised operating system - The operating system for the Raspberry Pis is stored on the server, centrally. This means if you want to make a change to it, say update a package or a configuration file, simple, just modify it on the server.
  2. Centralised users - The user accounts are stored on the server, not the Raspberry Pis. This means any student can sit down at any Raspberry Pi in the classroom, log on and get access to all their files.
  3. Centralised files - The pupils home folder of all their work is stored centrally. This means only a single folder (/home) has to be backed up, and all the students work is instantly backed up.
  4. Work collection - Raspi-LTSP contains a simple but effective system for collecting work from students, they just place it in a folder in their home folder called handin. Then the teacher selects an option in Raspi-LTSP and it goes and collects the work from every student, placing it in a single folder for the teacher to mark.

I want to see videos of it in action!

Well lucky for you, Ben Smith (@ManchesterBudo), a computer science teacher based near Blackpool has been trialing the system for a number of months now and has created some videos of it in action.

I am sold! How do I get started?

As mentioned above, a few prerequisites.

  • You need a network switch. It must have at least a single gigabit port (10/100/1000mbit), also sometimes called a stacking port. It is fine if the rest of 100mbit (10/100mbit). These can be picked up off ebay for less than £20, example1
    A single gigabit port is essential as the server must plug into it.
  • You need a classroom set of model B Raspberry Pis.
  • You need enough Ethernet CAT5 Ethernet cables to reach from your switch to Raspberry Pis
  • An old router or a DHCP server installed on the server machine to manage IP addresses on the network
  • A server machine – this can be an old desktop machine, it does not need to have large amounts of processing power, should have at least 2gb of RAM and at least 70gb of hard drive space. You will be formatting this machine. Finally, it must also have a gigabit Ethernet port.

The setup process is very simple, but requires internet to build Raspbian. Once it is finished, it won’t need an internet connection, unless you want to update or install new software.

For installing and getting started, check out the new project site including all the documentation –

If you have any issues with the project, feel free to leave a comment below, post an issue on the github page or drop me a tweet @gbaman1

Minecraft coding in the classroom – 1st draft

Today’s post sways a little off the normal Raspberry Pi stuff, there is a link though!


One of the awesomest pieces of software the Raspberry Pi has for teaching in Minecraft Pi edition Link . If you don’t have it on your Raspberry Pi, why not?! It is great as kids can easily program modifications to the game in python allowing them to place blocks, move players and do all kinds of cool stuff. There is a problem for it though in education, not every school has a classroom of Raspberry Pis…

Fret not though, a Bukkit developer has gone and made a Bukkit plugin to emulate the API but for the normal version of minecraft.

We will start though from the start. What is minecraft?

Minecraft is a sandbox! It is a game played by millions of people across the world. It is very popular with teenagers especially. The game has a massive community behind it and is easily modifiable with the use of Java.

Modifying the game though brings with it a number of problems including modifications not playing nice with each other. To make it easier to mod the game and to help mods play nice together, a number of community projects emerged making their own APIs. The 2 most popular of these are Bukkit and Minecraft Forge. Both are not run by Mojang (Minecraft developers) and are maintained as opensource projects through donations.

Bukkit is an stable and the standard server platform for 90% of Minecraft servers out there. It has an easy to use API and a massive collection of plugins allowing you to manage players on a server and keep order. There are also a number of specialist plugins, we will be looking later at one called RaspberryJuice. Bukkit is a server only platform, it can not modify the actual client (aka add more buttons, new blocks or new menus).

Minecraft forge, the other major platform, allows direct modification to the client. This allows you to do things like add new menus, buttons, blocks. MinecraftEDU is designed for Minecraft forge. It has a very powerful API that allows you to change most of Minecraft.

 Minecraft Pi edition

Minecraft Pi edition is a special version of minecraft developed for the Raspberry Pi which is based off another branch of minecraft, Pocket edition (designed for mobile devices). It has only the basic features of minecraft but can easily run on the Raspberry Pi.The important bit though about minecraft Pi edition is it has its own simple to use API for interacting with the world! You can tp players, break or place blocks etc in languages like python, java, javascript etc.

This API is great for the classroom and at home but it has an issue. What if you don’t have a Raspberry Pi? A lot of schools dont yet have a full classroom yet of Raspberry Pis but have a fully kitted out ICT suit with much more powerful computers than the Raspberry Pi. What about this API for normal PCs? A developer has gone and created just that! An easy to use plugin called RaspberryJuice has been released that allows players to use exactly the same API but using normal Minecraft.

Each student must be running a mini server though to use this seeing as it requires bukkit, this allows teaching simple commandline based server applications too.

By using Bukkit, you also have access to 1000s of plugins that allow you to customize the entire experience. For the plugins check out their database

Lets set up a server

First you will need a minecraft account (€19), it is likely most students will have one. MinecraftEdu offer discounts to schools and can get them as low as €10. You only need 1 set of accounts per classroom (and if they arent connecting to the same server, 1 set per school).

Next you need to set up the clients, it is a very easy process. Make sure java is installed (most machines it is), download client from Here and you are good to go.

If you are using RaspberryJuice each client also needs a mini server running in the background. The basic idea is they run their own mini preconfigured server then they just connect to localhost (aka, themselves). Using this method also allows students to connect to each others servers if they know their IP addresses.

You need to create a folder with the server stuff in it. I will be demoing this on a mac, but it will work also on windows and linux.

Make a new folder for your server and grab the latest beta build of bukkit (It is also known as craftbukkit) from .

Bukkit has 3 standard release channels, unstable (daily releases, dont use), beta (a tested build that most things should work for, these are fine) and a recommended build (these are the most stable, there are very few of these).

Minecraft is constantly being upgraded with new features, a new update comes out on average every 1.5-2 months and will be heavily publicized before its release. Best place to hear about new versions is They also do snapshots which are unstable test versions normally released once a week. These are minecraft versions, not bukkit. Minecraft follows a numbering system that increments .1 every major release and .0.1 for bug fixes, for example as of writing, the current version is 1.6.2. 1.6 is the main version number and there has been 2 bug fix updates. Remember, these are different from bukkit releases. Bukkit releases can take 1-2 weeks after a major update and 2-3 days after a bug fix update. When a new version comes out, you dont need to update, it is normally smarter not to until everything settles down.

When configuring the clients, it is important to go into edit profile and change the dropdown menu from latest version to the current version, this way the clients wont auto update. See the picture belowVersion

So, now you have bukkit (also known as craftbukkit), place it in your server folder you created and rename it to craftbukkit.jar. The result of this is below

We only have 1 file so far, the server!
We only have 1 file so far, the server!

The normal thing to do for most people is just double click it, sadly minecraft servers dont work like that, they need a script to launch them correctly. I have provided all the startup scripts here StartFiles

The .bat is for windows, .command is for mac.

Remember, the server .jar file must be called craftbukkit.jar

We are now ready to test out our server. Double click the start.something file and watch as a terminal or cmd opens with a load text.

The important bit here is at the bottom. It explains that it is generating the minecraft work which can take a few mins.
The important bit here is at the bottom. It explains that it is generating the minecraft work which can take a few mins.

You now have your very own minecraft server up and running.

!!!VERY IMPORTANT!!! Do not ever close the terminal or cmd with the x at the top! To correctly stop a server you must type stop into the terminal and hit enter. If you close it by mistake, easiest way to fix it is reboot your computer !!!VERY IMPORTANT!!!

You can connect to your minecraft server by launching minecraft, clicking multiplayer and connecting to localhost

If you can connect, you have done it all right!



To modify the experience for your students you can use plugins. These are modifications to the server developed for free by members of the community using the bukkit API. To add one, you simply download its .jar file and drop it into the plugins folder inside the server folder. Reboot your server and it will auto load on startup. Keep an eye on which version plugins were developed for, some older plugins may not work on more recent versions of bukkit. Most plugins work perfectly fine, RaspberryJuice for example was released 2 major releases back and it still works perfectly fine. Make sure to read the documentation that is on the plugin page if you are putting any other plugins.

Other stuff you need to know

You may want to edit some configuration text files, these are auto created when the server starts. The file is the main config file for the server. Details of it and its settings can be found at

Minecraft servers have a built in permission system that is rather simple, you have 2 levels.

  • Player – can build, mine and play as a normal player
  • Op – (short for operator). The Op has full power over the server, can spawn in blocks, can change to creative mode (fly and infinite blocks) and can stop the server.

To add yourself as an op open the ops.txt file and add your name on the first line. You can also add it ingame and from server console.


The server is controlled via a series of commands, a user at the console has full permission to type any command, an Op ingame can type most commands and a play can type barely any.

To type a command ingame you prefix the command with a /

For example /stop from ingame would shut down the server. At the console you only need to type in stop and hit enter and the server will shut down. Make sure to give it a min to save the map.

A full list of commands can be found at

You will need to download the minecraft pi version to grab the api folder which contains the python library, drop the api/python/minecraft folder into the base directory of your server. Then follow the normal minecraft pi guides but make sure to save your python scripts in your server base directory

Server is red World data files are grey Some of my python files are green API folder is yellow Text files to worry about are purple Stuff to ignore is orange
Server is red
World data files are grey
Some of my python files are green
API folder is yellow
Text files to worry about are purple
Stuff to ignore is orange

Each student will need a mini server for themselves, you can create the folder, zip it up and put it on a pendrive or shared network space and let them grab it, you dont need to include the folders in grey as the server will auto generate new worlds if no worlds exist.

Also keep in mind, if students know other students IP addresses, they can connect to each others server or write python scripts to do stuff to other peoples servers, it is up to you if you want to allow them to find out each others IP addresses :)

With a server running, connect to it with your client and you are good to go, create some python scripts!




Pi powered Panobot v1

I have just finshed work on version 1 of my Pi powered Panobot. It is a robot designed to take panoramas with the official raspberry pi camera board.

It is built out of lego and uses the same motors and motor controller as my Lego Pibot.

It runs a python script which allows me to program how wide a panorama I want and how many levels. Once the images are taken I copy them over to my laptop and stitch them together into one image using Hugin

The Pi camera is very good for its price but compared to my DSLR has a smaller dynamic range and also a smaller HFOV (Horizontal Field Of View) so to get a panorama, it requires a few more pictures. I found to allow enough overlap that 10 pictures wide was sufficient by 3 pictures tall. This totaled to 30 pictures per panorama compared to my normal 25 pictures for my DSLR. I have to stitch them on my laptop instead of the pi due to massive amount of processing power to find the control points

So, time for some pictures

The panobot on a hedge taking some pictures
The panobot on a hedge taking some pictures
A closer look inside the panobot
A closer look inside the panobot

Now for what you have been waiting for, what images does it produce?

180 Degree panorama

A full 360 degree panorama shot with the Raspberry Pi camera board
A full 360 degree panorama shot with the Raspberry Pi camera board

For the full sized panobot panorama click here as wordpress limits the upload size

A panorama taken from the same area with my DSLR (Canon 600d)
A panorama taken from the same area with my DSLR (Canon 600d)

For the full sized DSLR panorama click here as wordpress limits the upload size

280 degree panorama taken in the evening before batteries died
280 degree panorama taken in the evening before batteries died

For the full sized  panorama click here as wordpress limits the upload size

Full 360 degree panorama made up of just 30 pictures!
Full 360 degree panorama made up of just 30 pictures!

For the full sized  panorama click here as wordpress limits the upload size

For the full sized  panorama click here as wordpress limits the upload size


As you can see, there really isn’t much in it between the DSLR and the Raspberry Pi Panobot. There is two thing though to take into account though.


The Panobot takes around 2 mins to complete a full panorama

Using the DSLR I took the example panorama in under 30 seconds


Because of the larger HFOV on my 28mm lens on my DSLR, I only took 24 photos for the full panorama (In portrait mode to reduce lens distortion). 24 photos takes about 3-4 mins to stitch

The Pi camera board took 30 pictures to get a full panorama. It took 4 mins to stitch those though.

So there is definitely trade off with using a completely automated pi camera but I am still quite pleased with the results. It was a great learning experience and a great option for someone who can’t afford a larger camera, the whole system (excluding lego) runs in about £50-£60

A copy of the python code can be found here

A copy of the python code on github can be found here

Lego Pibot Ultrasonic wall avoider

I have been working on getting the cheap ultrasonic sensor working for the past week and have got it working with my Lego Pibot.

It sends out an ultrasonic blip every 0.1 seconds and measures the time it takes for it to get a bouce back.

I followed a very helpful guide at raspberry spy which I got a lot of the ideas from.

Raspberry Pi camera board – Gstreamer

So, my Raspberry Pi camera board has arrived and I have started playing with it.

Raspberry Pi camera board

My first impressions were tiny, super cheap camera. Its low light capabilities are not great but I can live with that. The important bit is the quality, full 1080p at 25 frames per second (UK). That on its own is pritty awesome.

I was though only really interested in getting the pi to work remotely for my robot to replace the 3-4 fps standard def USB webcam I currently use. Currently though with the camera, there is no V4L driver so we have to make do with their provided applications then pipe it out to streaming applications. Their recommended method is slow and very laggy (netcat and mplayer with wifi provides 3-6 seconds of lag). So I had to find another option. I happened to be sitting on the #raspberrypi IRC on freenode and heard a user having success with gstreamer. So this is how to set up gstreamer to stream HD video with less than 0.5 seconds of lag.

First we need to add a repositary with gstreamer1.0


sudo nano /etc/apt/sources.list


and add to the end


deb . main


Then do an sudo apt-get update

next grab gstreamer


sudo apt-get install gstreamer1.0



On your recieving end you will also need gstreamer. Because I mainly use a mac, I decided to get it working on the mac so with help from arcanescu on IRC, we figured out how to get it working on mac os (10.8)

The simplest way is with brew, a package manager like apt-get, but for mac os. To install it run this in terminal on your mac simply run

ruby -e "$(curl -fsSL"

It will grab and install brew. Now update it with


brew update 


Now we need to grab gstreamer


 brew install gstreamer gst-libav gst-plugins-ugly gst-plugins-base gst-plugins-bad gst-plugins-good 


Once that installs you should be good to go. Enter


 raspivid -t 999999 -h 720 -w 1080 -fps 25 -hf -b 2000000 -o - | gst-launch-1.0 -v fdsrc ! h264parse !  rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=YOUR-PI-IP-ADDRESS port=5000 


on your raspberry pi and enter on your mac


 gst-launch-1.0 -v tcpclientsrc host=YOUR-PI-IP-ADDRESS port=5000  ! gdpdepay !  rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false 


The picture quality is good but I see a number of flickers which isnt a problem for me, if it is for you, maybe try adjusting the resolution


So thanks again to arcanescu, I take no credit for this as it was him that came up with this, if you ever see him in IRC, give him a virtual pat on the back

His blog