Adventures in Coding: Javascript

Adventures in Coding: Javascript

Following some successes with the Bet Generator in both Python & C I turned my attention to the project work with the kids from Little Sandbox. The key elements that would be needed for the Kerbinator project, as far as I could tell were:

  • A map,
  • a database that stored the drop kerb locations in the form of coordinates,
  • the means to collect the coordinates and add them to the database
  • markers added to the map from the database

All sounds pretty complicated.

I’d been advised to use MongoDB to store the data and NodeJS as the server. So I found a tutorial to create a simple form based app using Node and Mongo and followed it. And then a few weeks later i followed it again because I couldn’t remember any of it.

The key things I learned here was the way different javascript files relate to each other, how to install node and a variety of other services such as Express, Mongo and Mongoose and even how to do some validation and check for logged in users. All useful stuff and i’d highly recommend the tutorial as it was very thorough and easy to follow.

Now I’m not about to create the Kerbinator app for the kids, but I was aware that in order to support them with their project and set them tasks to help them learn what to do, I needed to know how to do it myself. I wanted to give them the skills to help them work out how to bring the project to life.

One of my favourite things to do is find TV and Film locations. This started when we went to New York in 2015 and spent 12 days wandering around Manhatten getting photos of ourselves outside all kinds of obscure locations – the house from Breakfast at Tiffany’s, Leon’s Apartment and obviously the Ghostbusters’ Fire Station. Since then, wherever we go in the world we check out any TV or Films from the area and watch them so we can go scouting for their locations. It’s become something of a game for us, trying to find the exact camera angle to recreate a particular shot.

Google maps is great for storing locations but it has so many other locations also added so I decided I would make my own Movie Locations App.

I’m not going to go through all the code here as it’s still an ongoing work in progress, however if you’re interested, you can view the files on GitHub.

So for the Movie Location App I wanted to have the following:

  • An online form on which I could input the coordinates of the locations along with the title of the film or TV show and a description of the location itself.
  • A database to store the information
  • Map markers.

I followed the instructions to get the basics set up, the required node modules, MongoDB and the initial structure of files, which consisted of:

  • config.js
  • moviemap.js
  • package
  • package.json
  • package-lock.json
  • public
    • index.html
    • style.css
    • scripts
      • moviemap_map.js

And using the same format as before I adapted the form and the mongoose schema to change the database and form fields to store longitude, latitude, film, description.

The form worked, I could complete the form and see the data being added to the database but I couldn’t get the map to display markers.

I called in some help from Joe, our volunteer at Little Sandbox. Or to put it another way I cheated..!

What I learned is that there’s no set way of doing things, there are all kinds of ways to achieve the same thing. Joe had been working with the kids on Kerbinator and already has the map markers and database set up so he gave me access to the files and I was able to incorporate his code with my code to finally get my map working the way I wanted. To this day I don’t know why my marker code wasn’t working, but Joe’s code was much more elegant than mine so I went with it.

So at this stage, I have a map, with a form for inputting location and film info. A database that stores the information and markers being added to the map from the database.

That feels like a good place to pause. Now i want to either work on adding information windows so i can easily see what each location is, or in the interest of understanding Kerbinator, add in a geolocation function for writing device coordinates to the database… but that’s for another day.

Make your own: Brookside board game

Make your own: Brookside board game

In 2017 my other half (OH) and I, started watching Brookside from the beginning. We are currently at the tail end of 1986 – one of Brookie’s finest years, featuring storylines such as: Tracey Corkhill’s affair with her teacher, Sheila’s rape, Gordon Collins coming out as gay and Heather’s husband dying from a drug overdose.

My OH picked up the Downton Abbey Destination board game from a charity shop and we played it several times over Christmas, enjoying the style of play.

Having undertaken some research I discovered that there is a whole range of destination games, including New York and London and that the original game was created by a taxi driver.

So naturally, I decided to make a Brookside one for his birthday.

The board

Obviously I needed more locations than just the 5 houses on Brookside close so I added places that had provided the setting for various storylines over the first 4 years:

  • The Swan (The local pub)
  • The Woods (Behind the close)
  • The Bookies (Edna and Ralph like a cheeky bet)
  • The tool hire shop (Barry & Terry set up)
  • The train station
  • Gav’s Shed (which he builds from old doors in his back yard)
  • The Union (Where Bobby works as an elected Union rep)
  • Church
  • University (Where Karen Grant studies)
  • Hospital (Where Sandra works)
  • The DSS (Where Damon signs on)
  • Court (Where George Jackson is found guilty)
  • Brookside Comp (The local high school)
  • The Park (Where the summer carnival takes place)
  • The Pier Head (Where Karen interviewed Paula Yates on a boat)

I sketched a design on paper before creating it in inkscape. I used the grid settings set at 25mm wide and made each square a potential space. I didn’t want it to be too easy to get around, so I threw some obstacles in the way.

The most important thing was the layout of the 5 houses and the T junction at the end of the close, as well as the distinctive bend in the road.

After that I took artistic license with the location of places on the board.

You can download the file here:
Game Board

I used 4 sheets of 3mm plywood 300 x 400.
Once cut and etched I attached the top pieces together using strong gaffer tape. I then attached the two bottom pieces together. I the attached top to bottom but only on one side to allow for easily folding down to A3 size.

I printed off a sheet of icon stickers which represent post and RPA cards (see below) I placed these at random locations on the board. I had intended to engrave these but I completely forgot.

The playing pieces

I chose cookers for the playing pieces as a nod to Gav and Petra’s arrival on the close.
I designed them using tinkercad and printed them on the 3d printer.


I decided the currency in the game would be bevvies. So I cut a load of beer tokens.

Download the pdf file here. I cut 200 tokens which took about 4 hours in total.

Download the dxf and stl files (board game, beer token and playing pieces)

The cards

The point of the game is to travel around the board visiting locations and earning tokens for completing a task. Naturally I wanted these tasks to be in some way relevant to Brookside so for example one of the tasks at the courthouse was “Free George Jackson”, one of the tasks at No. 8’s Garage was “Catch Sinbad stealing food from Annabel’s freezer.”

Tasks / Location cards would be worth 1, 2, 3 or 4 bevvies. I wanted to make sure there was a good mix of each number and a spread across the locations. Although, I may have been slightly biased towards No.10 given that so much exciting stuff happened there, it got more 4 bevvy cards than the others. I largely stayed within 1982 – 1986 but where I knew about future events I did make reference to them occasionally, for instance, “Help lay new flagtones” at number 10 – as a small nod to the later body under the patio storyline.

In addition to the location cards I wanted chance cards. If you imagine the community chest and chance cards in Monopoly, the Downton Abbey equivalents were “Carson Cards” and “Post Cards”. I maintained the Post cards but named the other cards Rate Payers Association Cards (in fact, one of the Number 8 location tasks is to join the rate payers association – worth 1 bevvy!).

I created a spreadsheet with 6 tabs for each of the cards – with locations divided by reward value.

I then created a mail merge with 16 cards per sheet, taking the data from each tab. I also added in a image file on each sheet, whether that was 1, 2, 3 or 4 bevvies.

I printed the RPA cards on green card, the locations and post on white.

I created back designs for each too – the location cards displaying the Brookside Close street sign, the Rate Payers Association cards using an adapted Brookside logo and the postcards using a Liverpool post image.

You can download all the merged files or the component parts if you want to make up your own

1 bevvy
2 bevvy
3 bevvy
4 bevvy
Location backs
RPA tasks
RPA backs
Post tasks
Post backs

My final task was to make a box. I ordered a couple of sheets of A1 card and used the following dimensions:
base rectangle width 41cm x 31cm

I made the sides 5cm high – so i doubled this up so the sides could be folded over to make them sturdier. I also added wings to the longer edges which could be stuck down under the flap of the short edges to maintain the structure.
For the lid I made the box larger by 2mm.

(Sorry – I forgot to photograph this process and I did it all by hand with a pencil and ruler so I have no design files to link to).

Finally I created a collage of Brookside images annd placed the logo on top. I stuck 2 A4 sticker sheets together and fed it through the A3 printer and then placed these on the lid.

And there you have it. A Brookside board game.

We have played this so many times already and we love it.

Public Talk: women mean business at Central Library, 08/03/18

Public Talk: women mean business at Central Library, 08/03/18

On International Women’s Day 2018, I had been invited to talk about my experience as a woman in business by the Business and Intellectual Property Centre at Central Library. I was terrified. I’ve always turned these things down but I decided it was finally time to push myself to get more comfortable with public speaking. I enlisted some coaching support from Su Grainger who gave me so much help and advice as well as some techniques to quell the nerves.

I was introduced by Bernie from The Women’s Org who warned the audience that I was very nervous, while I was stood to one side taking slow, deep breaths and feeling like I just wanted to run from the room.

But I got through it. The audience even laughed at my jokes. By the end of it I felt like I could do an arena tour.

Here’s the transcript of my talk:

Hi I’m Helen, I’m really excited – well maybe excited isn’t the word, terrified, no: honoured – to be invited here, on International Women’s Day to share my experience as a woman in business.

Little Sandbox is a kids tech club which I co-founded, with Chris Huffee, in 2014. But I actually started the business in 2010. Prior to that I’d had some pretty interesting jobs. I’d spent 6 years living and working in London in the music industry, which wasn’t as glamorous or exciting as I’d imagined it to be. And eventually I was in so much debt I decided to move back to Liverpool, where after struggling to find work I became a taxi driver for Delta. I was one of only three female drivers at the time and it was quite an eye opening experience. But nowadays we have a lot more female drivers and I’m proud to have been one of the early ones who helped make that cultural shift.
After that I trained for a level 3 in playwork and worked in an afterschool club for 18 months before joining a CVS where I worked as a communications officer for 5 years.

It was from this job that, due to a change in government and cuts to charitable funding, I sadly got made redundant [insert ‘aaahhhhs’ from the audience, following a bit of prompting and a sad face from me].

I’d had two ambitions when I was younger.
First of all, when I was 9, I told my teacher that my ambition was to be an author… Like Jackie Collins.

Has anyone read any Jackie Collins books? [several enthusiastic responses from the audience] oh right, quite a few of you. Now I haven’t actually read any Jackie Collins books but it’s my understanding that she was the queen of the bonkbuster. Is that right? [more enthusiatic nodding]

Oh right, well then, I can only imagine the reaction that got in the staff room later that day.

Interestingly though, in 2014 I did write a novel. And it did get published. And it was a bit of a bonk buster too, so I achieved that particular ambition, quite literally.

My second ambition, when I was a teenager, was to own my own business, specifically a record company, which explains my years in the music industry. But I think both ambitions show that from an early age I knew I wanted to be self employed.

So there I was, facing redundancy, and I decided this was the time to go for it and start my own business. I decided that in this period of economic uncertainty with massive cuts to third sector funding that this was the perfect time to start a social enterprise.

But eight years later, it’s still going, so I guess I’m doing some thing right.

I registered my company on 26th August 2010 as Geni-i Creations Ltd.
Would anyone like to guess what Geni-i creations was set up to do? [tumbleweed…] no, of course not, it was a silly name, it meant nothing and it gave no clue as to what the service was that I was offering.
I started Geni-i creations as a Web design company, offering affordable websites to third sector businesses.

Before I left, my manager had told me about some funding I could apply for and asked if I’d consider teaching. I said “oh God, no. I couldn’t teach, no way, because that would mean standing up in front of a room full of people and talking, and that is my worst nightmare.” [some encouraging smiles from the front row and a murmer of laughter]

My boss encouraged me to go on a teacher training course, and part of the course involved a micro teach, where I had to deliver a 20 minute class to the rest of my group. Now I was really nervous about this and I had no idea what to do. My intention had been to teach clients to manage their own websites. But I couldn’t very well do that for a whole class with no equipment. My tutor said that it didn’t matter too much what I did for the microteach as it was just to demonstrate that I’d learned the principles and suggested I choose a hobby I enjoyed. I’d always loved silk painting so I bought some workshop supplies, planned how to demonstrate different methods and roped in a few mates for a trial run.

My tutor feedback was great, she said she hoped I would go on and do the certificate or diploma because I was a natural.

So emboldened by this new turn of events I applied for that funding and I ran 2 successful silk painting courses in a local community centre.

One day I was on a networking course and as we all introduced ourselves, I listened to everyone say things like ‘I’m Jim from 123 finance and we provide book keeping services’ and when it was my turn, I said ‘I’m Helen from Geni-i creations and I make websites and run art classes. And I heard it. I felt the confusion in the room. I realised that no one wants to buy a service from someone who does a bit of everything.

I made the decision to stick with digital and changed the company name to Sandbox Digital. A good techy name with digital in the title. And my client list grew steadily.

But it wasn’t very social enterprisey.

Then I met Chris. Chris had also been working in the voluntary sector, and Chris had also been made redundant. And Chris also decided to go self employed making websites for charities. GRRRR!! [laughter – from Chris too, thankfully]

We found ourselves with a mutual client, I was making the website and he was making an app which needed to be embedded in the website. We got together to discuss how that would happen. I mean, we both knew how that would happen so it took us all of 2 minutes to discuss and agree a solution, and while we finished our coffee, we got chatting. Chris said he wanted to get kids more interested in technology, which evolved into an idea for a tech club for nerdy kids who don’t fit in at other clubs. And so Little Sandbox was born.

But we were a bit ahead of our time, no one else got it. We wrote so many grant applications to get this started and got rejection after rejection. Finally just as we’d reached our limit, BBC Children in Need came through for us and we opened our doors on Saturday 5th September 2015. Over that year we had 22 kids come through our door – a 50/50 split of girls and boys – and we watched shy, socially anxious kids, grow in confidence and make friends.

At the end of the year, parents asked us to keep it going, describing how much the club had helped their kids. I explained that we had no more funding: “well charge us, we’re happy to pay, just keep it going.”

And so we did. And our membership grew. That strange thing where, when something is free people don’t value it, but as soon as we started charging we doubled our membership.

Initially we thought we were adressing a skills shortage in tech but actually, we were creating a social environment for kids who don’t like being in social groups. We noticed we were having a particular impact on kids with ASD who were thriving in this environment where the common ground wasn’t a condition but an interest in computers, robots, video games, just nerdy stuff.

We have created a really welcoming environment where kids can find their people and feel a sense of belonging. And we’ve created something that, I’m so proud of, I’m even prepared to stand up in front of a room full of people and talk about it.

Thanks for listening.

Make Your Own: Bet Generator Money Box

Make Your Own: Bet Generator Money Box

In this make I’ve built a money box with a bet generator using an Arduino. For more information on why you can read previous blog entries and follow the progress I made in working out this build. But here I present you with the instructions to make something similar.

For this make you will need:

  • Arduino
  • LCD1620 screen
  • Header pins
  • Breadboard
  • Male to female jumper wires
  • Male to male jumper wires
  • Female to female jumper wires
  • Push button
  • 220 ohm resistor
  • 3mm plywood
  • 2 M3 bolts
  • 3 M3 nuts
  • 2 zip ties
  • Velcro strips
  • Prototyping board

You’ll also need access to:

  • Soldering iron
  • Laser Cutter
  • Scissors


The Circuit

Step 1: Solder the pin header to the LCD1602

Step 2: Assemble the Arduino and screen on a breadboard as follows:

From the LCD screen:

  • Both end pins (VSS & K) go to ground and the next pins along (VDD & A) go to 5V
  • VO goes to the middle pin on the potentiometer
  • RS goes to Arduino Digital Pin 12
  • RW goes to ground
  • E goes to Arduino 11
  • D4 goes to Arduino 5
  • D5 goes to Arduino 4
  • D6 goes to Arduino 3
  • D7 goes to Arduino 2

The push button:

  • connect the resistor between the positive leg and 5V
  • connect ground leg to ground
  • connect positive leg to Arduino 8

The potentiometer

With the turner facing you the left pin goes to 5V and the right pin goes to ground.


Connect the breadboard positive and negative rails to  the Arduino 5v and Gnd pins.

The Code

Connect the Arduino to a computer and log in to the online Arduino web editor or use the IDE to create a new sketch.
Copy and paste this code and upload it to the Arduino.

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //set the LCD pins to Arduino rs, E, D4, D5, D6, D7

  char * scores [] = {"1-0","2-0","3-0","4-0","5-0","2-1","3-1","4-1","5-1","3-2","4-2","5-2","4-3","5-3","5-4"};
  char * goaltime [] = {"First","Last"};
  char * player[] = {"Salah", "Firmino","Mane","Shaqiri","Milner"};

long betscore;
long bettime;
long betplayer;

// constants won't change. They're used here to set pin numbers:
const int buttonPin = 8;     // the number of the pushbutton pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  lcd.begin(16, 2);
void loop() {
  pinMode(buttonPin, INPUT);
  buttonState = digitalRead(buttonPin);
  betscore = (random(sizeof(scores)/sizeof(char*)));
  bettime = (random(sizeof(goaltime)/sizeof(char*)));
  betplayer = (random(sizeof(player)/sizeof(char*)));
   if (buttonState == LOW) {
    lcd.setCursor(0, 0);
    lcd.setCursor(0, 1);
    lcd.setCursor(6, 1);
   else {



Assuming it all works you can move on to making a casing for it.

Download file – Case design

Cut the design using a laser cutter.


While using the breadboard you probably used male to male jumper wires. We can now attach wires directly to the pin header on the screen using male to female wires. We can also connect the potentiometer to the screen using a female to female wire.

I used 2 pieces of prototyping board and soldered all the ground wires  to one and all the 5V wires to another, ensuring there was a connection between all the wires. Remember the resistor also connects to 5V so you may need an extra wire between the resistor and the prototyping board.

Plug in the Arduino again to make sure it is all connected and working and then assemble the box.

  • I started with sticking the USB socket through the square hole on the side panel.
  • Push the button through the round hole on the top piece and the LCD screen through the large rectangle hole. If there’s a nut for the push button add this to the front to secure it in place. The screen should be a snug fit so won’t require screwing.
  • The hole on the remaining side panel is for the potentiometer.

Glue all the side pieces together with the base and then carefully bundle together all the wires and fit them into the space before adding the lid. Do not glue this in place as you may need to access the wires inside in future.

If the wires push the lid up secure it with elastic bands.

Plug the Arduino in and check it’s still all working….



Optional Money Box

I used the following design for the money box which includes a space for depositing money and a hatch at the back to retrieve the money. I secured the betting generator box to the top using velcro strips. And then cut a fancy front piece for decorative purposes.

Download – The money box design file

Download – The front piece design file

  • Use zip ties to attach the hatch to the box forming hinges
  • Attach the small rectangle with 2 holes to the outside of door plate using a bolt and secure it on the inside with a nut.
  • Thread a bolt from inside the money box through the 3mm hole above the hatch, secure with a nut and then push through the remaining hole of the small rectangle and secure with a nut. This will be the open and closing mechanism for the hatch.
  • Glue all the sides together.
  • Glue the front piece to the front of the box and use velcro strips to secure the bet generator to the top of the money box


Holocaust Memorial Day

Holocaust Memorial Day

There’s been some shocking revelations this week about the number of people who either don’t know or don’t believe that the Holocaust happened.

While this is disturbing to say the least, because if you don’t believe that something this awful happened, perhaps because, maybe it is unthinkable or too awful to believe it’s even possible, then you won’t recognise the triggers that caused it, or could potentially cause something unimaginably terrible in the future.

That being said, we live in an age where, on the one hand, we have access to information and education, literally in the palm of our hand, but we also live in an age where the most powerful people; whether that’s wealth power or celebrity power; control the messages that are being shared. Fake news, manipulating social media algorithms, technology, whatever, we’re all at the mercy of being told what to believe by people who have their own agenda – and let’s be realistic, those that use their power to control the messages you hear are unlikely to do so in YOUR best interest.

I have always known, on a basic level that the Holocaust was something that happened during World War 2 when the Nazis killed the Jews. I couldn’t picture it, I accepted it as a fact but I had no real feeling other than, “God that’s awful”, but I couldn’t really imagine it. I believed that, because it was so awful and because people are more enlightened these days, more culturally aware and more socially conscious, that there is simply no way anything like that could ever happen again.

However last year I watched Schindler’s List. And it stayed with me for weeks. I felt almost bereft in some way. I felt remorse that I hadn’t really understood before what the Holocaust meant. I felt pain for all the suffering of the millions of Jews who were killed. I felt anger at the injustice of it all and finally I felt fear that this could happen again.

Some bloke with a platform and a prejudice, finding a common problem that his country can get behind and blaming all their problems on one particular race? Sounds a bit mad, but when you consider President Trump wants to build a wall to keep the Mexicans out… it’s not that much of a leap.

What got me the most about Schindler’s List was the apparent glee with which Nazi officers shot and killed people in the street for no reason. There’s a scene in which Amon Goeth (played by Ralph Fiennes) is shooting at Jews in the ghetto from his balcony. That these people treated it like a sport, is abhorrent. It is frightening just how much evil there is in the world and how quickly people would be willing to embrace murder and torture if it was suddenly legitimised.

A few months ago I visited Auschwitz. We toured Auschwitz 1 but we couldn’t face making the trip to Auschwitz 2. We’d seen enough. The vast piles of hair, the room full of shoes, the cabinet filled with glasses and other items left behind by those murdered in the gas chambers. It is, quite frankly, horrific.

But the reason I’m writing this is because, until last year, I didn’t really understand what the Holocaust was, because I simply couldn’t imagine it. I’m 41, I learned about the World Wars at secondary school, but it was pretty boring and difficult to take in. I forgot it all as soon as school ended. I don’t watch news or many documentaries. The masses, perhaps, don’t generally want to watch documentaries about things like war and politics – not when there’s a chance of watching a celebrity fall over on ice, or a chance to make fun of a kid who mistakenly believes he can sing.

The point is, I’m not surprised, the further away we get from the 1940s, the less people remember – or believe – that the Holocaust happened. We really must make sure that it is never forgotten, and that it is never allowed to happen again.