Shahan
Nedadahandeh
A young programmer with a curious and keen eye to learn
I'm a student and developer currently studying computer science at the University of Waterloo, who has the goal of impacting the world with technology. From a young age, I have been interested in programming, electronics, and robotics, and over the years I have built a plethora of projects in these fields.
Here on this website you can see some my notable projects, and view many of the programming languages that I know, along with some other libraries and tools that I have experience with.
Here is a little bit about me: I love robotics and led my high school's robotics club. I also love to teach programming to kids as a volunteer in my free time. One fun activity I'm currently doing is leading the Web committee of the CS Club of Waterloo. Other things I love to spend my free time on include making new projects, playing tennis, and even playing/composing for the piano and trumpet!
Notable Projects
NCraft
A 3D voxel game made with my own game-engine with pure C++ and OpenGl. For this project I did not use any external libraries or tools and I made it just using OpenGl and C++, as my goal was to learn more about the inner workings of a game engine. I learned much about all the complexities of computer graphics including rendering, optimising and more. This engine/game has features such as optimised batching, perlin noise world generation, block breaking and placing, lighting, trees, inventory and more.
Evolutionary Simulator
An implementation of an evolutionary learning algorithm and neural network along with a captivating GUI, completely from scratch in C++, which has learned to play the game Snake.
GlMath
A math education platform, inspired by Khan Academy made with the MERN tech stack, where teachers can post math lessons for students from all around the world to access. While making this I made several important design choices which was guided by my goal for the math content to be as reliable as possible. The actual math content is hosted on GitHub Pages (which is highly reliable) in JSON, the teacher edits the content through an admin login page, which automatically saves their changes by committing to GitHub. This way, once a lesson is published, it will always be available forever, even if my backend server (hosted on Heroku) goes down. Some other interesting features are image uploading using amazon S3, and an interactive WYSIWYG latex editing for entering equations in the lessons.
VideoGit
A command line tool, that makes beautiful, animated coding videos from a projects git commit history. You can install VideoGit with "pip install VideoGit". VideoGit simulates the process of your coding, and makes a video which you can share. This project uses git diff's and goes one by one through the commit history. It was made with python, and uses a rust tool called silicon for image creation, and ffmpeg for creating the videos.
Langtons Ant
A simulation of "Langtons Ant", a math cellular simulation similar to Conways Game of life. Made completely with java swing with my custom game rendering engine.
NedaChat
A fully functional, realtime chatting service, built with MongoDb, NodeJs, Express, SocketIO and React. Features groups chats, instant messaging using web sockets and many other features.
NedaType
A touch typing training tool, which has unique mechanics to help you improve your accuracy and speed. This project was made with the javascript library React. Click here to go to NedaType.
NAnim
A custom made animation library made in python. This project was inspired by 3b1b's animation library, and this was made from scratch without help from any other animation libraries. This project is on pip and you can even install it on any computer with "pip install nanim". I made this project to learn more about python and the details of animation and video rendering.
Sine Neural Network
A neural network that emulates the sine graph, made using Keras, Numpy and of course python. This network is practically useless, but I made it to learn more about Keras, and it was the first network I made without any outside help, just Keras Documentation.
PlanNow
A time management todo list tool made with the MERN tech stack (MongoDb, Express, React, NodeJs) and hosted on amazon AWS.
ShahansMandelbrot
An interactive simulation of the mandelbrot set, made with Java swing. This project like many of my other java projects uses a custom java swing game renderer I have made.
Skills
-
Some of my biggest projects were completed C++, including my 3D voxel game and game engine which was made with just C++ and OpenGl NCraft and my evolutionary simulator.
-
Java
Java is one of my main languages, I have been making projects in java for over 5 years, and I have lots of experience with the language as can be seen with my numerous projects with it.
-
Javascript / JSX / ECMAScript 5 / NodeJs
I have made many different projects with Javascript, both with classic and new JSX and ECMAScript5. I also have experience with NodeJs, which has lead me to make many full stack projects, mainly with the MERN tech stack.
-
Swift
I have been working on many different iOS apps with Swift, learning mainly from Stanford University lectures. I really like the Swift language and it is one of my favorite languages. -
C#
I have mainly used C# for my numerous projects with the Unity Editor, which I have been using for over 6 years. I have even published a game, PopperBopper, on the app store and google play store.
-
Python
I have some projects with Python, such as VideoGit, a tool that converts git commit history to a timelapse video, an animation library I made: nanim , both of which are published on pip, or neural networks I have made with Keras.
-
React
I have made numerous projects with React, and I enjoy writing web apps with it. When I first used react I was amazed at how easy it made some of the problems I had faced when writing apps with pure javascript. Some of my interesting react webapps include NedaType, my unique type training tool, or my realtime messaging service, NedaChat
-
OpenGl
I learned to use OpenGl for my two 3D rendering engines and games, JShahanCraft and NCraft , where I remade a version of minecraft, in Java/C++ with an OpenGl.
-
Unity
I have been using the Unity engine for many years and I have numerous different projects with it, such as PopperBopper. After making my own 3D game engine with just OpenGl (my project, made without unity or any other engine: NCraft), I really appreciated how amazing unity is, providing such amazing features for free.
-
SQL / MongoDb
I learned and used SQL for some of my projects such as Shahanify, a spotify clone, however for some of my newer projects I have been been using MongoDb. For example my instant messaging app NedaChat, I use MongoDb, mainly because it provides a lot of flexibility with its NoSQL format.
-
Nodejs/Express/SocketIo...
I have been learning and using nodejs for a variety of different projects for a few years. I started making webapps with php, but I was amazed with how versatile NodeJs is, and how many amazing packages there is on NPM. I learned how to use Express, and SocketIo and many other packages, and use them in my projects like my realtime messaging service, NedaChat, NedaType, or the ScoreBoard I made for my school, which uses SocketIo.
-
Wordpress
I have lots of experience with Wordpress, and have made many projects, some even with paid clients. I have made custom themes such as my Materialize Design Theme based off google's guidelines, or written custom plugins for the online course website Lean Quality Academy
-
ServerOps/AWS/DigitalOcean
I have many years of experience deploying and maintaining web apps on various tech stacks and on different platforms such as AWS, DigitalOcean and Heroku. This lead me to have experience with Linux, Apache, NGINX, NodeMon, PM2, various SSL setups including LetsEncrypt and much more.