<?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: Christina Gorton</title>
    <description>The latest articles on DEV Community by Christina Gorton (@coffeecraftcode).</description>
    <link>https://dev.to/coffeecraftcode</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%2F129358%2F06481982-9611-4195-8f28-aacfac13b582.jpeg</url>
      <title>DEV Community: Christina Gorton</title>
      <link>https://dev.to/coffeecraftcode</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/coffeecraftcode"/>
    <language>en</language>
    <item>
      <title>The Impact of Tech Layoffs: A Personal Story</title>
      <dc:creator>Christina Gorton</dc:creator>
      <pubDate>Mon, 04 Dec 2023 13:53:36 +0000</pubDate>
      <link>https://dev.to/coffeecraftcode/the-impact-of-tech-layoffs-a-personal-story-13ie</link>
      <guid>https://dev.to/coffeecraftcode/the-impact-of-tech-layoffs-a-personal-story-13ie</guid>
      <description>&lt;p&gt;According to Lisa Cron, the writer of &lt;em&gt;Wired for Story&lt;/em&gt;, our brains relate more to specific stories than generalizations. Saying, "Over 200,000 tech workers have been laid off", doesn't leave much of an impression. &lt;/p&gt;

&lt;p&gt;This series aims to make recent layoffs more relatable and give people a space to share their experiences.&lt;/p&gt;

&lt;p&gt;In this interview, I had the privilege of speaking with a design professional. They shared their experiences during recent tech industry layoffs.&lt;/p&gt;

&lt;p&gt;To protect their privacy, the interviewee has chosen to remain anonymous.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Christina:&lt;/strong&gt; Can you introduce yourself and describe the role you had before the layoffs?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anonymous:&lt;/strong&gt; I worked as a designer at a big agency, overseeing design and strategy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Initial Impact:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Christina:&lt;/strong&gt; Can you describe the moment you found out about the layoffs? What was the news communicated to you and were there any signs or warnings leading up to it?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anonymous:&lt;/strong&gt; The news came during a Zoom meeting with one of our leaders and an HR representative. It was brief, with minimal information. &lt;/p&gt;

&lt;p&gt;There were vague concerns about finances so folks did feel uncertain - but in retrospect, it seems things were much more dire than we anticipated and they could have let us know. Instead, it was always &lt;em&gt;"things are getting better"&lt;/em&gt; - and I see that as a lie. &lt;/p&gt;

&lt;h2&gt;
  
  
  Professional Impact:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fgcav13dzwz8gc8ctoeie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fgcav13dzwz8gc8ctoeie.png" alt="Non-disclosure agreement" width="500" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Christina:&lt;/strong&gt; I can imagine the impact has been significant. Can you elaborate on how the layoff has influenced your professional journey and the hurdles you've encountered in the job market?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anonymous:&lt;/strong&gt; The layoff has prompted me to consider leaving my field for good. One challenge I've encountered is not being able to share work details due to NDAs. It makes it hard to prove my value. I've experienced harmful work environments, so I've looked at jobs in various industries. I am exploring a transition to different roles and industries.&lt;/p&gt;

&lt;p&gt;In my career, I've been misunderstood, faced challenges, and felt undervalued at times. While there have been frustrating experiences, I am now focused on finding a work environment that aligns better with my values.&lt;/p&gt;

&lt;h2&gt;
  
  
  Personal Impact:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Christina:&lt;/strong&gt; Shifting our focus to the personal side of things, could you share how the layoff has resonated with you on a deeper, more personal level? &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anonymous:&lt;/strong&gt; The experience has been challenging. Realizing the misalignment of values within the company was disheartening. Although I know I am skilled in my field, getting laid off can be tough. It has made me feel unappreciated and unwanted. As an older job seeker, I face anxieties when dealing with ageism and systemic inequalities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Company Culture:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fm8987mgfg644f3rmp23n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fm8987mgfg644f3rmp23n.png" alt="Squid games" width="500" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Christina:&lt;/strong&gt; Before we explore the broader impacts, could you paint a picture of the company culture before the layoffs and how it influenced the overall work environment?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anonymous:&lt;/strong&gt; The culture was somber because they could see us not having clients coming in. Our daily work continued as best as it could but the atmosphere of not knowing which of your teammates would be there the next day meant everyone was stressed out. It felt more like Hunger Games than a stable place to work. There was just a cloud over everything. &lt;/p&gt;

&lt;p&gt;I’ve described it to friends and they thought I was describing a plot from Squid Games.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reflection on Industry Trends:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Christina:&lt;/strong&gt; Shifting our perspective to the industry at large, what are your thoughts on how the recent layoffs might shape the future of the tech industry?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anonymous:&lt;/strong&gt; The tech industry is in a significant transition, both coping economically and with the effects of AI. The industry will likely shrink and may not fully recover. The layoffs will likely make existing employees have to bear more responsibilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Support Systems:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fdz2903pmci2f54hudfr5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fdz2903pmci2f54hudfr5.png" alt="Support systems" width="500" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Christina:&lt;/strong&gt; Navigating through challenging times often involves a support system. Can you share the kinds of support you've received from friends, family, or your professional network?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anonymous:&lt;/strong&gt; I've found support through professional associations and Slack channels tailored to minorities. Also in affinity groups that align with my experiences. Emotional support plays a crucial role during such a devastating time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advice for Others:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Christina:&lt;/strong&gt; What advice would you give to others fearing layoffs in the tech industry?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anonymous:&lt;/strong&gt; Trust your instincts and take proactive steps if you sense potential layoffs. Emphasizing value and building internal networks is valuable. But it's also crucial to develop a plan to start interviewing as soon as concerns arise, gradually increasing your efforts.&lt;/p&gt;

&lt;p&gt;Reflecting on this experience, it underscores the importance of advocating for more employee protections like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;unions &lt;/li&gt;
&lt;li&gt;enhanced employee support structures&lt;/li&gt;
&lt;li&gt;a reevaluation of legislation such as At-Will employment &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Currently, laws lean more toward protecting companies than the workforce. These changes would contribute to a more supportive and equitable work environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future Outlook:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fikuqx4v7wwe0jmr1zhop.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fikuqx4v7wwe0jmr1zhop.png" alt="Future outlook" width="500" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Christina:&lt;/strong&gt; Looking ahead, how do you currently envision your future within the tech industry given the recent challenges you've faced?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anonymous:&lt;/strong&gt; I don't see a future in tech after this experience. I'm exploring non-profits, teaching, and going back to school. I have been engaging in interviews researching alternative careers. I am stepping away from a field I once loved because I am frustrated with the toxic cultures.&lt;/p&gt;

&lt;p&gt;It's sad to see a landscape where hard work, training, and education can be overshadowed by toxic people. These people contribute to an environment that sometimes values aggression more than collaboration. I am using my frustration to motivate me to find a job that matches my values and promotes a better work environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Christina:&lt;/strong&gt; As we wrap up, is there any additional insight or perspective you'd like to share about your journey or the wider implications of layoffs in the tech sector?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anonymous:&lt;/strong&gt; Over the next few months, I want to do three things. First, I want to find volunteer opportunities. Second, I want to read more to improve my professional skills. And finally, I want to find companies that appreciate their employees.&lt;/p&gt;

&lt;p&gt;I have a few hobbies I want to develop. It will keep me motivated during the job hunt. Employers assume we all have Etsy stores in our spare time!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Christina:&lt;/strong&gt; What is your ideal next role?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anonymous:&lt;/strong&gt; For my ideal next role, I want to focus on finding a position where I can work with respectful coworkers. I want a job that aligns with my skills and doesn't cause stress or discomfort that could lead to PTSD. My mental well-being is a top priority.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing Thoughts:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fkouvz2cg39kylcrruxw9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fkouvz2cg39kylcrruxw9.png" alt="Empathy" width="500" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Christina:&lt;/strong&gt; Is there anything else you'd like to share about your experience or the broader impact of layoffs in the tech industry?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anonymous:&lt;/strong&gt; Advocate for humane layoff approaches. Layoffs are inevitable. But it's essential to deliver tough messages with empathy. Those involved in layoffs should undergo communications training. &lt;/p&gt;

&lt;p&gt;Leadership should convey a simple, compassionate message: &lt;br&gt;
"This is challenging, but today, we have to lay you off. We recognize this is traumatic. The team values your remarkable contributions, such as your work on 'Name of Product.' You have a bright future, and we appreciate your hard work across projects. Thank you for being part of the Company; we believe any company will be lucky to have you." &lt;/p&gt;

&lt;p&gt;This isn't complicated but is crucial. Without improved layoff practices, companies risk being undesirable workplaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Christina:&lt;/strong&gt; What message would you like to convey to your former colleagues or those facing similar situations?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anonymous:&lt;/strong&gt; You'll understand how brutal a layoff can be when it happens to you. I hope you'll be ready.&lt;/p&gt;

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

&lt;p&gt;This interview focuses on the impact of tech layoffs with an emphasis on workplace dynamics and employee well-being. We need to work together to make positive changes and create work environments that focus on empathy, respect, and open communication.&lt;/p&gt;

&lt;p&gt;If you've experienced a tech transition or a layoff and have a story to share, you can be part of the &lt;strong&gt;"Tech Transitions: Navigating Layoffs, Sharing Stories"&lt;/strong&gt; blog series. &lt;/p&gt;

&lt;p&gt;If you're interested in being part of this series, please comment below or send me a direct message. &lt;/p&gt;

&lt;p&gt;Your voice is important, and together, we can bring a human touch to the broader narrative of tech industry transitions.&lt;/p&gt;

</description>
      <category>community</category>
      <category>layoffs</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Building Thriving Communities: Strategies for New Community Managers</title>
      <dc:creator>Christina Gorton</dc:creator>
      <pubDate>Wed, 29 Nov 2023 18:44:02 +0000</pubDate>
      <link>https://dev.to/coffeecraftcode/building-thriving-communities-strategies-for-new-community-managers-4jpa</link>
      <guid>https://dev.to/coffeecraftcode/building-thriving-communities-strategies-for-new-community-managers-4jpa</guid>
      <description>&lt;h1&gt;
  
  
  Introduction:
&lt;/h1&gt;

&lt;p&gt;Embarking on the journey of community management in spaces like open-source communities or platforms like Discord or Discourse brings unique challenges and opportunities. Often, community management is seen as synonymous with social media management.&lt;/p&gt;

&lt;p&gt;While both fields involve engaging with audiences, community management in these spaces requires a nuanced approach. In this blog post, we'll explore the distinct dynamics of community management, offering the top 10 tips for new community managers to thrive in online environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tip #1: Establish Clear Guidelines:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.23.06-PM-300x278.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.23.06-PM-300x278.png" alt="Community Guidelines " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lay the foundation for a healthy community by creating clear and concise guidelines. Clearly communicate the expectations for behavior, contribution, and collaboration within the community. This not only sets the tone but also helps in managing expectations and avoiding conflicts.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Examples of communities with clear guidelines are:&lt;/strong&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Salesforce Trailblazer Community:
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Guidelines Overview:&lt;/strong&gt; &lt;br&gt;
        Salesforce's Trailblazer Community provides a comprehensive set of guidelines for community members. These guidelines emphasize the values of respect, collaboration, and inclusivity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Points:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Be Respectful:&lt;/strong&gt; Members are encouraged to treat each other with respect, acknowledge diverse perspectives, and maintain a positive tone in discussions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaborate and Share Knowledge:&lt;/strong&gt; The community emphasizes the importance of collaboration and knowledge-sharing to help members grow and succeed in their Salesforce journey.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adhere to Community Principles:&lt;/strong&gt; Salesforce outlines specific principles that include refraining from spam, avoiding inappropriate content, and respecting intellectual property rights. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Link: &lt;a href="https://trailblazer.salesforce.com/resource/1432331846000/SuccessGuidelines" rel="noopener noreferrer"&gt;SalesForce Success Guidelines&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  GitHub Community:
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Guidelines Overview:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
  GitHub, a platform for collaborative software development, has clear community guidelines to ensure a positive and constructive environment for developers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Points&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Be Inclusive:&lt;/strong&gt; GitHub encourages an inclusive environment where everyone can contribute and feel welcome. Discrimination or harassment is strictly prohibited.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Respectful Communication:&lt;/strong&gt; Members are expected to communicate respectfully, fostering a culture of constructive feedback and collaboration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Follow Contribution Guidelines:&lt;/strong&gt; GitHub provides specific guidelines for contributing to open-source projects, ensuring a standardized and effective collaborative process.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Link: &lt;a href="https://docs.github.com/en/site-policy/github-terms/github-community-guidelines" rel="noopener noreferrer"&gt;GitHub Community Guidelines&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These examples demonstrate the importance of setting clear expectations for community behavior and interaction. Guidelines help create a positive and collaborative atmosphere, ensuring that community members can engage effectively and respectfully.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tip #2: Encourage Collaboration:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.25.15-PM-300x263.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.25.15-PM-300x263.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Foster a collaborative environment by emphasizing the importance of teamwork. In platforms like open-source communities, collaboration is at the core of success. Encourage contributors to work together, share ideas, and actively participate in discussions.  &lt;a href="https://opensource.guide/building-community/" rel="noopener noreferrer"&gt;The Open Source Guides: Building Welcoming Communities&lt;/a&gt; is a great resource to learn more about creating a space for collaboration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tip #3: Facilitate Effective Communication:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.30.46-PM-295x300.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.30.46-PM-295x300.png" width="800" height="400"&gt;&lt;/a&gt;     &lt;/p&gt;

&lt;p&gt;Communication is pivotal in online communities. Utilize the communication tools provided by the platform, such as forums or Discord channels, to facilitate open and transparent discussions. &lt;/p&gt;

&lt;p&gt;Given the nature of online interactions, where nuances like tone and body language are absent, it's crucial to be mindful of how messages may be perceived. &lt;/p&gt;

&lt;p&gt;Strive for clarity and considerate language to avoid misunderstandings. Ensure that important information is easily accessible and well-organized, fostering an environment where members feel comfortable expressing themselves while minimizing the potential for misinterpretation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ways to create clear communication in your online communities:
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Clearly Defined Channels:
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Establish specific channels or forums for different topics or types of discussions. For instance, create separate channels for general discussions, technical support, and off-topic conversations. This helps members find and participate in discussions relevant to their interests.&lt;/p&gt;

&lt;h4&gt;
  
  
  Regular Announcements:
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Implement a routine for making important announcements. Whether it's weekly updates, feature releases, or community highlights, consistent communication keeps members informed about the latest developments and fosters a sense of transparency.&lt;/p&gt;

&lt;h4&gt;
  
  
  Responsive Moderation:
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Ensure that community moderators actively monitor discussions and respond promptly to member inquiries or concerns. Acknowledge contributions, address questions, and guide discussions to maintain a positive and engaging atmosphere.&lt;/p&gt;

&lt;h4&gt;
  
  
  Regular Q&amp;amp;A Sessions:
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Host live question-and-answer sessions with community leaders, experts, or special guests. This provides an opportunity for members to interact in real time, seek advice, and engage in meaningful conversations.&lt;/p&gt;

&lt;h4&gt;
  
  
  Feedback Loops:
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Establish mechanisms for collecting feedback from community members. This can include surveys, polls, or dedicated feedback threads. Use insights gained to make improvements and ensure that the community aligns with the needs and preferences of its members.&lt;/p&gt;

&lt;h4&gt;
  
  
  Community Guidelines Reinforcement:
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Periodically remind members of community guidelines and expectations. For instance, share a weekly "Tip of the Week" highlighting a specific guideline or best practice. Reinforcing guidelines helps maintain a positive and respectful community culture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tip #4: Provide Regular Updates:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.31.06-PM-300x275.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.31.06-PM-300x275.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Keep your community informed about ongoing projects, updates, and changes. Regularly share updates on the community platform, whether it's about upcoming features, bug fixes, or general announcements. This helps in keeping community members engaged and informed.&lt;br&gt;&lt;br&gt;
Creating regular Changelogs is a great way to keep your community up-to-date.  &lt;br&gt;&lt;br&gt;
&lt;a href="https://www.freecodecamp.org/news/a-beginners-guide-to-git-what-is-a-changelog-and-how-to-generate-it/" rel="noopener noreferrer"&gt;A Beginner’s Guide to Git — What is a Changelog and How to Generate it&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tip #5: Empower Community Leaders:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.31.20-PM-300x228.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.31.20-PM-300x228.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Identify and empower community leaders who can assist in moderating and guiding discussions. In open-source communities, this may involve recognizing key contributors. In Discord or Discourse, consider appointing moderators who can help maintain a positive and organized environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tip #6: Facilitate Knowledge Sharing:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.31.29-PM-300x266.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.31.29-PM-300x266.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Encourage the sharing of knowledge and expertise within the community. Platforms like Discourse are excellent for creating knowledge bases. Foster a culture where community members feel comfortable sharing their experiences, insights, and solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tip #7: Acknowledge and Reward Contributions:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.31.35-PM-269x300.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.31.35-PM-269x300.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Recognize and appreciate the contributions of community members. Whether it's code contributions in open-source projects or active participation in discussions, acknowledgment reinforces a sense of community and motivates contributors to continue their engagement.&lt;br&gt;&lt;br&gt;
In your open-source projects, you can use tools like &lt;a href="https://contrib.rocks/preview?repo=angular%2Fangular-ja" rel="noopener noreferrer"&gt;contrib.rocks&lt;/a&gt; or &lt;a href="https://remarkablemark.org/blog/2019/10/17/github-contributors-readme/" rel="noopener noreferrer"&gt;Open Collective&lt;/a&gt; to generate a contributors list and display an image on your ReadMe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tip #8: Host Regular Events or Discussions:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.31.43-PM-300x267.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.31.43-PM-300x267.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create opportunities for community members to come together, whether through live discussions, webinars, or virtual meetups. This fosters a sense of belonging and provides a platform for real-time interaction, enhancing the community experience.&lt;br&gt;&lt;br&gt;
Many communities set up “Office Hours” where members can pop in and communicate with leaders in the space.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tip #9: Address Concerns Promptly:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.31.50-PM-300x234.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.31.50-PM-300x234.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Actively monitor discussions and address concerns or conflicts promptly. Open-source communities, in particular, thrive on a positive and constructive atmosphere. Timely intervention can prevent minor issues from escalating and maintain a healthy community dynamic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tip #10: Facilitate Onboarding for New Members:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.31.55-PM-300x212.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcgtechcommunity.com%2Fwp-content%2Fuploads%2F2023%2F11%2FScreenshot-2023-11-28-at-6.31.55-PM-300x212.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Streamline the onboarding process for new members by providing clear documentation and resources. In open-source projects, this may involve creating contributor guides. In Discord or Discourse communities, ensure that newcomers have access to essential information to ease their integration. Check out &lt;a href="https://support.discord.com/hc/en-us/articles/11074987197975-Community-Onboarding-FAQ" rel="noopener noreferrer"&gt;Discord’s Community Onboarding guide&lt;/a&gt; to see the best way to onboard new members. &lt;/p&gt;

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

&lt;p&gt;Managing online communities in platforms such as open-source, Discord, and Discourse can be challenging. However, with the right set of skills and strategies, you'll be able to foster collaboration, facilitate communication, and create a positive and thriving environment. &lt;/p&gt;

</description>
      <category>community</category>
      <category>opensource</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Alex Biehl: Open Sourcing a Tool to Generate Haskell Server Stubs</title>
      <dc:creator>Christina Gorton</dc:creator>
      <pubDate>Mon, 25 Jul 2022 14:37:04 +0000</pubDate>
      <link>https://dev.to/scarf/alex-biehl-open-sourcing-a-tool-to-generate-haskell-server-stubs-3a0c</link>
      <guid>https://dev.to/scarf/alex-biehl-open-sourcing-a-tool-to-generate-haskell-server-stubs-3a0c</guid>
      <description>&lt;p&gt;Scarf Sessions is a new stream where we have conversations with people shaping the landscape in open source and open source sustainability. This post will give a recap of the conversation I had with our guest Alex Biehl&lt;/p&gt;

&lt;p&gt;Alex is a software engineer at Scarf who recently open sourced a tool to generate Haskell server stubs called &lt;a href="https://github.com/scarf-sh/tie" rel="noopener noreferrer"&gt;Tie&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For the full interview please &lt;a href="https://youtu.be/-zfXh7a916E" rel="noopener noreferrer"&gt;see the video&lt;/a&gt; posted on our YouTube channel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stream Recap
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Can you talk more about what programming languages the engineering team at Scarf uses?
&lt;/h3&gt;

&lt;p&gt;Alex: “We use a different mix of languages. Though there are two things that stand out for the main products, which are Haskell for the backend like data processing metrics, pipeline and all. And the other one is of course, JavaScript for the front-end, like the UI of the product.&lt;/p&gt;

&lt;p&gt;“Also one of the defining aspects of our infrastructure is that we use something called &lt;a href="https://github.com/NixOS/nix" rel="noopener noreferrer"&gt;Nix&lt;/a&gt; to assemble all the infrastructure bits. We use it to build out our binaries, build the containers from those binaries, help manage and distribute our artifacts for deployment.”&lt;/p&gt;

&lt;h3&gt;
  
  
  Can you describe the difference between Haskell and other programming languages?
&lt;/h3&gt;

&lt;p&gt;Alex: “Haskell is known as a functional programming language. One of the legends of Haskell is that if it compiles, it works okay. Which is, of course, not always true, but it's a good approximation for a lot of things.&lt;/p&gt;

&lt;p&gt;“And coming from that background our founder, Avi, decided that it would be a good foundation for a product.”&lt;/p&gt;

&lt;h3&gt;
  
  
  Did you work in open source before joining Scarf?
&lt;/h3&gt;

&lt;p&gt;Alex: “I've always been an active open source contributor. Most of the time in the Haskell ecosystem. I’ve been contributing to a lot of Haskell infrastructure as well.&lt;/p&gt;

&lt;p&gt;“I was a maintainer for &lt;a href="https://haskell-haddock.readthedocs.io/en/latest/" rel="noopener noreferrer"&gt;Haddock&lt;/a&gt;. It's the de facto standard documentation tooling for Haskell. And I also contributed to the core build system called &lt;a href="https://www.haskell.org/cabal/" rel="noopener noreferrer"&gt;Cabal&lt;/a&gt; and also contributed a few small patches to &lt;a href="https://www.haskell.org/ghc/" rel="noopener noreferrer"&gt;GHC&lt;/a&gt; itself, as well as, all the ecosystem around it."&lt;/p&gt;

&lt;p&gt;Christina: “I'm always interested in how people get started in open source.&lt;/p&gt;

&lt;p&gt;"Was it something that you were just using these things, so you decided to contribute to the project?&lt;/p&gt;

&lt;p&gt;“Or were you specifically like, “Hey, I want to do something with open source."&lt;/p&gt;

&lt;p&gt;“How did you get started?"&lt;/p&gt;

&lt;p&gt;Alex: “I think I'm kind of a pragmatist in that regard. I noticed something isn't working and now you have the chance to either, you know, build it yourself or piggyback off what's already there and improve it.&lt;/p&gt;

&lt;p&gt;“And the pragmatic choices of course, to not reinvent the wheel and improve what's there and iterate on that. And that's what brought me to open source and what brings me to contributing to open source even to date.“&lt;/p&gt;

&lt;h3&gt;
  
  
  Where did the idea for Tie come from?
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Scarf Redesign
&lt;/h4&gt;

&lt;p&gt;Alex: “At scarf we are in the process of revamping our UI for the product.&lt;br&gt;
And we thought it would be a good time for us to also not only revamp the user interface, but also revamp the underlying parts that serve those UIs.  Right now the API is written in a very ad hoc way.&lt;/p&gt;

&lt;p&gt;“We had a chance to revamp the API, we looked at what we had and analyzed all the shortcomings and disadvantages that we saw. And we found that defining your API in Haskell itself is  prone to the usual developer habits.&lt;/p&gt;

&lt;p&gt;“Something that developers do is build out patterns and mechanisms to type out lines of codes. They reduce duplication and they make things. They consolidate things to make it shorter, to make it more correct, to avoid repeating themselves.&lt;/p&gt;

&lt;p&gt;“It happens that the API itself gets less and less explicit because it's hidden behind all those structures that we build in order to easily write the API itself.&lt;/p&gt;

&lt;p&gt;“That made it very hard for us to actually find out what the API itself is. Like what is the actual route for this particular endpoint? You have to look it up and dig deep in order to find out. And another issue we found is we often ended up with something I call “scope creep”. Sometimes types that are meant for the public API contract of the API make it into the domain and business logic.&lt;/p&gt;

&lt;p&gt;“Which means that in the long term you are coupling your API contract, which you want to support for your customers, to the internal logic of your product. And every time you want to make a seemingly internal change to your logic you might accidentally change the public contract as well."&lt;/p&gt;

&lt;h4&gt;
  
  
  Developing Tie
&lt;/h4&gt;

&lt;p&gt;“This brought me to two realizations. First, we want an explicit human readable API contract, which we can share with our customers.&lt;br&gt;
Second, I wanted to settle it on co-generation. That means I don't want to type out these very boring interface types or contract types myself. I really want a tool to have it generated for me so that I never ever accidentally make a change in the Haskell code that would break the contract. With those goals in mind the most common choice today for these kinds of things is &lt;a href="https://www.openapis.org/" rel="noopener noreferrer"&gt;Open API&lt;/a&gt;. Open API denotes domain specific language to model web APIs.&lt;/p&gt;

&lt;p&gt;“Where Tie comes into play is that it understands Open API. And Tie takes the Open API format and generates Haskell code from it. It does this in such a way that we only have to implement the actual list for the specific routes and don't have to deal with all those serialization logics and peculiarities.“&lt;/p&gt;

&lt;h3&gt;
  
  
  What did you find hard or unexpected about open sourcing Tie?
&lt;/h3&gt;

&lt;p&gt;Alex: “One of the things that I fell really short on at first was writing good documentation. &lt;/p&gt;

&lt;p&gt;I hadn't even created a good example in the repository when I first open sourced the project. It didn’t have a “How to use” section although we were already using it ourselves in production. &lt;/p&gt;

&lt;p&gt;“It was born as a weekend project after two or three days of work and we were putting it into production already after that weekend. So I quickly had other support issues I had to work on before I had time for documentation. &lt;/p&gt;

&lt;p&gt;Christina: “This is why bigger teams have dedicated people for documentation, I totally understand. And to Alex's credit he very quickly messaged me because I have been an open source community manager in the past and he asked me how do I make a good readme? &lt;/p&gt;

&lt;p&gt;“I think that's a really good point though. Often maintainers or someone who really wants to open source a tool they were using and it was helpful for them don't have time for everything else, like the documentation.&lt;br&gt;
‍&lt;em&gt;Do you have any advice for anyone putting anything out?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Alex: &lt;strong&gt;“Don’t let the perfect be the enemy of good."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"You should add documentation and all the parts that got lost on the initial phase of the project. But you know, what's more important I think is, getting initial feedback on the project itself.”&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s in the future for Tie?
&lt;/h3&gt;

&lt;p&gt;Alex: “Tie is not finished. It doesn't support all of Open API’s setup. The standard is vast so this is the call for contribution right here. &lt;/p&gt;

&lt;p&gt;“Help us improve it, file issues. We can definitely help and guide any changes and improvements.”&lt;/p&gt;

&lt;h3&gt;
  
  
  What else are you working on?
&lt;/h3&gt;

&lt;p&gt;Alex: My pet peeve is proper co-generation for contracts for external systems, for example databases. People like to use ORMs and generators.”&lt;/p&gt;

&lt;p&gt;Christina: “Can you explain what ORMs are?”&lt;/p&gt;

&lt;p&gt;Alex: “Object relational mappings method. Like an active record in Ruby, Django, etc. And I want a tool that takes your migration folder and generates for you the types very similar to what Tie does. I want the tool to generate types that reflect the records, the structure of the tables in the database then also allows you to basically ingest SQL.&lt;/p&gt;

&lt;p&gt;And generate small records around that SQL which are typed. So that you can use your SQL to write theories, to define tables, to alter tables and so on, but still have the good old type system to help so that you don't mix up your types”&lt;/p&gt;

&lt;p&gt;For more information on Tie please visit &lt;a href="https://github.com/scarf-sh/tie" rel="noopener noreferrer"&gt;our repository&lt;/a&gt; and consider contributing to the project to help improve it.&lt;/p&gt;

&lt;p&gt;Are you helping to shape the landscape in open source? Interested in joining us on a Scarf Sessions Stream? Email Christina at &lt;a href="mailto:christina@scarf.sh"&gt;christina@scarf.sh&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Are you helping to shape the landscape in open source? Interested in joining us on a Scarf Sessions Stream? Email Christina at &lt;a href="mailto:christina@scarf.sh"&gt;christina@scarf.sh&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To learn more about Scarf:&lt;br&gt;
&lt;a href="https://about.scarf.sh/" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To follow Alex:&lt;br&gt;
&lt;a href="https://twitter.com/alexbiehl_" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/alexbiehl" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To follow Christina:&lt;br&gt;
&lt;a href="https://twitter.com/coffeecraftcode" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>haskell</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Tanner Linsley: Building Sustainable Open Source Projects</title>
      <dc:creator>Christina Gorton</dc:creator>
      <pubDate>Thu, 21 Jul 2022 14:00:26 +0000</pubDate>
      <link>https://dev.to/scarf/tanner-linsley-building-sustainable-open-source-projects-5cm0</link>
      <guid>https://dev.to/scarf/tanner-linsley-building-sustainable-open-source-projects-5cm0</guid>
      <description>&lt;p&gt;Scarf Sessions is a new stream where we have conversations with people shaping the landscape in open source and open source sustainability. This post will give a recap of the conversation Scarf CEO, Avi Press and I had with our guest Tanner Linsley.&lt;/p&gt;

&lt;p&gt;Tanner is the Co-founder &amp;amp; VP of UI/UX at Nozzle. He is also the creator and maintainer of the open source projects, &lt;a href="https://tanstack.com/" rel="noopener noreferrer"&gt;TanStack&lt;/a&gt;.  He has been active in open source for over 5 years contributing to the TypeScript, JavaScript, and React communities. He joined us to explain how he got started in open source and how he has made working in open source sustainable.&lt;/p&gt;

&lt;p&gt;For the full interview please &lt;a href="https://www.youtube.com/watch?v=kgpAe4zoFUg" rel="noopener noreferrer"&gt;see the video&lt;/a&gt; posted on our YouTube channel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stream Recap
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What would you attribute to the growth of TanStack?
&lt;/h3&gt;

&lt;p&gt;Tanner: "React Table and React query. I built React table and people started to like it, which was my initial entry into open source. React Query was a bigger push into a lot more users. It was a very general purpose library for React. So it drew a very large audience. I thought it was pretty great. Apparently other people did too."&lt;/p&gt;

&lt;h3&gt;
  
  
  How did you promote your open source projects?
&lt;/h3&gt;

&lt;p&gt;Tanner mentioned that he literally just put his work out on Twitter when he was ready to make it open source.&lt;br&gt;
Tanner: “I published it at 10:00 PM. I got on Twitter and I said, Hey, everybody, check this out. You know? That's kind of how I've done a lot of my releases too. I like doing it that way. Like I don't need to make too big of a fuss over it.”&lt;/p&gt;

&lt;h3&gt;
  
  
  What is React Location?
&lt;/h3&gt;

&lt;p&gt;Tanner: “Location is an alternative router for React that is not React Router, I guess, because there's not a lot of them out there. Remix came out and they had a lot of great asynchronous routing features in Remix. I wanted to bring those into a routing experience and I needed more control over search params to the extent that no other router I've seen has.&lt;/p&gt;

&lt;p&gt;"So I built this custom router from the ground up to have really good search param support and control over URLs.”&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting Started in Open Source
&lt;/h3&gt;

&lt;p&gt;Tanner expressed that he generally creates projects that he needs for his own work and then open sources them for others to use.&lt;/p&gt;

&lt;p&gt;Avi: “That makes a lot of sense. I very much resonate with the experience of building tools that you need for yourself or tools that your company needs as a way to build things that are valuable to other people in general. If it's useful to you, it might be useful to others too and that is exactly how I got my first projects that had any kind of traction beyond just me using them. They were tools that I wanted to build as well. “&lt;/p&gt;

&lt;p&gt;Avi mentioned that people ask him how to come up with ideas for an open source project or product and he tells them to build something they find useful first.&lt;/p&gt;

&lt;p&gt;Tanner: “I think that's kind of the wrong way to approach open source anyway. I’d rather solve a real problem. And do something that's actually gonna move the needle for users or a product then be like, “oh,  I wonder what I could build in open source.&lt;/p&gt;

&lt;p&gt;"I feel like you kind of come up with half baked ideas and you're probably just innovating to innovate. I don't think there's as much drive and inspiration when you do that.“&lt;/p&gt;

&lt;h3&gt;
  
  
  Do you have any advice for people looking to open source their projects?
&lt;/h3&gt;

&lt;p&gt;Tanner: “I can only give advice on what works for me and the best way that I can do it is you have to remove yourself from your code. You are not your code&lt;/p&gt;

&lt;p&gt;“If people look at your code and think it's crappy or judge it, honestly you should be just as judgey of your own code as they are. But it's not you, it just represents, you know, an attempt at solving a problem and it's always an attempt, right?&lt;/p&gt;

&lt;p&gt;“Things are going to get better. I publish things to be open source because I want them to get better. And I know that by pushing them into the open source ecosystem, I get a lot of eyeballs on it. And in a way, outsource a lot of the difficult tasks of problem solving to those who care about it as much as I do.“&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Nothing is ever going to be perfect enough to release into the open source world as a true product. It's not gonna be ready until you release it and get other people interested in it to iterate on it with you. It's a chicken and egg problem, but you definitely have to put forth the effort, get rid of your ego and, and just kinda say here it is, you know?“ - Tanner Linsley&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Avi: “Yeah. I very much agree with that. And I think that translates to not just open source. For anything that you're putting out there in the world,  the feedback is the good thing. And the sooner you get the thing out there, the sooner you get that feedback and the sooner you can build something actually great.“&lt;/p&gt;

&lt;h3&gt;
  
  
  Why are you trying to build a sustainable open source project in addition to your start-up?
&lt;/h3&gt;

&lt;p&gt;Tanner: “I don't really feel like I'm trying to build a business around my open source stuff. What I am trying to build though is a sustainable model for those problems and solutions. And no one ever said that money didn't help solve sustainability, right? You get money in the mix, it just helps a lot of things.&lt;/p&gt;

&lt;p&gt;"Right now I am able to sponsor a lot of devs that help me out. I definitely want those projects to live on and that's a great way to do it, because I'm just one person.&lt;/p&gt;

&lt;p&gt;"So there's some really bright minds that have kind of organically joined TansStack to carry things forward. ‍&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/TkDodo" rel="noopener noreferrer"&gt;Dominik Dorfmeister&lt;/a&gt; is one who basically just takes care of react query these days. The next version of React Query that's coming out very soon is basically his brain child.“&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I want to see that happen for more projects even if they're not mine. I want TanStack to be like an open source home, if you will, for great projects where they can come and actually survive and get taken care of.“ - Tanner Linsley&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  You have been fortunate to have some great sponsors. What have you done to encourage sponsorship?
&lt;/h3&gt;

&lt;p&gt;Tanner: “It's going to sound really simple, but I think companies really like to be seen. People like to be seen for their contributions and I don't know if you've seen my little sponsor bubble pack that I have on tanstack.com but I think it's really cool and I think my sponsors think it's really cool too.&lt;/p&gt;

&lt;p&gt;"The bigger your bubble is, the more you're helping out. And in a way, I've tried to sell that almost as like a partnership real estate space.&lt;/p&gt;

&lt;p&gt;"You can change your image and you can tell me where you want it to link to and point to. And it's not just on the GitHub repo, but it's on my website. It's on every project page. It's very prominent. It has been a great way to let people feel like they are being seen for their sponsorships.”&lt;br&gt;
&lt;a href="https://media2.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%2Flz2x2lgw4kj0q685eiot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Flz2x2lgw4kj0q685eiot.png" alt="TanStack OSS sponsor bubble graph" width="690" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How do you handle burnout as a maintainer? Do you have advice for other maintainers?
&lt;/h3&gt;

&lt;p&gt;Tanner: “When I feel like I am burning out I go work on my startup instead. I just ship something for my product. We have real customers at Nozzle so shipping something new there makes you feel really good. You have to find a balance with your hobbies. I think you can burn out on any hobby and open source is just like a hobby.”&lt;/p&gt;

&lt;p&gt;For more information on Tanner Linsley and his open source projects be sure to visit &lt;a href="https://tanstack.com/" rel="noopener noreferrer"&gt;tanstack.com&lt;/a&gt;. If any of his projects have helped you in the past, consider &lt;a href="https://github.com/sponsors/tannerlinsley" rel="noopener noreferrer"&gt;becoming a sponsor&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>community</category>
      <category>react</category>
    </item>
    <item>
      <title>Stefano Maffulli: An Exploration on Standards for Open Source Packaging and Distribution</title>
      <dc:creator>Christina Gorton</dc:creator>
      <pubDate>Wed, 20 Jul 2022 19:41:19 +0000</pubDate>
      <link>https://dev.to/scarf/stefano-maffulli-an-exploration-on-standards-for-open-source-packaging-and-distribution-2446</link>
      <guid>https://dev.to/scarf/stefano-maffulli-an-exploration-on-standards-for-open-source-packaging-and-distribution-2446</guid>
      <description>&lt;p&gt;Scarf Sessions is a new stream where we have conversations with people shaping the landscape in open source and open source sustainability. This post will give a recap of the conversation Scarf CEO, Avi Press and I had with our guest Stefano Maffulli. &lt;/p&gt;

&lt;p&gt;Stefano is the Executive Director of the Open Source Initiative(OSI) and a long time advocate of open source. He joined us to discuss standards that should exist around open source packaging and distribution. He also talked more in depth about what the OSI is currently up too. &lt;/p&gt;

&lt;p&gt;For the full interview please see the video posted on our &lt;a href="https://youtu.be/fq5GeA_AlJc" rel="noopener noreferrer"&gt;YouTube channel&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stream Recap
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How or why did Avi and Stefano first connect?
&lt;/h3&gt;

&lt;p&gt;Stefano reached out to Avi after reading the NewStack article “&lt;a href="https://thenewstack.io/where-does-open-source-fit-into-russias-war-with-ukraine/" rel="noopener noreferrer"&gt;Where Does Open Source Fit into Russia’s War with Ukraine?&lt;/a&gt;”. &lt;/p&gt;

&lt;p&gt;The article quoted Avi, who talked about how Scarf was able to leverage its distribution data to uncover who was downloading and using our packages. Scarf noticed the Russian government was downloading some of its packages and moved to block the traffic.&lt;br&gt;
“Scarf will be blocking all package and container downloads originating from Russian Government sources until further notice.”&lt;/p&gt;

&lt;p&gt;Stefano was excited to see a tool that maintainers could leverage and feel empowered to stop bad actors using their software.&lt;/p&gt;

&lt;p&gt;Stefano: "As maintainer of a project or as a developer of some open source software, you have no ways of limiting the nasty usage of your software. It feels like you have no way to empower, you know, using your powers to say, look, I don't want my software to be used for nefarious purposes.&lt;/p&gt;

&lt;p&gt;"And, that's why, you know, while we were having these conversations about whether  the open source movement can have a say to help populations that are being attacked by an oppressor. That's how you and I met."&lt;/p&gt;

&lt;h3&gt;
  
  
  What can open source developers do about bad actors?
&lt;/h3&gt;

&lt;p&gt;Both Avi and Stefano agreed this was a complicated topic. What kind of powers do maintainers have?&lt;/p&gt;

&lt;p&gt;Open source software is pervasive but what tools do maintainers have to stop bad actors?&lt;/p&gt;

&lt;p&gt;Stefano: "We feel like we must use the tools that we know how to use, which is our licenses and, copyright and contract law."&lt;/p&gt;

&lt;p&gt;Stefano also mentioned that the current tools developers rely on are not powerful enough because for example bad actors are not going to obey the law.&lt;/p&gt;

&lt;p&gt;Stefano: "On one hand, you enable dissidents with strong encryption. Yyou enable free speech.&lt;br&gt;
On the other hand, you also empower terrorist organization to go, you know, behind the surveillance. So I think a lot of the conversations that I hear about the, role of developers in civil activism is relying on tools that are not really powerful enough in my opinion, like contract law or copyright."&lt;/p&gt;

&lt;p&gt;However distribution data is another tool maintainers could use.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“You don’t have to do business with people who you don’t politically or socially agree with. And distribution seems to be one of those areas where we actually can give open source projects and maintainers a bit more leverage over their own work.”- Avi Press&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Maintainers can also be creative with how they block the usage of their software. Many maintainers and open source communities stop bad actors by refusing to provide support.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Open source is about collaboration but you can pick and choose who you collaborate with.” - Stefano Maffulli&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  How do you see distribution playing a role in any facet of open source?
&lt;/h3&gt;

&lt;p&gt;Avi believes distribution plays a role in every facet of open source.&lt;/p&gt;

&lt;p&gt;Avi: "Yeah, I think that distribution plays a role in pretty much every one of these different sections when it comes to things like security. How do we respond to CVEs when we find them? Knowing what organizations rely on a given vulnerable package can make it a lot easier to you know, to do damage control and tell people that they need to upgrade proactively."&lt;/p&gt;

&lt;p&gt;"I think when we talk about, “how do we make sure that open source developers are building financially sustainable projects or secure projects?” It really comes down to having the distribution data. And having observability into that can really enable a lot of these opportunities.&lt;/p&gt;

&lt;p&gt;"I think distribution touches just about every aspect of this. And we're really just starting to scratch the surface on kind of the various ways, which this can be powerful. And I think the same thing for all the political activism aspects that we were talking about. This just gives you another tool in the tool chain that you can use to, be creative as was said earlier."&lt;/p&gt;

&lt;h3&gt;
  
  
  What kind of standards, if any, should exist for open source packaging and open source distribution?
&lt;/h3&gt;

&lt;p&gt;Stefano reiterated that the OSI are the stewards of the open source definition. They don’t write it but  maintain it for the community. He believes more conversations in terms of the development of standards for distribution should be encouraged amongst stakeholders.&lt;/p&gt;

&lt;p&gt;Avi made the point that these conversations are important. For example, many package registries do not require two factor authentication. This means a single person, who has the power to push a new package version to millions of devices overnight, could easily have their password leaked. He reiterated that it is vital for the OSS community to have best practices and standards around these kinds of situations.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are the latest problems or questions when it comes to licensing, as it pertains to the OSI?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;“The one thing that has always been fascinating to me is the impact of new technologies on the open source definition.” - Stefano Maffulli&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The OSI is starting to investigate the impact of artificial intelligence on open source. Stefano talks about how AI is a weird blend of software and data that blurs the line between what users own and no longer own when sharing their content.&lt;/p&gt;

&lt;p&gt;Stefano proposes questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What kind of licenses should be on top of an application that uses AI?&lt;/li&gt;
&lt;li&gt;What is the right of the user and the right of the developers?
He reiterates that changes to technology always bring new challenges to existing standards and definitions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What do you think the next 20 years of open source looks like?
&lt;/h3&gt;

&lt;p&gt;Stefano: “Our role in the next 20 years is to continue educating and advocating the benefits of open source and to continue to build bridges so that these open source communities can continue to evolve and thrive around new challenges.”&lt;/p&gt;

&lt;p&gt;Avi agreed collaboration within open source will help us to continue developing processes and systems that keep open source sustainable and secure.&lt;/p&gt;

&lt;p&gt;He mentioned that Scarf is now a sponsor of the OSI.&lt;/p&gt;

&lt;p&gt;To that end, we encourage others to consider becoming a &lt;a href="https://opensource.org/civicrm/contribute/transact?reset=1&amp;amp;id=7" rel="noopener noreferrer"&gt;sponsor or donating&lt;/a&gt; as well. Together we can all work to advocate the benefits of open source for the next 20 years and beyond.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>community</category>
    </item>
    <item>
      <title>Encourage Community with a Good ReadMe</title>
      <dc:creator>Christina Gorton</dc:creator>
      <pubDate>Thu, 02 Jun 2022 16:28:53 +0000</pubDate>
      <link>https://dev.to/scarf/encourage-community-with-a-good-readme-ham</link>
      <guid>https://dev.to/scarf/encourage-community-with-a-good-readme-ham</guid>
      <description>&lt;p&gt;Community is important for the health of an open source project. During my time as an open source community manager and developer advocate, I have seen how a project’s ReadMe can help with discoverability and encourage community contributions when they are well written. I have also seen how projects can turn away users when they don’t take the time to create a good ReadMe.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes a Good ReadMe?
&lt;/h2&gt;

&lt;p&gt;When you are looking to promote your open source project and encourage developers to use it there are a few things your ReadMe could include.&lt;/p&gt;

&lt;h3&gt;
  
  
  Project Name and Description
&lt;/h3&gt;

&lt;p&gt;First, a ReadMe should be succinct. More detailed documentation about your product or project can be moved to a separate page or website. A few things you can add at the beginning of your ReadMe are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product name and logo if available&lt;/li&gt;
&lt;li&gt;A short description that can include:

&lt;ul&gt;
&lt;li&gt;What your application does,&lt;/li&gt;
&lt;li&gt;Why you used the technologies you used&lt;/li&gt;
&lt;li&gt;Some of the challenges you faced and features you hope to implement in the future.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Examples of project’s that do this well are:&lt;br&gt;
&lt;a href="https://github.com/deepset-ai/haystack" rel="noopener noreferrer"&gt;Haystack&lt;/a&gt; by Deepset AI&lt;br&gt;
&lt;a href="https://media2.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%2F92chtws00c3870kzare2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F92chtws00c3870kzare2.png" alt="Haystack logo and project description" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jina-ai/jina#readme" rel="noopener noreferrer"&gt;Jina&lt;/a&gt; by Jina AI&lt;br&gt;
&lt;a href="https://media2.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%2Fbypzh392tav7cdk7f0br.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fbypzh392tav7cdk7f0br.png" alt="Jina's logo and project description" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Table of Contents
&lt;/h3&gt;

&lt;p&gt;If your ReadMe is long or contains several sections, a Table of Contents(TOC) is helpful.&lt;/p&gt;

&lt;p&gt;There are several tools you can use to create a TOC in your GitHub ReadMe. &lt;/p&gt;

&lt;p&gt;First, you can manually generate a TOC with Markdown. You can follow the markdown in this &lt;a href="https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet" rel="noopener noreferrer"&gt;cheatsheet&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;To automatically generate a TOC, you can use an online tool like the &lt;a href="https://ecotrust-canada.github.io/markdown-toc/" rel="noopener noreferrer"&gt;GitHub Wiki TOC generator&lt;/a&gt;. I used this tool to create the TOC in Forem’s &lt;a href="https://github.com/forem/selfhost" rel="noopener noreferrer"&gt;Selfhost&lt;/a&gt; project when I was a developer advocate there. &lt;/p&gt;

&lt;p&gt;Their open source project, &lt;a href="https://github.com/forem/forem#table-of-contents" rel="noopener noreferrer"&gt;Forem&lt;/a&gt;, is another good example of a project that uses a TOC to help their community navigate the many sections of their ReadMe.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fyknf6qcj11wmnary1ty4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fyknf6qcj11wmnary1ty4.png" alt="Forem's repository table of contents" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation Guide
&lt;/h3&gt;

&lt;p&gt;As mentioned previously, in-depth documentation should be added to a separate page, but most users appreciate a "Quick Start" or installation guide, so they can test the project quickly. &lt;br&gt;
You will want to provide a quick step-by-step description of how to set up and run the development environment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/fluent/fluent-bit" rel="noopener noreferrer"&gt;Fluent-bit&lt;/a&gt; is on example of a project that has a quick start section and links out to more detailed build and install instructions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fhrsf4szrmwozt3xjbvbn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fhrsf4szrmwozt3xjbvbn.png" alt="Fluent-bit's quick start guide" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/grouparoo/grouparoo#running-a-grouparoo-application" rel="noopener noreferrer"&gt;Grouparoo&lt;/a&gt; is another good example of including a quick reference to running their application, but also linking out to a fuller version. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fv5g16rosfav7maogfgk6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fv5g16rosfav7maogfgk6.png" alt="Grouparoo's installation guide to run their application" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Usage Examples
&lt;/h3&gt;

&lt;p&gt;Usage examples help your community visualize how your project can be implemented and better explains your project’s use cases. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/kestra-io/kestra#demo" rel="noopener noreferrer"&gt;Kestra&lt;/a&gt; includes a demo app users can play within their ReadMe.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fem4s6wfn36alpdlomtyk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fem4s6wfn36alpdlomtyk.png" alt="Kestra's demo app available at https://demo.kestra.io/ui/" width="693" height="761"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/httpie/httpie#examples" rel="noopener noreferrer"&gt;Httpie&lt;/a&gt; includes several different examples of their HTTP client, including a GIF to help visualize.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F2tpkea68hncc9yoqp6xm.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F2tpkea68hncc9yoqp6xm.gif" alt="Httpie example animation" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Contributor Guide
&lt;/h3&gt;

&lt;p&gt;A contributor guide will encourage your community to participate in the health and maintenance of your project. &lt;/p&gt;

&lt;p&gt;A contributor guide is useful for both maintainers and contributors. Guidelines support good pull-requests and issues and encourages good communication between contributors and maintainers, which saves everyone a lot of time and hassle.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add a License
&lt;/h3&gt;

&lt;p&gt;An open source license makes it easier for other people to contribute to your project. Depending on the license, it will also encourage or discourage the free use and distribution of your project. A public project is not free to use, distribute, modify, or contribute back to by default. You need to add a license to explicitly give others the right to do so. &lt;/p&gt;

&lt;p&gt;For more information on open source licensing, see the following resources.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository" rel="noopener noreferrer"&gt;Licensing a repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://opensource.guide/legal/" rel="noopener noreferrer"&gt;The Legal Side of Open Source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The Linux Foundation: &lt;a href="https://training.linuxfoundation.org/training/open-source-licensing-basics-for-software-developers/" rel="noopener noreferrer"&gt;Open Source Licensing Basics for Software Developers (LFC191)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Nice to Haves
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Credit Authors or Contributors&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In addition to a contributor guide, a section giving credit to the authors of the project and/or highlighting project contributors shows your appreciation for your community by centering the work they have done.&lt;/p&gt;

&lt;p&gt;One example of a project that highlights their contributors with a “Contributors” section is Plausible. They use a tool like &lt;a href="https://contrib.rocks/preview" rel="noopener noreferrer"&gt;contrib.rocks&lt;/a&gt; or &lt;a href="https://remarkablemark.org/blog/2019/10/17/github-contributors-readme/" rel="noopener noreferrer"&gt;Open Collective&lt;/a&gt; to generate a contributors list and display an image on their ReadMe.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fo4omk4g23sdh6j0edacb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fo4omk4g23sdh6j0edacb.png" alt="Plausible's contributor section with contributor images displayed." width="800" height="298"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Things to Check
&lt;/h3&gt;

&lt;p&gt;If the project will be open to the public, you should check the &lt;code&gt;Insights tab&lt;/code&gt; in your repository to view the Community Standards. &lt;br&gt;
&lt;a href="https://media2.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%2F93cujiza9kp18r1t70qv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F93cujiza9kp18r1t70qv.png" alt="Github's Insights tab and community standards" width="636" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This tab provides a checklist you can follow to your community the best experience with your project. Try to include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/setting-guidelines-for-repository-contributors" rel="noopener noreferrer"&gt;A contributing guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/adding-a-code-of-conduct-to-your-project" rel="noopener noreferrer"&gt;A code of conduct&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/manually-creating-a-single-issue-template-for-your-repository" rel="noopener noreferrer"&gt;Issue templates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository" rel="noopener noreferrer"&gt;PR Templates&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Maintaining an open source project is both exciting and exhausting. A ReadMe isn’t always at the top of mind when a developer or team open sources their code. Yet, taking the time to craft a good ReadMe encourages community and the health of your project. It will also save you time in the future by answering users questions from the start. Not everything in this list is necessary for a ReadMe, but even the addition of a few of these items will make an impact on your project.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
    </item>
    <item>
      <title>A Different Approach to Measuring Open Source Community Health</title>
      <dc:creator>Christina Gorton</dc:creator>
      <pubDate>Tue, 31 May 2022 15:15:13 +0000</pubDate>
      <link>https://dev.to/scarf/a-different-approach-to-measuring-open-source-community-health-4n8m</link>
      <guid>https://dev.to/scarf/a-different-approach-to-measuring-open-source-community-health-4n8m</guid>
      <description>&lt;h2&gt;
  
  
  What is Community Health?
&lt;/h2&gt;

&lt;p&gt;Community is important to the success of open source software. The health of a community can be measured in different ways depending on the stakeholders involved. To understand and grow a community, project founders and maintainers need visibility into various technical, social, and even financial metrics. These metrics are important because they can help projects form data driven decisions. *&lt;em&gt;But what metrics should we be using? *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This post is inspired by several discussions I have seen around the failings of current open source metrics and the tools used to measure them. This post will discuss what metrics we currently use and what I believe we should be using instead. &lt;/p&gt;

&lt;h2&gt;
  
  
  Current Metrics
&lt;/h2&gt;

&lt;p&gt;On LinkedIn’s publishing platform Pulse, William Tracz wrote about &lt;a href="https://www.linkedin.com/pulse/open-source-vanity-metrics-william-tracz/" rel="noopener noreferrer"&gt;Open Source vanity metrics&lt;/a&gt; and the problem with using them to measure a project's success. Tracz lamented they could not currently see a better way to gather valuable data about open source projects. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are these current metrics?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Like Tracz mentions, many of the metrics open source maintainers and contributors rely on are considered “vanity metrics”. This term does not mean these metrics are not useful but they often do not give a full picture of a communities health. &lt;/p&gt;

&lt;p&gt;Examples of vanity metrics in open source are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Number of GitHub stars&lt;/li&gt;
&lt;li&gt;Number of active commits&lt;/li&gt;
&lt;li&gt;Number of new and closed issues&lt;/li&gt;
&lt;li&gt;Releases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and more.&lt;/p&gt;

&lt;p&gt;Often these are metrics founders and maintainers care about as they provide a way to quickly show “success” but may not actually help when it comes to important business outcomes and decisions. &lt;/p&gt;

&lt;h2&gt;
  
  
  Tools You Can Use to See Metrics
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Orbit
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://orbit.love/" rel="noopener noreferrer"&gt;Orbit&lt;/a&gt; is a tool you can integrate with GitHub to see metics like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pull request opened&lt;/li&gt;
&lt;li&gt;Pull request merged&lt;/li&gt;
&lt;li&gt;Issue opened&lt;/li&gt;
&lt;li&gt;Issue comment created&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and more. &lt;/p&gt;

&lt;p&gt;As an open source community manager I used Orbit to quickly track new comments from contributors and maintainers so I could respond in a timely manner. I also used it to see when community members were no longer active. This helped me reach out and get feedback.&lt;/p&gt;

&lt;h3&gt;
  
  
  CHAOSS Metrics
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://chaoss.community/metrics/" rel="noopener noreferrer"&gt;CHAOSS&lt;/a&gt; is a Linux Foundation project focused on creating analytics and metrics to help define community health. &lt;/p&gt;

&lt;h3&gt;
  
  
  Common Room
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.commonroom.io/" rel="noopener noreferrer"&gt;Common Room&lt;/a&gt; is a growth platform that focuses on a business’ community. The platform helps companies connect their community engagement, product usage, and customer data through the use of artificial intelligence. &lt;/p&gt;

&lt;h3&gt;
  
  
  Bitergia
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://bitergia.com/" rel="noopener noreferrer"&gt;Bitergia&lt;/a&gt; is an analytics tool for software development teams, open source program offices, and InnerSource programs. Open source projects can use this tool to improve decision making and reporting by analyzing software development community, activity, and performance of open source projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Merico
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.merico.dev/" rel="noopener noreferrer"&gt;Merico&lt;/a&gt; provides tools to help engineering teams understand and optimize their productivity and code quality. &lt;/p&gt;

&lt;h2&gt;
  
  
  What Metrics Should We Use?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;“Tracking different types of metrics is essential for free and open source communities. Metrics give project insights into specific efforts and help get a feel of the community’s general perception. For that, tools that can pull data from various sources and develop a visualization of this data will help projects make informed decisions.”&lt;br&gt;
&lt;small&gt;Linux.com Editorial Staff, &lt;a href="https://www.linux.com/news/measuring-the-health-of-open-source-communities/" rel="noopener noreferrer"&gt;Measuring the Health of Open Source Communities&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the article quoted above and in William Tracz’s article the need for a tool that can pull more valuable data is apparent. But what data should projects be looking at and what tool could they use?&lt;/p&gt;

&lt;h3&gt;
  
  
  Beyond Vanity Metrics
&lt;/h3&gt;

&lt;p&gt;What if you could see a project’s impact, identify potential customers, and understand/showcase growth without sacrificing your end-user’s privacy? &lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.scarf.sh/gateway/" rel="noopener noreferrer"&gt;Scarf Gateway&lt;/a&gt; helps you understand how users are interacting with your open-source project at every step of their journey&lt;/p&gt;

&lt;p&gt;Instead of answering questions like “how many followers do we have”, Scarf’s data digs deeper in to a project’s community health and answers questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;How many new companies tried our OSS this month?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;How many unique users did our OSS have this month compared to last month?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Was the spike in downloads we saw last week genuine growth, or a thrashing CI pipeline from an existing user?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Should I actually spend the time to fix the bug for that one Windows user?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We can also have visibility into how OSS software is distributed.&lt;br&gt;
Instead of wondering who is using our software, Scarf’s data answers questions like: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;What percent of our user base has adopted our latest patch?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;What cloud providers are the most popular with our users?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Scarf can also help uncover community metrics like your projects discoverability, usage, churn, and commercial reliance. Community Managers can use this data to proactively connect with users and grow a healthy and vibrant OSS community.&lt;/p&gt;

&lt;p&gt;This data compliments the metrics you can get from tools like Orbit and answers questions like: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;What is the geographical breakdown of our user-base?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;What percentage of our user-base is corporate usage vs hobby usage?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;What time zones should we cater to with our online event planning?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a project’s documentation it can answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;What percent of our user-base is on Windows vs Linux vs Mac?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Which section of our docs are users finding most confusing?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A New Way
&lt;/h2&gt;

&lt;p&gt;This type of rich usage data moves beyond the typical vanity metrics the open source community has typically relied on. While those metrics can tell you a lot about a project, they do not give the full picture of a community's health. &lt;/p&gt;

&lt;p&gt;With the addition of tools like Scarf Gateway, maintainers now have the power to make more informed decisions. When maintainers have hard data around &lt;strong&gt;who, where, and why&lt;/strong&gt; companies and individuals are using their software they can better prioritize features, patches, releases and more. &lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>Root to Linux: Search Files with Grep</title>
      <dc:creator>Christina Gorton</dc:creator>
      <pubDate>Tue, 04 Jan 2022 15:38:13 +0000</pubDate>
      <link>https://dev.to/coffeecraftcode/root-to-linux-search-files-with-grep-516m</link>
      <guid>https://dev.to/coffeecraftcode/root-to-linux-search-files-with-grep-516m</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Grep is a commonly used command in Linux (or Unix) to search through 1 or more files for a pattern or word.   &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fun fact: grep is short for Global regular expression print(g/re/p). It was a command used in a simple Unix text editor called &lt;code&gt;ed&lt;/code&gt;(pronounced ee dee). It would print all the lines matching a certain pattern. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are many ways to use the grep command. In this tutorial you will use the grep command to search within files and directories and print file types that contain a certain string and more. &lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You can use a Linux shell or any Unix terminal like the one found on MacOS. If you do not have a Linux distro set up, you can use an online command shell to practice these commands. 
For this tutorial I used the terminal found on MacOS.&lt;/li&gt;
&lt;li&gt;Create a directory on your computer called &lt;code&gt;book&lt;/code&gt; and add 2 text files named story.txt and poem.txt.  We will use these files throughout the tutorial. 
If you would like to practice the Linux commands to create a directory, files, and add text please see Part 1 and 2 of my &lt;a href="https://dev.to/coffeecraftcode/root-to-linux-hands-on-commands-part-1-284e"&gt;Hands-on Commands&lt;/a&gt; tutorial. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Inside the &lt;code&gt;story.txt&lt;/code&gt; file add this text:&lt;br&gt;
&lt;em&gt;A Cat Haiku&lt;br&gt;
In the morning&lt;br&gt;
You sleep despite my meow&lt;br&gt;
I stand on your face&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Inside the &lt;code&gt;poem.txt&lt;/code&gt; file add this text:&lt;br&gt;
&lt;em&gt;A Cat Poem&lt;br&gt;
Meow meow meow&lt;br&gt;
Meow meow meow meow&lt;br&gt;
Meow meow&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;a href="https://media2.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%2Fodrmae8lpg7vjfl31zuu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fodrmae8lpg7vjfl31zuu.png" alt="Creating a directory and files with Linux commands" width="420" height="315"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Searching Within a File
&lt;/h2&gt;

&lt;p&gt;One way to use the grep command is to search for a word in a specific file. In this section you will use the grep command to search for the word &lt;strong&gt;cat&lt;/strong&gt; in the story.txt file. &lt;/p&gt;

&lt;p&gt;In your terminal navigate to your &lt;code&gt;book&lt;/code&gt; directory with the &lt;code&gt;cd&lt;/code&gt; command then type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep cat &lt;/span&gt;story.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.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%2Ful66h0ixtpjgrfsv2ad2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ful66h0ixtpjgrfsv2ad2.png" alt="Using grep to search a file" width="370" height="143"&gt;&lt;/a&gt;&lt;br&gt;
&lt;small&gt;Nothing is returned&lt;/small&gt; &lt;/p&gt;

&lt;p&gt;This command looks in the &lt;code&gt;story.txt&lt;/code&gt; file for a pattern that matches &lt;code&gt;cat&lt;/code&gt;. You will see in the terminal that it does not return anything. There is a word cat in the story.txt file but it is capitalized. &lt;br&gt;
The grep command is &lt;strong&gt;case sensitive&lt;/strong&gt;. To return the line in the text file that matches the pattern cat you could type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep &lt;/span&gt;Cat story.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yet, you may not know the case of a pattern you are looking for in a file. To search for a word or pattern that is case &lt;strong&gt;insensitive&lt;/strong&gt; you can use the &lt;code&gt;-i&lt;/code&gt; flag. The &lt;code&gt;-i&lt;/code&gt; flag is shorthand for &lt;code&gt;--ingnore-case&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="nb"&gt;cat &lt;/span&gt;story.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output should now return the correct line that contains the pattern. &lt;br&gt;
Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;A Cat Haiku
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.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%2Fnkrl3rnokwrtgfh8rfht.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fnkrl3rnokwrtgfh8rfht.png" alt="Using the -i flag with grep" width="352" height="87"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Searching Recursively
&lt;/h2&gt;

&lt;p&gt;When you want to search through multiple files or you are unsure what file contains a pattern you can search recursively through a directory with grep and the &lt;code&gt;-r&lt;/code&gt; flag. The -r flag is shorthand for &lt;code&gt;--recursive&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In this example we will search for the word &lt;strong&gt;meow&lt;/strong&gt; in the &lt;code&gt;book&lt;/code&gt; directory. &lt;/p&gt;

&lt;p&gt;The command will use &lt;code&gt;grep&lt;/code&gt;, the &lt;code&gt;-r&lt;/code&gt; flag, the pattern/string you want to search for, and the path of the directory to search in. &lt;/p&gt;

&lt;p&gt;In your terminal type:&lt;br&gt;
&lt;code&gt;grep -r "meow" /Users/cmgorton/Desktop/book&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/Users/cmgorton/Desktop/book/poem.txt:Meow meow meow
/Users/cmgorton/Desktop/book/poem.txt:Meow meow meow meow
/Users/cmgorton/Desktop/book/poem.txt:Meow meow
/Users/cmgorton/Desktop/book/story.txt:You &lt;span class="nb"&gt;sleep &lt;/span&gt;despite my meow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.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%2Flgdg8m4il7yp6115a9cz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Flgdg8m4il7yp6115a9cz.png" alt="Using the -r flag with grep" width="800" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see that the command returned every line that matched the pattern in both the &lt;strong&gt;poem&lt;/strong&gt; and &lt;strong&gt;story&lt;/strong&gt; text file. &lt;/p&gt;

&lt;h2&gt;
  
  
  Invert search with &lt;code&gt;-v&lt;/code&gt; Flag
&lt;/h2&gt;

&lt;p&gt;Before, we used grep to find all the successful matches of a word in a file. You can use the &lt;code&gt;-v&lt;/code&gt; flag along with grep to invert the search. The &lt;code&gt;-v&lt;/code&gt; flag is shorthand for &lt;code&gt;--invert-match&lt;/code&gt;. This means the search will return all non-matching lines in a file the pattern you are searching for. &lt;/p&gt;

&lt;p&gt;In this example we will look for all the lines that &lt;strong&gt;do not&lt;/strong&gt; match the word "meow" in the &lt;code&gt;poem.txt&lt;/code&gt; file. &lt;/p&gt;

&lt;p&gt;While in the &lt;code&gt;book&lt;/code&gt; directory type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="s2"&gt;"meow"&lt;/span&gt; poem.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;A Cat Poem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.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%2Fzyeo0s29pnuma447ysca.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fzyeo0s29pnuma447ysca.png" alt="inverted search with -v flag" width="394" height="94"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can now try to do the same inverted search in the &lt;code&gt;story.txt&lt;/code&gt; file and see what the results would be. &lt;/p&gt;

&lt;h2&gt;
  
  
  Search for Specific File Types
&lt;/h2&gt;

&lt;p&gt;When we searched through the previous files we knew that they contained the word &lt;strong&gt;meow&lt;/strong&gt;. However, if you were unsure which files contained the word you could search for a specific file type with the &lt;code&gt;-l&lt;/code&gt; flag. &lt;/p&gt;

&lt;p&gt;The &lt;code&gt;-l flag is shorthand for&lt;/code&gt;--files-with-matches`. It will search only the names of files containing selected lines. For this example you will search through the file type .txt to see which files contain the word &lt;strong&gt;meow&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This command will search through all files in the &lt;strong&gt;current&lt;/strong&gt; working directory. &lt;/p&gt;

&lt;p&gt;Navigate to the &lt;code&gt;book&lt;/code&gt; directory. &lt;br&gt;
Type: &lt;br&gt;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
grep -l meow *.txt&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br&gt;
Output:&lt;br&gt;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
poem.txt&lt;br&gt;
story.txt&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media2.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%2Fe68loz52mrfatzxsimb1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fe68loz52mrfatzxsimb1.png" alt="Searching with grep and the -l flag" width="372" height="142"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: The * in Linux stands for "zero or more characters". In the example it looks for &lt;strong&gt;all&lt;/strong&gt; files with the &lt;code&gt;.txt&lt;/code&gt; characters.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this tutorial you explored a few of the ways to use &lt;code&gt;grep&lt;/code&gt; to search through files and directories for a pattern. &lt;br&gt;
There are a lot of other flags you can use with &lt;code&gt;grep&lt;/code&gt;. You can also use &lt;a href="https://www.geeksforgeeks.org/piping-in-unix-or-linux/#:~:text=A%20pipe%20is%20a%20form,program%2Fprocess%20for%20further%20processing." rel="noopener noreferrer"&gt;pipes&lt;/a&gt; to pipe the output of a command through &lt;code&gt;grep&lt;/code&gt; to filter out information. &lt;/p&gt;

&lt;p&gt;To see all of the options you can use with &lt;code&gt;grep&lt;/code&gt; type: &lt;code&gt;man grep&lt;/code&gt; in your terminal. This will list the General Commands Manual for &lt;code&gt;grep&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;If you would like to see some of these commands as visual content, check out my post where I share my GoodNotes. &lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1475936778792148993-274" src="https://platform.twitter.com/embed/Tweet.html?id=1475936778792148993"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1475936778792148993-274');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1475936778792148993&amp;amp;theme=dark"
  }



&lt;/p&gt;

</description>
      <category>linux</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Twitter Chat: Chapter 6 Recap</title>
      <dc:creator>Christina Gorton</dc:creator>
      <pubDate>Mon, 03 Jan 2022 19:54:54 +0000</pubDate>
      <link>https://dev.to/devedbookclub/twitter-chat-chapter-6-recap-2561</link>
      <guid>https://dev.to/devedbookclub/twitter-chat-chapter-6-recap-2561</guid>
      <description>&lt;p&gt;&lt;small&gt;Cover Photo by &lt;a href="https://unsplash.com/@chrisjdavis?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Chris J. Davis&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/twitter?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;We started a book club! Each week we host a Twitter chat on Thursdays to discuss a chapter of &lt;a href="https://link.springer.com/book/10.1007/978-1-4842-7217-6" rel="noopener noreferrer"&gt;Docs for Developers&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;On Thursday Dec. 30th we had our 6th Twitter chat, hosted on the &lt;a href="https://twitter.com/DevEdBookClub" rel="noopener noreferrer"&gt;@DevEdBookClub Twitter&lt;/a&gt; account about Chapter 6. &lt;/p&gt;

&lt;p&gt;This post is a recap of the chat and a place to continue the conversation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Visual Content
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What docs have particularly good examples of visual content?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;What do you like about them?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/meganesulli" rel="noopener noreferrer"&gt;Megan Sullivan&lt;/a&gt; pointed to Vue’s documentation and &lt;a href="https://vuejs.org/v2/guide/instance.html#Lifecycle-Diagram" rel="noopener noreferrer"&gt;this flow chart&lt;/a&gt; in particular as a good example of visual content. &lt;br&gt;
&lt;a href="https://media2.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%2Flr2elmhulsmm6txx8xjf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Flr2elmhulsmm6txx8xjf.png" alt="Vue Lifecycle diagram" width="408" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1476736131232256002-246" src="https://platform.twitter.com/embed/Tweet.html?id=1476736131232256002"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1476736131232256002-246');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1476736131232256002&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/AgencyCecil" rel="noopener noreferrer"&gt;Portia&lt;/a&gt; mentioned &lt;a href="https://twitter.com/b0rk" rel="noopener noreferrer"&gt;Julia Evan’s&lt;/a&gt; programming zines called &lt;a href="https://wizardzines.com/" rel="noopener noreferrer"&gt;Wizard Zines&lt;/a&gt;. They use visuals to cover a variety of topics like Bash, Networking, and Linux. &lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1476745050159824897-272" src="https://platform.twitter.com/embed/Tweet.html?id=1476745050159824897"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1476745050159824897-272');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1476745050159824897&amp;amp;theme=dark"
  }



 &lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/_dvkr" rel="noopener noreferrer"&gt;Dvkr&lt;/a&gt; gave a shout out to the comics that are found in React’s new beta documentation. They enjoy how the comics personify React. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/AishaBlake" rel="noopener noreferrer"&gt;Aisha Blake&lt;/a&gt; said she liked &lt;a href="https://plaid.com/docs/" rel="noopener noreferrer"&gt;Plaid’s documentation&lt;/a&gt; because of the illustrations that help her visualize the use of their product. They combine the visuals with helpful code examples. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1476737189459464193-437" src="https://platform.twitter.com/embed/Tweet.html?id=1476737189459464193"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1476737189459464193-437');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1476737189459464193&amp;amp;theme=dark"
  }



 &lt;/p&gt;

&lt;p&gt;What are your favorite visuals for learning new content? &lt;/p&gt;
&lt;h2&gt;
  
  
  Creating Visuals
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What’s your workflow for creating visual content? At what point in the writing process do you add them?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;What tools do you use?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Do you have any questions about creating visual content that this group might be able to help weigh in on?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I shared that my workflow changes depending on the content. Sometimes I start with a visual and create content around it. Other times I leave the visuals for the end. I also mentioned I enjoy using Figma and Affinity designer to create visuals that are SVGs. Some of the visuals I create I like to animate and SVGs make this easier to accomplish. &lt;br&gt;
I use Procreate when creating an image. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1476742105406087169-399" src="https://platform.twitter.com/embed/Tweet.html?id=1476742105406087169"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1476742105406087169-399');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1476742105406087169&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/vlrmigova" rel="noopener noreferrer"&gt;Valeria&lt;/a&gt; uses online white boards like &lt;a href="https://weje.io/online-whiteboard" rel="noopener noreferrer"&gt;Weje&lt;/a&gt; to manage multiple projects and visualize their workflow. &lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1476786555708657665-811" src="https://platform.twitter.com/embed/Tweet.html?id=1476786555708657665"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1476786555708657665-811');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1476786555708657665&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Aisha and Portia both admitted they have a hard time creating visual content. Aisha likes to commission illustrations when possible. Portia tries to draw something on paper first and then uses tools like &lt;a href="https://miro.com/" rel="noopener noreferrer"&gt;Miro&lt;/a&gt;.&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1476742781930459145-512" src="https://platform.twitter.com/embed/Tweet.html?id=1476742781930459145"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1476742781930459145-512');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1476742781930459145&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1476748136911671299-590" src="https://platform.twitter.com/embed/Tweet.html?id=1476748136911671299"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1476748136911671299-590');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1476748136911671299&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Do you have a preferred workflow? What tools do you like to use to create visuals for your documentation?&lt;/p&gt;

&lt;h2&gt;
  
  
  Favorite Takeaways
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What takeaways from this chapter can you apply to your own documentation practice at work?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Any quotes or ideas that resonate with you?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/sarah11918" rel="noopener noreferrer"&gt;Sarah Rainsberger&lt;/a&gt; had two favorite takeaways. First, she liked the message “Simplify to Amplify". Visuals can be really helpful but can also be very distracting.&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1476752775316967425-889" src="https://platform.twitter.com/embed/Tweet.html?id=1476752775316967425"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1476752775316967425-889');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1476752775316967425&amp;amp;theme=dark"
  }



 &lt;br&gt;
Second, she appreciated the reminder that screenshots aren’t always the best option. They lack text for screen readers. Use in your documentation only when they are the &lt;strong&gt;best&lt;/strong&gt; option. &lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1476754273933348869-801" src="https://platform.twitter.com/embed/Tweet.html?id=1476754273933348869"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1476754273933348869-801');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1476754273933348869&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Portia added she would have liked a section in the book that talked about maintaining visuals. A lot of documentation sites struggle with keeping their visuals up-to-date.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1476749810820603904-624" src="https://platform.twitter.com/embed/Tweet.html?id=1476749810820603904"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1476749810820603904-624');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1476749810820603904&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h2&gt;
  
  
  Join the Conversation 🗣
&lt;/h2&gt;

&lt;p&gt;You can see the full conversation on the DevEdBookClub Twitter account. &lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1476734912812097540-673" src="https://platform.twitter.com/embed/Tweet.html?id=1476734912812097540"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1476734912812097540-673');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1476734912812097540&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Add a comment on the Twitter thread or share your thoughts here to continue the conversation. &lt;/p&gt;

&lt;p&gt;What did you think about Chapter 6 of Docs for Developers?  &lt;/p&gt;

</description>
      <category>books</category>
      <category>bookclub</category>
      <category>documentation</category>
    </item>
    <item>
      <title>Twitter Chat: Chapter 5 Recap</title>
      <dc:creator>Christina Gorton</dc:creator>
      <pubDate>Thu, 30 Dec 2021 18:06:36 +0000</pubDate>
      <link>https://dev.to/devedbookclub/twitter-chat-chapter-5-recap-5bf0</link>
      <guid>https://dev.to/devedbookclub/twitter-chat-chapter-5-recap-5bf0</guid>
      <description>&lt;p&gt;&lt;small&gt;Cover Photo by &lt;a href="https://unsplash.com/@chrisjdavis?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Chris J. Davis&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/twitter?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;We started a book club! Each week we host a Twitter chat on Thursdays to discuss a chapter of &lt;a href="https://link.springer.com/book/10.1007/978-1-4842-7217-6" rel="noopener noreferrer"&gt;Docs for Developers&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;On Thursday Dec. 23rd we had our 5th Twitter chat, hosted on the &lt;a href="https://twitter.com/DevEdBookClub" rel="noopener noreferrer"&gt;@DevEdBookClub Twitter&lt;/a&gt; account about Chapter 5. &lt;/p&gt;

&lt;p&gt;This post is a recap of the chat and a place to continue the conversation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code Samples
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What docs or learning platforms have particularly good code samples?&lt;/strong&gt; &lt;br&gt;
&lt;strong&gt;What do you like about them?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/meganesulli" rel="noopener noreferrer"&gt;Megan Sullivan&lt;/a&gt; showed us an example of the Gatsby docs. She liked that the Gatsby docs would include in a code sample the name of the file where the changes should go&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1474199823356071937-551" src="https://platform.twitter.com/embed/Tweet.html?id=1474199823356071937"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1474199823356071937-551');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1474199823356071937&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/sarah11918" rel="noopener noreferrer"&gt;Sarah Rainsberger&lt;/a&gt; shared a link to the GraphQL tutorials on &lt;a href="https://odyssey.apollographql.com/" rel="noopener noreferrer"&gt;Apollo Odyssey&lt;/a&gt;. &lt;br&gt;
She said:&lt;br&gt;
&lt;em&gt;“I love seeing code WRITTEN out, with arrows pointing to stuff bc its what I do to learn”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1474199477107970059-582" src="https://platform.twitter.com/embed/Tweet.html?id=1474199477107970059"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1474199477107970059-582');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1474199477107970059&amp;amp;theme=dark"
  }



 &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do you like to learn?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do you have any favorite learning platforms and if so, why do you like them?&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Preferred Workflow
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What’s your workflow for creating code samples?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;At what point in the writing process do you add them?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;What tools do you use?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Do you prefer static or interactive code samples?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/hola_soy_milk" rel="noopener noreferrer"&gt;Ramón Huidobro&lt;/a&gt; shared that they like to prepare code samples along with the structure.&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1474387138070425602-858" src="https://platform.twitter.com/embed/Tweet.html?id=1474387138070425602"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1474387138070425602-858');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1474387138070425602&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Megan and I both agreed it depended on what we were writing. If I write tutorials I like to have a code sample written out before writing. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1474202962486571010-861" src="https://platform.twitter.com/embed/Tweet.html?id=1474202962486571010"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1474202962486571010-861');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1474202962486571010&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1474202688732602372-901" src="https://platform.twitter.com/embed/Tweet.html?id=1474202688732602372"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1474202688732602372-901');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1474202688732602372&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Do you have a preferred workflow? &lt;/p&gt;

&lt;h2&gt;
  
  
  Favorite Takeaways
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What takeaways from this chapter can you apply to your own documentation practice at work?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Any quotes or ideas that resonate with you?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/_dvkr" rel="noopener noreferrer"&gt;dvkr's&lt;/a&gt; favorite quote was “It’s better to write looking forward than backward”. When writing code samples we should be sure we are not making it even harder for learners by adding references or examples that need shared perspective to understand. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1474210152219693058-933" src="https://platform.twitter.com/embed/Tweet.html?id=1474210152219693058"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1474210152219693058-933');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1474210152219693058&amp;amp;theme=dark"
  }



 &lt;/p&gt;

&lt;p&gt;Ramón shared their favorite quote: “Explanations that accompany your samples are as important as the samples themselves”.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1474387872589434881-858" src="https://platform.twitter.com/embed/Tweet.html?id=1474387872589434881"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1474387872589434881-858');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1474387872589434881&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h2&gt;
  
  
  Join the Conversation 🗣
&lt;/h2&gt;

&lt;p&gt;You can see the full conversation on the DevEdBookClub Twitter account. &lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1474198195936776192-998" src="https://platform.twitter.com/embed/Tweet.html?id=1474198195936776192"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1474198195936776192-998');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1474198195936776192&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Add a comment on the Twitter thread or share your thoughts here to continue the conversation. &lt;/p&gt;

&lt;p&gt;What did you think about Chapter 5 of Docs for Developers?  &lt;/p&gt;

</description>
      <category>bookclub</category>
      <category>books</category>
      <category>documentation</category>
    </item>
    <item>
      <title>Root to Linux: Hands-on Commands Part 2</title>
      <dc:creator>Christina Gorton</dc:creator>
      <pubDate>Fri, 17 Dec 2021 21:03:30 +0000</pubDate>
      <link>https://dev.to/coffeecraftcode/root-to-linux-hands-on-commands-part-2-de4</link>
      <guid>https://dev.to/coffeecraftcode/root-to-linux-hands-on-commands-part-2-de4</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In part 1 of this guide, you will learned some of the basic Linux commands to see your working directory, list directories and files, make new directories, and create text files.&lt;/p&gt;

&lt;p&gt;In part 2 of this guide you will learn the commands to move directories, copy files, add content, and delete files. &lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;You will need a Linux shell to work with to try these commands in this tutorial. If you do not have a &lt;a href="https://en.wikipedia.org/wiki/Linux_distribution" rel="noopener noreferrer"&gt;Linux distro&lt;/a&gt; set up, you can use an online command shell to practice these commands. For this tutorial I used &lt;a href="https://bellard.org/jslinux/" rel="noopener noreferrer"&gt;JSLinux&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making Changes to Your Directories
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fpm5e1kcgr4bdc3t3lfjo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fpm5e1kcgr4bdc3t3lfjo.jpg" alt="Directory hierarchy" width="800" height="1006"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Look at the directories above. &lt;br&gt;
In part one of this guide you created the top directory hierarchy. When you created the original directories you added the Elliot directory under &lt;code&gt;Pride_prejudice&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Sometimes when you create directories or files you may find that they are in the wrong place and you need to move them. The character Elliot is actually in Jane Austen’s book Persuasion not Pride and Prejudice.  &lt;/p&gt;
&lt;h3&gt;
  
  
  Moving a Directory
&lt;/h3&gt;

&lt;p&gt;Instead of deleting the Elliot directory and creating a new one under Persuasion, you can use the &lt;code&gt;mv&lt;/code&gt; command to move the directory. When using the &lt;code&gt;mv&lt;/code&gt; command you add the file path you want to move, then the file path you want to it move to. &lt;/p&gt;

&lt;p&gt;In the Linux shell type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mv &lt;/span&gt;austen/Pride_prejudice/Elliot/ austen/Persuasion/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will move the Elliot directory from the Pride_prejudice file path to the Persuasion file path. You can navigate to the Persuasion or Pride_prejudice directory and use the &lt;code&gt;ls&lt;/code&gt; command to see that the file was moved.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fefvwup8fus82zyj0keg0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fefvwup8fus82zyj0keg0.png" alt="Moving a directory " width="800" height="237"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Copying a File
&lt;/h3&gt;

&lt;p&gt;Look at the image of the directories again. You can see that in the top directory there is no partner text file under the Pride_prejudice directory. &lt;/p&gt;

&lt;p&gt;In the bottom directory there is a partner.txt file under &lt;code&gt;Pride_prejudice/Darcy&lt;/code&gt;. You could navigate to that directory and use the &lt;code&gt;touch&lt;/code&gt; command to create the file. &lt;/p&gt;

&lt;p&gt;However, in this section you will use the &lt;code&gt;cp&lt;/code&gt; command to copy the &lt;code&gt;partner.txt&lt;/code&gt; file that is under the Persuasion/Wentworth directory instead.&lt;/p&gt;

&lt;p&gt;Currently these files are empty but if they had a lot of information in them it would be more efficient to copy the file instead of creating a new one with the &lt;code&gt;touch&lt;/code&gt; command and adding the information again.  &lt;/p&gt;

&lt;p&gt;In the Linux shell type the &lt;code&gt;cp&lt;/code&gt; command followed by the file path you want to copy and then the file path you want to copy it to. &lt;/p&gt;

&lt;p&gt;In this case you will copy the file from Wentworth to Darcy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fj9skhgfdmvuk6cq4gk49.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fj9skhgfdmvuk6cq4gk49.png" alt="Copying a directory" width="800" height="177"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Deleting a File
&lt;/h3&gt;

&lt;p&gt;Another important command to know while working in the Linux shell is how to delete a file or directory. &lt;/p&gt;

&lt;p&gt;Look at the top and bottom directories again. &lt;br&gt;
In the top directory you can see the &lt;code&gt;partners.txt&lt;/code&gt; file under Churchill. This file is under Knightly instead in the bottom directory.&lt;/p&gt;

&lt;p&gt;Delete this file by using the &lt;code&gt;rm&lt;/code&gt;(remove) command. Be sure to use the correct file path when deleting a file. For this example type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;rm &lt;/span&gt;austen/Emma/Churchill/partner.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After you delete the file, change directories into Churchill and use the &lt;code&gt;ls&lt;/code&gt; command to see if the file was removed. If no files are listed then your file was successfully deleted.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F1jw1lheuiddcya2m87l7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F1jw1lheuiddcya2m87l7.png" alt="Deleting the partners.txt file" width="613" height="146"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Editing a Text File
&lt;/h3&gt;

&lt;p&gt;So far you have created three empty &lt;code&gt;partner.txt&lt;/code&gt; text files. Now you will use the &lt;code&gt;cat&lt;/code&gt; command to add text to the files. The &lt;code&gt;cat&lt;/code&gt; command is one of the more frequently used commands in Linux. It can be used to create single or multiple files, view the content of those files, concatenate files, and redirect output in terminal or files.&lt;/p&gt;

&lt;p&gt;In this guide you will use it to add content to a file and to view the content of the file. &lt;/p&gt;

&lt;p&gt;Change directories to &lt;code&gt;austen/Emma/Knightly&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Then type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; partners.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will be able to type content to the shell. Type &lt;code&gt;Mr. Knightly marries Emma&lt;/code&gt; into the shell. To exit type &lt;code&gt;Ctrl + d&lt;/code&gt; from the keyboard.&lt;br&gt;
&lt;a href="https://media2.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%2Fg7yywjjussnt3jyymo7o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fg7yywjjussnt3jyymo7o.png" alt="Using cat command to add content to file" width="778" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To view the content you can use the cat command and file name. &lt;br&gt;
&lt;a href="https://media2.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%2F10c674yb6vribxx8jdii.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F10c674yb6vribxx8jdii.png" alt="Using cat command to see contents of a file" width="800" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alternatively, you can use the &lt;code&gt;less&lt;/code&gt; command to view content of a text file. &lt;br&gt;
If you use the &lt;code&gt;less&lt;/code&gt; command you will need to type &lt;code&gt;q&lt;/code&gt; on your keyboard to exit.&lt;br&gt;
&lt;a href="https://media2.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%2Fg6ohoiof3ck2cgjfgnwp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fg6ohoiof3ck2cgjfgnwp.png" alt="Less command to see content" width="701" height="349"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.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%2Fqzearly63zxz9obmc05o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fqzearly63zxz9obmc05o.png" alt="Content displayed with the less command" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For more practice, navigate to the other partner.txt files and add content to them. &lt;/p&gt;

&lt;p&gt;In &lt;code&gt;Wentworth/partner.txt&lt;/code&gt; add the following content:&lt;br&gt;
&lt;code&gt;Captain Wentworth marries Anne Elliot.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;Darcy/partner.txt&lt;/code&gt; add the following content:&lt;br&gt;
&lt;code&gt;Mr. Darcy marries Elizabeth Bennet&lt;/code&gt;. &lt;/p&gt;

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

&lt;p&gt;In part 2 of this hands-on guide you learned the following basic commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;mv&lt;/code&gt; to move directories&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cp&lt;/code&gt; to copy directories or files&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rm&lt;/code&gt; to delete files (if you want to delete a directory and all of it's contents use the &lt;code&gt;rm&lt;/code&gt; command with the &lt;code&gt;-r&lt;/code&gt; (recursive) option: &lt;code&gt;rm -r directory_name&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cat&lt;/code&gt; to edit a text file or view it's content&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have worked through both of the hands-on guides take the time to go back through all of the commands to reinforce what you have learned.  &lt;/p&gt;

</description>
      <category>linux</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Root to Linux: Hands-on Commands Part 1</title>
      <dc:creator>Christina Gorton</dc:creator>
      <pubDate>Fri, 17 Dec 2021 21:03:21 +0000</pubDate>
      <link>https://dev.to/coffeecraftcode/root-to-linux-hands-on-commands-part-1-284e</link>
      <guid>https://dev.to/coffeecraftcode/root-to-linux-hands-on-commands-part-1-284e</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;One of the most intimidating parts of learning Linux is working with the Linux shell. The shell is a command line interpreter and gives a user the ability to execute programs which are also called commands. &lt;/p&gt;

&lt;p&gt;In part 1 of this guide, you will learn and use some of the basic Linux commands to see your working directory, list directories and files, make new directories, and create text files.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;You will need a Linux shell to work with to try these commands in this tutorial. If you do not have a &lt;a href="https://en.wikipedia.org/wiki/Linux_distribution" rel="noopener noreferrer"&gt;Linux distro&lt;/a&gt; set up, you can use an online command shell to practice these commands. For this tutorial I used &lt;a href="https://bellard.org/jslinux/" rel="noopener noreferrer"&gt;JSLinux&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checking Current Directory
&lt;/h2&gt;

&lt;p&gt;In Linux, a directory is a location on your computer that stores files. They are set up in a hierarchical system on your computer. &lt;/p&gt;

&lt;p&gt;To see what directory you are currently in you can use the &lt;code&gt;pwd&lt;/code&gt; command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;While using JSLinux you will be in the &lt;code&gt;root&lt;/code&gt; directory. &lt;/p&gt;

&lt;p&gt;If you are using the Linux shell on your own computer you will likely be in the &lt;code&gt;home&lt;/code&gt; directory. &lt;br&gt;
&lt;a href="https://media2.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%2Fl6oclxe3yr1kbnnfbqsq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fl6oclxe3yr1kbnnfbqsq.png" alt="pwd command to show current working directory" width="608" height="225"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Creating Directories
&lt;/h2&gt;

&lt;p&gt;Now that you know what directory you are in, you can start creating new directories and set up your own hierarchical structure. &lt;/p&gt;

&lt;p&gt;In the image below. you will see several directories and files that are set up in a hierachy. These directories are named after the author Jane Austen, some of her books, and a few of the characters in those books. &lt;/p&gt;

&lt;p&gt;In this section of the tutorial you will learn the commands to create each directory, change directories and list the directories that have been created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fk1zqm4rnoq9ldiw3hgb0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fk1zqm4rnoq9ldiw3hgb0.png" alt="Directory hierarchy" width="800" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first directory you will create is &lt;code&gt;austen&lt;/code&gt;. &lt;br&gt;
To create this directory you will use the &lt;code&gt;mkdir&lt;/code&gt; command which stands for make directory. &lt;br&gt;
In the Linux shell type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;austen
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you type &lt;code&gt;Austen&lt;/code&gt; it will be different from &lt;code&gt;austen&lt;/code&gt;. The Linux shell sees these as two different directories. Be sure to pay attention to your capitalization and any spelling errors while creating directories or files. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To see if the directory was created you can use the &lt;code&gt;ls&lt;/code&gt; command. &lt;br&gt;
This command is short for &lt;strong&gt;list&lt;/strong&gt; and will list out any directories or files that are in the current working directory.&lt;br&gt;&lt;br&gt;
In the image below you can see the &lt;code&gt;austen&lt;/code&gt; directory is listed along with a few default directories that come with JSLinux. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Flvqp0drzpwq8o4i5t16i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Flvqp0drzpwq8o4i5t16i.png" alt="austen directory listed with ls command" width="800" height="252"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Creating Directories Under &lt;code&gt;austen&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Now you can create the next directories in the hierarchy. You will create the &lt;code&gt;Emma&lt;/code&gt;, &lt;code&gt;Persuasion&lt;/code&gt;, and &lt;code&gt;Pride_prejudice&lt;/code&gt; directories. &lt;br&gt;
You can create each directory one at a time with the &lt;code&gt;mkdir&lt;/code&gt; command like you did when creating the &lt;code&gt;austen&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Felsetoxvkiexlkcci9tc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Felsetoxvkiexlkcci9tc.png" alt="created the Emma directory" width="511" height="177"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;or you can create several directories at a time like the image below.&lt;/p&gt;

&lt;p&gt;Use the &lt;code&gt;mkdir&lt;/code&gt; command and separate each directory you would like to create. Here we create the &lt;code&gt;Persuasion&lt;/code&gt; and &lt;code&gt;Pride_prejudice&lt;/code&gt; directories all at once. &lt;/p&gt;

&lt;p&gt;Once you are done creating the directories you can use the &lt;code&gt;cd&lt;/code&gt; command, which stands for change directory, to move from the &lt;code&gt;root&lt;/code&gt; or &lt;code&gt;home&lt;/code&gt; directory to the &lt;code&gt;austen&lt;/code&gt; directory. &lt;br&gt;
From there you can use the &lt;code&gt;ls&lt;/code&gt; command to list all of your new directories and confirm they were successfully created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fbwoh0c4rijwi38jo711o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fbwoh0c4rijwi38jo711o.png" alt="Creating multiple directories with mkdir" width="800" height="127"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To create the next directories in the hierarchy you will use the same &lt;code&gt;mkdir&lt;/code&gt; command. In the image below you will see an example of changing directories to the austen directory and creating the character name directories. &lt;/p&gt;

&lt;p&gt;You must add them to the correct file path. For example, Knightly will go under the Emma directory so you will create it by including Emma in the file path like: &lt;br&gt;
&lt;code&gt;mkdir Emma/Knightly&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Repeat the same pattern with the other directories that need to be added. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; In the Linux shell you can press the tab key on your keyboard after you start a file path to auto-complete it. For example, if you type &lt;code&gt;Pr&lt;/code&gt; then hit the &lt;code&gt;tab&lt;/code&gt; key it will auto complete to &lt;code&gt;Pride_prejudice&lt;/code&gt; for you. This will save time as you create more directories.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fm9gm1duga1tjtk4kp44b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fm9gm1duga1tjtk4kp44b.png" alt="Creating more directories" width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Creating a Text File
&lt;/h3&gt;

&lt;p&gt;In the directory hierarchy image you can see that there are two &lt;code&gt;partner.txt&lt;/code&gt; files. &lt;br&gt;
&lt;code&gt;.txt&lt;/code&gt; stands for a text file. To create text files you use the &lt;code&gt;touch&lt;/code&gt; command. &lt;/p&gt;

&lt;p&gt;Navigate to the Churchill directory with the &lt;code&gt;cd&lt;/code&gt; command. &lt;br&gt;
Then type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;touch &lt;/span&gt;partner.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the &lt;code&gt;ls&lt;/code&gt; command to see if you were successful in creating a text file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fcrh1huydxpdsqq7bcq2i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fcrh1huydxpdsqq7bcq2i.png" alt="Creating a text file" width="755" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow the same steps to create a &lt;code&gt;partner.txt&lt;/code&gt; file under the &lt;code&gt;Persuasion/Wentworth&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;Once you have created both text files you should now have all of the directories and files from the first image. &lt;/p&gt;

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

&lt;p&gt;In part 1 of this hands-on guide you learned the following basic commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;pwd&lt;/code&gt; to see your current working directory&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ls&lt;/code&gt; to list directories and files&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mkdir&lt;/code&gt; to create a new directory&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cd&lt;/code&gt; to change directories&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;touch&lt;/code&gt; to create a text file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In part 2 of this hands-on guide you will learn the commands to move a directory, copy a file, delete a file, and edit a file. &lt;/p&gt;

&lt;p&gt;Take the time to go back through the commands you just learned before moving on to part 2. &lt;/p&gt;

</description>
      <category>linux</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
