GSoC 2018 with CloudCV

On April 23rd, 2018 I received the wonderful news that I was selected as a Google Summer of Code intern at the organization CloudCV. I wasn’t actually surprised that I got in. Probably because I already got so much value out of the preparations, I was satisfied with the things I’ve achieved (Honestly, mentally I was prepared for the worst just in case I wasn’t selected lol).

From June of 2017, I was fascinated by the projects at CloudCV and I just wanted to contribute. I started actively solving and contributing the projects in small ways from July onward. I didn’t think I’d get selected, but I guess I underestimated myself very much (I like to do this, it makes me work better).

The last three months were a blast. I learned more things in the last three months than the past year combined. I wrote the proposal over a period of 3 months because I knew that this was going to be an extremely amazing experience. I was also aware of the inside outs of EvalAI, from the submission worker to the angular front-end, which I learned just to contribute to this project (Man, I hated working on the front-end). I was committed to seizing this opportunity because

  1. I was building a project from scratch and releasing it, which is exciting on its own.
  2. I would have to set up all the other utilities like Travis-CI, PyPI and all the tests on my own.
  3. I had to push myself to stick deadlines and make things happen from the comfort of my home.

EvalAI-CLI

This was the main part of my project. It enabled a user to use the wide range of EvalAI features through the terminal. From making submissions to view the leader-boards. After 5,000 lines of Python code, we finally published the package on PyPI on 22nd July. EvalAI-CLI Official Command Line utility to use EvalAI in your terminal.

EvalAI

Along with my contributions to EvalAI-CLI, I’ve also done some significant contributions to EvalAI like, token authentication and rewriting the architecture of the Submission worker inside Docker.

Project Dissection

  1. Token retrieval from the EvalAI web app.
  2. Setting up the initial directory structure.
  3. Token authentication, storage, and retrieval.
  4. Implementing EvalAI Challenges features on the CLI.
  5. Implementing EvalAI Teams features on the CLI.
  6. Implementing EvalAI Submission features on the CLI.
  7. Host URL configuration on the CLI.
  8. 50 other PR’s I can’t fit into this blog :P
  9. Docker fix on EvalAI.

What I Learned

  • Collaboration on big projects: This might be one of the most significant skills I gained. I believe that writing the feature is just 60% of the work. 20% is on testing (OMG, so exhausting!), 10% is documenting and 20% is making changes on the PR, iteration after iteration.
  • Utilities while coding: Travis CI, PEP 8 conventions and all the other cool integrations. God bless programmers. It was absolute fun to work and set up these. But there was instance I regretted having these since they were always pointing out my mistakes.
  • Amazon SQS: In the 21st century, we’re living on the cloud. I was absolutely thrilled to work on Amazon SQS because this is the first cloud-based tool that I seriously committed to.
  • Docker: Another amazing tool to work with. I was so used to setting up the virtualenv and all the dependencies, manually, by getting hands my hands dirty and solving all the errors that popped up, that when I used docker for the first time, I was absolutely blown away by how easy it was to set the whole project up with just one click.

Ending notes

I’m extremely grateful that I was selected to work on this project. This opportunity empowered me to work on fore-front technology and improved my communications and collaboration skills within an organization. I’m very much looking forward to the future of the projects within Cloud-CV and will be sticking around to work on and help with the projects for the foreseeable future. This wouldn’t have been possible without the mentors, I know I was quite dumb sometimes but thanks for guiding me through the tough part.

Ciao.