MY CORE VALUES

Hello Everyone! Thanks for dropping by! 😄

I am Diksha Gupta and I hail from New Delhi, India. I am a graduated student and pursued my degree in Electronics and Communication Engineering (ECE) from Delhi Technological University (DTU). I’ve always had a keen interest in academics and been among the top 10% students of my class throughout my academic career. I had developed a knack for Computer Science at an early age, and have taken various initiatives throughout my academic life to pursue the same.

My core values are:

  • Curiosity: I love to learn and explore new things. My hunger for gaining knowledge has kept me motivated to learn about new cultures, languages, and technology. My ability to learn the right and unlearn the wrong has aided my growth as an individual and I have become better at accepting and welcoming changes.
  • Compassion: I love to help the people around me and help them in solving their problems. This quality of mine helped me to come out of my introverted shell and make more friends and lifelong connections.
  • Courage: I have always believed in being bold and courageous. I am never afraid to speak my mind, and I welcome criticism and correct myself whenever I am wrong. After all, accepting your mistakes and improving yourself is a courageous deed!

Getting selected as an Outreachy intern has been the most amazing thing that has ever happened to me. I got to know about open source programs in October last year. I decided to apply for the Outreachy May 2021 internship tenure, and I worked very diligently during the contribution period, but wasn’t expecting to get selected as an intern on the first go! Contributing to the projects during the contribution period was so much fun, and it gave me the chance to get a hands-on experience with some tools and technologies that I didn’t explore before. The next three months of the internship are going to be a great learning experience, and I’m really looking forward to it!

OUTREACHY – MY EXPERIENCE AND MY PROJECT

Hello Everyone!!

I’m an Outreachy intern with the OCaml Community and since only 2 weeks are left for the internship to end, I would like to share my experience as an Outreachy intern and the project on which I worked on during the internship.

What is OCaml?

OCaml is a free and open-source software project managed and principally maintained by the INRIA (French Institute for Research in Computer Science and Automation). Mostly functional programmers or people that enjoy functional programming are a part of the community. It is an industrial-strength programming language supporting functional, imperative, and object-oriented styles. Before the program, I had a rough idea about the language, I mostly learned it side by side with the project. My Mentor was extremely supportive and constantly encouraged me to ask questions.

My Project

During my internship, I’ve worked on the project “watch.ocaml.org”, which is an instance of the open source peertube software. This can import videos to self-host them on OCaml.org infrastructure, and also serve them using p2p techniques to reduce the need for a big central streaming setup.

Project Milestones

  • Importing OCaml Videos – First task was to import as many videos online as possible on the peertube instance, watch.ocaml.org. This first milestone will see around 50-100 videos (or more!) imported with reasonable metadata.
  • Metadata manipulation to curate content – Once there are a number of videos in place, we need to write some scripts to help us manage that metadata. This will involve using the Peertube REST API to write some OCaml code that will output the videos on watch.ocaml.org in Yaml format that can be interpreted by the OCaml website generator. 

My Project Progress

WEEK 1-3

  • Explored Rescript and Peertube open source software.
  • Added 50+ videos related to OCaml workshops, tutorials on watch.ocaml.org from the sites like YouTube, Vimeo, Twitch etc.
  • Gone through the site v3.ocaml.org.
  • Went through some OCaml language tutorials.

WEEK 4-7

  • Learned how to set up a new dune project using spin, which is a nice, beginner-friendly approach to set up a bin (executable) project. Also, went through some tutorials on setting up and navigating OCaml projects. 
  • Explored the Peertube APIs and started working on querying the data using peertube APIs.
  • Went through the Curly module which is an HTTP client library, to get the JSON data from peertube instance using REST API.

WEEK 8-9

  • Worked on parsing and manipulating the JSON data that we are getting through peertube REST API, using Ezjsonm Module. Extracted the values for the videos title, description, year of publish, language, category, and embedded path from the JSON data.

WEEK 10-11

  • Had a look around OCaml ood repository, got all the dependencies installed and build the repository using make preview, make deps, etc commands.
  • Copied watch.ocaml.org code to ood (converted curly module into Piaf module)
  • Added a new program to ood-cli which will use the program to run the command, build the yaml, and output it to stdout.
  • Added necessary code to ood-gen to produce the “static module” for the watch data and linter code that checks watch.yml is correct.
  • Final Output  – 

My Experience

I’m grateful that I got an opportunity to work with the great minds at OCaml Community. The learnings that I have gained during this internship is precious and helpful for the lifetime.

I was little bit familiar with the OCaml language before the internship, but I have come a long way now!

I did get stuck for a while on certain things but seeing your code run after hours of struggle is equivalent to being on cloud nine. And getting positive feedback and appreciation from the mentors made me more excited about the upcoming challenges. 

Follow My Blog

EVERYBODY STRUGGLES!!

Life’s struggles are necessary for growth

What new terms or concepts have you learned in the past month?

It’s almost four weeks of my Outreachy Internship period and I’m having an amazing experience with my project so far. However, learning and experiencing new things invites a lot of challenges. I struggle sometimes too.

Learning new things daily keeps me excited about the work. But getting to see my name under the contributor’s list is definitely at the top. I do get stuck for a while on certain things but seeing your code run after hours of struggle is equivalent to being on cloud nine. And getting positive feedback and appreciation from the mentor makes me more excited about the upcoming challenges.

To be very honest every other thing is new for me on the project. I knew very little Ocaml before starting the project. I have come a long way now.

Some of the important terms and concepts I came by are as follows:

Modules

Almost every piece of code in Ocaml is wrapped into a module. When we write a program let’s say using two files amodule.ml and bmodule.ml, each of these files automatically defines a module named Amodule and a module named Bmodule that provide whatever you put into the files. For accessing a module we use `Amodule.hello ()`, for example, List.iter designates the iter function from the List module. The corresponding module interface or signature derives from a .mli file. It contains a list of values with their type.

Refactoring code

Refactoring the code is done majorly so that the code is more readable and cleaner than before. I would like to put up an example to explain this one. So, the code used val_env, met_env, and par_env, all three together multiple times. Hence to refactor it we introduced a new variable class_env.

let class_env = {val_env; met_env; par_env} in

And now when I wanna use just val_env, I will be able to access it as class_env.val_env or I can write

let val_env = class_env.val_env in

By doing this the three variables can be grouped most of the time and can be seen as a single variable class_env. The variables val_env, met_env, par_env are separated when only one of them is needed.

It’s ok to ask questions, never be afraid of asking for directions. Don’t be embarrassed or fake knowledge to look cool. Be brave and curious. 🙂