On persistence, collaboration, trial and error - Hacktoberfest 2022 🚀🌟🔧
Tags: opensource, hacktoberfest, beginners, javascript
Published: 2022-10-20 08:20:53

Last week I [published a blog](https://dev.to/saminarp/things-i-learned-through-my-first-hacktoberfest-pull-requests-4na1) about my first-ever Hacktoberfest pull requests (PR) and the lessons learned. I wrote about [digital public goods](https://socialimpact.github.com/insights/hacktoberfest2022-dpg-volunteer-opportunities/) and how much I enjoy contributing to [Non-governmental organizations (NGOs)](https://en.wikipedia.org/wiki/Non-governmental_organization). Learning never stops, and I am here to tell you more about my ongoing Hacktoberfest adventures. 

#### Starting with a little update from last week’s Hacktoberfest activities...
 
## Tales of success 🎉

My two PRs for Intel’s CVE-Binary-Tool got merged! These ([Fix1](https://github.com/intel/cve-bin-tool/pull/2123) , [Fix 2](https://github.com/intel/cve-bin-tool/pull/2124#issuecomment-1281464876)) were my first ever Hacktoberfest merges. These were small contributions but big confidence boosters. I am a beginner in programming, and if I can make small contributions, so can you. From one beginner to another – start small, try your best, trust the process, and ask for help. 

Don’t be afraid to sound silly – I lost count of the number of times I sounded silly to the maintainers of the projects I contributed to this week. Real-world projects are big, and they look intimidating. But persist anyway, and don’t give up when you face hurdles. It was really challenging for me to get my code to get through the CI/CD checks of all the PRs but finally, I did it! 

As mentioned in my [previous blog](https://dev.to/saminarp/things-i-learned-through-my-first-hacktoberfest-pull-requests-4na1), I was invited to a standup meeting of [Glific](https://glific.org/) to understand their issues and this week I finally attended it! 

>
>"Glific is a WhatsApp-based open-source communication platform for NGOs to have conversations with their community."  (Glific)
>

Everyone in the standup meeting at Glific was friendly and made me feel comfortable. I expressed my interest in working on their frontend issues as they seemed more beginner-friendly compared to their backend which is written in Elixir. 

This project too was hard to set up, but a wonderful [developer from Glific](https://www.linkedin.com/in/mohd-shamoon-4aa7a513b/), spent two hours helping me set up the dev environment through a Discord call. He then proceeded to give a short demo of Glific by sharing his screen. Whenever I need him, he is just one Discord message away. The community support for open source continues to amaze me. 

I then proceeded to connect with [Donald Lobo](https://www.linkedin.com/in/donald-lobo/), the founder of Glific through LinkedIn, expressing how great the idea of Glific is. I have seen firsthand how NGOs truly struggle with collecting information at a grassroots level. Glific is bridging that gap between NGOs and the community they care about. 

## Tales of trial and error….and ongoing trial 👩🏻‍💻🔧❓

My fourth PR to [If me](https://www.if-me.org/) organization had some requests for changes.
It took me about 2 days and 2 YouTube videos worth of learning to figure out how to set up the dev environment for the `Ruby On Rails` project on my mac. For some reason `gem install bundle` was throwing so many nearly impossible-to-debug errors. But my stubborn soul was not ready to surrender. I googled. And googled. And googled. And stackoverflowed.
 
*I finally got it running…*

But…even after I launched the docker instance for running the project – some issues were persisting when logged in as a user. The issue was related to fixing the navigation bar. Now the navigation bar was all good when are not signed in on my `localhost`, but after signing in, and refreshing the page the entire top margin shifted up. I raised this issue to the maintainer and we are investigating this unusual behavior. 


*I then shifted my focus to another issue I was working on for ifme - writing unit tests...*

As mentioned before, the only little knowledge I have for writing tests is from my cloud computing class that I learned about for three weeks. It was incredibly hard for me to write this one particular test. I tried multiple times before reaching out to the maintainer stating how challenging it was for me to mock the Document Object Model (DOM) to write this test. I am still not sure if I can get this done, but I am going to keep trying. If anyone reading this has any suggestions for writing test for this, feel free to comment.

```js
const getPusher = (): Object | null => {
  if (window.Pusher) {
    const metaPusherKey = Array.from(
      window.document.getElementsByTagName('meta'),
      window.document.getElementsByTagName('meta')
    ).filter((item) => item.getAttribute('name') === 'pusher-key')[0];
    const metaPusherCluster = Array.from(
      window.document.getElementsByTagName('meta'),
      window.document.getElementsByTagName('meta')
    ).filter((item) => item.getAttribute('name') === 'pusher-cluster')[0];
    return new window.Pusher(metaPusherKey.getAttribute('content'), {
      cluster: metaPusherCluster.getAttribute('content'),
    });
  }
  return null;
};
```

On a more positive note -  I did write all the other tests required. I sent a [PR](https://github.com/ifmeorg/ifme/pull/2181) anyway, even though I could not cover all lines.

When I expressed how I failed to cover all lines in the test to the maintainer through Slack, she said something very encouraging.

> 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qpgas9wdrbpwjtf5zhzl.jpg)
>


I have received some requests for changes to this issue, which I am going to work on fixing and discuss in detail in my next blog.

## On finding meaningful work and networking ✨

Setting up the projects and navigating through the maze of files and folders to understand the projects at their core can be exhausting and confusing. However, all the projects and public digital goods I contributed to this were meaningful to me, so I did not mind putting in the reps and hours to get it done. So let's shatter the glass ceilings and invisible barriers that we put up for ourselves and contribute to open-source projects that we care about.

During the summer, I was pushing myself to be overly productive. But as you can guess, the problem with that is that it leaves you burnt out. I was trying to learn Python, Swift and about blockchain smart contracts at the same time all while having a job as a research assistant at Seneca College. And if I have not mentioned this before, I am an avid powerlifter and consistently working on getting better lifts. If you are like me, you know that this leaves your posterior chain screaming for a break sometimes. I was pushing myself way too hard – physically and mentally - and it was not sustainable over long periods. I did not end up learning python or blockchain smart contracts during the summer. But I did end up learning Swift and data structures. Through this, I learnt that it is important to plan out and space out work logically. I also believe that if you are willing to learn something, opportunities present themselves. I was right. 

#### Another cool digital public good 

A lucky opportunity for learning blockchain did present itself this week. I was reading through GitHub blogs and found yet another amazing NGO taking part in Hacktoberfest – [Rahat Agency](https://rahat.io/). They are a certified digital good and I expressed my interest in an issue. But immediately after someone did a pull request. 


>
>"Rahat manages and monitors the flow of transactions in token distribution projects maintaining end-to-end transparency for humanitarian agencies who need a transparent, efficient and cheaper way to distribute cash or goods in emergency response." (Rahat Agency)
>

Well, I tracked down the person who did the pull request and found out that he was a blockchain developer and worked for Rahat Agency. I looked him up on LinkedIn and sent him a connection request expressing my interest in contributing to Rahat and how cool I thought the project was. He immediately replied and asked if I had any problems with the development environment setup. I did face errors and issues. I sent him screenshots through the LinkedIn chat and he asked me to remove a package named `rumsan-ui` and send in a PR. I sent the [PR](https://github.com/esatya/rahat-agency/pull/234) as asked, but that led to more errors being generated. I then provided details of the errors and the same screenshots under this [GitHub discussion](https://github.com/esatya/rahat-agency/discussions/233), helping them on their journey in collecting feedback from others who are trying to run their project. I am looking forward to making more contributions to their project. 

##  Going forward 🚀...

Keeping my spirit to learn alive as I move forward. 

Author and teacher **Julia Cameron** on improving
>
>
>“It is impossible to get better and look good at the same time.
>Give yourself permission to be a beginner. By being willing to be a bad artist, you have a chance to be an artist, and perhaps, over time, a very good one.” 
>
>*Source: [James Clear](https://jamesclear.com/3-2-1/july-22-2021)*