My Journey as an MLH Fellow

lakshyakhatri

Lakshya Khatri

Posted on August 7, 2020

My Journey as an MLH Fellow

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

Alt Text

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)

Alt Text

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

Workshop & 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

Hacker Hangout Games

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

Alt Text
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

Alt Text

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:

  1. The Julia Language - A language that is designed to bring a change in scientific and technical computing.

    GitHub logo JuliaLang / julia

    The Julia Programming Language

    Documentation
    Continuous integration
    Code coverage

    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

    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…

  2. SciML - An umbrella project containing Machine Learning and Differential Equation libraries developed completely in Julia language.

    GitHub logo 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

    Join the chat at https://julialang.zulipchat.com #sciml-bridged Global Docs

    Build status

    ColPrac: Contributor's Guide on Collaborative Practices for Community Packages SciML Code Style

    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.

GitHub logo JuliaPlots / Plots.jl

Powerful convenience for Julia visualizations and data analysis

Plots

project chat Codecov Plots Downloads

DOI 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.

GitHub logo 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
Enter fullscreen mode Exit fullscreen mode

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")
Enter fullscreen mode Exit fullscreen mode

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:
Invitation

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! 🎉

💖 💪 🙅 🚩
lakshyakhatri
Lakshya Khatri

Posted on August 7, 2020

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

My Journey as an MLH Fellow
mlhgrad My Journey as an MLH Fellow

August 7, 2020