MLH made me better at learning!
Tags: mlhgrad, opensource
Published: 2022-01-18 11:29:15

I can't even begin to express the emotions I felt when I got the acceptance mail from the MLH team for **GitHub Externship track** in MLH Fellowship Fall 2021!

![Acceptance mail](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zek59fhacqf9ttepkq3p.png)
<figcaption>Got the Acceptance mail on 20th August 2021</figcaption>
---


On 8th September, I got another mail that due to my region I couldn't get into the *Github Externship track*, so I had to either switch to *Open Source track* or defer my enrolment. And I am glad that I made the decision to switch to **Open Source track**



![Transferred to open source](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lm0kynfs7wnwju5tbwje.png)
<figcaption>Had to move from Github Externship to Open Source track</figcaption>

---
On 20th September, we kicked-off the batch with an onboarding session, where we got to know about the amazing things that awaited us, and the details of the projects were revealed wherein we had to contribute in the next 12 weeks. My project was [Pysa by Facebook Open Source](https://github.com/facebook/pyre-check). 
{% twitter 1440057278367879178 %}

### The First Week: Oriental Hackathon
The goal of this *Oriental Hack* was for us to get familiarised with our assigned projects. We made a group of 4 and started reading about [Pysa](https://pyre-check.org/docs/pysa-quickstart/) a static analysis tool written in python.

After a 4 day long research, we made a CLI tool which will help us in finding SQL Injection vulnerability in a python code.
{% github arpancodes/protectsql no-readme %}

{% youtube sf8GWfs1dvI %}

### The contribution begins
From the second week, the actual contributions began. We set up weekly calls with the maintainers, set up office hours (two calls per week) where anyone could drop in and ask their doubts to the maintainers and 1-on-1 calls with the mentors (one call every two weeks) for career advice.

Now, I had contributed to open source before so this wasn't the most challenging part for me, or that's what I thought! 
My first PR and I made a boo boo. I committed `.gitignore` and pushed. 

> The thing I absolutely love about the open source community or even the complete hacker community is that no one will judge you no matter how stupid the questions you ask or the things you do are. 


I did a search on how to remove one file from the PR but couldn't get the desired results as I had committed 2-3 times after I added `.gitignore` to my PR, **or let's just say my situation was a little more complicated**.

So I asked in the channel and my project's maintainer was kind enough to guide me step by step! 

This was my first learning!

Next, I wrote my first ever unit-test, that too on Facebook's open source project [Sapp](https://github.com/facebook/sapp) 🎉

While working on this PR I had to learn a whole lot of things since I was writing tests for it, I wanted to know at least a little more than basics.

I started with learning flask and SQLAlchemy, and since we were using `unittest` library (which comes with python), I read its docs.

After creating my PR I got to know that I can use `tempfile` to avoid manually creating the file and deleting after the test finishes, which lead me to learn about context managers in python since I was using nested `with` statements.

> While writing this article I am realising that this PR has a whole story to it. In case you are interested with the changes it had over the time you can check it here 😉
{% github https://github.com/facebook/sapp/pull/62 %}


After that, my last two PRs were for [Pysa playground](https://pyre-check.org/pysa-playground/) (Both for frontend and backend) for which I had to learn a little bit about Web-Sockets and how we can use them with flask.

And now, here I am writing my first "personal" blog thanks to MLH! 😛

### Takeaway

The goal of this article was not to boast about the things I learnt during MLH fellowship but to make you realise that I learned so much in just a few weeks! And this realisation is really really powerful!

Tell me, how long did it take you to learn your first language? 

I was very new to python if not completely new, but after MLH fellowship I am very well familiar with it's eco-system!

So what we need to do is to change the approach to learning. The reason I learned so much was to accomplish some task not just to know a new tech! And I strongly believe that if you have a task to accomplish or a goal to achieve you will learn 10x faster.

Don't make goals like "I want to learn android development to become an android developer". 
Instead, take small steps and make micro goals like "I want to learn to create bots so I can attend my online classes passively" 😅 or something like that.

And if you can't find such a goal, contribute to open source! It will provide you with so many things to learn that you couldn't even begin to imagine!