<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rachita Saha</title>
    <description>The latest articles on DEV Community by Rachita Saha (@rachita_saha).</description>
    <link>https://dev.to/rachita_saha</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F506573%2Fc216d244-0377-409f-b681-0b78259e74cc.jpeg</url>
      <title>DEV Community: Rachita Saha</title>
      <link>https://dev.to/rachita_saha</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rachita_saha"/>
    <language>en</language>
    <item>
      <title>My first real-world technology project with UNICEF</title>
      <dc:creator>Rachita Saha</dc:creator>
      <pubDate>Mon, 23 Aug 2021 17:38:12 +0000</pubDate>
      <link>https://dev.to/rachita_saha/my-first-real-world-technology-project-with-unicef-3jof</link>
      <guid>https://dev.to/rachita_saha/my-first-real-world-technology-project-with-unicef-3jof</guid>
      <description>&lt;p&gt;As a sophomore in computer science engineering, I often wondered what &lt;em&gt;“real-world”&lt;/em&gt; technology projects looked like, how much experience and knowledge one would require to work on such projects, and what my first internship would entail. Now that I have been working with UNICEF for two months on an open-source web development project, I would like to demystify what real-world technology projects look like for my fellow learners.&lt;/p&gt;

&lt;p&gt;In this article, I will  (1) present a breakdown of my internship journey so far; (2) highlight the types of projects that I have worked on, (3) share the resources I used when I needed help, and (4) provide you with some pointers on what to expect from your first technical internship.&lt;/p&gt;

&lt;h3&gt;
  
  
  📝 Project Description
&lt;/h3&gt;

&lt;p&gt;I was tasked with developing the Eligibility Form, a web-based form consisting of nine questions to help users quickly determine if their digital solution can be nominated as a Digital Public Good (DPG). If the user is eligible, they are directed to the submission form where they can fill out additional information. If the user is not eligible, the form will provide them with pointers on how they could improve their solution in order to be eligible. &lt;/p&gt;

&lt;p&gt;The implementation behind this was conceived in two main phases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Developing a standalone Minimum Viable Product (MVP) using React that provides the following functionality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An introductory page, one page for each of the indicators, a summary page at the end&lt;/li&gt;
&lt;li&gt;Record Yes/No answers for each of the indicators&lt;/li&gt;
&lt;li&gt;Provide resources/FAQs/additional information for each of the indicators&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integrating the web app into the existing public website, &lt;a href="https://digitalpublicgoods.net"&gt;digitalpublicgoods.net&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anyone with some basic knowledge of web development, Git, and GitHub may find this task reasonably easy. So there you go; real-world projects are not always highly complex or time-consuming. In fact, you’re likely to spend more time understanding the requirements and objectives, researching different ways to achieve the task, or deciding on the most efficient way, than the coding part itself. &lt;/p&gt;

&lt;p&gt;Now let me give you a breakdown of how I went about working on this project.&lt;/p&gt;

&lt;h3&gt;
  
  
  👩‍💻  Developing the MVP
&lt;/h3&gt;

&lt;p&gt;During the first week, I spent a significant amount of time understanding how users might interact with this application and researching best practices on building such forms. There was an existing wireframe demonstrating how the form was expected to look, but I thought about how I could further improve the user experience. &lt;/p&gt;

&lt;p&gt;I read some blogs about creating forms and quizzes using React. I set up the basic structure of the form, keeping the data for the questions, answers, and FAQs separate from the logic and other components so that the content could be easily updated. First, I developed the styling components of the page and then added the functionality to navigate forward and backward through the questions. Then, in the next few days, I coded the logic to store all the responses and display the results at the end. At this point, I had completed the basic functionality and styling of the form within the first week.&lt;/p&gt;

&lt;h3&gt;
  
  
  💻 Integrating into the existing website
&lt;/h3&gt;

&lt;p&gt;During the second week, my task was to integrate the app into the existing website. Since the website was created using four interconnected repositories, it was a little difficult to understand how everything worked together. I invested some time to understand the code thoroughly and asked my mentor for support when I was stuck. &lt;/p&gt;

&lt;p&gt;It took me almost an entire day to set up and run the code on my local machine. The next step was to figure out where the new code had to be added. The codebase seemed intimidating at first, but the key for me was to read it as many times as possible. I realized that after each reading, it became a little more clear. So after going through it quite a few times, I figured out how the existing code was working after which the coding part was relatively easy to work on. Within a week, I updated the colors and typography to match the style of the website.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧠 Brainstorming additional features to improve user experience
&lt;/h3&gt;

&lt;p&gt;The next step was to brainstorm ways to improve the user flow and experience. In the next few weeks, I added some additional features to the app such as a progress bar and keyboard shortcuts to help navigate faster and increase accessibility. I also tried to make the form more responsive.&lt;/p&gt;

&lt;p&gt;One of the relatively challenging tasks was to pass the data filled by the users in the eligibility form to the submission form so that any questions that had already been answered could be prefilled so that users would not have to answer them again. This required me to save the responses in a local database in the browser so that they could be accessed by the submission form. I was not very familiar with these concepts, so this required me to read up and learn more about cookies and databases.&lt;/p&gt;

&lt;h3&gt;
  
  
  👨‍👩‍👧‍👦 Improving based on user feedback and documentation
&lt;/h3&gt;

&lt;p&gt;After the first version of the form was completed, I requested members of the communications team to test the form and provide their feedback. This was followed by a number of improvements in the content as well as user experience, which included adding an introductory page to help users understand the purpose of the form, and increasing the information density by placing all the components on a card. &lt;/p&gt;

&lt;p&gt;After the suggested changes were in place, I requested the team for the second round of feedback. The major change after this round was to update the user task flow for different types of users/audience members who could end up using the app.&lt;/p&gt;

&lt;p&gt;Another important task was to add a README file to the repository so that future contributors can easily navigate the codebase.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✨ Conclusion
&lt;/h3&gt;

&lt;p&gt;This was a peek into my life as an Outreachy intern at the UNICEF Office of Innovation. Remote open source internships generally provide a lot of flexibility in terms of working hours, so you’re good as long as you get the work done in time. The responsibilities, tasks, and schedules can vary based on the role and the organization, but every organization will have a system in place to help you out whenever you need support. Don’t hesitate to ask questions and use this opportunity to get to know as many people in the organization as you can — every person will have something interesting to share with you!&lt;/p&gt;

&lt;h3&gt;
  
  
  🌐 Links to the issues and my contributions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/unicef/publicgoods-roadmap/issues/31"&gt;Eligibility Form Github epic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rachita19082/eligibility-form"&gt;MVP for Eligibility Form&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/unicef/publicgoods-scripts/pull/18"&gt;Integration of eligibility form into existing website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/unicef/publicgoods-scripts/pulls?q=is%3Apr+assignee%3Arachita19082"&gt;Link to other contributions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://digitalpublicgoods.net/eligibility/"&gt;Link to the final product&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope this blog was useful to you in some way. If you have any questions related to my internship, feel free to drop a comment below. &lt;/p&gt;

&lt;p&gt;Best of luck and happy coding! 😃&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to start your open source journey with UNICEF?</title>
      <dc:creator>Rachita Saha</dc:creator>
      <pubDate>Thu, 22 Jul 2021 16:31:58 +0000</pubDate>
      <link>https://dev.to/rachita_saha/how-to-start-your-open-source-journey-with-unicef-2hd</link>
      <guid>https://dev.to/rachita_saha/how-to-start-your-open-source-journey-with-unicef-2hd</guid>
      <description>&lt;p&gt;If you are looking for ways to start your open source journey and would like to use your technical skills to contribute towards achieving sustainable development, here’s an article you might find useful.&lt;/p&gt;

&lt;p&gt;All you need to contribute to UNICEF’s open source projects are working knowledge of Git, GitHub, web development, and enough determination to make that first pull request! The feeling of fulfillment you will receive when the first PR gets merged will keep you motivated to continue learning and contributing.&lt;/p&gt;

&lt;h2&gt;
  
  
  💻 What are Digital Public Goods?
&lt;/h2&gt;

&lt;p&gt;In alignment with the UN Secretary-General’s 2020 &lt;a href="https://www.un.org/en/content/digital-cooperation-roadmap/"&gt;Roadmap for Digital Cooperation&lt;/a&gt;, Digital Public Goods (DPGs) are defined as &lt;em&gt;“open source software, open data, open AI models, open standards, and open content that adhere to privacy and other applicable best practices, do no harm and are of high relevance for attaining the UN’s 2030 Sustainable Development Goals (SDGs)”.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Many types of digital technologies, data, and content – from open data to apps, visualization tools to educational curricula – could accelerate the achievement of the SDGs. However, it is only if they are &lt;strong&gt;freely and openly available, with minimal restrictions on how they can be distributed, adapted, and reused&lt;/strong&gt; that we can think of them as “digital public goods”.&lt;/p&gt;

&lt;h2&gt;
  
  
  🏢 What is the Digital Public Goods Alliance?
&lt;/h2&gt;

&lt;p&gt;UNICEF along with the Governments of Norway and Sierra Leone, and the India-based think tank iSPIRT have jointly established the &lt;a href="https://digitalpublicgoods.net/who-we-are/"&gt;Digital Public Goods Alliance (DPGA)&lt;/a&gt;, a multi-stakeholder initiative to accelerate the attainment of the SDGs in low- and middle-income countries by facilitating the discovery, development, use of, and investment in digital public goods. The DPGA is an effort to convene a network of partners from different sectors that will contribute to the identification, support, scale-up, and use of software, data, and algorithms that can advance humanity. &lt;/p&gt;

&lt;h2&gt;
  
  
  👩‍💻 How can you contribute?
&lt;/h2&gt;

&lt;p&gt;There are a few projects of the DPGA that you can contribute to, but instead of jumping straight into the code base, I would recommend the following approach to best understand the goals of the DPGA and make meaningful contributions.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/unicef/publicgoods-candidates/issues/66"&gt;Nominate a DPG&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This process involves identifying open source solutions that &lt;br&gt;
contribute to an equitable world and adhere to the &lt;a href="https://github.com/DPGAlliance/DPGStandard/blob/master/standard.md"&gt;DPG Standard&lt;/a&gt;. The &lt;a href="https://github.com/unicef/publicgoods-candidates"&gt;unicef/publicgoods-candidates&lt;/a&gt; repository is used to manage the process of adding nominees for consideration as Digital Global Public Goods. &lt;/p&gt;

&lt;p&gt;While you can easily make a contribution through the &lt;a href="https://digitalpublicgoods.net/public-goods/"&gt;submission form&lt;/a&gt;, I would strongly suggest opening a pull request, making sure it passes the CI build, and getting it merged. The instructions for nominating DPGs through both methods are mentioned very clearly in the &lt;a href="https://github.com/unicef/publicgoods-candidates/blob/master/CONTRIBUTING.md"&gt;contribution guidelines&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Go ahead and make that first contribution!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/unicef/publicgoods-candidates/issues/178"&gt;Validate DPG submissions&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;You can participate by reviewing open source projects against the &lt;a href="https://digitalpublicgoods.net/standard/"&gt;Digital Public Goods Standard&lt;/a&gt; with the ultimate goal of determining if a project qualifies as a DPG. &lt;/p&gt;

&lt;p&gt;This community sourcing exercise will give you the opportunity to delve into some of the largest up-and-coming open source projects, understand their licenses and documentation, and how they’re designing for best practices, standards, privacy, and more. &lt;/p&gt;

&lt;p&gt;By participating, you’ll get a better understanding of open &lt;br&gt;
projects that are making a difference in the world, particularly those that are advancing practical solutions to help achieve the SDGs. You will also join a growing number of innovators working on Technology for Development (T4D). &lt;/p&gt;

&lt;h3&gt;
  
  
  Solve issues in the various repositories
&lt;/h3&gt;

&lt;p&gt;The next step is to take a look at the various issues listed on UNICEF’s GitHub repositories. When you find an issue that interests you, drop a comment asking to be assigned to it. If you don’t understand the issue entirely, ask for help through comments. Below is a list of the various UNICEF repositories &lt;br&gt;
you can contribute to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/unicef/publicgoods-candidates"&gt;https://github.com/unicef/publicgoods-candidates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/unicef/publicgoods-scripts"&gt;https://github.com/unicef/publicgoods-scripts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/unicef/publicgoods-wordpress"&gt;https://github.com/unicef/publicgoods-wordpress&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lacabra/submission-digitalpublicgoods"&gt;https://github.com/lacabra/submission-digitalpublicgoods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lacabra/validate-digitalpublicgoods"&gt;https://github.com/lacabra/validate-digitalpublicgoods&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before diving into the solutions, I would strongly recommend you to go through the documentation thoroughly and set up the project on your local machine. Then, move to the &lt;code&gt;Issues&lt;/code&gt; tab on any repository, find an issue with the tag &lt;code&gt;good first issue&lt;/code&gt; and try solving it. If you don’t find any issues that interest you, you can create a new one! You just need to take a look at the code and try to identify bugs or make suggestions to improve the content, design, documentation, etc. &lt;/p&gt;

&lt;p&gt;The large codebase might appear intimidating at first, but it is not as hard as it appears. I was a beginner too when I started contributing, and I understand that it takes some effort to navigate through it all, but the satisfaction of seeing your changes merged into the repository, ultimately contributing towards the good of the public, is absolutely worth the effort.&lt;/p&gt;

&lt;h2&gt;
  
  
  📝 Conclusion
&lt;/h2&gt;

&lt;p&gt;Open source represents an opportunity to fundamentally alter power balances in international development. UNICEF aims to harness that power through the cooperation of its many contributors, and this is your chance to be one! Being an open source contributor was one of the best learning experiences for me, and I encourage everyone to give it a try. &lt;/p&gt;

&lt;p&gt;I hope this blog helped you in some way. If you have any other questions related to the process, feel free to drop a comment below. &lt;/p&gt;

&lt;p&gt;Best of luck and happy coding! 😃&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to configure Continuous Integration through Github Actions?</title>
      <dc:creator>Rachita Saha</dc:creator>
      <pubDate>Tue, 22 Jun 2021 18:15:13 +0000</pubDate>
      <link>https://dev.to/rachita_saha/how-to-configure-continuous-integration-through-github-actions-459o</link>
      <guid>https://dev.to/rachita_saha/how-to-configure-continuous-integration-through-github-actions-459o</guid>
      <description>&lt;p&gt;If you are new to Github or the open-source community, you will likely be unfamiliar with most of the terms mentioned in the title of this article. Such phrases appeared highly intimidating to me when navigating through making my first contributions to open source projects. However, let me assure you that it is not as daunting as it appears. In this article, I will be breaking down configuring Node CI through Github Actions and giving some tips on how to go about navigating GitHub issues that seem complicated at first.&lt;/p&gt;

&lt;p&gt;Let’s start by understanding the meanings of the key terms.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔗 What is Continuous Integration (CI)?
&lt;/h3&gt;

&lt;p&gt;In most large projects, primarily open source, several developers and contributors are working on building different features and resolving separate issues simultaneously. Even though the individual codes may be working fine separately, they can often introduce conflicts when put together in the project and cause the combined code to break. To avoid such situations, the practice of &lt;em&gt;Continuous Integration (CI)&lt;/em&gt; came into being where developers integrate code into a shared repository frequently, preferably several times a day. An automated build and automated tests can then verify each integration. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Continuous Integration doesn’t get rid of bugs, but it does make them dramatically easier to find and remove.”&lt;/em&gt; - &lt;a href="https://www.martinfowler.com/articles/continuousIntegration.html#:~:text=Continuous%20Integrations%20doesn't%20get,t%20have%20far%20to%20look."&gt;Martin Fowler, Chief Scientist, ThoughtWorks&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;One of the key benefits of regularly integrating code is that they allow you to detect errors quickly and locate them more easily. As each change introduced is typically small, pinpointing the specific change that introduced a defect can be done promptly.&lt;/p&gt;



&lt;h3&gt;
  
  
  📑 What are GitHub Actions?
&lt;/h3&gt;

&lt;p&gt;When a contributor makes a pull request, there are several organizational tasks that the maintainers of the repository need to perform. These include reviewing the pull request, running some tests, checking if the changes are consistent with the code style of the repo, etc. This is an example of a software development workflow. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Workflows are made up of one or more jobs and can be scheduled or triggered by an event, in this case, making the pull request.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As a project grows bigger and accumulates more contributors, issues, and pull requests, it requires more organizational effort to maintain it. Therefore, the maintainers naturally want to automate most of these tasks, which is possible through GitHub Actions. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;GitHub Actions helps you define a set of actions that will be executed automatically in response to events occurring in or to your repository.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  💻 Getting started with GitHub Actions
&lt;/h3&gt;

&lt;p&gt;Every GitHub repository has an &lt;code&gt;Actions&lt;/code&gt; tab which is indicated below. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0aAymYmQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/04r76weamrdus58tfje6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0aAymYmQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/04r76weamrdus58tfje6.png" alt="Actions Tab"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you navigate to the &lt;code&gt;Actions&lt;/code&gt; tab, you will see several workflow templates. Typically, there are four categories which are shown below. You can select the suggested workflow or scroll down to Continuous Integration workflows to pick one based on the tech stack used in the project. &lt;/p&gt;

&lt;p&gt;Once you find a suitable template, click on &lt;code&gt;Set up this workflow&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cqxiOenR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4ff9zoefaabva8qjn7uq.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cqxiOenR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4ff9zoefaabva8qjn7uq.gif" alt="Workflow Templates"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👩‍💻 Setting up the workflow
&lt;/h3&gt;

&lt;p&gt;On selecting a template, a .yml file will be created in the /.github/workflows directory of your code repository. Every GitHub action requires a .yml (YAML Ain’t Markup Language) file. YAML is a human-readable data serialization language commonly used for &lt;a href="https://en.wikipedia.org/wiki/Configuration_file"&gt;configuration files&lt;/a&gt; and applications where data is stored or transmitted.&lt;/p&gt;

&lt;p&gt;Now you can customize the workflow according to your requirements.&lt;/p&gt;

&lt;p&gt;Let’s take the example of a Node project where we want to automate the execution of the following steps every time a pull request is made:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install node dependencies&lt;/li&gt;
&lt;li&gt;Run linter to analyze the code for potential errors&lt;/li&gt;
&lt;li&gt;Ensure that changes are consistent with the code style of the repo &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our .yml file should look something like this. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mnrAJf6g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6p8zz5xdmkpgmfvs1hsa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mnrAJf6g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6p8zz5xdmkpgmfvs1hsa.png" alt=".yml file"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s try to understand the contents of this file step by step.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Node&lt;/span&gt; &lt;span class="nx"&gt;CI&lt;/span&gt;

&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="nx"&gt;pull_request&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

&lt;span class="nx"&gt;jobs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="nx"&gt;build&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
     &lt;span class="nx"&gt;runs&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ubuntu&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;latest&lt;/span&gt;
     &lt;span class="nx"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
       &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;actions&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;checkout&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;v2&lt;/span&gt;
       &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Install&lt;/span&gt; &lt;span class="nx"&gt;dependencies&lt;/span&gt;
         &lt;span class="nx"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt;
       &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Linter&lt;/span&gt;
         &lt;span class="nx"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="nx"&gt;lint&lt;/span&gt;
       &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Prettier&lt;/span&gt; &lt;span class="nx"&gt;Format&lt;/span&gt;
         &lt;span class="nx"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="nx"&gt;format&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;name [optional] -&lt;/strong&gt; used to describe what the workflow is doing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;on -&lt;/strong&gt; lists the events which trigger the workflow. In this case, the actions are triggered when someone pushes code directly to the repository or when a pull request is made. Here is a &lt;a href="https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows"&gt;list of all events&lt;/a&gt; which can trigger workflows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;jobs -&lt;/strong&gt; this section is used to define the actions that will be executed in response to the aforementioned events. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There can be multiple sequences of tasks nested under jobs. Each sequence is defined by a name, in this case, it is &lt;em&gt;"build"&lt;/em&gt;. This name can be arbitrary, just like the name of the workflow. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;runs-on -&lt;/strong&gt; specifies which VM the job should run on. We run this one on Ubuntu but you can also choose Windows or Mac-OS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;steps -&lt;/strong&gt; defines a sequence of instructions that build and test our code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;uses: actions/checkout@v2 -&lt;/strong&gt; This line brings our source code into the virtual machine using an &lt;a href="https://github.com/actions/checkout"&gt;officially maintained action called checkout&lt;/a&gt;. This lets you run commands on the code similar to how you test code from the command line when working on the directory in your local machine.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;uses&lt;/strong&gt; keyword allows you to use any predefined set of actions&lt;/li&gt;
&lt;li&gt;Each step requires a &lt;strong&gt;name&lt;/strong&gt; and the &lt;strong&gt;run&lt;/strong&gt; keyword to define the command to be executed at that step&lt;/li&gt;
&lt;li&gt;In this case, we have defined three steps to install dependencies, run linter and enforce the code style. You can customize the steps to automate the commands to test your code, just assign a name and type the command.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’re done! Now every time you push to the project, the commands will fire off automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Testing the workflow
&lt;/h3&gt;

&lt;p&gt;Go ahead and make a pull request on the repository to test how GitHub Actions work. You will see something like this, which indicates whether the newly pushed code passes all the checks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9OQcgFJQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yuyb3vlm028x41gblk4g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9OQcgFJQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yuyb3vlm028x41gblk4g.png" alt="Fails CI tests"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If the checks fail, you can click the &lt;code&gt;Details&lt;/code&gt; button. You will be able to see what exactly went wrong and at which point, as shown below. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--o6bLGUQ2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rntrw8cmh1xcqt0n3p36.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--o6bLGUQ2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rntrw8cmh1xcqt0n3p36.gif" alt="Details CI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you can quickly fix the problem and push the updated code. The green tick mark indicates that your code passes the tests set in the CI. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eX88Dyxs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hbeqpqsm053t210nchbb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eX88Dyxs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hbeqpqsm053t210nchbb.png" alt="Passes CI tests"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📝 Conclusion
&lt;/h3&gt;

&lt;p&gt;I hope that the topic of this article does not seem too intimidating anymore. You may come across issues way more complex than this, but the strategy is simple. If you don’t understand what a particular issue requires you to do, &lt;strong&gt;research each term and understand its meaning&lt;/strong&gt;. Once you know what is needed a little better but don’t know how to resolve it, &lt;strong&gt;try finding blogs, videos, or tutorials related to the task&lt;/strong&gt;. If something is still unclear, do not hesitate to &lt;strong&gt;ask the community for help&lt;/strong&gt; by dropping a comment. More often than not, someone is sure to revert to your query.&lt;/p&gt;

&lt;p&gt;I hope this blog helped you in some way. If you have any other questions, feel free to drop a comment below. &lt;/p&gt;

&lt;p&gt;Best of luck and happy coding! 😃&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/actions/learn-github-actions/introduction-to-github-actions"&gt;https://docs.github.com/en/actions/learn-github-actions/introduction-to-github-actions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=R8_veQiYBjI"&gt;https://www.youtube.com/watch?v=R8_veQiYBjI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=eB0nUzAI7M8"&gt;https://www.youtube.com/watch?v=eB0nUzAI7M8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/waylonwalker/what-are-github-actions-1lhh"&gt;https://dev.to/waylonwalker/what-are-github-actions-1lhh&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>github</category>
      <category>opensource</category>
      <category>devops</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>The beginning of my open source journey with Outreachy
</title>
      <dc:creator>Rachita Saha</dc:creator>
      <pubDate>Thu, 03 Jun 2021 15:01:41 +0000</pubDate>
      <link>https://dev.to/rachita_saha/the-beginning-of-my-open-source-journey-with-outreachy-34g3</link>
      <guid>https://dev.to/rachita_saha/the-beginning-of-my-open-source-journey-with-outreachy-34g3</guid>
      <description>&lt;p&gt;Starting out your journey in the field of tech can be extremely daunting, especially if you belong to a community which does not have adequate representation in this field. If you resonate with this issue and are looking for an opportunity to kickstart your career in the technology industry, here’s an article you might find helpful.&lt;/p&gt;

&lt;p&gt;Before we delve further into the topic, let me introduce myself. I’m Rachita, a sophomore pursuing CSE in Delhi, India. This summer, I've been selected as an Outreachy intern to work with &lt;em&gt;UNICEF Office of Innovation&lt;/em&gt;. This opportunity is somewhat of a dream come true for me, and believe me, no matter how little experience you have in tech, with enough grit and determination, you too can grab an opportunity like this.&lt;/p&gt;

&lt;p&gt;I’d first like to highlight a few principles I live by which played a crucial role in helping me secure this internship and made the learning experience extremely fulfilling and enjoyable.&lt;/p&gt;

&lt;p&gt;The first and foremost principle is to take up work that I find meaningful and understand the purpose of. The definition of &lt;strong&gt;meaningful work&lt;/strong&gt; can vary from person to person. I am more inspired and motivated to work on projects which are about building solutions to problems faced by the masses. Since my goals align with those of UNICEF, I became deeply passionate about contributing to this community. The next core value is &lt;strong&gt;determination&lt;/strong&gt;, which I believe is vital for success in any field. Every profession comes with its own challenges, but if you are determined enough, you will be able to power through them. The final virtue is &lt;strong&gt;growth&lt;/strong&gt;, and I manifest it in my life by trying to learn something new everyday. I try to be consistent in working towards my goals and make an effort, no matter how small, to improve myself everyday.&lt;/p&gt;

&lt;p&gt;Now let’s get down to business.&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiww2hi345oylr350zmsg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiww2hi345oylr350zmsg.png" alt="Outreachy"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Outreachy?
&lt;/h2&gt;

&lt;p&gt;Outreachy is a paid, remote internship program for people from groups underrepresented in tech. Anyone from around the world can apply to it and get the opportunity to secure internships with free software and open source communities. Interns are paid a stipend of $6,000 USD for the three month internship.&lt;/p&gt;

&lt;p&gt;Most Outreachy internship projects require some basic programming knowledge but they also include user experience, documentation, illustration, graphical design, or data science. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why apply to Outreachy?
&lt;/h2&gt;

&lt;p&gt;Outreachy provides a great way to get &lt;strong&gt;real-world software development experience&lt;/strong&gt;. It is especially helpful for beginners as the open source community is extremely welcoming and encouraging. You will get the opportunity to gain exposure, test your skills, gain knowledge, and bond with the community in order to produce quality code that helps people around the world. Getting your code reviewed by experienced programmers will help you improve your skills tremendously. &lt;/p&gt;

&lt;p&gt;It is an amazing opportunity to kickstart your career as interns often find employment after their internship with Outreachy sponsors or in jobs that use the skills they learned during their internship.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I got involved with Outreachy?
&lt;/h2&gt;

&lt;p&gt;My journey as a contributor in open source began in 2020 with &lt;em&gt;Hacktoberfest&lt;/em&gt;, a month-long celebration of open source software run by DigitalOcean in partnership with GitHub. During the entire month of October, you have to make at least five contributions to any open source projects. I was a complete beginner but I was determined to complete the challenge. Contributing to open source gave me an opportunity to step out of my comfort zone, get experience of working in the real world, make mistakes and learn from the community. &lt;/p&gt;

&lt;p&gt;A few months later, when I found out about Outreachy, I jumped at the opportunity to contribute more to open source. I started out by reading the experiences of past Outreachy interns and talking to my seniors who had participated in the program. I will break down the application process and my tips for applying in the next section.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to get the most out of your Outreachy application process?
&lt;/h2&gt;

&lt;p&gt;Here is a simple description of the application procedure and my tips to make the best out of this opportunity.&lt;/p&gt;

&lt;h3&gt;
  
  
  📝 Initial Application
&lt;/h3&gt;

&lt;p&gt;The initial application majorly requires your to answer a few essay questions about how you are underrepresented and what kind of systematic bias or discrimination have you faced in the field of technology. Be sure to be absolutely authentic and list down as many personal experiences and anecdotes as possible. I will not delve too deep into this since the &lt;a href="https://www.outreachy.org/docs/applicant/#initial-application" rel="noopener noreferrer"&gt;essay tips&lt;/a&gt; are very well documented on the Outreachy website. If you stick to these tips, you’re sure to qualify this stage.&lt;/p&gt;

&lt;h3&gt;
  
  
  👩‍💻 Contribution Period
&lt;/h3&gt;

&lt;p&gt;This is the most important part of the application process. I spent a considerable amount of time picking out projects that I wished to contribute to before the contribution period even started. My strategy was to first pick out the projects which required skills that I had, and then narrow down to the projects which interested me most. Once that was done, I joined the communication channels and introduced myself to the community. &lt;/p&gt;

&lt;p&gt;The next challenge is to &lt;strong&gt;make your first contribution&lt;/strong&gt; to the project, and the sooner you start, the better. Different organisations will have different guidelines on how to make contributions, be sure to read them carefully and find a suitable issue. The thrill I experienced when my first pull request was merged into the project was just as exciting as when I received the acceptance letter into the internship. The excitement of seeing small changes coded by me reflected in the projects of renowned organisations was what kept me going throughout the contribution period. &lt;strong&gt;Be consistent&lt;/strong&gt; and &lt;strong&gt;communicate with the mentors&lt;/strong&gt; whenever you face any difficulty. The mentors and community members are extremely supportive and will guide you well through the problems, no matter how big or small.   &lt;/p&gt;

&lt;h3&gt;
  
  
  🔖 Final Application
&lt;/h3&gt;

&lt;p&gt;This is the final stage of the application procedure. In my opinion, the one thing to keep in mind while writing the application is to clearly &lt;strong&gt;express your enthusiasm&lt;/strong&gt; for the project. You can do so by mentioning how you plan on executing the project and making sample prototypes if possible. &lt;/p&gt;

&lt;p&gt;For more information related to Outreachy, please visit the official &lt;a href="https://www.outreachy.org/docs/applicant/" rel="noopener noreferrer"&gt;Outreachy website&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Completing the application process for Outreachy was in itself a very fulfilling experience for me and I could truly feel how much I had learnt and improved through it. I am now much more confident in taking up new challenges and learning new skills.&lt;/p&gt;

&lt;p&gt;I hope this blog helped you in some way. Please feel free to comment below if you have any further questions. You can also reach me at &lt;a href="mailto:saha.rachita@gmail.com"&gt;saha.rachita@gmail.com&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Best of luck and happy coding! 😄&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>outreachy</category>
      <category>programming</category>
      <category>career</category>
    </item>
  </channel>
</rss>
