Automatic Magformers Table

Magformers (magnetic building sets involving maths) used to be Simon’s greatest passion when he was six (just a year ago!) and this week he has been travelling in time to revisit this old love, after his little sis received a new Magformers set as a present. What Simon did next was to combine Magformers and programming: he created an automatic table listing various Magformers models (in HTML/ JavaScript). The sets that can be used to build those models were to get filled in automatically, depending on the number of specific shapes needed for every model and the number of such shapes available in every set. As you might imagine, this involved many lines of code and a whole lot of computational thinking. At one point, when Simon was nearly done, he realized that the column listing the sets wouldn’t get filled in properly. He had a bug in his program that he couldn’t find, so he turned to his older friends in Slack for help. It’s such a pleasure to see him communicate with these experienced programmers on a regular basis now and unbelievable how eager and resourceful they are. One of Simon’s friends from Slack even created his own version of Simon’s program in CodePen! What makes it even more wonderful is that Simon no longer hesitates to apply the good advice he gets. The next day he wrote some “helper functions” and the table worked!

Simon hasn’t put this project online yet, as he wanted to make it more interactive and hasn’t managed to do that so far.







Simon’s first set of Web Development How To’s: How to make a slideshow

Simon has recorded his first set of web development tutorials, about how to create a slideshow. The original code comes from the website.




Simon got stuck in the previous video, but debugged his code in #1.5:

Update: Simon has recorded the last how to in this Slideshow series, about hoe to make the slideshow automatic:

Simon trying out the D3 library

Simon spent hours studying the D3 library on Sunday, it’s a very popular JavaScript library using SVG images he had never tried before. He also found it great how the annotations are in English, Russian, Chinese and Japanese and showed it to his Chinese teacher today.

He also created an account on the library website, but couldn’t figure out how to create a new project. We should look at it together this week when I finally have more time.

These are two small videos of Simon trying the D3 library out:



D3 16 Jul 2017

Simon gets serious with Linear Regression (Machine Learning)

Simon has been working on a very complicated topic for the past couple of days: Linear Regression. In essence, it is the math behind machine learning.

Simon was watching Daniel Shiffman’s tutorials on Linear Regression that form session 3 of his Spring 2017 ITP “Intelligence and Learning” course (ITP stands for Interactive Telecommunications Program and is a graduate programme at NYU’s Tisch School of the Arts).

Daniel Shiffman’s current weekly live streams are also largely devoted to neural networks, so in a way, Simon has been preoccupied with related stuff for weeks now. This time around, however, he decided to make his own versions of Daniel Shiffman’s lectures (a whole Linear Regression playlist), has been busy with in-camera editing, and has written a resume of one of the Linear Regression tutorials (he actually sat there transcribing what Daniel said) in the form of an interactive webpage! This Linear Regression webpage is online at: and the Gragient Descent addendum Simon made later is at: and

And here come the videos from Simon’s Liner Regression playlist, the first one being an older video you may have already seen:

Here Simon shows his interactive Linear Regression webpage:

A lecture of Anscombe’s Quartet (something from statistics):

Then comes a lecture on Scatter Plot and Residual Plot, as well as combining Residual Plot with Anscombe’s Quartet, based upon video 3.3 of Intelligence and Learning. Simon made a mistake graphing he residual plot but corrected himself in an addendum (end of the video):

Polynomial Regression:

And finally, Linear Regression with Gradient Descent algorithm and how the learning works. Based upon Daniel Shiffman’s tutorial 3.4 on Intelligence and Learning:




RGB Project in Codea using SVG Color Map

On Monday this week Simon spent hours converting hexadecimals into RGBA values for the 140 colors supported by all modern browsers and creating a color file in Codea. He used the w3schools color map available at and an html color codes converter 

Some of the color names were quite exotic (like Chartreuse or Bisque ), and we looked those up together in the dictionary. We also took a very close look at the relation between red, green and blue values and found out that red was added every time to make colors lighter, even in shades where you would not expect any red.

Simon later made a nice design pattern in Codea using the color file:



Islamic Star Pattern

Simon made this beautiful interactive Islamic star pattern from Daniel Shiffman’s one hour long coding challenge he devoted to the refugees. The coding challenge is based on this paper about computer visualizations of geometrical Islamic art.

Late last night Simon almost completed the project in Open Processing when the browser crashed. He had to start completely from scratch this morning. This time he worked in CodePen. You can play with his Islamic Star Pattern yourself at:

The code:

The project step by step. The algorithm involved building a grid of polygons and finding midpoints for the sides in those polygons and then making those midpoints send out rays at certain angles that meet to form star-like shapes:



Islamic Star Patterns Hankin Method 2

The above picture is from Craig Kaplan’s PhD thesis on Computer Graphics and Geometric Ornamental Design. Below Simon explains what distance δ means:

Asteroids Coding Challenge

Simon has built this fun Atari game where a spaceship shoots at asteroids with laser and breaks them down into pieces. It was actually another coding challenge by Daniel Shiffman that Simon had tried a couple months ago when he was just beginning to write code. Back then he got seriously stuck at the asteroids phase (using JavaScript and HTML5 canvas with the p5.js library to program the “laser” functionality and examine collision detection with the asteroids). This time around, however, he glided through the challenge, nearly effortlessly, in his own words. He did enjoy it immensely and even tried rebuilding it on the RaspberryPi, but had “a copy-paste issue”.

The code in online in the p5.js web editor. You can run it and play the game, you can also hit the Download button and play on a big screen!