What is MLH Fellowship
If you haven't heard about MLH Fellowship Program yet, a brief introduction for you:
It is 3 months remote internship program introduced by a super cool organization called Major League Hacking in partnership with other organizations like GitHub, Facebook Developer Circles, etc.
During this internship, the students (called Fellows) are placed in different groups (called Pods) consisting of 10 fellows each which contribute to the opensource projects on GitHub. Each pod has a mentor (usually industry professionals) to guide and help them during the journey.
My Major League Hacking Experience
I had never contributed to open source projects before MLH Fellowship program (now I am a maintainer too). When I applied for the program, I thought that this program is going to be a push for me in the opensource world, but I was wrong. This internship is not just about pushing code to opensource, but it focuses on our overall development to help us in becoming industry-ready. We got fully focused guidance about the opportunities that are out there and how to grab them.
This program changed the way I used to look at the tech industry.
Contributing To Projects
I struggled a bit in starting weeks of the program to make contributions, but my pod members and mentors helped me out and I quickly opened up my first pull request. After opening up a couple of pull requests and working on a project for a few weeks my belief that I have to understand the whole codebase for making contributions vanished.
The thing is we don't have to understand the whole codebase, and this is actually how opensource projects work. People from different backgrounds work on different parts of the software as a team. You just have to work on your part and make sure it doesn't break anything.
Pick up an issue with a somewhat clear goal and start working on it, even if you don't understand how code works.
The maintainer of Pallets, Mr David Lord said this in his workshop during the fellowship.
One important thing: LEARN TO DO TEST DRIVEN DEVELOPMENT.
Things I got to do as an MLH Fellow
Besides from contributing to opensource projects, there are dozens of perks of being an MLH Fellow. I will list a few of them:
1. Our Basement
After joining the fellowship we were invited to a Discord group which was our main source of interaction with Mentors, MLH Staff, opensource Project Maintainers and other Fellows. Using discord as a source for communication was such a great idea. Instead of getting a feeling of "work", we always felt like some hackers hanging out with each other ♥️.
2. Hackathons (of course there were swags)
MLH hosted two great hackathons during the fellowship. In the first hackathon (Orientation hackathon), we were given a theme of making projects only by using opensource projects that we have to contribute to. The second hackathon was Halfway Hackathon in which we teamed up with different people across the fellowship and made crazy things.
You can check out all the projects and prizes on Devpost.
3. Workshops & Talks
There were daily talks and workshops on different exciting topics which you were allowed to choose and attend based on your interests. Being honest I had never seen such high-quality talks and workshops ever before Fellowship.
4. Hacker Hangouts
Sometimes fellowship people used to hop into voice channels to play games to know each other and to have some fun. Hacker Hangouts were our way of making connections with the fellowship people.
5. Pod Activities
Pod members also enjoyed their week with other pod members with different activities like teaching each other what we have learned, having group discussions on different topics and playing some online games.
6. Side Programs
Fellows from different pods formed special teams and hosted CTF competitions open all the fellows and mentors. I came to know about CTF in this fellowship program. People are crazy about these competitions.
Projects I Got to Work on During The Fellowship
There were mainly two projects that were assigned to my pod:
-
The Julia Language - A language that is designed to bring a change in scientific and technical computing.
The Julia Language
Julia is a high-level, high-performance dynamic language for technical computing. The main homepage for Julia can be found at julialang.org. This is the GitHub repository of Julia source code, including instructions for compiling and installing Julia, below.
Resources
- Homepage: https://julialang.org
- Binaries: https://julialang.org/downloads/
- Source code: https://github.com/JuliaLang/julia
- Documentation: https://docs.julialang.org
- Packages: https://julialang.org/packages/
- Discussion forum: https://discourse.julialang.org
- Slack: https://julialang.slack.com (get an invite from https://julialang.org/slack/)
- YouTube: https://www.youtube.com/user/JuliaLanguage
- Code coverage: https://coveralls.io/r/JuliaLang/julia
New developers may find the notes in CONTRIBUTING helpful to start contributing to the Julia codebase.
External Resources
Binary Installation
If you would rather not compile the latest Julia from source, platform-specific tarballs with pre-compiled binaries are also available for download. The downloads page also provides details on the different tiers of support for OS and platform combinations.
If everything works correctly, you will see a Julia banner and an interactive…
-
SciML - An umbrella project containing Machine Learning and Differential Equation libraries developed completely in Julia language.
SciML / SciMLBenchmarks.jl
Benchmarks for scientific machine learning (SciML) software, scientific AI, and (differential) equation solvers
SciMLBenchmarks.jl: Benchmarks for Scientific Machine Learning (SciML) and Equation Solvers
SciMLBenchmarks.jl holds webpages, pdfs, and notebooks showing the benchmarks for the SciML Scientific Machine Learning Software ecosystem, including:
- Benchmarks of equation solver implementations
- Speed and robustness comparisons of methods for parameter estimation / inverse problems
- Training universal differential equations (and subsets like neural ODEs)
- Training of physics-informed neural networks (PINNs)
- Surrogate comparisons, including radial basis functions, neural operators (DeepONets, Fourier Neural Operators), and more
The SciML Bench suite is made to be a comprehensive open source benchmark from the ground up, covering the methods of computational science and scientific computing all the way to AI for science.
Rules: Optimal, Fair, and Reproducible
These benchmarks are meant to represent good optimized coding style. Benchmarks are preferred to be run on the provided open benchmarking hardware for full reproducibility (though in some cases, such as with language barriers, this can be difficult)…
But since we were assigned a completely new language (and technology) that most of my pod members have never worked on before, we were allowed to make contributions to all the packages that are developed by the Julia Community and are aimed to make the language better.
After the Orientation Hackathon, I spent my week learning more about the language and its standards. I was quickly able to figure out that there is a lot of domain knowledge required specific to the packages to start making contributions in Julia.
I spent the next few days finding some packages to start making contributions. Finally, I found a project aimed at data visualization in Julia. The project was called Plots.jl. It is similar to the Matplotlib library in Python. I started with some good first issues at first and then eventually went for some serious ones.
JuliaPlots / Plots.jl
Powerful convenience for Julia visualizations and data analysis
Plots
This is the DOI for all Versions, please follow the link to get the DOI for a specific version.
Created by Tom Breloff (@tbreloff)
Maintained by the JuliaPlots members
Plots is a plotting API and toolset. My goals with the package are:
- Powerful. Do more with less. Complex visualizations become easy.
- Intuitive. Stop reading so much documentation. Commands should "just work".
- Concise. Less code means fewer mistakes and more efficient development/analysis.
- Flexible. Produce your favorite plots from your favorite package, but quicker and simpler.
- Consistent. Don't commit to one graphics package, use the same code everywhere.
- Lightweight. Very few dependencies.
- Smart. Attempts to figure out what you want it to do... not just what you tell it.
After a few weeks of contribution, one of my pod members invited me to start contributing to another library called CDSAPI.jl which was mainly focusing on building wrappers for the Climate Data Store.
JuliaClimate / CDSAPI.jl
Julia API to the Climate Data Store (a.k.a. CDS)
CDSAPI.jl
This package provides access to the Climate Data Store (a.k.a. CDS) service.
The CDS website provides a Show API request button at the bottom of the download tab of each dataset. This button generates the code to download the dataset with the Python cdsapi module We've designed this Julia package so that one could copy/paste the generated Python code with minimum modification in Julia.
Installation
Please install the package with Julia's package manager:
] add CDSAPI
Usage
Make sure your ~/.cdsapirc
file exists. Instructions on how to create the file for your user account can be found
here.
Suppose that the Show API request
button generated the following Python code:
#!/usr/bin/env python
import cdsapi
c = cdsapi.Client()
c.retrieve("insitu-glaciers-elevation-mass",
{
"variable": "all",
"product_type": "elevation_change",
"file_version": "20170405",
"format": "tgz"
},
"download.tar.gz")
You can obtain…
I and my pod member started working on the repo. We made a lot of contributions to the library and after a few weeks, we got an invitation from the Julia Climate Organization to become a maintainer for the project:
If you haven't worked on Julia Language before and you love to work on scientific stuff, I would highly recommend getting your hands over it.
Final Thoughts
I have developed more skills during these 3 months of MLH Fellowship than that I have done this entire year. I am so much grateful to Major League Hacking for creating this opportunity for us, Will Rusell for making this fellowship experience so smooth, my pod mentor Mr Rohan Almeida for guiding and helping us at each point, my pod friends for handling me during this fellowship and Jacob Herrington (@jacobherrington) for encouraging me to share my fellowship experience with everyone.
Congratulations To The Inaugural Class of MLH Fellowship! 🎉
Top comments (11)
Previous time I was one day late to fill form for MLH fellowship this time I have filled it at time😅 . I am second year IT student and I also didn't contributed to open source yet. So can you please tell me the on boarding process after filling the form means procedure what is afterwards it .
First of all, All the very best. I hope you may make it this time.
So, After the online application there were two interview rounds:
First Round: This was a super casual 10-minutes discussion in which the interviewer asked me the same questions that were asked in the application form. I am not sure, but I think the interviewer was checking that I am comfortable with speaking English or not, and also rechecking that I satisfy the requirements asked in the application form.
Second Round: This was a 15-minutes technical round in which they told us to explain a project which we are proud of. I choose Bookshelf Reader. At first, I explained to the interviewer what the project does and then I went on explaining the algorithm that detects the spines. Since I had used an external library to create the whole algorithm, I went on explaining how the library is performing any specific task internally when I am calling its API.
At the end of the interview, I asked the interviewer for some feedback and his response was "I liked the thing that you know the internals of the library that you are using in the project" (which means you know what you are doing).
I was on the waitlist first, but after 2 days I got the mail that I have been selected to the program.
In my experience, they want to see how passionate you are. If you are a self-taught learner and you can explain the things that you have learned to others then you are already doing great.
Do they call out everyone for the interview or they shortlist on the basis of application
Yes, they interview applicants based on their application.
Thanks for the shout out :)
Working on Julia seems like a really cool project that you can talk about in the future. I've never worked on a language before and would be really interested in that kind of work. Congrats on all of the stuff you've accomplished during the Fellowship program!
Thanks, Jacob. ❤️ 😇
Hi Khatri. Are you required to hop on video calls everyday throughout the fellowship? Or do the discussions stay in text chat rooms like Discord?
The standup and retrospective calls are important but for event calls, you can watch the recorded sessions if you don't feel comfortable in joining one (also, not all the sessions are recorded). You can have discussions in text chat rooms or over a call, as per team members' inclusive decision.
Thank you.
Hey I wanted to ask which track did you applied for in the MLH fellowship whether it was 1) Explorer 2) Open Source 3) Externship?
Some comments may only be visible to logged-in visitors. Sign in to view all comments.