Computer repeats after Simon

Following the exciting text-to-speech and speech-to-text projects yesterday, this morning Simon made a basic speech-to-text-to-speech demo, which means that the computer can now repeat (parrot) everything Simon says.

Simon relied on what he learned during Daniel Shiffman’s two latest live streams on the Coding Train channel in building these projects.


A Rude Joke

This has been an interesting arithmetic task Simon came up with from his Secrets of Sums book, aimed at practicing long division. You had to do the division and count how many times the 1s and the 2s appeared in your calculation, then use that number a sa secret code to decipher the second part of a rude joke (see below):







Almost talking to the computer!

This is one of those wow projects, so much fun! Simon built his Text-to-Speech and Speech-to-Text demos following Daniel Shiffman’s recent live streams on working with the p5.Speech library and added some extra style features. This basically means that you can type anything on your computer and hear it say what you’ve typed (in any voice or language!) or, in what Simon said was an easier project, yell something to your computer (I love you!) and watch it type it out for you. The next step will be combining the two and including that code into a chat bot code.

You can play with Simon’s Text-to-Speech demo on GitHub at:

Basic text to speech example:

Example using different voices:

Basic speech to text example:

Code/ repo:






Simon writing a Matter.js textbook

Simon is currently working on a “Matter.js textbook”, a set of tutorials on how to use Matter.js (a physics library) that he writes on GitHub. Simon writes everything himself, not copying from anywhere. Sometimes he forgets some coding syntax and looks it up in the documentation, but for the rest this is his own text. He explains: “The reason why I am making this textbook is because there are Matter.js tutorials but they are really short and there aren’t many of them. And the only video tutorials are by Daniel Shiffman and they are using P5.js.” If it proves possible, Simon might add video to his GitHub textbook later.

It’s great to observe him type away and when I look over his shoulder, I see that he makes very decent sentences, with a nice tint of humour every now and then.

The link to the textbook:

Simon builds his own RiveScript Editor

Simon has been working on a RiveScript Editor for creating chat bots. RiveScript is a markup language, that gives chat bots the ability to respond to messages from humans using natural human language. This project will involve server side programming, which means that Simon will have to go through the whole process of hosting it on Heroku once he’s finished. So far, he decided to give himself a break in the middle of programming the syntax highlighting, which he found a little too much boring work, so not sure whether the editor will ever be published. In any case, Simon has got quite far and the interface looks good.

Simon has already built three chat bots using RiveScript online editor and Atom.


Shadow of a 4D object

Simon built “the shadow of a 4D object” during math class, inspired by the Royal Institution’s video Four Dimensional Maths: Things to See and Hear in the Fourth Dimension with Matt Parker. Simon loved the video and watched it twice. We had come across similar thought experiments while reading a book by Jacob Perelman, a Russian mathematician, where the 4th dimension was visualized as the time dimension and the objects sliding along that 4th axis would appear and disappear in our 3D world just like 3D objects would appear as their cross sections if they were observed by 2D creatures. Here is how Simon visualized it. 

The first drawing is of a 3D object the way it actually looks when passing through a 2D world:

3D object in 2D world 1 Oct 2017

And this is what the inhabitants of the 2D world (unable to see in 3D) see – a sequence of sections of the 3D object. Similarly, we (unable to see in 4D) only see sequences of 3D sections of the 4D objects passing our world. Maybe, everything we see around us are such sections of much more complex objects as they are moving through time. “Maybe, we’re just 3D shadows of 4D objects”, says Simon.

3D object in 2D world 2 Oct 2017






Simon contributes to the p5.Speech library

Simon has made a pull request to the p5.Speech GitHub repo (a milestone!) and hopes his request gets merged. In this video he explains what he wants to improve with his contribution.

Later it turned out that someone else made a similar request (with more extras) and that request will probably be merged, so Simon was definitely thinking in the right derection. He got positive response from Daniel Shiffman and it looked like Simon’s comments have sparked a discussion on GitHub.


Simon contrubuted to p5.Speech library. Pull request 14 Oct 2017

Simon writing on GitHub: 

This github issue is referring to pull request #7.

As you can see in commit a2a5d38, there are some comments. Which look like 

// this one 'start' cycle.  if you need to recognize speech more

// than once, use continuous mode rather than firing start()

// multiple times in a single script.

The comments are right before the start() function in the p5.SpeechRec 
object. But the commit adds arguments to this function:

p5.SpeechRec.prototype.start = function(continuous, interimResults) {

  if('webkitSpeechRecognition' in window) {

    this.rec.continuous = continuous;

    this.rec.interimResults = interimResults;




And before, that piece of code looked like this:

p5.SpeechRec.prototype.start = function() {

  if('webkitSpeechRecognition' in window) {

    this.rec.continuous = this.continuous;

    this.rec.interimResults = this.interimResults;




Are the comments "unnecessary" now? In other words, Should we remove 
them or leave them there?

28 times 28

Simon programmed a presentation to explain why 28×28 is not the same as 20×20 + 8×8 geometrically. The code is quite complicated and involves some trigonometry and conditional statements: the grid is divided into different parts every time Simon clicks and depending on how many times he has already clicked. This is typical Simon – coming up with an inherently arduous and complex system to visualise the beauty of the world around him, even of the seemingly trivial things. By the way, the inspiration for the 28×28 grid came from Simon’s favourite math channel, 3Blue1Brown and its latest video on Neural Networks (the grid was used to explain computer vision).

Simon is doing quite a lot of sums in his head nowadays, looks like it’s a new trend. Today, while bathing in the fountain outside, he was calculating how long 1/16th of a minute lasted. And a couple days ago, while waiting for his appointment at the hospital, he calculated how long it would take someone to read a whole page of random numbers, taking an educated guess that one takes 4 seconds to read out one number and remembering Daniel Shiffman mentioned there were 100×5 numbers per page in his book.