Learning and Building a Web App Curriculum
Editor’s note: Yu Hao joined us in end-2019 to try and learn more about programming, before starting on his Computer Science degree at the Nanyang Technological University in 2020. Within a month, we could tell he was a quick learner, and we took him on as a full-time intern. Here’s his story.
Around September 2019, my friend told me about his internship at Tinkertanker and asked me to try for it as well. I thought to myself, why not? I could kill time before school starts in August 2020 and also get to learn new things! So I applied for the internship, and what really surprised me was their willingness to take in people with no programming experience (like me) and more importantly, their willingness to teach people who are new to programming.
In December 2019, I joined the company as a “learner”, and I was free to use the office as a learning space, and also ask all the friendly staff any questions I had about programming. I also learned a lot from the other interns, who were doing cool things such as laser cutting and 3D printing, and I was really happy to be able to learn in such a friendly environment.
The first piece of acrylic that the other interns taught me to laser cut (picture was taken from my social media so please pardon the caption!)
Starting out with Unity programming
As previously mentioned, I had no prior experience in programming (unless I count the few Python tutorial videos I watched on YouTube before), so I thought it would be fun to familiarise myself with programming through Unity game development in C#. I made a simple platform jumping game, where the character has to make difficult jumps.
I used Pikachu for my sprite, as it’s a common sprite sheet for animation
Through this mini project, I learned that even the small features of a simple game like this can be quite tedious to make—for example, the jump animation took me quite a bit of time to figure out—and I now respect game developers more than ever after doing this simple project. The entire process was a really enjoyable one from developing to sharing the game with my friends. Every small feature I managed to complete gave a me a sense of achievement and it also made me really happy when I shared the game with my friends. Seeing them have fun/rage over the game was really satisfying. After I spent a short amount of time on Unity, I moved on to web development.
Web Development
Web development was a whole new world for me… and turns out, it’s huge. There are so many concepts to understand, and it’s a much drier compared to game development, at least in the beginning when learning HTML, CSS, and JavaScript. After learning the basics of web development, I chose to learn back-end web development in PHP.
At this point of time (around January), I felt like I was getting more comfortable with programming and wanted to contribute to the company. I asked for an opportunity to become an official intern and thankfully, there happened that Tinkercademy is planning for upcoming courses on web development, and they could use my help in building slides and example apps. It also just so happened that the curriculum would be teaching PHP back-end web development, so I was really lucky to have picked up PHP. This was the start of my main contribution to Tinkertanker during my time with them.
Developing Curriculum
I helped in developing the slides and projects which would be subsequently used to teach a web development course, aimed at adults who wanted to build on their skills and join the tech industry. Initially, the task seemed daunting but I am glad I took it up. Through the course of this project, I learned even more about PHP and the Laravel framework, as well as the React front-end framework.
As the curriculum emphasises hands-on projects rather than listening to lectures, I was happy to be able to adapt some of the projects that I did, while learning about web development, into the curriculum. One of the projects which I’d spent the most time on was a Twitter replica, and it may end up as a final project for this course.
A demo of the Twitter replica created using Laravel and ReactJS
Through the creating of the slides and demo projects, I was able to retrace the steps I took when I first started learning about web development and better understand things that I had just glossed over initially.
I also had an opportunity to assist in classes at a school, in an introductory web development course. I never imagined myself as a “teacher” in a school enrichment class, but there I was, helping students to create their very first website. I am really grateful for such an opportunity.
Other than helping out in the classroom, I also got to develop some of the slides to be used in the later part of the class. There was this calculator app I made, that I found really interesting, because I’d never thought of how calculators actually worked until I was building this app.
The Calculator App I made with ReactJS
From the GIF, you can see the app functions a simple calculator. However, one of the challenging parts to me was getting the calculator to process the existing input whenever I clicked on an operator. From the above, you can see an instance where 6 ^ 2 was typed in, and when the + button was clicked, we got 36 on the results pane—this took a while for me to work out, and was a lot of fun to work on.
Other Projects, and Conclusion
Other than working on curricula, I also got to spend some time creating physical demo projects for various purposes. One of them was a Raptor created using Cardboard Blokies, from the company’s online store, Get Hacking.
Raptor built by another intern and I
Another of my demos was a toy robot made using the Strawbotics starter kit, and it was done as a product review for the kit. It doesn’t move quite as well as I hoped, but I think that’s because the table didn’t have enough grip for the robot to move properly.
Strawbotics starter kit
My 5 months internship with Tinkertanker is coming to an end as I am writing this blog post, and I would like to thank all the perm staff as well as the other interns for making my stint here so enjoyable.
I am about to pursue my Computer Science degree and I must say, 5 months ago, I was still unsure if Computer Science was really what I wanted to study. However, through this internship, I am now sure that I would enjoy my University course after experiencing the joy of programming and the satisfaction I get from completing my apps.