I gave a talk at a TEDx event, TEDxLund here in Sweden, this past autumn (October 10, 2015). The event was organized by a group of University students. I was very surprised to be invited to speak at the event, and immediately I became nervous about the prospect of giving a TEDx talk. I have seen many amazing TED talks in the past and I feared being compared to other much better speakers and end up looking like an amateur. I am also not entirely comfortable with being filmed, and the idea of a video of me ending up on the Internet made me uncomfortable. I decided to give the talk despite this because I hoped that I might inspire a few people to learn programming.
The video is now live on YouTube: Rendering Minecraft | Jesper Öqvist | TEDxLund
My script went through many big revisions and even complete rewrites. My initial goal for the speech was to motivate young people to learn programming, so the first version of my script was all about that. I didn’t mention Chunky because it seemed unrelated to the topic. However, Chunky is probably the most noteworthy thing I have done in my life, so it seemed like my talk should be about Chunky in some way. Chunky is also a nice and well-contained success story and part of the advice I got about writing a TED talk was that you should use a story to engage the audience. The story of Chunky seemed more engaging than just talking about programming in general.
The final speech is about three things: Chunky, programming, and Minecraft. I had some key points I wanted to talk about and this was the best way I could think of to touch on each point. Those key points were:
- Programming is fun.
- You can do cool things if you learn to code.
- Programming is not as difficult as it may seem.
- Minecraft and other video games can be a great inspiration to learn programming.
Talking about Chunky was tricky because although it sort of helped the second point it could easily undermine the third point. I didn’t want to make Chunky seem too impressive. It is probably easy to think “I could never make anything like that”, especially for non coders, but the message I wanted to convey was that anyone can make something like Chunky, at least that was implied. Such a statement is difficult to make convincing without seeming arrogant, it might turn out sounding like I am too good at programming to be able to see the difficulties about learning to code. I tried to not trivialize the amount of work I have spent on Chunky, and I wanted to emphasize the iterative nature of coding – you make something crappy first and keep on improving it until it becomes better. That’s the way I made Chunky, and I am certain that with enough time and motivation anyone could make something similar because the math you need to know to make a ray tracer, like Chunky, is very simple and there are tons of tutorials online for both the math bits and the code bits.
One thing that made writing the talk difficult was that I had to write it for an audience that probably does not know what “ray tracing”, “path tracing”, or maybe even “rendering” means. I tried to use as simple words as possible, and explain any more complex words that I used. Rendering ended up in the title of the talk though, which might have been a bad idea. The title of my talk was a quick decision, “Rendering Minecraft” literally describes what Chunky does, but I started regretting the name afterwards because it might be misleading and imply that I have worked on the actual Minecraft game, which I have not. I hope there is not too much confusion about that.
There are probably many things that could have been improved in my TEDx talk, but I feel like I did the best I could with the limited time I had to prepare for the talk. I was very relieved after the event, because all of the script writing and rehearsing had been making me really stressed.
One of the people who came up and talked to me after my speech was the mother of a boy who plays Minecraft. She said her son was interested in programming, and wondered if I had any tips for where to learn programming. The one site I could think of then was Code Academy, but I have compiled a list of other sites I know of where you can learn more about programming below:
- code.org has free programming courses, and a few small programming games in the “Hour of Code” section of the site, for example there is a Minecraft-inspired game that teaches the basic principles used in programming. Check out Minecraft Hour of Code here. I played it myself, and later I showed it to my younger sister (13 years) who played through it on her own. It is quite constrained and does not let you do a lot of interesting things, but it might be a good starting point.
- Scratch is an online programming playground that lets you make interactive graphical things by dragging control blocks around to build a program. There are examples of things people have created on the site, everything from simple animations to playable games.
- Kojo, a learning environment based on the Scala programming language, lets you experiment with more “real” programming – you write your programs in plain text rather than by connecting boxes.
- Code Academy, and Khan Academy are sites that offer free courses in programming. I have not tried these, but I have heard good stuff about them.