Notice about minors permission: Students have written those posts and sent the photos, and give permission to us to publish them. Still they are anonymous in the sense that we do not publish their authentic names, but his nicknames on the contest. When their real names are published, as this one, we have specific consent from their parents.
Arnav Aggarwal
It was my first GCI and having never participated in one before, I didn’t quite know what to expect. I came in as someone who didn’t really know what to do and am leaving with so much more. In the past month, I have done tasks in firebase, google assistant, natural language processing through dialog flow, convolutional neural networks, python, JavaScript, docker, networking requests and so much more. Usually when you enter a contest, it’s about showing what you know but thanks to the liquid galaxy team, it has been about learning for me. I knew close to none of what I have described above, and liquid galaxy through its tasks introduced me to it because of which my mind is booming with ideas that I can implement using the tools introduced to me by liquid galaxy. Moreover, the fact that each task takes about 1 and a half hour each allows a high school student to learn and explore more than one long Google summer of code project would.
In fact, my first task was also the first time I implemented a CNN in real life. I had to research a lot for this task, I had to figure out the kind of network I want to build, any additional functionality that I want to add to make it convenient for the end user to use and how to train this model as I don’t have a pc with a Nvidia graphic card. At the end however, I personally think I did a great job with the task and I have been so motivated by these tasks as I love seeing stuff that I wrote work, that I have always tried to add some extra functionality to my code rather than just following the task instructions. Sometimes, this negates the requirements and I have to resubmit but while I won’t know if this is true, I would like to think that some extra functionality add makes someone’s life somewhere easier. The motivation I get from doing these tasks added with the fact that my girlfriend lives near the google headquarters and I really want to visit her xD has been more than enough to keep me awake at nights trying to learn more and do more.
At the same time, I think that some of the tasks could have been made tougher as everything was basically provided to the participants and I personally believe that it’s the discovery, the research and the searching through a thousand stack over flow pages that is important. For e.g. the task of "Integrate Google Assistant with Liquid Galaxy" could at least require the participant to search for the GitHub repo instead of providing the links to them. I also loved the top ten tasks as I could see the view sync functionality running right in front of me.
The tasks also taught me about the open source community and how to help others. While viewing the countless stack over flow pages I viewed, wherever I would see something that I could have helped with, I tried to enter my comments and help the person who needed some direction. I don’t think that I would have had the confidence to do this had it not been for GCI.
I also did the firebase series of tasks and those were a great experience. The tasks basically asked me to add common firebase functionality to a very simple html webpage. While it was rather simple, I got stuck quite often because it took me quite a lot of time to discover that firebase was asynchronous ( and another hour to understand what asynchronous means 😉) and that that was the reason that my code would listen to messages in a different order and often exit a loop before a message was received. The part to write to a firebase database was also quite interesting as I wanted to write in a list without a key, but I couldn’t find a method which allowed me to do so. It was only later that I realized that this is specifically done to allow multiple users to write to the same child node at the same time while avoiding the errors.
Another example that I would like to give here is that of the OSC app task.
While this task was simple to read and the planned logic about how to implement it was thought of by my brain, the implementation turned out to be way tougher. The task basically required me to send a osc message using a android app and then receive it, the problem came when I was trying to start my server. I first tried a server by running my server using nodejs and running the osc listener didn’t work, this was brutal failure. After that, I tried java but that didn’t work either. Finally, it was python osc that worked for me. However, once I wrote the code for python, the next challenge was automatically starting the server at the right IP and since I didn’t want to hardcode my IP or limit the usability of the code by starting the server at 127.0.0.1, it took me a lot of time to write code which would get the actual network IP (this is actually pretty tough to do in python as it doesn’t have any method like getIp). However, as I finally got my code to work, it was an absolute delight and I relished the moment when it was finally able to load up google earth.
I also did the firebase series of tasks and those were a great experience. The tasks basically asked me to add common firebase functionality to a very simple html webpage. While it was rather simple, I got stuck quite often because it took me quite a lot of time to discover that firebase was asynchronous ( and another hour to understand what asynchronous means 😉) and that that was the reason that my code would listen to messages in a different order and often exit a loop before a message was received. The part to write to a firebase database was also quite interesting as I wanted to write in a list without a key, but I couldn’t find a method which allowed me to do so. It was only later that I realized that this is specifically done to allow multiple users to write to the same child node at the same time while avoiding the errors.
Another example that I would like to give here is that of the OSC app task.
While this task was simple to read and the planned logic about how to implement it was thought of by my brain, the implementation turned out to be way tougher. The task basically required me to send a osc message using a android app and then receive it, the problem came when I was trying to start my server. I first tried a server by running my server using nodejs and running the osc listener didn’t work, this was brutal failure. After that, I tried java but that didn’t work either. Finally, it was python osc that worked for me. However, once I wrote the code for python, the next challenge was automatically starting the server at the right IP and since I didn’t want to hardcode my IP or limit the usability of the code by starting the server at 127.0.0.1, it took me a lot of time to write code which would get the actual network IP (this is actually pretty tough to do in python as it doesn’t have any method like getIp). However, as I finally got my code to work, it was an absolute delight and I relished the moment when it was finally able to load up google earth.
Finally, I would also like to give an example of the Quake 3 task that I did. This task required me to install quake 3 on a liquid galaxy setup using 2 or 3 PCs and I had a lot of fun doing that. In fact, I still have it installed and some days I like to play on the almost always empty servers a game using my liquid galaxy setup. It sure is a lot more fun with it then without it.
As my post comes to an end and I can count the number of hours before submissions close, I can’t help but think of my experience at GCI with reminiscent nostalgia and for that I would like to thank the liquid galaxy from the bottom of my heart. This month went by way too fast and I will be waiting for next year eagerly.
PS I will also be waiting for my T-shirt :P