Coding, Community Projects, Crafty, Logic, Math and Computer Science Everywhere, Math Riddles, Math Tricks, Milestones, Murderous Maths, Set the beautiful mind free, Simon makes gamez, Simon teaching, Simon's Own Code, Simon's sketch book

Simon’s videos are featured on the Global Math Project website!

In October, Simon’s videos were featured on the Global Math Project website!

The bulk are his latest three videos with detailed proofs of pile-splitting magic:

In this video, I will show a pile splitting trick, and show a really elegant proof for it. So elegant, in fact, that you can extend it to a lot of other pile splitting tricks!

Also Simon’s recent counting-in-binary project got featured, an interactive Napier’s Checkerboard simulation he programmed in p5.js:

I’ve figured out how to do square-roots in binary on Napier’s Checkerboard!

Link to Simon’s interactive Napier’s Checkerboard simulation: https://editor.p5js.org/simontiger/present/OB856_-1i

Simon’s code: https://editor.p5js.org/simontiger/sketches/OB856_-1i

Simon had already explained doing square roots in binary on paper, see our earlier blog post.

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!

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 Coolors.co, 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 https://editor.p5js.org/simontiger/present/MVVT1T01n

Simon’s Code: https://editor.p5js.org/simontiger/sketches/MVVT1T01n

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: https://repl.it/talk/challenge/ProLang/51767

Source Code: https://repl.it/@ProLang/ProLang#README.md

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, Community Projects, Contributing, Curent Events, Experiments, Geography, JavaScript, Milestones, Murderous Maths, Notes on everyday life, Philosophy, Simon makes gamez, Simon teaching, Simon's Own Code, Simon's sketch book, Social Studies, Thoughts about the world

How Can Math Help Resolve Racial Segregation?

This is Simon’s contribution to #blacklivesmatter

How Can Math Help Resolve Racial Segregation? This video and coding project is based on Segregation Solitaire by Thomas Schelling, an American mathematician and economist who was awarded the 2005 Nobel Memorial Prize in Economic Sciences for “having enhanced our understanding of conflict and cooperation through game-theory analysis.”

I don’t like the name ‘Segregation Solitaire’, so I call it Schelling’s Game. This is also inspired by the famous Parable of the Polygons playable essay on the shape of society by Vi Hart and Nicky Case: https://ncase.me/polygons/

Simon binge reads Nicky Case’s essays and has made several remixes of their projects, all the more timely, considering today’s context.

Simon’s interactive version: https://editor.p5js.org/simontiger/present/mWwl1GsTe

Simon’s code: https://editor.p5js.org/simontiger/sketches/mWwl1GsTe

Coding, Community Projects, Contributing, JavaScript, Math and Computer Science Everywhere, Milestones, Murderous Maths, Notes on everyday life, Simon makes gamez, Simon's Own Code, Together with sis

Spring Challenge 2020 PacMan in p5.js

Simon has recreated the CodingGame.com’s Spring Challenge 2020 PacMan game in p5.js to be able to work on the AI versions after the spring challenge has finished.

Link to Simon’s PacMan Game version featured in the video (playable for two players on the same keyboard): https://editor.p5js.org/simontiger/present/k9PDqMeew

Simon’s code for this version: https://editor.p5js.org/simontiger/sketches/k9PDqMeew

The PacMan is built on top of a Maze Generator, here’s an example of one of Simon’s maze generators and solvers: https://editor.p5js.org/simontiger/sketches/vj75cHYkf

Simon had been taking part in the Spring Challenge 2020 for several days and reached bronze level.

However he quickly realized that the 11 days of the competition felt too cramped for him to try various algorithms and still be able to work on his other projects. So what he did was recreate the whole PacMan game from scratch in p5.js, so that he has an “archived version” of the challenge and can play with new AI versions later.

Coding, Community Projects, Computer Science, Contributing, Geometry Joys, JavaScript, Lingua franca, live stream, Machine Learning, Math and Computer Science Everywhere, Math Riddles, Math Tricks, Milestones, Murderous Maths, Notes on everyday life, Physics, Python, Set the beautiful mind free, Simon makes gamez, Simon teaching, Simon's Own Code, Simon's sketch book, Thoughts about the world

New Friends. New Horizons.

This is a little video compilation of a few moments I captured Simon talking to his new peers in April 2020

Thanks to the lock-down, Simon’s got new friends. For a little over a month now, he has been part of exciting daily discussions, challenging coding sessions and just playing together with his new gang (warning: playing always involves math). We’ve never seen him like this before, so drawn to socializing with his peers, even taking the lead in some meetings and initiating streams.

And then we realized: this is how social Simon is once he meets his tribe and can communicate in his language, at his level. Most of his new friends are in their late teens and early twenties. Most of them didn’t use to hang out together before the crisis, probably busy with college, commuting, etc. The extraordinary circumstances around covid-19 has freed up some extra online time for many talented young people, creating better chances to meet like-minded peers across the world. Finally, Simon has a group of friends he can really relate to, share what he is working on, ask for constructive help. And even though he is the youngest in the group, he is being treated as an equal. It’s beautiful to overhear his conversations and the laughter he shares with the guys (even though sometimes I wish he wasn’t listening to a physics lecture simultaneously, his speakers producing a whole cacophony of sound effects, but he likes it that way and seems to be able to process two incoming feeds at once).

Last week, Simon took part in a World Science Scholars workshop by Dr. Ruth Gotian, an internationally recognized mentorship expert. The workshop was about, you guessed it, how to go about finding a mentor. One of the things that struck me most in Dr. Gotian’s presentation was her mentioning the importance of ‘communities of practice’. I looked it up on Etienne Wenger’s site (the educational theorist who actually came up with the term in the 1990s):

A community of practice is a group of people who share a concern or a passion for something they do, and learn how to do it better as they interact regularly. This definition reflects the fundamentally social nature of human learning. It is very broad. It applies to a street gang, whose members learn how to survive in a hostile world, as well as a group of engineers who learn how to design better devices or a group of civil servants who seek to improve service to citizens. their interactions produce resources that affect their practice (whether they engage in actual practice together or separately).

It is through the process of sharing information and experiences with the group that members learn from each other, and have an opportunity to develop personally and professionally, Wenger wrote in 1991. But communities of practice isn’t a new thing. In fact, it’s the oldest way to acquire and imperfect one’s skills. John Dewey relied on this phenomenon in his principle of learning through occupation.

It has been almost spooky to observe this milestone in Simon’s development and learn the sociological term for it the same month, as if some cosmic puzzle has clicked together.

Of course, it would be a misrepresentation to say nothing of the internal conflict the new social reality unveiled in my mothering heart as I struggled to accept that Simon started skipping Stephen Wolfram’s livestreams in favour of coding together with his new friends. 👬Yet even those little episodes of friction we experienced have eventually led to us understand Simon better. We sat down for what turned into a very eye-opening talk, which involved Simon asking me to take down the framed Domain of Science posters we’d recently put up above his desktop and pointing to those infographics depicted on the posters that represented the areas of his greatest interest.

we got our posters at the DFTBA shop

Simon simply guided us through the Doughnut of Knowledge, Map of Physics, Map of Computer Science and Map of Mathematics posters as if were on tour inside his head. And he made it clear to us that he seriously preferred pure mathematics, theoretical computer science and computer architecture and programming to applied mathematics (anything applied, really) and even computational physics, even though he genuinely enjoyed cosmology and Wolfram’s books.

“Mom, you always think that what you’re interested in is also what I’m interested in”, he told me openheartedly. It was at that moment it hit me he had grown up enough to gain a clearer vision of his path (or rather, his web). That I no longer needed to absolutely expose him to a broadest possible plethora of the arts and sciences within the doughnut of knowledge, but that from now on, I can trust him even more as he ventures upon his first independent steps in the direction he has chosen for himself, leaning back on me when necessary.

So far, in just one month, Simon has led a live covid-19 simulation stream, programming in JS as he got live feedback from his friends, cooperated on a 3D rendering engine in turtle (🤯), co-created Twitch overlays, participated in over a hundred Clashes of Code (compelling coding battles) and multiple code katas (programming exercises with a bow to the to the Japanese concept of kata in the martial arts).

example of a Clash of Code problem
e of a Clash of Code problem
This is Simon’s code in one of the Clashes of Code (he won this round from 6 other players). Such programming battles last somewhere between 5 and 15 minutes and come in three modes: fastest mode (in which you must complete the puzzle as fast as possible), shortest mode (you need to write the lowest code size) and reverse mode (you have to guess what to do by observing the provided set of tests). Simon especially likes the last mode, because you have to find the code by finding patterns in the given test cases, which appeals to his mathematical talent.
CJ from the Coding Garden discussing Simon’s solution
Simon working on a 3D renderer project together with his friends
Simon came up with a plan to work on the 3D renderer

Last month, ten young programmers including Simon formed a separate “Secret Editors’ Club Riding Every Train” group on Discord, uniting some “nice and active” people who met on The Coding Train channel (they also included Dan Shiffman in the group). Simon really enjoys long voice chats with the other secret editors, going down the rabbit holes of math proofs and computer algorithms. Last Tuesday, he was ecstatic recounting his 3-hour call with his new peer Maxim during which Simon managed to convince Maxim that 0.999… equals 1 by “presenting a written proof that involved Calculus”:

We even talked about infinity along the way, aleph null and stuff. There was a part where he almost won, because of the proof I showed him when we talked about infinities. I was almost stumped.

The guys have now inspired Simon to take part in the Spring Challenge 2020 on CodingGame.com, a whole new adventure. To us, the lockdown experience has felt like an extra oxygen valve gone open in our world, another wall gone down, another door swung open, all allowing Simon to breathe, move and see a new horizon.

Simon trying to explain why he didn’t fulfil a promise, he has finally found the people who speak his language 🙂
Coding, Community Projects, Crafty, Electricity, Engineering, Experiments, JavaScript, live stream, Simon teaching, Simon's Own Code

Sound Wave Simulation

Simon created a string simulation or a simulation of a traveling wave, something he used to experiment with using a slinky. Pressing the F key flattens the wave, the T key makes it a triangular wave, the Q key makes it a square wave, the S key makes it a sine wave, and the H key makes it a half-sine wave. Simon’s code of the string simulation is available at: https://editor.p5js.org/simontiger/sketches/Q-0iYdEPS

While working on the project live on Discord, Simon received a suggestion from one of the viewers to tie the wave to the microphone (to the sound wave), which he did. “It turned into a more creative project than I thought!” Check this version of the project out at: https://editor.p5js.org/simontiger/sketches/dQypxomRm

Simon also added one more wave mirroring the original one, for a “trippy” effect: https://editor.p5js.org/simontiger/sketches/KOVDEwuAQ

Coding, Community Projects, Contributing, Geometry Joys, Group, live stream, Milestones, Murderous Maths, Notes on everyday life, Physics, Python, Simon's Own Code

Live Session with Stephen Wolfram and the Wolfram Demo Project, World Science Scholars.

Simon has completed the course A New Kind of Science with Stephen Wolfram and the World Science Scholars program. Which doesn’t mean he is done with digging deep into Wolfram’s groundbreaking new kind of science! (As a matter of fact, he is still reading Wolfram’s 1500-page book. And as Professor Wolfram told Simon during the live session, there’s nothing in the book that no longer holds).

Simon happy after a major break-through in his demo project, hoping to present his findings to Stephen Wolfram the same evening

At the live session, a few scholars including Simon were planning to present their Wolfram Language demos, but Professor Wolfram was so inspired by his current research that he decided to share his latest discoveries instead (he is tiptoeing closer to laying the foundations of a theory that would unify all natural sciences based on his principle of computational equivalence). It was a very engaging session (even though Simon’s video camera malfunctioned, which hardly mattered).

screenshot of the live session
Danielle Rommel, who works with Professor Wolfram, told Simon she had actually been watching videos on his YouTube channel!

As for Simon’s demo project, that’s a whole story. It took Simon weeks to define what he was actually going to pick as his topic and once he had picked his topic, he didn’t know where to start (because he managed to pick an NP problem). He suggested to collaborate together with another World Science Scholar, as it was that boy who initially inspired to think in the direction of the particular open math problem. The two of them had two long video chats. (It was so much fun to observe them, they both had zero interest in small talk and went straight down to the math, without even saying hi).

Simon during a video chat with a fellow student, discussing the project
ways to write graph data that Simon shared with his fellow student during their talk

Unfortunately, after the original project presentation during the live session with Stephen Wolfram was cancelled, Simon’s partner never really replied to Simon’s chat messages (until weeks later). Simon did manage to get part of the demo done (porting a huge graph into the Wolfram Language, which required writing separate code in Python), but felt stuck later, after several attempts to color the graph failed. He ended up spending several days writing several more Python scripts. We have documented the process on video. The project has turned into a computational essay and it’s definitely still unfinished, but I’m not sure Simon will come back to it in the near future. He got a couple of minutes to present his findings at another live session last week (with a World Science Scholars teaching fellow Aaron Mertz and Rory Foulger, Education Outreach Coordinator at Wolfram Research), but was confused as he didn’t get any feedback about his findings and got the impression his main questions weren’t understood. He was also a bit annoyed with me yelling on the background about what he should do and say (I saw he was confused and was afraid his time would be cut short, so I wanted to make sure he would mention his main points). I’ve learned my lesson now and have decided not to interfere with his live performances anymore, not to put him under additional pressure.

Simon has also written to Professor Wolfram, currently awaiting his reply. His main questions were:

I was surprised to discover that no Heule or de Grey graphs exist (anymore?) built into the Wolfram Language. As part of my research, I’ve created a very long list of all the graphs the Wolfram Language knows about, and HeuleGraph is not in the list. I tried to pose this question during the short discussion of my project at the World Science Scholars live session this week, but didn’t get any feedback (I don’t think my question was understood). Yes, one is able to find images of Heule graphs in Wolfram notebooks, (like this one https://notebookarchive.org/heule-graph–2019-07-0z3zu9k/) and on Wolfram MathWorld (like here http://mathworld.wolfram.com/HeuleGraphs.html). But those are just pictures in archived notebooks, and even if I try to copy/paste the code into my own notebook, it doesn’t work.

My second question concerns coloring such a large graph in the Wolfram Language: do you think it could be possible? As I don’t know a built-in function to do that within the Wolfram Language (and I don’t think such a thing exists), I decided to try to color the graph in Python and then upload it into my Wolfram notebook. I created another Python script to make the graph easier to color, and yet another Python script to actually color all the vertices (using Breadth-First Search). The problem was: it didn’t color it with only 5 colors (but with 8)! I made a video about the making of the project, with me explaining why this task is hard for a computer to do, and even some computational complexity theory!

Timecodes: Converting to CSV: 0:00 Generating the Colors: 23:06 Some Math: 42:16 Part I Conclusion: 56:46

this video is long, but even briefly scanning through its several parts gives a thorough impression of Simon’s current math and coding abilities

The project is attempting to visualize the Hadwiger–Nelson problem from geometric graph theory: what is the minimum number of colors required to color the plane (chromatic number of the plane) such that no two points at distance 1 from each other have the same color. It’s an unsolved problem, but we know that the answer is 5, 6 or 7. In 2018, Aubrey de Grey proved that the chromatic number of the plane is at least 5. His smallest unit-distance graph with chromatic number 5 had 1581 vertices. Several smaller graphs have been found since then, a major contribution done by Marijn Heule, who has come up with his own method of reducing the size of graphs. In 2019, Heule constructed the smallest unit-distance graph with chromatic number 5 so far, with 517 vertices. (Side-note: since I decided I’m going to use the 517 graph, I have actually found a smaller Heule graph with 508 vertices, but it was of a data format that I wasn’t able to use anyway). The goal of my project was to color such a graph in Wolfram language, to create a Wolfram Demo.

In Part 2, I tried to code yet another Python script to group the graph into smaller units to make a smaller graph, and color that one, then blow each vertex back into the unit considered.

Link to Simon’s Wolfram Notebook: https://www.wolframcloud.com/obj/9795e37e-aa73-4ae6-8249-81223ffdbc7f Link to my code on GitHub: https://github.com/simon-tiger/Hadwiger-Nelson-Project-Data

Simon reading Marijn Heule’s paper “Computing Small Unit-Distance Graphs with Chromatic Number 5”

Link to Marijn Heule’s paper “Computing Small Unit-Distance Graphs with Chromatic Number 5”: https://arxiv.org/pdf/1805.12181.pdf