Page visited: 35506 times

Mathusan Chandramohan

You can also find me here

YouTube
Instagram
GitHub
SoundCloud



About Me

I am a Computer Science student at McGill University. I make music and animation videos on YouTube. I love art, music, science and being in nature. I also love sports, videogames and anything that can challenge me. I am always up for learning, discovering, designing, building and creating in general.

Projects

FreeSpeech

FreeSpeech is a social media website focused on privacy and encryption. It is a secure instant messaging system with double encryption. There is also a feature called WorldChat where every user can communicate instantly with each other like a group chat for the world.

Trito

Trito is a 2D game where the goal is to dodge squares coming your way. The player can move, divide and change color. The game is available on computers with keyboard controls (ASDW) and on mobile devices with touch controls.

HomeworkOut

HomeworkOut is a web app that guides you through cycles of 3 minute bodyweight workouts, 22 minute sessions of intense focus and 5 minute breaks. This project promotes wellness during the COVID-19 lockdown (libraries and gyms are closed as of November 2020 in Montreal), and helps you stay as productive as possible.

Artistree

Artistree is a python web application that lets you enter an artist's name and outputs a tree with all the other artists they mentioned in their songs' lyrics. It was built by Victor Zhong, Kleard Mama, Sangwoo Han and myself for the PENNAPPS XXI Music Hackathon.

Project Descriptions

FreeSpeech

Lines of code: 3,000
Used PHP, JavaScript, Python, MySQL, HTML, CSS

I designed and built this website from scratch because I wanted to learn more about social medias and how they worked. I also wanted to dip my fingers in encryption and learn more about the fascinating area of cryptography. I also a way to communicate with my friends that was very secure and encrypted to the point that even I, the person who wrote every line of code, didn't have any way of decrypting the messages between two other users.

I got the idea when I read on the news that Messenger (owned by Facebook) stores all our messages in plaintext. It is more efficient when it comes to an extremely large database of messages, but some people want more privacy and don't want Mark to have the power to read their messages. If someday, the database gets hacked, the hacker could get access to all the messages in plaintext, which is not something that I was very happy to find out. I used AES-256 double encryption. AES-256 has been adopted by the US government and is now used worldwide, so it is very secure. The first encryption is done by the server and the second one is done with a key stored on the user's computer (through the sessionStorage feature of all browsers). This private key is generated by using a hash (with a salt (pseudo-random string of bytes) to protect the hash against rainbow table attacks) of their password, so without someone's password it is impossible to decrypt the messages, since hashing is not a reversible function. The passwords are also stored separately as hashes (different hash, salt than the private key) so it is also impossible for me to know the passwords.

I wanted to make a website where the user has all the power in terms of privacy and where they didn't need to trust anyone but themselves, not even the creator of the website.
This project took a lot of work and it was a completely new experience for me. I designed everything on the website which took a lot of time. The buttons took a surpising amount of time since CSS is not very intuitive in my opinion when it comes to positions of elements on a page.
But, the server side scripting, the database management code and the javascript functions were the ones that took the longest time to write and debug. I also needed to find clever solutions to tons of problems I encountered in the way: like a function in javascript that mimics exactly the way PHP renders strings of dates so that all the dates (old ones generated by PHP and new ones generated by Javascript) look the same.

This website uses around 30 different files with each around 75-150 lines. That's around 3,000 lines of code which is a lot compared to other projects I've done. The thing that I am happy about is that it is a very useful website and it taught me A LOT on javascript, AJAX, CSS, PHP, Mysql, sessions, session variables, cookies and web storage objects like localStorage and sessionStorage variables.

You can see the JavaScript, Python, CSS, HTML and some PHP files and more information about the game on github
If you want to learn more about how the encryption of messages and passwords work, you can visit about FreeSpeech
You can test the project here: FreeSpeech

Trito

Lines of code: 900
Used JavaScript, PHP, MySQL, HTML, CSS

Trito is a javascript game that I built from scratch. My friend and I did a bet that we needed to learn javascript and CSS in 4 days and finish a website.

I thought of the idea of the game in a day and finished building the game in 3-4 days right before the bet deadline. I really enjoyed making the music and sound effects for the game since I already had some experience with loads of digital audio workstations applications. Then, I decided to add a leaderboard, so I made the website full-stack in the next week with a mySQL database and PHP scripts for retrieving and updating the highscores. I also changed the controls to make them more easier. Then, I put it online and a lot of people used the console to manipulate and fake their scores, so I decided to work on adding server side scripts in PHP to detect console score and highscore manipulations and also make the javascript more secure so that users can't access the server. Then, I also made the game responsive(added touch controls for mobile browsers) which took an enormous time since I had to change core parts in the design of the game to make it work. I finished the whole game in a few weeks working on and off.
Working on this game was really fun and I learned tons of new javascript functionalities like how to use Canvas. It was also very fullfilling since I built everything from scratch and was able to use my creativity.

You can see the JavaScript, PHP, CSS and HTML files and more information about the game on github
You can test the project here: Trito

HomeworkOut

Lines of code: 500
Used PHP, JavaScript, MySQL, HTML, CSS

This full-stack website won a prize in the 2020 Code.Jam Hackathon. (Devpost Page)

The Code.Jam hackathon was based on the theme: Digital by Default. We had 30 hours to design/build a project that would help people use digital technologies for their everyday needs.
That's when I had an idea for a workout & study timer web app since I needed one myself.

As of November 2020, all gyms and libraries are closed and most university classes are held online. Most of my friends in universities and I are having a harder time concentrating without being in a library or a classroom since that's what we are used to. There are so much more distractions in our homes. Furthermore, since all gyms are closed, it has been very hard to stay in shape during these times, especially since we do everything from home and don't even need to walk to go from class to class, to get to school, etc. I also read in an scholarly article that physical activity helps us with our concentration and improves brain health (src: Harvard Health Publishing).
To help my friends and force ourselves to be more productive in our studies, to be more active, I decided to create this workout+study timer which is similar to the Pomodoro Technique but also incorporates 3 minutes of intense physical activity every 30 minutes to help boost concentration and help students get more easily into the FLOW state.

For the first 30 minutes of the hackathon, I used HTML to make the general design. Then, I added javascript scripts to make it interactive and to build the logic of the timer. I made the background image and all the images/art on the website using Adobe Photoshop (for the drawings) and Adobe Animate (for the gifs). I then added scripts on the backend (PHP) and created MySQL tables to make it save users' stats. The stats (hours studied & working out) will be shown on the main page, to encourage others to be productive.

It was hard to design everything and fix all the bugs in 30 hours (less than that, since I also had to sleep being a full-time student). The asynchronous javascript functions like setInterval(), setTimeout() and clearTimeout() were something that were hard to synchronise and I didn't have too much experience with those functions.

Designing, building and debugging alone, from start to finish, a full-stack working website and uploading it online in 30 hours was something I never did before and really pushed me to work hard. Putting this website online made it accessible to my friends who were also struggling to concentrate and to do workouts on a daily basis.

You can see the JavaScript, PHP, CSS and HTML files and more information about this project on github
You can test the project here: HomeworkOut

Artistree

Lines of code: 700
Used Python, JavaScript, PHP, HTML, CSS

This web application was built by Victor Zhong, Kleard Mama, Sangwoo Han and myself for the PENNAPPS XXI Music Hackathon. The background Image for the website and the logo were all made by us using Adobe Photoshop.

Music is an international language that everyone can experience and enjoy. Artistree is all about music's astonishingly intertwined world. Whether it be a feature on a song, a shout out, or even a diss track resulting from a feud, Artistree has got you covered. Every time an artist mentions another artist in one of their songs, Artistry will analyse the lyrics from that Artist and when it finds another artist, it will graph that relation. This way, it is incredibly easy to visualize and picture connexions between Artists, through their lyrics. In other words, it will show a tree graph of different artists, hence "artist"+"tree"="artistree". Going through all of an artist's songs and lyrics allows us to piece this complicated puzzle together and present it in a fashionable manner. We can also see how much contact and influence an artist has over another and has in general. These artists show us that music is not a solitary adventure.

We used Python with the Beautifulsoup package and the Genius API to extract and scrape lyrics of an artist. We also used a database of 10,000 most popular MTV musical artists as a starting point. Then, we used several filtering algorithms to isolate words that could be artists' names. We wanted to make this recursive for at least 3 layers first to make a very complex and beautiful tree of artist's pictures, names and songs, but we couldn't unfortunately because of the time constraint of the hackathon which was 48 hours. We put these files in a LAMP stack on a cloud server and we directed our domain name mathusan.net to point towards it. Then, we used HTML and PHP to make the submit page where the user would enter the name of the artist. The form data would be taken by a PHP file which would check for errors and then, it would pass a command to the shell of the linux server to run the python file with the name the user entered as input. Then, the same PHP file would read the output of the python file and transmit it to the final tree visualization page, where we used javascript to parse all the data and set it up for it to work with the very complicated D3.js data visualization library. We finally made the about page which has general information about the website.

This project was very hard to finalize especially because of the time constraint but it was a great challenge. Because the hackathon was completely remote (COVID-19), this project also taught us how to efficiently communicate and work in teams remotely and made us more proficient with github. We were extremely productive during those 48 hours.

You can see the Python, PHP, JavaScript, CSS and HTML files and more information about the game on github
You can test the project here: Artistree