blog.kawka.me

Unicornabout me

Go back/ Reading article

My Google Code-in 2018 adventure with Mifos Initiative as a Grand Prize Winner

12 Dec, 185 min read

  • #personal

Over 3000 students from 77 countries completed 15323 tasks with 27 open source organizations. The 54 Grand Prize Winners from 19 countries won a trip to a Google HQ in San Francisco.

It’s been an amazing 50 days spent participating in the Google Code-in contest, during which I've had the opportunity to enhance my skills in Android development and UI/UX design. Additionally, I've honed my automation skills by building Python tools, significantly improving code review performance and gaining valuable new experiences.

Overall, it's been a rewarding journey filled with fun and learning!

But… What is Google Code-in?

To be brief, It’s an international contest focused on Software Development, Research, Design and principally, Open-Source!

Google Code-in Logo
Google Code-in logo

Organization

Google Code-in brings together a variety of organizations, all keen on connecting people, with power of Open-Source. Since the beginning, I wanted to dive into the Android field, so I’ve done some research before participating and found organizations that maintain projects in this technology.

Finally, I chose the Mifos Initiative which is a sub-organization of Digital Impact Alliance.

Mifos Initiative Logo
Mifos Initiative Logo

What GCI gave me?

So much new experience.

I’ve been involved in 2 Android projects: MifosPay & Self-Service-App. I had to work in a much larger code-base than ever before.

The first few days were hard for me since I have been trying to make myself familiar with the project structure and overall contributions standards. After some time I felt much more confident, and started to contribute on my own, by finding unapparent ways to improve the MifosPay app.

Climbing to the top

Instead of contributing to actual tasks, I tried to think outside the box of ways that could bring a significant improvement over the product. It bothered me, how obscure and unintuitive the app is, so I’ve suggested changing the actual layout, to improve user interest and the overall quality of the app.

I’ve created a completely new UI/UX proposal according to the newest Material Design 2.0 standards. Since the mentors’ review of my proposal, I’ve been responsible for the redesign implementation, where I and other contributors were successfully changing the app appearance and some of the Frontend functionalities (Check out the redesign branch!).

I found the process challenging, but rewarding at the same time. I learned a lot, and had an opportunity, to carry out some code reviews.

UI/UX design of the financial platform
My design proposal, reviewed & accepted by GCI mentors

Automatization

Mifos mentors did a great job of creating a variety of tasks. I’ve done 38 of them. Surprisingly, the easiest and most mundane ones, turned out to be the most interesting.

Why? They were open for creativity, and finding some non-trivial solutions.

One of them was:

Organize issues and pull requests of the organization’s GitHub repository, by labeling them depending on their state.

Knowing, that PRs may take one of the following states:

  • Ready to be merged — It has been reviewed, and no changes requested by the reviewer / Requested changes were accepted
  • Changes Needed — If it’s been reviewed, and some changes were requested by the reviewer
  • Need Review — It hasn’t been reviewed yet

…and Issues may take one of the following states:

  • Open —There are no pull request references to this issue. It’s open so its ready to claim, or someone’s just already claimed it, but didn’t send a solution yet. It might also happened when someone send an issue’s solution but its got closed and not merged
  • In Progress —That someone already send a solution for the issue and its waiting for merge
  • Multiple PRS— There are many unique pull request for single issue and these are all open
  • Closed — A PR referencing to the issue, got merged, so the issue itself can be closed

I’ve decided to learn a little bit of Python, and do some magic with GitHub, and Google Sheets API, by fully automatizing the documentation process.

A visualization of a script running in the terminal
Easy pulls documentation

Instead of wasting a couple of hours on manually labeling those issues, you run the script, that documents the whole repository in less than 2 minutes. For more info, you might want to visit the project repository.

A Google Sheet document storing documentation of github issues with 4 columns: url, title, status, update-date.
Demo of the Issue Documentation script running on Heroku, updating every 5 minutes

My lightning talk

I had a chance to give a lightning talk about my work during the contest. It's my first public talk ever. I was speaking in front of the Google staff and other participants. Recorded on Jun 16, 2019, at the Google HQ in Mountain View, California.

I guess I'm sharing that so we can laugh together about it 🙃

Giving a lightning talk about my work during the contest.

Overall summary of the GCI 2018

As I mentioned before, it’s been a great experience to participate in the Google Code-In contest. I’ve gained so much new knowledge and have had the opportunity to participate in such a great open-source community.

I would love to thank all mentors and people engaged in the contest for doing such a great job, being so active and supportive. Unfortunately, it was the last time I could take part in the contest, but I’ll participate in such similar events in the future for sure.

Go back

All rights reserved © Bruno Kawka 2024