Warning: Personal post – my new job

September 6, 2015

Once again I am breaking the editorial guidelines for this blog.  This post isn’t a tip, trick, useful software or hardware.  Last time I did this was in 2012, so I think I’m allowed one every three years.


After 12 years of working for Cramlington Learning Village, I’ve moved on.

I’m thrilled to announced that I am joining FrogEducation as their Technical Customer Advocate.  My role is to work for and with Frog schools to help them get the most out of their platform.

I’m a huge fan of Frog, it has twice transformed CLV.  We embraced the concept of a VLE when we first bought Frog in 2008, creating a VLE which allowed teachers to push information to students and interconnect all our resources.  This was only 4 years after Facebook was founded, 3 years after YouTube, online learning was barely a concept in most UK schools.  Cramlington already had an intranet, containing hundreds of lesson plans – but this was a resource for teachers.  Frog3 flipped that by bringing our students online in a safe and secure portal.

In 2014, we upgraded to FrogLearn (still using Frog3 to manage it – recommended for upgrading schools at the time –  I don’t know if that’s still the case).  The effect was again transformative.  Frog3 (as good as it is) made lesson creation a slow process.  FrogLearn makes lesson plan writing easy.  Our staff (sorry, CLV’s staff) seem to have overwhelmingly embraced this, each writing dozens of lesson plans – last count was 3500 sites (1000 more since I spoke at Frog15).  These lesson plans sit within FrogDrive, but I helped created a department structure to aid in organising them and recreated the Accelerated Learning template first introduced to Cramlington in 1997 with the help of Alistair Smith.

You can watch me talk about it at Frog15:

It’s this experience and knowledge I hope to bring to all Frog schools and while I leave behind good friends and dedicated colleagues at CLV, I can’t wait to start!



FIXED: Webpages display correctly without using Compatibility Mode

May 19, 2014

Something strange started happening with Internet Explorer last year.  When IE10 turned up, it seemed like it rewrote the rule book on how the browser displays web pages.   For instance, if you hadn’t coded your font name in your style sheets absolutely correctly, then you had to deal Times New Roman.

Time's New Roman

That’s not what I meant!

Now of course, one should code their style sheets correctly.  But realistically, the rules change too often and there’s just too many pages I’ve built while on a learning curve.  I do not believe anyone can be reasonably expected to maintain and update static pages as browser standards change.

If you disagree…

Good for you.  Well done on having a differing opinion.  This post is not for you.  This post is to help others like me beat the system.

The Compromise

So, if something stops working in the latest version of the browser, you can switch on Compatibility Mode/View.  The problem with this is it displays everything like it’s in IE6/7.   Which means you lose anything clever or fancy.

The Solution

What’s needed is some way of telling IE to use all the bits you have at the time of coding, but don’t change things when you add new features.

And thanks to a long Google search (not having a clue what to search for) I eventually found this:

<meta http-equiv=”x-ua-compatible” content=”IE=9>

This single line of code at the top of a webpage, tells IE to run a webpage as if it is displaying it in Internet  Explorer 9, or 10 (content=”IE=10″) etc…

I love the simplicity of this.  It gives me the freedom to build a site/system however I need to and I know that there won’t be a massive panic when the browser updates and suddenly some bit of jQuery/CSS stops working.

Auto Menu (PHP)

March 19, 2014

More often than not, I get asked to upload and link some files from our teachers to one page or another.  This is part of my job and I’m happy to do it.  But sometimes, I get asked to upload 20 – 30 files in one email.  This gets tedious.  And generally, I’ve no sooner finished than I get another email requesting a couple more in another location.  Complaining about this seems a little childish, but the truth is, it’s boring work that takes time.

How geeks deal with repetitive tasks

How geeks deal with repetitive tasks

I’m a great believer in “Work Smart, not Hard”.

Work smart, not hard

Work smart, not hard – nailed it!

Being a WSNH believer (some would say an evangelist), I wrote this bit of code, which automatically populates a page full of links to the resources inside a folder.  It even takes into account sub-folders.


Hopefully, you can implement this yourselves, but if not, drop me a line.

You can download the script here.  I could have pasted it here, but the formatting was lost and it looked really ugly.

Need a small server capable of hosting databases?

June 16, 2013

In my last post, I talked about using PHP and if you didn’t have access to a server that allowed PHP to run, what could you do?  For the more technically minded out there, you may be surprised that this is even an issue.  The sad truth is that lots of free websites don’t offer PHP and quite a few schools have the servers locked down through official policy and end of argument.

Managed support does not simply allow access to our servers

Use all the memes!

There is hope

A year or two ago, our IT support (not a managed service) started buying QNAP Tera-stations.   Ultra-cool name aside, these network storage devices are great for back-ups.  We use them to hold our photo archives and video project construction files.  Some of you would be amazed* at how frequently I get asked to make a change to a five year-old video.   Keeping the source files makes that a lot easier.

Technology changes all the time, so rather than recommend a specific model, I’ll talk about the features available on even the basic, home model.  In the software section, this is just some of the features they offer:


One of QNAP’s home range

  • iTunes server
  • Music server
  • Photo Station
  • Video Station
  • TV Station
  • FTP
  • Auto-back up
  • Print server
  • Anti-virus

And most importantly, for this post, it can also act as web server with PHP support and MySQL database support along with phpMyAdmin (which is an easy database management system)

While not wanting to endorse a particular product or even model, a quick Amazon search shows that these products are not bank-breaking (we’re talking a couple of hundred pounds here).


I think these products have been loaded with features to appeal to the geek-at-home.  I’ve quite tempted to get one for myself to house all my media.

When discussing them recently with an ICT teacher from another school, he pointed out it would be a huge benefit in his classroom.  He’d be able to allow his students to program webpages to interact with databases without risking the security of the school’s servers.

At Cramlington, we’re seriously discussing# the possibility of loading up one of these with our interactive webpages and offering it to other schools.  Another school could take the QNAP, plug it into their network, change a couple of settings and be running things like:

  • Drag-and-drop seating plans
  • Custom timetables
  • Class blogs
  • Rewards system
  • Random name selector
  • etc…


A nice, simple solution with a huge range of possibilities.   Damn, I should totally get sponsorship before hawking products for free.



* I suspect those of you in a support role would not be that surprised. 🙂

# Don’t get too excited just yet.  We’re discussing it properly and going about trials sensibly. Watch this space.


January 28, 2013

Sparkbook is a database driven system I’ve built for school which populates students directly from our MIS (Serco Facility) and allows teachers to quickly mark them against different criteria.

The system is designed to be customisable, so teachers can add their criteria. There is a tiered marking system built in – teachers can choose from 5 (and counting) marking tiers:

  • Expert, Apprentice, Novice
  • Gold, Silver, Bronze
  • etc…

You can set a target and Sparkbook calculates both the current level and ultimate grade.   It’s the sort of thing, I’ve discovered lots of staff had been doing manually in MS Excel for years, spending ages build all their spreadsheets.

Finally, I’ve described it as a mobile device companion markbook, in that it can run from a tablet (resized automatically and linked from our Frog VLE) leaving the user’s computer screen free.   Very handy if you are marking online work, no changing windows.

I’ve only soft launched it so far.  That is, I’ve linked it in, but not drawn everyone’s attention to it.  I prefer to do introduce new systems this way, it gives systems time to settle in.  There are bound to be glitches, change requests and training issues. By simply making the link available without a grand announcement,  it naturally limits the number of teachers who try it without training.

Showing off

I’m aware in writing this post that Sparkbook isn’t actually available for you all.   Sorry about that.  My long-term ambition is to take a lot of the systems built at Cramlington and package them up as a product for other schools.   Delays in MIS product updates have killed that ambition for the moment and even then, I’ll have to investigate just how we’d go about providing a dynamic product such as this; but that’s the goal someday.   For you, it’s either hang on or apply for a job teaching at Cramlington Learning Village.

FIXED: Frog’s Kerboodle widget

December 14, 2012

Kerboodle is an online subscription resource site.  Frog is our VLE.   And Frog’s official Kerboodle widget allows single-sign-on from Frog to Kerboodle.   So no different usernames or passwords to remember.


Kerboodle’s Frog widget. Big, isn’t it.

Unfortunately, when I downloaded the official widget from Frog, we discovered a really odd issue.  For our students and teachers on Windows XP machines running IE8* the widget doesn’t appear as a button?    The image is there, but that’s it??  My best guess is that some obscure security setting prevents part of the widget code from running.

Boring background bit (and some name checking)

Fortunately, I was at a Microsoft event hosted at the impressive Harton Technology College in South Shields.   Sean O’Shea (@SeanOfTheNorth) from Microsoft had invited me there to have a look at Surface and Office 365 and both are really very cool.   But more about these in future posts.  Frog had a stand there and Frog’s partnership manager Adrian Bantin (@thebantin) was on hand.

Adrian is a really nice guy and when I explained the issue, he sent me the FDP code that sits behind the widget.


I found a solution.  This might not work for you, but it works for us.  I’ve also sent it to Frog so they can pull it apart and see if they like it.   But in the meantime, this seemed to be the code which caused the issue:

widget.onLoad = function(){

var link = widget.createElement(‘a’,{‘onClick’:’javascript:openKerboodle();’,’style’:’cursor: pointer;’});    

link.setHTML(‘<img src=”http://appstore-misc.frogdev.co.uk/resources/images/uwa/kerboodle/logo.png” /></br>’);  



Now, I think what’s happening is that this line:

var link = widget.createElement(‘a’,{‘onClick‘:’javascript:openKerboodle();‘,’style’:’cursor: pointer;’});

isn’t rendering in the browser.   But there’s more than one way to skin a cat or in this case call a Javascript function.  Which is what this code is doing.  It’s saying when you click on the image, run the function openKerboodle().

Another way of doing exactly the same thing is:


This method is more traditional, the code goes inside the body tag instead of inside an onLoad function and most importantly (seems to) work.

Full code






<meta name=”frogLib” content=”1.1″ />        

// <![CDATA[
// ]]>https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js”></script>



                widget.onLoad = function(){                                   

openKerboodle = function(){                        

 UWA.Data.getText(‘http://www.kerboodle.com&#8217;, function(data){displayHtml(data);});                    



                displayHtml = function(data){                    







openKerboodle();”> http://appstore-misc.frogdev.co.uk/resources/images/uwa/kerboodle/logo.png /> </a>



Here’s a link to the text version, just in case the browser corrupts the code.  Make sure you download the file.  For some reason, the code doesn’t show up in the MediaFire browser.



*Can’t use other browsers.   Please don’t bore me with how wonderful Chrome and Firefox are.   Don’t care, not my department.  We’re stuck with IE.

Google Forms – passing user details from a VLE

November 27, 2012

The tutorials for how to do this already exist on Google Docs, but whenever I see a survey posted on our VLE, this extra is never included.

Getting started

I’m assuming if you’re reading this you already know how to set up a Google form.  I’m assuming that not because I want to make anyone (including me) an ass, let alone recite a cliché.  No I’m assuming, gentle reader, that you know how to make a form in Google for two reasons:

  1. You want more functionality from your forms
  2. It’s really easy

    Create a form in Google Docs

    This is the current Create button in Google. By the time this post is published I fully expect Google to have changed the design completely

Quick primer

Just in case, I’m going too fast:

  • log into Google Docs
  • click on the Create button
  • click Form

Once your Form is opened you can set about adding questions in all sort of styles, from text entry and paragraphs to multi-choice, scales etc… But let’s be honest, you know all this.

Get to the “fun” bit

Alright, I went as fast as I could.  So, assuming (there I go again) you’re using a similar set up to Cramlington, where surveys are posted as links inside notices and do not require our students to be logged into Google Docs, you will have no idea who the student is who is completing your survey.Easiest solution is to include a username field.   Generally our students are honest and will fill this out, but that’s assuming they spell correctly and include the tutor code part of their username.   It would be so much simpler to just pass those details from our VLE.

Fortunately, we use the Frog VLE which exposes the user’s username in a simple Frog tag: [user_username]

This username can be added to the Google Form address in the following manner:

https://docs.google.com/spreadsheet/viewform?formkey=lots of letters&entry_0=[user_username]&

What does that do?

The actual address of the form is:

https://docs.google.com/spreadsheet/viewform?formkey=lots of letters

There’s a link to the form at the bottom of the edit page.  The rest comprises of:

& tells your browser that the formkey variable has ended.

entry_0 is a new variable and corresponds to the first field in the form.  If you put entry_1 you could set the second variable in the list and so on.

[user_username] is our Frog tag

You can see the example for yourself here:

And that’s it.  Simple.

Now all I have to do is make our 100+ teachers read my blog.