Moja global: Interactive Visualisation Tool for GCBM Output

Warm greetings to the OSC Hub community.

My name is Abhineet, and it brings me great pleasure to share with you that I’ll be working with @project-mojaglobal for this year’s Google Summer of Code.

Thank you so much to all the @gsoc-admins and @Guy for accepting my proposal!

Here is my first weekly update…

Community Bonding Begins!

To start things off, @Guy organized a video conference a few days after the announcement. It was a first of its kind experience for me. To be conversing with so many nice people from so many different parts of the world!

But the highlight of that meeting was surely when all of sudden a cute little member of our meeting announced, “we have guinea pigs!” :smile:

After the meeting, we received our first assignment from @Guy:

To encourage communication between the students, I would like you to discuss between the four of you and inform us about how you want to communicate your plans and progress.

Lead by @abhi211199, we spent rest our time discussing (quite constructively) this. We were able to arrive at a consensus within the provided deadline and submitted our first deliverable!

The most important thing that happened since the announcement is that I made my first contact with my wonderful mentor @koukas.

The key takeaway for me from all the interactions that I’ve had till now is that – pun unintended – I’m in good company!

Looking forward to the journey ahead!


This is the result of the stand-up for this week.

Last week was successful. The students decided where and how to post their work. The approach is to make comms as efficient as possible. We will post weekly blogs here. We will duplicate them on a specially created repo on our GitHub. We will also use GitHub to post our work plan and progress for each item. We will have weekly deliverables (issues) that will be resolved. So the repo will have all info.

This week, the focus will be on getting a work plan in place by the end of the week. This will require close communication between the student and the mentor. We are still figuring out how it will work precisely.

The challenge this week will clearly be to get the communication to work. There is some reluctance on the side of the students to get the attention of the mentors. They should be not hesitate to get attention for their queries. If necessary they can use other channels of communication or ask other mentors or admins to assist.

But overall we are off on a great start. Looking forward to the work plans!


Week 20: Project Plan, Hardware Failure & A Choropleth

This week had promised me a project plan but instead it started with the demise of my laptop’s hard drive. But thankfully, it didn’t leave me empty handed. In, fact it left me with a sense of optimism for the future!

Summer Strikes My Hard Drive

My HDD had been telling me of failing sectors but I had been overlooking it. I understood the gravity of those warnings but still ignored them. Fortunately, this oversight didn’t cause me any significant damage. All thanks to my very resourceful father, who was able to procure a SDD (yes, a SSD!) in a lock-down!

All this did cost me a day or two but nevertheless I was able to publish a preliminary project plan. I’ll further refine it in the coming week and will clearly label my deliverables as I further understand the project.

Now, I’m vigilantly monitoring the temperature of my hard drive so that another failure doesn’t happen in the near future.

Experimenting with D3.js

To get a feel of how I can combine spatial and non-spatial data, I made this choropleth map of my home state of Chhattisgarh:

It depicts how much percentage of the state’s total ground water is available in a district. I made it in an Observable notebook using the D3.js library. Converted the files available here for the map and got the ground water availability data from here.

Communicate! Communicate Communicate!

As I was feeling uncertain about the future of my project, I contacted my mentors. Their feedback was very helpful. It helped me calm down and gave me a much needed sense of direction. I’m extremely grateful to @mfellows and @koukas. Thank you so much guys!

All in all, it was a bittersweet week but I did learn how immensely valuable open communication is.


I would not have wanted to be in your shoes this week. I am so happy it all ended well. Still impressive that you got this great map done! Good stuff.
I also like your project page on GitHub. I think you are the only one who got the contributors-script working. :+1:t4:
I am looking forward to your final workplan.


Week 21: Raster Graphics & Python Hell

This week was spent trying to understand and evaluate the technical aspects of the project. Which is just a fancy way of saying that I spent the week installing and testing a bunch of Python frameworks :smile:

I’ve landed on these two frameworks that I think would be great for this project:

  • Dash — For creating the web interface purely in Python.
  • Terracotta – A tile server for optimizing and serving the raster graphics.

I’ve shared this with my mentors and they’re looking into it and hopefully I’ll start coding by the end of May!

What’s a GeoTIFF?

While learning about this project, I dived into the fascinating ocean of computer cartography. Although I didn’t see the bottom of this very deep ocean (and probably never will) but I sure did learn a lot!

It’s a very well organized community with the primary actor being the Open Source Geospatial (OSGeo) Foundation and the most important project being the Geospatial Data Abstraction Library (GDAL).

moja global’s primary project, FLINT, heavily uses GDAL for all geo-spatial calculations. Apart from that GDAL is also used for producing the GeoTIFF raster graphics that’ll be the primary input of my project.

Created at NASA, the GeoTIFF format allows researchers all over the world to store and share geo-referenced map data. They’re not very memory efficient on their own but you can significantly reduce their size by using compression algorithms like DEFLATE.

Even with compression, however, it can be hard to work direclty with GeoTIFFs in the browser. Yes, there is [geotiff.js] but, quite paradoxically, I couldn’t get it to work with compressed files. Anyhow, in projects like mine, it’s best to use a tile servers like MapServer or Terracotta.

Frameworks are Awesome (but their installation is not)

Frameworks make the job of the software developer very easy, if not outright trivial! But they come with the cost of being a hard dependency. Now, that might not look like a very high cost at first glance but when you try to get it installed, the cost becomes very clear, especially in Python. I’ll let this xkcd speak for me:

Community Bonding Continues

Apart from all this, near the end of this week we had a group video call. It was a short exchange but nevertheless a vital one where all the team members were asked for their opinions on what’s going well and what needs work. We identified that our communication medium (Slack) is great and that moja global’s documentation needs work.


I really enjoyed reading your blog. It is really good and useful beyond people that know moja global. Well done.
Also good job on the frameworks. I am confident that we will be ready to start coding by the end of the week.


Week 22: Writing a Pitch & Contributing Contribution Guidelines

This week, I wrote a pitch and contributed to moja global’s GitHub contribution guidelines.

A Pitch

It is important that my mentors understand what I plan on doing. But the more important thing is that I should understand my decisions. This is why, to explain my rationale behind using Terracotta, I wrote a pitch.

While writing it, I realized that there were many gaps in my knowledge. For example, I hadn’t realized that Terracotta is not exactly a framework. It is a CLI tool. This would’ve probably set me off, if I had discovered this in the future.

I’m grateful to my mentor’s questions. They made me realize that I should clarify my plan. As a result, now I have a better understanding of Terracotta. How I will integrate it into my project is more clear now.


On, GitHub, the contribution guidelines of a project are stored in a file named GitHub points out to this file at various stages when you try to make a contribution. So, this file (along with the README) plays a very important role in promoting contributions.

moja global’s contribution guidelines were divided into multiple documents. They were then linked in CONTRIBUTING. I realized that I can merge these files. So, I created an issue and then submitted a PR. It got merged :tada:

I hope that this will help in increasing contributions to moja global.