Teaching programming to children during the Corona crisis

Most of the world, is in some form of lockdown caused by the Corona virus, The Netherlands where I live included. Most of us now has to work from home and combine this with teaching since the schools are closed for at least a few weeks.

Since long I wanted to educate my kids on how tech works combined with programming. So here we go. This post will list short single file lessons, which try to make children from 9-13 understand technology better. My children had and will have a lot of fun, I hope yours will have as well.

To teach I chose the more than excellent p5js library based on Processing https://p5js.org/ with the excellent online editor https://editor.p5js.org/

Instruction

  • Open the editor https://editor.p5js.org/
  • Open the link next to each lesson and copy the all of the code
  • Past it into the editor and hit the play button
  • Since my children are not up to speed in English most of the naming and comments are in dutch. But adults/ developers should have no difficulty to adapt/translate it.

The core of p5js

  • setup() : initializes the canvas, setup variables and such things
  • draw() : is the function which probably runs a lot of times per seconds (requestAnimationFrame()) in here you place the code to play with, animations and such

Lesson 1: Displays, screens and Pixels

code 1: Black and white pixels in a 4 x 4 matrix simplified to 1 for white and 0 for black

code 2: Grayscale pixels, introduce the range of the RGB values ranging from 0 to 255

code 3: Color pixels, explain the RGB model and how to create mixes colors with RGB (green and blue becomes yellow ). I also adapted this code live to show them the actual pixels size of what they had created.

code 4: Pixels and Variables introduction of a variable as a magical box and a larger canvas to experiment with variables

Lesson 2: moving things and key presses

code 1: drawing and positioning explained

code 2: moving things around, make sure that your children click the canvas after they run the code otherwise the key presses won’t be handled.

code 3: drawing, activate the canvas again, and perhaps help your children to add a ‘magic’ random color on each keypress

Lesson 3: drawing pixels with the mouse

code 1: mouse position explained and experiment

code 2: condition when moving the mouse, change the color while drawing with a condition

code 3: mirror pixel, let the program do some extra drawing

The web last year

This year it seemed right to do some review of the last year. A year in which I learned a lot, gained new insights and even more questions..

Direction of the web

A lot have been written about the web by a lot of people with more influence than me. Hence I also don’t like the direction where the web is heading. 60-70 percent of the internet is owned well known large corporations. And the gap to publish something totally by yourself is getting larger and larger.

I like to compare it with houses, not many people can build a brick house by themselves, nevertheless if needed anyone can build a functional shelter. This shelter is something you get, know instantly how to build one all by yourself and own it. The digital equivalent of a shelter is a online publication or a post which unfortunately is owned directly by a large company. I would love to see people own the internet again publish completely on their own.

Online marketing

This year the divide between online marketing and engineering became more clear and present. I am even on the verge of diving deep into the world of online marketing because I do not understand it anymore. I always had a vision that when an online product solved a genuine problem for people that you should never hinder people.

Nevertheless it seems necessary to add bigdata, popovers, slide-ins, conversion footers eg. to increase the revenue.
Next year I really want to learn more about this balance. An hope to find answers in big data and measurements.
I still have the feeling that online products should be free of annoyances. Hence if allowed, lots of people would possibly prefer to drive a car with ad banners on the windscreen.

Front-end

This year we took some big steps to out vision to remove jQuery the next year. Unfortunately we still see IE11 sticking at 4 percent of our users. Which sometimes makes me sad. I prefer programming over implementing or finding fixes for browser inconsistencies for IE and sometimes IOS. Nevertheless it is part of the job might fall in the same category as emptying queues for backenders.

Learning goals

My main learning focus will be the same as last year; keep up with front-end, learn more on software architecture and get deeper in to linux/shell scripting.
To broaden my knowledge I want to extend my Node.js skills and dive deeper in Python.
Smaller topics I want to spend time on are:

  • Gain more insights in the balance between Online marketing and UX as a business goal
  • Building teams and motivating people
  • Typescript
  • Webassembly
  • Variable fonts
  • Service workers
  • Ethics and technology

Conclusion

Next will be again full of exciting things in technology, but I also predict a shift in balance. I hope that that more people will walk up straight instead of bent down on their phone (myself included).
For myself I am keen on learning a lot and keeping the nice life/work balance…