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!
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
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.
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 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.
arpancodes / protectsql
A static analyzer to keep your flask app free of SQL Injection.
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 ๐
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 ๐
Add tests for `warning_messages.py` file #62
arpancodes posted onPre-submission checklist
- [x] I've ran the following linters locally and fixed lint errors related to the files I modified in this PR
- [x]
black .
- [x]
usort format .
- [x]
flake8
- [x] I've installed dev dependencies
pip install -r requirements-dev.txt
and completed the following:
- [x] I've ran tests with
./scripts/run-tests.sh
and made sure all tests are passingSummary
Added tests for the file
/sapp/warning_messages.py
Test Plan
Relevant issue: https://github.com/MLH-Fellowship/sapp/issues/11
After that, my last two PRs were for 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!
Top comments (6)
Congrats!
Thanks! ๐
keep the blogs coming ๐ฅ
Sure!
This is super cool! Indeed the entire experience was so special ๐
Yesss ๐๐