.NET and Rapid Application Development can help schools manage their own unique data issues

It is a fact that no two schools are the same. The factors that influence schools are wide ranging… staff, geographical location, lessons, results, local community, history, ethos, local weather, shape, size and choices of paint of premises, employment prospects, the list is endless. All of these factors are mixed together with a good healthy dollop of chaos for good measure and what you have is an institution that’s dedicated to improving the lives of a thousand (give or take) young souls and their families.

Schools are run on data. Find any teacher, any school manager, any person involved in the pastoral support of children in a school. Any time they are not dealing face to face with children, then they are trying to deal with the avalanche of data that comes about from the interactions of those children and the infinite number of factors that influence them in their school careers.

It may be that this is in order to look for a pattern, to identify problems and causes or successes and causes or it may just be that there is a requirement for it to be done.

The idea of information and data management systems in schools is not new. There are a vast number of systems available, some of them broad in scope such as “virtual learning environments / managed learning systems” which allow digitised teaching resources to be matched to individuals and groups of children, their digitised work to be organised and analysed and feed back to be provided in a range of ways.

Other systems provide portals to completing homework and other systems still provide database systems in order to manage all manner of information about the school, staff and children.

The problem is that all of these systems are (to lesser or greater extent) hegemonic. Take for example a commonly used School Information Management System. It is an SQL Server database with a simplified user interface front end. It contains a number of rigid, pre-defined tables, based on an organisation’s idea of what a school should need, to record data about students, staff, classrooms and so on. There are also facilities to report data but only in a particular way. Systems like this become the de-facto standard, (almost) every school uses it and is forced to bend itself in order to fit into the structure of the system.

This should not be the case. It is not the school who should have to bend to fit the data  system, the system should be made to fit the school!

I am a school teacher and I also have a passion for computer science and computer programming. In 2009 a manager at my own school approached me. My own school is exactly the same as every other school in that we are different. We have our own, unique problems and our own unique ways of doing things. The particular issue he approached me about was to do with managing data about discipline.

Initially he wanted a system that would allow senior school leaders to organise their sanctions and record details about outcomes. Had students been successfully rehabilitated, had restorative justice been served? Was more to be done?

In beginning to create this system but with the additional insight of a teacher who had to work under the school discipline system, and with the constant feedback from my managers and fellow teachers I created a system for “Internal Discipline, On Line” (Affectionately referred to as IDOL) that provided a whole school, team approach to managing discipline, starting with a method for reporting and following the school hierarchy in order to best manage responses to a satisfactory conclusion.

IDOL, Internal Discipline On Line

IDOL

Managing Behavioural Incidents

IDOL2

This system is still being used now in 2016 (with a few tweaks)

We have also created other systems, for example to ease the burden on admin staff for monitoring attendance to extra curricular clubs and study support.

These systems have all been created using Microsoft’s .NET architecture and SQL Server databases. They have helped our school to better manage our data for our unique issues in a way that fits how we work together as a school.

It has been possible to do this because of the concept of rapid application development and it was made possible by using .NET, Visual Web Developer Express and SQL Server.

There are many organisations that use .NET to create professional systems but they are aimed at schools in general. The greatest opportunity to make the greatest difference lies in the ability of .NET and SQL Server to allow new systems like this to be created and tailored for specific, unique purposes very rapidly.

Advertisements
.NET and Rapid Application Development can help schools manage their own unique data issues

Controlling a servo with a BBC Micro:Bit

In a previous post I wrote about controlling DC motors using an inexpensive integrated circuit. In this post I will explain how you can use a Micro:Bit to control a servo motor (like those used for steering in radio controlled cars) with no extra electronics (other than a secondary power supply)

Servos are a great way of adding another physical dimension to physical computing projects.

In this brief shot, one of our students demonstrates his Micro:Bit controlled (not quite) walking robot, which is powered by servos, to David Cameron at 10 Downing Street.

The process for controlling servos is a little bit peculiar. This is because these ‘hobbyist’ devices pre-date digital electronics.

Servos generally have 3 wires. A control / data line, and two for power supply (+ve and ground)

Servo motors are designed in such a way that the position of the “servo horn” is determined by the ratio of on time and off time in an (approximately) 20 microsecond pulse.

Most servos have 180 degrees of rotation. Lets say a 20 ms pulse begins, we make our data line “on” or “high” for 1.5 ms. (A pulse must always begin with the leading edge of a high).

This would tell our servo to move to the centre (90 degrees). 2 ms would move it to its full extent clockwise (180 degrees) and 1 ms would move it to its least most extent (0 degrees). For the remainder of the “pulse” the signal should be low.

Therefore, varying the length of the on time between 1.000 ms and 2.000 ms will allow us to move the servo to any position we want.

We cannot use the microbit “delay” function to achieve this level of accuracy. It’s lowest resolution is 1ms therefore we can only use it at best to move the servo either all the way one way or all the way in the other but nothing in-between.

Fortunately it is possible by taking advantage of the analogue output of the Micro:Bit. This analogue out is not true analogue, it is pulse width modulation.

With PWM we send a series of high speed on off pulses. The ratio of on to off time makes it appear to receiving electronics that it is receiving varying voltage levels.

We can take advantage of this feature (credit goes to Andy Huntington at Microsoft for this method)

Let’s assume we have 2 battery packs, a standard 2XAA battery pack for the MicroBit and a second batt(4xAA)ery pack to power the servo.

To connect it up, do the following.

  • Cut the plug off the end of the servo wire, separate the 3 wires and strip the insulation from the ends.
  • Connect the ground wire from the servo (usually blue / black) to the negative / ground wire from the 4xAA battery pack.
  • Connect the +’ve wire from the servo (usually red / orange) to the +’ve wire from the 4xAA battery pack. Important – you MUST insulate this +’ve connection with insulation tape and make sure there is no chance of a short. If you short out the connections from even 4xAA batteries it can generate enough heat to cause a nasty skin burn.
  • Connect the ground on the Micro:Bit to the negative / ground connection between 4xAA battery pack and relay. Now insulate this joint too.
  • Finally, connect the control wire from the servo (yellow or similar) to one of the Micro:Bit GPIO pins (lets say, pin 0).

We should be able to control the servo now with a few simple lines of code. In Touch Develop:

  • Analog write pin 0 (512)
  • Analog set period pin 0 (20,000)

This sets up the PWM period of the micro:bit to correspond with the expected 20 ms pulse width.

Now we can write “analogue” values to pin 0, between 35 and 135 (ish) will allow the micro:bit to instruct a servo to any position between 0 and 180 degrees.

Here is a screenshot of one of my test programs controlling a servo attached to pin 0.

servo control

Controlling a servo with a BBC Micro:Bit

Computing in school – making a virtual machine in Azure

In a previous post I described some of the issues faced by computing teachers when attempting to teach their subject on a standard school network.

nosign

 

Forty years ago it was very rare for educational establishments to have a computer on site. Nevertheless it was possible to still practice coding. Students would use punch card systems and teletype to write a program and then connect to a distant mainframe computer. This would execute the program and send the results back to the eagerly waiting student.

Nowadays ICT and computers are ubiquitous in schools but, in spite of this, all to frequently they can not be made available for students to practice coding.

computers, computers everywhere yet not a machine to code on

There is something in this old system of connecting to a remote yet powerful computer system which can be one solution to this modern educational problem.

Cloud computing is the modern equivalent. A virtual computer is created. This virtual computer, while in itself can be a very powerful machine such as a high grade internet web server of the order that is used to power enterprise systems,  is in reality nothing more than a simulation of a computer. A simulated computer that is running on another computer of staggeringly powerful proportions.

Commercial cloud computing like Microsoft Azure makes this available to the general public and it can be used by schools to circumvent the ‘no programming on the school network’ problem.

Once we have set up a Virtual Machine we can easily create user accounts and groups for all of our students. With Linux we can have many individual users all working at the same time on the same single virtual computer, each with their own desktop, running programs and individual home directories.

As they are effectively all using the same machine we only need a worry about installing and maintaining software on that one single (virtual) computer. Additionally, we don’t need worry about hardware failures as our system resides on the same mission critical rack that is used for all manner of other important systems (the NHS choices website being one such example)

An impressive program called Guacamole can be added to our virtual computer. This will allow our virtual computer to create multiple virtual desktops which can be accessed through a modern (HTML 5 compliant) web browser.

At the moment I am using the least powerful of three virtual architectures. I intend to test this on a class of thirty and then scale up if necessary.

(Update – 2 problems in school, guacamole does not seem to work well in general on the old Internet Explorer. 2 we are proxied. Guacamole depends on a constant stream of data but http data gets cached which makes it appear that the client is not responding. Solution will be to use https / websocket which is not cached)

There are other options also available such as ‘load balancing’ which involves two or more identical machines. If one machine is under too much load as many users connect to it, some will be seamlessly diverted to a different machine.

In this walk through I will create a virtual computer that runs Linux. I will then install a graphical interface, some examples of school programming software and finally install and configure Guacamole.

  • In the Azure Dashboard, create a new ‘classic’ virtual machine
  • Look through the available VMs and choose Ubuntu 14.04 Server. (This is the same as the standard Ubuntu you might install on your laptop except it is just a bare-bones system. None of the standard tools are installed and there is no graphical environment. Only command line (similar to old MS DOS). This is not a problem as we can easily install all of the missing elements.
  • You will be prompted for a username and password as part of the set up, this is important as it is the root user, the administrator. Also, you will not be able to use the system you have created without these details.
  • Go ahead and create the new system. It will take a few minutes to complete the process. When it is completed  you will be presented with a summary page of information about your new virtual machine. Look carefully and you will see a ‘Virtual IP address’. You will use this to connect to your computer and access the command line interface.
  • Open the required software ports to allow this virtual computer to communicate. Create new endpoints for HTTP (port 80), Alternative HTTP (port 8080), HTTPS (port 443) and RDP (port 3389).
  • We need to use a system called SSH to remotely access our virtual machine. This is available in the Terminal in Linux and Mac computers. For Windows we need to use putty.
  • Establish an SSH connection to your virtual IP address. In the Linux or Mac Terminal this is done with the command
    • ssh username@virtualIPaddress
  • We should now be logged in. First step is to update the list of repositories. These are known locations from where Ubuntu is able to download and install new software.
    • sudo apt-get update
  • Currently there is no graphical interface, only a text based command line. We can install one with the command
    • sudo apt-get install lxde
  • We will now follow the set of steps described in chapter 2 and chapter 5 of the Guacamole manual.
  • Install the first set of dependencies
    • sudo apt-get install libcairo2-dev libjpeg62-dev libpng12-dev libossp-uuid-dev
  • Now install the second set of dependencies
    • sudo apt-get install libfreerdp-dev libpango1.0-dev libssh2-1-dev libvncserver-dev libpulse-dev libssl-dev inlibvorbis-dev libwebp-dev
  • Download the Guacamole source code, uncompress it and then change into the new directory.
  • Now we will compile Guacamole and set it up so that it starts when the virtual computer starts.
    • sudo ./configure –with-init-dir=/etc/init.d
    • sudo make
    • sudo make install
  • When finished, change out of the guacamole directory, back to home directory, download and uncompress the guacamole client source code.
  • Install some extra tools needed to compile the client
    • sudo apt-get install maven
  • Install Apache Tomcat . This makes your virtual computer into a powerful dynamic java servlet web server and allows it to broadcast desktops visually with HTML5 over the internet into client web browsers.
    • sudo apt-get install tomcat7 tomcat7-admin tomcat7-docs
    • sudo apt-get install openjdk-7-jdk
  • Compile the Guacamole client.
    • mvn package
  • Now we will copy the compiled .war file to the Tomcat directory.
    • sudo cp guacamole/target/guacamole-0.9.9.war /var/lib/tomcat7/webapps/guacamole.war
  • Create a location for Guacamole configuration files.
    • sudo mkdir /etc/guacamole
  • Install a nice text editor to use to create the config files. Feel free to use emacs or vim here, I just like Joe.
    • sudo apt-get install joe.
  • Now create a guacamole.properties config file with the text in red below.
    • sudo joe /etc/guacamole/guacamole.properties

# Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port: 4822

  • Press [ctrl]-[k]-[x] to save and exit. Now create a connection config file.
  • sudo joe /etc/guacamole/user-mapping.xml

 <user-mapping>

<!– Per-user authentication and config information –>
<authorize username=”username” password=”password”>
<protocol>rdp</protocol>
<param name=”hostname”>localhost</param>
<param name=”port”>3389</param>
</authorize>
</user-mapping>

  • Create a directory in tomcat7 for the connection file to go into.
    • sudo mkdir /usr/share/tomcat7/.guacamole
  • Link this to the files you just created.
    • sudo ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat7/.guacamole
    • sudo ln -s /etc/guacamole/user-mapping.xml /usr/share/tomcat7/.guacamole
  • Install RDP client to allow remote desktop broadcasting.
    • sudo apt-get install rdesktop  freerdp-x11 xrdp
  • Restart guacamole and tomcat
    • sudo service guacd restart
    • sudo service tomcat7 restart
  • At this point you should now be able to login to your new desktop. Check your Azure VM properties and you will see a URL. Something like: yourservername.cloudapp.net
  • Type into a web browser http://yourservername.cloudapp.net:8080/guacamole
  • You should see a login screen, type in the username and password you specified in your connection config file.
  • You should now see a second login screen, type in your root username and password that you specified when you created the virtual machine.

You should now be logged into an Ubuntu desktop as if you were using it on your own computer. You can now use the adduser commands to create logins for your students as well as install new software for example:

  • sudo apt-get install idle idle3 scratch

If it doesnt work, the first places to check are the log files. These are usually very detailed and help you find the problem.

Look at both of these files

  • /var/log/syslog
  • /var/log/tomcat7/catalina.out

 

 

Computing in school – making a virtual machine in Azure

Computing in an unfriendly environment.

A brief history of computing in UK Schools

For many, computing began in 1981 with the release of the BBC Micro as part of the Computer Literacy Program.

These computers were sent out to schools across the United Kingdom and many children began to learn principles of computing with them. There was criticism that resources and guidance for teaching with these machines was lacking, often leaving schools wondering what they were for. University tutors frequently bemoaned that the introduction to (BASIC) programming that their students had experienced had done more harm than good but nevertheless, children were getting down and dirty at a bits and bytes level and this was a good thing.

In the late 1970s, Intel released a defining kind of new processor called the 8086. This was the first in a line of computer processors that has powered most desktop computers, made famous by IBM.

In 1985 a company known as RM released a machine for education called the Nimbus. It was based on the second in line Intel processor (80)186. This was the death knell for the short lived computer literacy program.

The impact of the “PC” had a profound effect on Computing in Schools.

Over the following 20 years programming and computer science died and, as noted in the Royal Society Shut Down or Restart was replaced by  uninspiring ICT “basic digital literacy skills such as how to use a word-processor or a database”. This statement is rather extreme, there were some very inspiring and genuinely useful qualifications based on ICT which have now ceased to exist. The Diploma in Digital Applications being one such example.

During that period RM maintained a leading position by reselling equipment and software as well as network administration.

The release of the “Shut Down or Restart” document was a watershed moment. Suddenly in schools, computer science mattered again.

Unfriendly Environments

In 2011, with the release of Shut Down or Restart in my role as Curriculum Leader for ICT (Head of Dept) at Eastlea Community School I decided to put programming back on the curriculum. My initial attempt at this was with Microsoft Small Basic. I tested this on one machine, was pleased with the result and so raised a Change Request with RM.

A Change Request was an order to the company providing network and computer support to install some new software on a number of machines. Alongside the annual fee that the school had to pay, this would incur an additional and considerable fee for the extra work to be done.

Before this was completed I learned that there was no way RM would ever allow Small Basic to be fully installed on their network as the students create .EXE files when compiling their programs. These are viewed as a serious risk to security.

Around about the same time, Raspberry Pi were releasing their early model B, selling in the UK for around £35 I purchased thirty of them and sourced some very low cost cables and power supplies to go with them.

With my new year 10 GCSE Computer Science class we spent our first lessons constructing a network of our own, separate to RM and using Raspberry Pis for Computer Science.

classroom

We saved space and cost by using the monitors, mice and keyboards from the PCs we already had in place. I’ve written about all of this in detail in the Raspberry Pi community forums here.

This worked really well for me and one other colleague. In over three years the main problems we have had have come about as a result of SD cards breaking, a design flaw in the raspberry pis means they stick out and the slots easily broken.

Fear of the unknown

For busy teachers with a background in teaching ICT, working in a busy school where it is not always possible to provide the support that is needed maintaining a network like this is not possible. It does eat up a lot of time in lessons giving out SD cards, tracing dodgy cables and simply swapping over keyboards and mice.

One other colleague through necessity had a similar setup in his classroom. There were two of us teaching GCSE CS, at the time the Raspberry Pi network was the only way for us to deliver the course. Without this incentive it is simply too much extra work for an ICT teacher to take this on in their rooms.

Clouds

I was recently asked by Microsoft if I would like to take part in a pilot of their “Azure” for eduction program. I was given a brief, the kind of brief I really like. Basically, here is Azure. See what you can do with it.

Azure provides powerful virtual computer that can be set up with a range of operating systems. Not just Microsoft but also embracing Linux as well! I have to say I am very impressed with Microsoft’s modern corporate attitude to open source systems as a valuable partner, not a competitor.

You can use a remote system like VNC to access your virtual desktop. With many schools still struggling to get what they need for teaching computing onto their networks I wondered if it would be possible to provide a VNC like interface to a virtual computer for programming and so on through a standard school internet connection and web browser. It turns out that you can, by using a system called Guacamole!

A “clientless browser based remote desktop gateway” based on HTML 5.

I set up a test virtual machine running Ubuntu in Microsoft’s Azure cloud.

I configured this with the Guacamole system and have done some single user testing. Results so far are very encouraging, to all intents and purposes I have got access to a computer that is more than adequate for teaching computer science but without the hassle of administering a network.

It is as simple as issuing student login details and the website address. Students (and teachers) then login by entering the URL in their browsers. They are then using a computer in the same way they do with the physical computer in front of them, they have their own logins and their own secure place to save their work. (This work can be accessed by the teacher by using the “root” login)

login

The login screen.

Screenshot from 2015-12-28 17:31:00

Python and Scratch. Running on my virtual Linux computer in a web browser on my Ubuntu laptop.

So far it seems like a very simple and straightforward approach to providing what’s required for teaching coding. I look forward to the real tests, next week, this will be when I ask other teachers in my department to deliver Python programming lessons to their classes with it. I wonder how it will hold up under the load of many tents of users accessing it simultaneously.

 

Computing in an unfriendly environment.

Teaching and Learning: Micro:Bits

Approximately 6 weeks ago now, while I was minding my own business (probably prevaricating) I received an email from my regional CAS coordinator asking would I be, in principle happy to be linked up with the BBC and Microsoft to work on a project with some BBC Microbits.

I agreed and within a few hours I received a call from Microsoft, this was the start of what can only be described as an amazing adventure for our school, students and myself that has included a visit to our school from Lord Tony Hall (Director General of the BBC) and Satya Nadella (CEO of Microsoft ) to see the work our students carried out as well as trips to Downing Street and to the House of Commons!

This opened a whole host of ongoing opportunities for us, not least we recently visited 10 Downing Street to kick start the Hour of Code week with Nicky Morgan and David Cameron.

Fantastic as this was these blog posts are not going to focus on these. I will link in to our school’s media page for this. Instead I want to take the opportunity to share some of the classroom methods we developed while working with the Micro:Bit.


The Micro:Bit

In a nutshell…

…is a bare circuit board device, brainchild of the BBC and inspired by the anniversary of the birth of the BBC Micro computer some thirty years ago now. It has been produced in partnership with lots of companies and organisations. Microsoft has been a major partner in it’s development.

My best analogy is that it is like an Arduino with a host of on-board sensors and a very child friendly programming interface. It has an ARM processor and flash memory for storing programs, it contains some very useful sensors;

  • an accelerometer for movement, tilting, shaking etc.
  • an EM sensor which is generally configured as a digital compass but can be pressed into other uses.
  • A thermometer.
  • a 5 X 5 display grid of red LED lights.
  • 3 accessible GPIO connections which can be configured to work as analogue inputs (via an internal ADC) or outputs (via PWM) or as 3V digital input / outputs.
  • A 3V power connection and a ground connection to enable connections to other electronic systems like projects, robots, toys and so forth.

Using the Micro:Bit

As a device on it’s own the Micro:Bit is a great learning device. We spent about two lessons with our year sevens working through the tutorials in the fabulous Quick Start for Teachers guide. In hard copy this “teachers guide” actually works really well in the hands of students. The official Micro:Bit getting started section also has some great resources.

The guide walks you through programming the device and using the sensors, for example making a rock paper scissors game that employs the LED display to show the rock, paper or scissors and the accelerometer to activate the game.

The Micro:Bit really comes in the classroom into it’s own as a device for invention when used in conjunction with other devices like motors and servos. I want to describe some of these methods here and link them to core computing processes and hardware concepts.

Adding other electronics to the Micro:Bit

There are a wide range of ways to connect other devices to the Micro:Bit. For example you can connect your phone or tablet via Bluetooth (there are handy functions included in the API for doing this). There is also an I2C interface buried within the device.

LEDs and even low power relays can be connected and powered directly from the 3 GPIO ring connectors.

For bigger projects, on it’s own the Micro:Bit is not able to supply enough power to drive something like a reasonable size DC motor. I suspect you could drive a really tiny one, perhaps the motor from one of those flying helicopter toys might work but I never tried it. I’ve not actually managed to find a reference for the maximum power output of the Micro:Bit GPIO. It seems to be more than a Raspberry Pi and I believe it also includes some overload protection.

H bridges, Micro:Bits and Motors

If you want to connect anything that needs more juice then one way to do this is to ‘amplify’ the analogue output capability of the GPIOs. The cheapest and simplest way to achieve this is by using a H bridge IC.

We used a L293D. This is a great little microchip which you can buy for under £2.00 and needs barely anything more than a few wires, a separate power supply for the motors and a way to connect it all up, such as breadboard.

This microchip has (input) pins which you can connect directly the Micro:Bit outputs. When the Micro:Bit sends a signal to one of these input pins it is reflected in the output from the L293D, except with more power.

For example, if we want to drive a motor at full speed, we send the value 1024 to the analogue output that’s connected to the L293D. If a suitable motor is connected to the corresponding output it will spin at full speed.

To make it spin at half speed, reduce the value to 512, a quarter speed would be 256 and so on.

We can control up to 3 motors with the three Micro:Bit outputs as long as the motors are all only going to be spinning in the same direction.

(L293D_schem

(In this simple circuit above, the minimum external power is 4.5v (eg. 3 AA batteries) and the maximum is 7 v. This microchip can actually go as high as 36v but not with the configuration shown above as I have combined all the ‘+ power’ and ‘enables’ for simplicity.)

The same H bridge can be used to control direction, making motors spin forwards or backwards but this requires two signals, one for each direction. As the microbit only has 3 outputs, it can use two of these outputs to control the H bridge and drive a single motor forward and reverse. There is not enough for it to directly control two motors (for turtle robots and the like, although you could drive a single motor forwards and backwards and use the remaining output to control a relay for steering)

The wikipedia entry for this microchip contains a very easy to follow guide for wiring it up if you want to have a go yourself. When I return to school I will also get some of our students to make a how-to video and write-up.

In the meantime here is a couple of videos of it in action, under the control of a microbit. (This was made by me, one handed and in some excitement, sorry about the quality)

You can also see this in action in the video above, it’s being used to control two motors and propellers attached to a model blimp gondola!

The great thing about this method is that you can very easily and cheaply control up to three simple devices. They do not have to be motors,they might also be solenoids or even small incandescent bulbs (for example).

It is possible to use the three outputs and expand these to many more outputs by using the concepts of parallel and serial data connections to another device such as a Raspberry Pi or an Arduino. We did use a method like this to make the little car turtle robot you can see in the video.

We also used the Microbit to control servo motors to make robotic arms and a walking robot (well, not quite but we are getting there).

I will write about these methods in a further blog entry.

Teaching and Learning: Micro:Bits

Inspiration, Innovation and Education.

Education, challenge .

I have worked as a teacher for my entire professional career, since completing my teacher training in the year 2000. I am driven by a desire to open doors and in my own small way to try to make this little bit of the world a bit of a better place to be.

I have loved technology, particularly electronics and computers for as long as I can remember. I consider myself to be very lucky in that I can focus my working life on bringing together these two great joys, technology and eduction.

In 2008, while working in my current school as a “Coordinator for ICT across the Curriculum” I was asked by the deputy head teacher to help them put together a system that would allow them to manage senior level sanctions. At the time the record keeping for discipline was based on an old paper based form method that had been migrated onto email. It was at best, unreliable.

This request led me to produce a web based system using Microsoft ASP.net that enabled teachers to log incidents of behaviour in a hierarchical management system that followed the organisation of the school and could be configured to work with any other school. The system became known as “IDOL” and allowed teachers, heads of department, school managers to all play a part in managing discipline and administering sanctions. This system helped our school to achieve “Leading Edge” status, a status it still retains now.

The Royal Society “Shut Down or Restart” followed by the dissaplication of the ICT curriculum and the birth of “Computing” in schools has been a breath of sorely needed air.

When this change first took place the school network provider was unable to provide the means to allow coding to take place in any meaningful way for various reasons. To get around this problem I created my own computer network based on Linux, using a few recycled desktops as servers and Raspberry Pi’s as client / student computers. We used this system to teach 2 years of GCSE Computer Science and introduce computing at Key Stage 3.

This year, this network has evolved into a new system using over 90 donated desktop computers running Edubuntu  (these have replaced the Raspberry Pis as desktops, many of which are now being used to give to students for home loans), a number of Raspberry Pis which are used for aspects of Physical Computing such as “robotics” and “control”. My proudest achievement with this network to date is that it is no longer administered by myself but by a group of students who are in year 7, year 8 and year 9.

Recently we have had the extraordinary good fortune to work with Microsoft with an exciting new project to promote physical computing to young people. The Micro:Bit adventure has been an immensely thrilling adventure for myself and our lucky year 7 cohort who have had this preview into this extraordinary little device.

We have used the fabulous quick start guide and online tutorials to help us on a journey with our students that has led to, among other inventions, a “dance off” competition games, Star Jump counters and a helium balloon robotic caterpillar!

The most exciting aspects of the prospect of becoming a Microsoft Innovative Educator Expert are that of sharing ideas and experience with like minded educators from across the globe. A thrilling added bonus is the prospect of trialling Microsoft Technologies for education. For example, two new developments from Microsoft I believe have outstanding education potential to Computing are the new Windows 10 IoT that’s made for small devices such as Raspberry Pi 2 and the Arduino and the forthcoming Hololens.

These together have awesome potential, the idea that at some point, sooner or later, I will be in the position to be able to play a part in opening the door to a whole new phase in computing in the physical world. It would be wonderful if I could play some part in the beginning of this, sooner, should I be successful in my bid to become a Microsoft Innovative Educator Expert or later as I will bring these technologies into my classroom as soon as I am able.

Bringing together electronics, computing and love of teaching is a joy. To be able to do this on a larger scale with the help of Microsoft would be fabulous. It’s clear my individual passion in this area is shared by Microsoft’s desire to improve education through the use of technology.

Inspiration, Innovation and Education.