Decode, then and now

How I’d like to make coding accessible

I’ve mentioned before that it was game design that introduced me to programming. This was more or less by accident, a “by chance” that I decided to try to make a computer game for a school project when I was 12. A complete chance that I really enjoyed it, that I could be quite good at it, and that it inspired me to spend ridiculous amounts of my time on it. It helped me become more driven in school, got me involved in groups and teams, eventually it became my job and now it’s the reason I’m at university.

The last seven years — and many more to come — of my life determined by a fluke. This is not something I would have liked to have left to chance. I am so thankful that the chance did come around.

When I was starting year 11, (2012, 15 years of age), I started to become aware of oddities in how school worked. The fact that there were hundreds of thousands of students over the nation working really hard and at the end of it all having nothing to show for it baffled me. I found it strange how a 3 hour period could influence the rest of our lives in such a big way. I was frustrated by how bad luck could get you behind so quickly.

I was a big part of the robotics team in my school. That year I became overall team captain and my smaller team of 2 were working hard, gearing up for the world championships. I had a lot of fun in robotics, and put a lot of my soul into those competitions but after the world champs in 2013 I was facing similar confusion and frustration. Everyone puts so much weight on a competition, works hard for the sake of glory where they could be using their minds in a similar way and spending their time to contribute to the world. I decided not to compete for the 2013–2014 season, and invest time in mentoring the other robotics teams.

With more time, I was considering the issues around education, and my strange circumstances in programming and what it was like teaching myself. I didn’t have any role models as a coder, or any peers to talk about it with, it seemed the older my peers were the more afraid they were of using a computer. For a lack of a better word, as a programmer, I was lonely.

A rather melodramatic portrayal of “the lonely programmer”

The connections were fairly obvious. I stumbled on programming by chance, I didn’t know anyone else who did. This stumbling must be fairly unlikely, then. There must be people out there who have the potential to have their life changed just as much as I did but never had the chance to be exposed to it. Digging into the news and stats made it even more apparent: all over the world, the amount of people taking computer science in school was pitiful, and in some places it was decreasing. Yet, the demand for these people in the workforce was at an all time high.

I attributed it (and still do) to how simple and closed we’ve made technology. Yes it’s beautiful, yes it’s extremely easy to use but there’s no way of telling what is going on inside a machine anymore. Gone are the days where you could open up a computer and identify every single component and the purpose it served, understanding exactly how electricity from a power supply resulted in lights from your screen. We lock that information away, make it very small and incredibly complex. But the complexity is hidden behind easy to use interfaces, and a limited set of tasks. Tablets were becoming extremely popular because they were so easy to use… but for consumption. They made watching movies easy, or browsing Facebook, or playing games but they were no good for productivity — this has got better since then, but I still don’t see an iPad replacing a laptop.

This makes the inner workings of computers seem scary to people, even though it’s not that complicated when you’re just scratching at the surface. But the problem went deeper than that, there were no opportunities for people to learn in schools. It was incredibly difficult to find a school that had a computer science class, or some kind of digital technology class, and it was even more difficult to find one that was any good.

It was this frustration that led me to start Decode. A project that aims to empower people with technology, making them producers of it rather than just consumers. It started out as a model for schools to run what were effectively programming workshops. The key idea was that learning was easy, but getting started was the hard part. If you have a room full of students and give them the tools to start with, a couple of experts to tap into, they’ll be able to create something.

I started it in my school, and it caught the attention of some cool people. Towards the end of 2013 I had the amazing (but terrifying) experience of giving a TEDx Talk in Auckland.

A Decode holiday workshop

Taking on the role of a teacher was an enlightening experience. My first Decode session at school had 20–30 students come which was a great turnout. As pretty much everyone in the room was a beginner, I wanted to go for a more structured approach. I started with the basics of the web (HTML, CSS, JavaScript) and went from there. Sure enough, students of all ages started to catch on and develop an interest for coding. It wasn’t long before some wanted to split away from the regular, structured arrangement and start working on their own thing. Shortly after that, they had a student startup of their own.

I really saw the potential of this model, and I worked hard to get it introduced to other schools. I visited a few towards the end of the year but not many bit, unfortunately. Time was a resource I did not have much of so I wasn’t able to pitch Decode to the best of my ability.

Bring it online

The oldest website

Over the break between 2013 and 2014 I wanted to make the website really useful. The old one was made in PHP (very quickly) and I had never heard of responsive design. I had heard of this thing called Node.js which let you write JavaScript on the server. It seemed a bit bizarre to me but I thought I’d give rewriting the Decode website fully in JS a shot, with the goal of adding a good lesson directory and a forum system.

Through working on this, and a good bit of rebranding, I learned a lot about the web. This was a turning point for me where I really started to understand how powerful the web and its technologies were. I figured out responsive design, fell in love with Node.js and was ready to tackle some wacky projects with it (see: Touch). The end result wasn’t the cleanest of projects, though. As I was learning Node as I went, the codebase was full of rewinds and redos and remnants of old mistakes. Did I mention I had only just started using Git?

In the end, the new website worked. The forums were functional and I was pleased that I could integrate logons with Google and Facebook but the whole thing was a tad clunky. What perhaps wasn’t as clunky was my exploration into 3D animation with a snazzy new promotional video.

Decode in 2014

I had a new website, a new brand, I was ready to make Decode a big thing in 2014. At the beginning of the year, this was definitely the case. We quickly outgrew our room in my school, and had to move into one of the conference rooms. I started running weekend sessions for people of any school to attend, and I was visiting another school once a week to help them run their Decode sessions. I remember taking some Raspberry Pis to one of my Decode sessions and seeing how people interacted with them —unfortunately we didn’t have the electronics to do much with them but for some year 8s getting them started properly was a challenge (and a good learning experience).

Pretty much nobody used the forum I developed though, that was a bit of a waste (but for me, a great learning experience).

I let people more off the leash with these Decode sessions and this was a bit of a mistake. It’s not that they weren’t capable of going down their own path, many of them just weren’t quite interested enough. I made the assumption that if I could do it on my own then anyone could do it in a room surrounded by other people doing it. Still having some structure for the beginners would have really helped to keep them involved. I’m sure any teacher could have said this from the beginning but I was still learning, and experimenting.

As the year went on, school became more demanding and sessions started to lose their impact, attendance lowered fairly dramatically and I didn’t see much progress in the other schools. The experiments that I made didn’t work this time round but at least I could see that and understand it. It was disheartening to see that the year would end on a low rather than a high for Decode.

I did manage to stay part of the conversation though. Since my initial creation of the project, the world had been talking about this issue with coding. Code.org was doing amazing things with the Hour of Code, Codeclub was gaining huge traction (and arrived in New Zealand in early 2015), Codecademy was proving to be a great online resource and Khan Academy had also added programming lessons. Governments were turning their attention to the issue and inspiring educators and organisations in New Zealand were coming up with creative ways to help it. I saw tangible effects of this trend even in my school where they had started a computer science course because the demand was so high.

I’d like to say that since my frustrations in 2013, the problem has improved. We’re still far from winning, though. And I still want to do my part.

Entirely Online in 2015

I knew that if I wanted to make an impact with Decode sessions, I’d have to be on it full-time. I was working to raise money for my university degree so I knew that it wouldn’t be possible. I still wanted to contribute, though. I came to love explaining ideas to people, so I thought I could make the Decode platform entirely online and publish lessons.

Khan Academy’s computer programming lessons inspired me. They had a “code through” where you would have a box to put code in, and pressing play would fill out this box with code and over audio someone would helpfully explain what they were doing. The technology itself was really intuitive, providing live updates to an implementation of processing.js with helpful code completion and error messages. They even open sourced the whole thing.

Their lessons were really good, I wanted to take a shot at them myself. But I thought of the vision of Decode and what would help this stand apart. I wanted my lessons to still be relevant in a classroom setting and be in the 21st century being online. So I decided that I’d create really nice presentations to use in a lesson, video myself talking over the presentation and coding with all of the nice live aspects of the Khan Academy editor.

The new getdecoded.org relied on 3 pieces of software being developed (as well as recreating the website in Jekyll):

  • A very flexible HTML presentation framework, Debut
  • A schema for recording code typing and then playing it back, Recode
  • A live-previewing code editor for messing around with code, javascript-sandbox

I will elaborate more on the technical details of these libraries another time. I spent a few months developing these libraries and they’re all still in development but I got them to a state where I could record and publish online. In the spirit of ship now, perfection later, I started making videos. I wanted to start with two series: one that is about general programming concepts, and a more practical one where we progressively work through a project (making 2048).

A video on variables on the new Decode website

Sitting in front of a computer explaining these concepts is a lot of fun. I like to come up with intuitive animations and representations for the presentations, and figure out how I can keep the videos short and managable. I still need to find more time though. More time to make videos and more time to publicise them. The videos don’t have many views but everything has to start somewhere.

The software is something else I want to see improved and publicised. I want to make Debut something that people turn to for any presentation, Recode a useful tool for teaching programming and give JS sandbox a whole lot more than just JS. As my 2048 tutorials incorporate HTML and CSS, a fully fledged jsfiddle-esque live editor would be very intuitive.

Oh, and I want to change static sight generators to get rid of the Ruby dependency. It sits in my Gulp workflow rather awkwardly. Again: something to explain another time.

Decode has been and still is a very big part of my life. It has allowed me to meet some incredible people through meetups, interviews and talks. It has given me reasons to dramatically improve my development skills. It has helped me understand how people think and what makes them learn. Working in this area has been such an inspiring and thought-provoking experience and I have no intentions of stopping now. In my next term at university, next year, I should be helping out with some of the local Codeclub sessions here at Cambridge. It’s been a while since I’ve had the joy of showing someone what it means to be a computer programmer.

Let’s keep up the good fight.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.