Coding, Contributing, Geometry Joys, JavaScript, Math and Computer Science Everywhere, Milestones, Murderous Maths, Notes on everyday life, Simon teaching, Simon's Own Code

Simon’s Bézier Editor in p5.js

One more project inspired by Sebastian Lague: a Bézier Editor. Simon used Sebastian Lague’s algorithms to recreate the editor in p5.JS.



I added the export button! It’s under the “export” folder. Clicking it will show you a serialized version of your path. It’s just in JSON format, so you can read/use it quite easily.

The Bézier curve is made out of multiple “segments”, also called “cubic curves”. It turns out that if you write down the equation for such cubic curve, you actually get a cubic polynomial. I derived these equations:

I started with the equation of a linear curve, worked up to a quadratic curve and the to a cubic curve. Maybe there’s a mistake in these, because there’re a lot of steps and I was a bit inconsistent. If you watch my previous video about Bézier curves, you’ll see how a cubic curve is derived.

Yes, Simon had already made another video about Bézier curves, see our earlier blog post. It’s funny how back then I had no idea what Bézier curves were, and by now, after I have started studying motion design, béziers have become my daily thing. And I’m learning so much from Simon! This is the power of the homeschooling lifestyle!

Coding, Community Projects, Contributing, English and Text-Based Data, JavaScript, Logic, Math and Computer Science Everywhere, Server Side Programming, Simon's Own Code

Simon’s Game Bot

Also in October, Simon built a game bot that can play math games with him. At the moment, the bot only plays the higher-lower game, but will learn to play other games, too!

Contributing, Crafty, Good Reads, Group, live stream, Math Riddles, Milestones, Murderous Maths, Notes on everyday life, Physics, Simon teaching

A Beautiful Universe by Professor Cumrun Vafa World Science Scholars Live Session

Simon enjoyed the informal interaction during the live session, even though he had been a little critical about the course. He always tunes in better once it gets less formal. The new World Science Scholars cohort seems to be more responsive, too. Everybody stayed after the session for some more chit-chat.

Simon explaining how he’d solved one of the puzzles from the course.

Yesterday, we have received Professor Cumrun Vafa’s new book as gift upon finishing the course. A very generous gesture!

Coding, Contributing, JavaScript, Milestones, Server Side Programming

A super-simple database

As a suggestion on a Coding Train thread on GitHub in which Daniel Sghiffman was asking for ideas on how to keep poll votes after restarting the server, Simon has created another library for Node.js: a node package published on NPM (Node Package Manager). This summer, while we were in Amsterdam, he had already made another Node package that computes the GCD (greatest common divider) and LCM (least common multiple).

Now I made another super-basic Node package that just spins up a database. It’s a really short piece of code (about 50 lines) but it creates a database that’s super-profound. Like if you have a bunch of entries and each entry has a name, I can access each entry by their name.

My super-simple database called keyvaluedb

Contributing, Group, Murderous Maths, Physics, Simon's sketch book

Year two of the World Science Scholars program

Simon in his pyjamas, taking part in Professor Brian Greene’s live session

The new cohort of World Science Scholars (a World Science Festival program for young math talents from across the world) seems to be more active than last year’s group. Or maybe it’s just that more people are used to online education and live video interaction. Last year, there wasn’t much interaction between the kids and hardly anyone kept their video connection on during the whole session (that’s why Simon was wearing his pyjamas — we hadn’t expected him to be on video). Luckily, things seem to have changed in the new world: the students even stayed to hang around and chat to one another after class! Simon would really like a separate Discord server for all the scholars, then they could probably really talk without the limits of the official platform. We’re going to suggest this to the coordinators.

Below are the questions Simon had typed for Professor Greene in the chat but didn’t get a chance to discuss anymore as they had run out of time:

Making Benji’s question on Length Contraction a bit more specific, how fast would a meter-wide object need to go to length-contract to the size of an atom?

(Answer: 99.99999999999999999% the speed of light. I have used the formula for the Gamma factor.)

As you said previously, Quantum Teleportation is with Entanglement. Entanglement isn’t faster-than-light information transfer, because the results are random. But there is the information just THAT one particle has been measured, does that travel faster than light?

Fun Fact: the graph of 1/gamma for different speeds looks like a quadrant of a circle!

art, Coding, Community Projects, Computer Science, Contributing, Crafty, JavaScript, Milestones, Simon teaching, Simon's Own Code, Simon's sketch book

A Color Palette Generator in p5.JS

One more project from back in July. Inspired by one of his favorite resources, Simon created a beautiful color palette generator in p5.JS that builds off of a theme color of your choice. Feel free to use the generator at

Simon’s Code:

Simon based his project on his newly acquired knowledge of color theory algorithms:

Coding, Coding Everywhere, Community Projects, Computer Science, Contributing, Crafty, Group, Lingua franca, Logic, Math and Computer Science Everywhere, Milestones, Notes on everyday life, Python, Simon's Own Code, Simon's sketch book, Trips

ProLang: Simon’s first jam submission

Amidst all the traveling in August, Simon was working on his first serious coding competition submission. Together with a friend from Australia, he was building a new programming language called ProLang.

The deadline for submissions was September 1, and Simon was responsible for writing the pitch, so the last few days leading up to the deadline were brutal. There was a huge lesson on project management to be learned, because very late into the project Simon suddenly discovered many important features didn’t work (like the else-if statements) and his more experienced 13-year-old partner didn’t have the time to invest into debugging. Simon struggled between trying to repair the broken features on his own, sometimes sitting down and working on it for hours, sometimes procrastinating or breaking down in the face of the approaching deadline. Even though he realizes he most probably won’t win this jam, alongside many adult competitors, he has already won much more than the grand prize on offer: he has scored his first real life experience delivering a product as a team.

Simon’s pitch:

Source Code:

Simon trying to solve the else-if feature
Coding, Community Projects, Computer Science, Contributing, JavaScript, Milestones, Server Side Programming, Simon's Own Code

Some more bots

In July, Simon truly dove into server side programming, creating several more bots we’ve forgotten to blog about. He is now managing a whole bot playground on Discord where his peers can test their bots, too. Simon created command handling code, so that all his new bots would have the same main file. All the commands are organized in a folder. Each command is a separate file and it’s easy to add a new command.

Below are a couple of screenshots of Simon’s summer bots. The first screenshot is of a Twitch bot he made:

The second screenshot is of Formulamatic, a bot that can perform calculations if you type “!calculate”. It can calculate factorials, trig functions, roots, powers, logs and play pong:

Later, Simon also added a system to dynamically update the help command.

Previously, I had to laboriously update the help command each time I had a new command. Now if I have made changes to the command I can reload it so that the changes are accepted.

Coding, Contributing, Logic, Milestones, Python, Simon's Own Code

Simon’s first 4 kyu kata solved! And a high competitive programming rank!

Simon has solved his first 4 kyu kata (programming assignment at a master programmer level) on CodeWars:


In our dojo, kata are real code challenges focused on improving skill and technique. Some train programming fundamentals, while others focus on complex problem solving. Each kata is crafted for and by the community.

Kyu/Dan Ranks

Each kata on the site is set to a Kyu/Dan rank, based on its subject area and difficulty. The community collectively determines rank in the Beta Process. 

Solved more of this level problems a couple days later:

Simon has also discovered that his ranking on CodinGame, a competitive programming platform, is quite high!

Simon’s level and rank as a competitive programmer at the end of July 2020
Simon’s drawing of the learning paths on CodingGame
Screenshot of Simon’s learning paths on CodinGame
Simon recreating his learning paths in Microsoft Paint

Coding, Contributing, Group, JavaScript, Murderous Maths, Server Side Programming, Simon makes gamez, Simon's Own Code

Tchisla Clone

Simon is working on a clone of Tchisla, an absorbing number puzzle app from the (Russian!!) creators of Euclidea. The aim is to represent numbers as arithmetical expressions using only one of the digits from 1 to 9 and the shortest way possible. (For example 96 = 99 – √9 or 96 = 4 * 4! or 96 = 2 * 2 * (22 + 2) are all valid representations of 96).

It’s true what the makers say: “You suddenly discover that you know a lot of numbers and their properties: factorials, squares, cubes, prime numbers, roots and others. Tchisla imperceptibly helps you to improve your calculating skills.”

Simon doesn’t like the fact that you can currently only find Tchisla as an app while he wants to screenshare with his friends in a browser, so he has decided to develop his own version. So far he has completed these steps in Glitch:

The next step is to actually enable joining the lobby!