Midpoint Progress of My HOT Internship 🌍

Hello there! 👋

Welcome to another blog post about my journey as an Outreachy intern at HOT.

We're right in the middle of my journey—literally, it's Wednesday (let's adjust to 5/2) and it's July. Mid of the mid of the mid, haha. Hopefully, my progress isn't 'mid' 😅 ; here, I will try to highlight the higher points!

It's time to gather thoughts and go through the accomplishments up to this point and share with you my plans for the other half of the journey.
Let's get started!

Original plan for the Internship

At first, I meant to work on the project: Create a Python-based mobile application to collect OpenStreetMap data in the field, with an issue tracker: https://github.com/hotosm/osm-fieldwork/issues/63.

The Timeline up to this point was:
May - June (Weeks 1 to 4):

  • Familiarising with HOT tech tools, tech and data team and open source community. Introduction to mapping.

  • Delivering on/improving and merging the PRs as part of the contribution period. Introduction to FMTM and OSM fieldwork.

June - July (Weeks 5 - 9):

  • Working with the mentor to set up a mobile application that wraps up an existing functionality of osm-fieldwork, with a user interface, including inputs.

Almost within the first week I reached out to my mentor Sam Woodcock to get started with the project scope and revise on goals.

During the first month, HOT underwent many internal changes, including reorganization and layoffs. Nifemi and I came at HOT when the team was having lots of work.
So, since proposing the Outreachy project, many new projects have arisen. It lead to that I was given quite a lot of new projects to choose from.

Thanks to my mentor Sam Woodcock for providing various options and finding the right fit for my skills and aspirations as a developer.

New Goals

The OSM-fieldwork project, which I initially planned to work on, is actually utilized within HOT's Field Mapping Tasking Manager (FMTM) project. So, there was a feeling that most of it better be placed in FMTM.

This is where we pivoted from the original path to working on FMTM. This shift allowed me to be more beneficial to the team and gain new skills by covering the backend functionality of FMTM with tests.

With the May - June (Week 1 to 4) goals remaining, we set the following modifications for the June - July (Week 5 - 9) goals for the internship:

  • Working on full coverage of FMTM functionality with tests.

  • Asynchronously resolve issues on FMTM.

Accomplishments

The goals were directed towards covering FMTM backend functionality with tests. As a former data analyst, I couldn't get past the numbers 😅. Thus, I uploaded the before and after test coverage report, which shows total cover rate growth from 57% to 62% and still rising 💅.

Before:

NameStmtsMissCover
app/auth/roles.py702170%
app/central/central_crud.py38422442%
app/central/central_schemas.py681282%
tests/conftest.py89792%
tests/test_task_routes.py4175%
TOTAL4174177457%

After:

NameStmtsMissCover
app/auth/roles.py701973%
app/central/central_crud.py38419649%
app/central/central_schemas.py68396%
tests/conftest.py1351390%
tests/test_task_routes.py12192%
TOTAL4299165562%

Where,

  • Stmts refers to the number of statements in the code.

  • Miss refers to the number of statements that have not been run.

  • Cover is test coverage, or (Stmts - Miss) / (Stmts) * 100.

Ideally, all functionality needs to be tested. However, since it might take quite a lot of time, we decided to start with the most important endpoints to make the work more effective.

Following main mapping endpoints were covered with tests:

  • PUT /projects/{project.id}

  • GET project/summaries ,projects/project_id

  • POST projects/{project_id}/entity/status

  • GET projects/{project_id}/entity/status

  • GET projects/{project_id}/entities/statuses

  • GET tasks/{task_id}/history

While it may seem like I've done everything as planned, it still feels like I've just started and now have so little time left!⏳

Expectations met later than expected

Understanding the workflow

The importance of documentation cannot be overstated. I was given a lot of documentation to read, and it was overwhelming. The hardest part was realizing that it's difficult to remember everything from just one reading, especially since English is not my first language. Revisiting documents was necessary.

The same goes to meetings, and webinars, where lots of key points got discussed. As out coordinator Petya Kangalova said, it's important to confirm what have you understood from the conversation, to make sure your on the same page!

Setting up FMTM project

Now on technical part of the journey, setting up a new project locally caused quite a hassle. Any developer will understand the struggle of debugging the way out to successful set up.

I thought while having first issues with FMTM set up, that I could find a way to resolve the errors that I bumped nearly every step of instalment. It took me a while to resolve one moment I got stuck on and I couldn't make any step further.

The error was:
image with referencedocker.io/postgis/postgis:14-3.4-alpinewas found but does not match the specified platform: wanted linux/ , actual: linux/amd64.

This is where I asked for my mentor - Sam Woodcock's help. Turned out postgis didn't build for ARM64 yet.

It was fixed by Sam quite fast! With the help of my mentor I was unblocked in a matter of hours, for which I am very grateful! It shows the importance of asking for help on time.

Plans for the Second Half

For the 8th and 9th weeks:

  • Complete the highest priority endpoints coverage with tests.

  • Create PRs.

  • Reflect on the development process in the internship diary.

July - August (Weeks 10 to 13):

  • Apply knowledge from creating tests for the FMTM to the Drone-TM functionality.

  • Participate in webinars and contribute to the feature development of Drone-TM.

In the beginning of July I had a chance to participate in a webinar, which introduced Drone Tasking Manager: Insights, Innovations and Future Directions. It was co-developed by Humanitarian OpenStreetMap (HOT) and Naxa with support from The World Bank Group, enabling communities to use low-cost consumer drones for high-quality aerial mapping.

I hope to bring a help by contributing to feature development of Drone-TM and apply gained knowledge from writing tests for FMTM.

New connections, networking, writing blogs

My mentor at HOT, Eden, who is a former Outreachy intern, emphasized the importance of networking and posting on social media or LinkedIn about Outreachy and career plans. He explained that we never know when those blogs or posts will be a great help, so it's important to write them and stay active.

Thanks to the incredible connections of our amazing coordinator Petya Kangalova,Nifemi and I will be having coffee chats with insightful people at HOT: Abigail Afi Gbadago and Raiza Pilatowsky.

Abigail Afi Gbadago is a an inspiring software engineer, speaker to motivate and help others grow in tech. She contributed to various tech events and communities.

The importance of blogs is immense now; getting reach on one's work and story is a great way to introduce and present the work. I hope to learn more tips and guides on writing and managing blogs from Raiza Pilatowsky!

As Omotola Omotayo, one of the Outreachy organizers, said in the interns, mentors, and alumni chat:
✨ Your network is your net worth! ✨
The Outreachy program has truly provided interns with this great network. The only thing left is to use it! I hope to take these opportunities as much as I can.

Conclusion

Reflecting on the midpoint of my internship at HOT, it's clear that the journey has been both challenging and rewarding. Despite initial setbacks and organizational changes, we've managed to pivot effectively, contributing significantly to the FMTM project by improving test coverage.

The support from my mentors and the broader HOT community has been invaluable, helping me overcome technical hurdles and expand my skill set. As I look forward to the second half of the internship, my focus will be on completing the test coverage for high-priority endpoints and contributing to the Drone-TM project.

Additionally, I aim to leverage networking opportunities and continue sharing my experiences through blogging. This journey has underscored the importance of adaptability, continuous learning, and the power of a supportive network.

References:
Header image by Tomáš Malík on Unsplash

2
Subscribe to my newsletter

Read articles from Azhar Ismagulova directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Azhar Ismagulova
Azhar Ismagulova

Hey, I am a software engineer based in London.