<?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: James.Scott</title>
    <description>The latest articles on DEV Community by James.Scott (@scottydocs).</description>
    <link>https://dev.to/scottydocs</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%2F243892%2F0d9e85f7-4cec-4cf9-abf1-4140fff8fba5.jpeg</url>
      <title>DEV Community: James.Scott</title>
      <link>https://dev.to/scottydocs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/scottydocs"/>
    <language>en</language>
    <item>
      <title>How programming languages got their names</title>
      <dc:creator>James.Scott</dc:creator>
      <pubDate>Sat, 04 Jan 2020 13:31:32 +0000</pubDate>
      <link>https://dev.to/scottydocs/how-programming-languages-got-their-names-207e</link>
      <guid>https://dev.to/scottydocs/how-programming-languages-got-their-names-207e</guid>
      <description>&lt;p&gt;Phil Karlton once said there are only two hard things in computer science: "cache invalidation and naming things" and it's because of the latter that we have so many weird and wonderful names in technology. In this post I'm going to explore the names of a handful of common programming languages, revealing why they were chosen and where the words came from.&lt;/p&gt;

&lt;h2&gt;
  
  
  Perl
&lt;/h2&gt;

&lt;p&gt;Perl was created by American developer Larry Wall in 1987. He initially chose the name Pearl because he felt it was short and memorable word with positive associations. However, as there was an existing language with the name, he changed the spelling to Perl. One existing backronym (an acronym created after the name) for Perl is Practical Extraction and Reporting Language. The word &lt;em&gt;pearl&lt;/em&gt; came via the Old French &lt;em&gt;perle&lt;/em&gt; meaning 'a bead' or 'something valuable' and the Latin &lt;em&gt;perna&lt;/em&gt; meaning 'leg' which extends to the name of a mollusc apparently shaped like a leg of mutton.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fgabx9aeou5xtjh7396be.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fgabx9aeou5xtjh7396be.jpg" alt="Perna"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ruby
&lt;/h2&gt;

&lt;p&gt;Ruby, the language the &lt;a href="https://dev.to/"&gt;Dev.to&lt;/a&gt; site was developed with, was created by Japanese developer Yukihiro "Matz" Matsumoto in the 1990s. Influenced by Perl, he also wanted to use the name of a precious stone and choose Ruby because it was the birthstone of a colleague and the next birthstone in the monthly sequence after Perl: June's is pearl and July's is ruby. The word &lt;em&gt;ruby&lt;/em&gt; comes from the Old French &lt;em&gt;rubi&lt;/em&gt; meaning a 'reddish precious stone' from the Latin &lt;em&gt;rubeus&lt;/em&gt; meaning 'red'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fff21t5oy903v28v1ynus.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fff21t5oy903v28v1ynus.jpg" alt="The June birthstone Pearl and the July birthstone Ruby"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Python
&lt;/h2&gt;

&lt;p&gt;Dutch programmer Guido van Rossum designed Python in 1991, naming it after the British television comedy Monty Python's Flying Circus because he was reading the show's scripts at the time. He wanted a name that was &lt;a href="https://docs.python.org/2/faq/general.html#why-is-it-called-python" rel="noopener noreferrer"&gt;"short, unique and slightly mysterious"&lt;/a&gt;. The word &lt;em&gt;python&lt;/em&gt; comes from the ancient Greek &lt;em&gt;Puthón&lt;/em&gt;, the name of a huge serpent killed by the god Apollo. It has been used to refer to various large, heavy-bodied, non-venomous snakes that constrict their prey since the early 19th century.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fb2x81picra3arehnqvzi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fb2x81picra3arehnqvzi.jpg" alt="A poster from Monty Python's Flying Circus and the Python logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Java
&lt;/h2&gt;

&lt;p&gt;Java was designed by James Gosling while he was working at Sun Microsystems in the early 1990s. The project was initially called 'Oak' before a highly caffeinated brainstorming session produced the name 'Java' (although they very nearly went with 'Silk'). &lt;em&gt;Java&lt;/em&gt;, or &lt;em&gt;Jawa&lt;/em&gt; in Indonesian, is the name of a large island in Indonesia that produces strong, dark and sweet coffee. It’s name can be traced back to the Sanskrit word &lt;em&gt;yavadvip&lt;/em&gt;, &lt;em&gt;yava&lt;/em&gt; meaning ‘barley’ and &lt;em&gt;dvipa&lt;/em&gt; meaning ‘island’. Java has been a slang term for coffee in the United States since the 1800s. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fl9edmvnnj6aqg3ver4w1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fl9edmvnnj6aqg3ver4w1.jpg" alt="A map of Java"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Kotlin
&lt;/h2&gt;

&lt;p&gt;Kotlin, the language released by JetBrains in 2011, takes its name from Kotlin Island in Russia. The team wanted to use an island name like Java had - although it was technically named after the coffee rather than the island! Kotlin (Котлин in Russian) used to be part of Sweden and was known as &lt;em&gt;Kettusaari&lt;/em&gt; by the Finns, meaning 'fox island', and &lt;em&gt;Ketlingen&lt;/em&gt; by the Swedes, which possibly stems from the lower German &lt;em&gt;kettel&lt;/em&gt; meaning 'cauldron'. After Peter the Great and his Russian forces won control of the island in 1703 it was renamed &lt;em&gt;Kotling&lt;/em&gt;, later shortened to &lt;em&gt;Kotlin&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fx525kky30nhvlvxdfwgv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fx525kky30nhvlvxdfwgv.png" alt="Kotlin island map"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Swift
&lt;/h2&gt;

&lt;p&gt;There is no clear answer to why Apple chose the name Swift but it's definitely not named after Taylor Swift as &lt;a href="https://www.quora.com/Is-the-Swift-programming-language-named-after-Taylor-Swift" rel="noopener noreferrer"&gt;someone asked&lt;/a&gt; on Quora! My guess is they wanted to give the impression of something fast. The word &lt;em&gt;swift&lt;/em&gt; means 'moving with great speed or velocity' and can be traced back to the prehistoric &lt;em&gt;swipt-&lt;/em&gt; meaning to 'move in a sweeping manner'. The swallow-like bird became known as a swift from the 17th century and is used as the programming language's logo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F3eyatbq4dvgh9otejby4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F3eyatbq4dvgh9otejby4.jpg" alt="The swift bird and the logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Find this interesting?
&lt;/h2&gt;

&lt;p&gt;If you found this interesting, I've posted an infographic of the origins of more programming languages &lt;a href="https://i.redd.it/5piswsrtir841.jpg" rel="noopener noreferrer"&gt;here&lt;/a&gt;. See low-res version below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.redd.it%2F5piswsrtir841.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.redd.it%2F5piswsrtir841.jpg" alt="A map of lots of languages"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can follow me on Twitter at &lt;a href="https://twitter.com/thestrangeroots" rel="noopener noreferrer"&gt;@TheStrangeRoots&lt;/a&gt; for Tweets about the origin of different words used in technology.&lt;/p&gt;

</description>
      <category>writing</category>
      <category>codenewbie</category>
      <category>beginners</category>
      <category>etymology</category>
    </item>
    <item>
      <title>A case for code comments?</title>
      <dc:creator>James.Scott</dc:creator>
      <pubDate>Wed, 13 Nov 2019 19:35:27 +0000</pubDate>
      <link>https://dev.to/scottydocs/a-case-for-code-comments-eek</link>
      <guid>https://dev.to/scottydocs/a-case-for-code-comments-eek</guid>
      <description>&lt;p&gt;If there is one topic that divides the developer community, it's whether to use use code comments or not. Some believe code should be self-documenting and code comments are a &lt;a href="https://en.wikipedia.org/wiki/Code_smell" rel="noopener noreferrer"&gt;code smell&lt;/a&gt;, a sign of an underlying problem. On the other side of the fence, others believe that self-documenting code is a fairytale and code comments are useful. So what's the answer?&lt;/p&gt;

&lt;h2&gt;
  
  
  The argument against code comments
&lt;/h2&gt;

&lt;p&gt;Supporters of self-documenting code often highlight that "readable" code and that comments that can become stale or out-of-date and misleading as a result. Allen Holub argues that well-designed code that uses descriptive names shouldn't need code comments:&lt;/p&gt;

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

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



&lt;/p&gt;

&lt;p&gt;Similarly in this post on &lt;a href="https://testing.googleblog.com/2017/07/code-health-to-comment-or-not-to-comment.html" rel="noopener noreferrer"&gt;code health&lt;/a&gt; developers Dori Reuveni and Kevin Bourrillion wrote: "While reading code, often there is nothing more helpful than a well-placed comment. However, comments are not always good. &lt;strong&gt;Sometimes the need for a comment can be a sign that the code should be refactored&lt;/strong&gt;."&lt;/p&gt;

&lt;h2&gt;
  
  
  Is self-documenting code a myth?
&lt;/h2&gt;

&lt;p&gt;Those opposed to self-documenting code believe it's something of a myth and perhaps more a reflection of programmers' hatred of writing documentation:&lt;/p&gt;

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

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



&lt;/p&gt;

&lt;p&gt;Along the same lines developer and co-founder of &lt;a href="https://www.writethedocs.org/" rel="noopener noreferrer"&gt;Write the Docs&lt;/a&gt; Eric Holscher called self-documenting "the biggest documentation myth in the software industry in this &lt;a href="https://www.ericholscher.com/blog/2017/jan/27/code-is-self-documenting/" rel="noopener noreferrer"&gt;post&lt;/a&gt;, arguing that code comments and documentation still have value.&lt;/p&gt;

&lt;p&gt;Meanwhile Jef Raskin &lt;a href="https://queue.acm.org/detail.cfm?id=1053354" rel="noopener noreferrer"&gt;wrote&lt;/a&gt; that while he endorsed the techniques that some programmers claim make code self-documenting, he also argued that these methods cannot provide the documentation necessary for &lt;em&gt;reliable&lt;/em&gt; and &lt;em&gt;maintainable&lt;/em&gt; code:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The fundamental reason code cannot ever be self-documenting and automatic documentation generators can’t create what is needed is that they can’t explain why the program is being written, and the rationale for choosing this or that method. They cannot discuss the reasons certain alternative approaches were taken.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  So when is it okay to use comments?
&lt;/h2&gt;

&lt;p&gt;The most common scenarios for needing to use code comments is if your code is particularly complex, it's absolutely impossible to make your code self-explanatory or you want to explain why you did something a certain way. Another popular shared principle for using code comments is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code explains the &lt;strong&gt;how&lt;/strong&gt;, code comments explain the &lt;strong&gt;why&lt;/strong&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a documentation advocate, I've personally always seen the value in comments, particular for a beginner or junior developer. Code is designed to be read and executed very literally by machines, whereas no two humans are the same. Our understanding is impacted by a whole host of factors including experience, knowledge level and grasp of a particular coding language. Rather tellingly, the PC Magazine definition of "self-documenting code" also comes with this footnote:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;It's very subjective [...] what one programmer thinks is self- documenting may truly be indecipherable to another...&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Tips on writing code comments
&lt;/h2&gt;

&lt;p&gt;If you're going to use code comments, there are a number of thing you can do to make them as helpful and useful as possible:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Use descriptive names
&lt;/h3&gt;

&lt;p&gt;Before you even consider using a code comment, check you can't use a more descriptive name. For example, instead of using a comment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;int time = ... // Returns time in seconds
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You could use a more descriptive name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;int timeInSeconds
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Don't comment the obvious
&lt;/h3&gt;

&lt;p&gt;If it's obvious what the code does, don't duplicate this in a comment. For example, don't do this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;print "Hello, World!" // Console prints "Hello, World!"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Keep it concise
&lt;/h3&gt;

&lt;p&gt;I would try to keep the number and length of comments to a minimum. There is nothing worse than finding a wall of text in someone’s code. Studies have actually found a correlation between sentence length and user comprehensions. &lt;/p&gt;

&lt;h3&gt;
  
  
  4. Avoid ambiguous words
&lt;/h3&gt;

&lt;p&gt;Certain words can create ambiguity in your documentation. Some prime examples of ambiguous words include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Should&lt;/strong&gt;: Suggests an action is optional rather than mandatory. For example, "You should do x to make this work". In most cases its better to use the word &lt;strong&gt;must&lt;/strong&gt; instead.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Please&lt;/strong&gt;: Everyone writes please because it's polite but it makes an instruction sound like a request rather than a requirement. Be rude, don't say please. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;This&lt;/strong&gt; and &lt;strong&gt;it&lt;/strong&gt;: Ambiguous pronouns like ‘this’ and ‘it’ make it unclear what the subject or object of your sentence is. Always clarify if you can.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Don't use jargon
&lt;/h3&gt;

&lt;p&gt;Don’t use jargon or acronyms that not everyone will understand. Sometimes we get so caught up in our work, it’s easy to forget what is a common, everyday language for you, might be completely alien to someone else. &lt;/p&gt;

&lt;p&gt;For example, instead of writing an acronym write it out in full the first time your write it. For example: &lt;strong&gt;Java virtual machine&lt;/strong&gt; (JVM), &lt;strong&gt;Kubernetes&lt;/strong&gt; (K8s), &lt;strong&gt;JSON Web Token (JWT)&lt;/strong&gt; etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Avoid passive voice
&lt;/h3&gt;

&lt;p&gt;Passive voice creates questions and ambiguity. Always include the subject that is performing the action if possible. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ &lt;strong&gt;Passive voice&lt;/strong&gt;: "The web service is queried." What is sending the query?&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Active voice&lt;/strong&gt;: "The user queries the web service." It is clear what the subject of the sentence is.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7. Avoid slang and dialect words
&lt;/h3&gt;

&lt;p&gt;Using slang or dialect in code comments is likely to cause confusion.&lt;br&gt;
For example, a British developer might write:&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="se"&gt;\\&lt;/span&gt; Sorry, I wrote this code when I was knackered so it might be rubbish.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case, dialect words like 'knackered' (tired) and 'rubbish' (garbage or trash) might not make sense to English speakers from other countries let alone non-native English speakers! &lt;/p&gt;

&lt;h3&gt;
  
  
  8. Stick to one language
&lt;/h3&gt;

&lt;p&gt;Don’t write in multiple languages. Most people might understand common Latin words but not everyone will understand them so think about using friendlier alternatives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;e.g.&lt;/strong&gt;: Use &lt;strong&gt;For example,&lt;/strong&gt; instead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;i.e&lt;/strong&gt;: Use &lt;strong&gt;that is&lt;/strong&gt; instead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;N.B&lt;/strong&gt;: Use &lt;strong&gt;Please note&lt;/strong&gt; or &lt;strong&gt;Note:&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fadjetjt9vgqhknz5n46q.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fadjetjt9vgqhknz5n46q.gif" alt="Latin"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Avoid location &amp;amp; temporal words
&lt;/h3&gt;

&lt;p&gt;Time never stops and the location of code may change at some point in the future. As a result, it's best to avoid the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🗺️ &lt;strong&gt;Location words&lt;/strong&gt;: Above, below.&lt;/li&gt;
&lt;li&gt;🕰️ &lt;strong&gt;Temporal words&lt;/strong&gt;: New, latest, current, up-to-date.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  10. Be cautious with humour
&lt;/h3&gt;

&lt;p&gt;Everyone likes a joke every now and then. Wouldn’t life be boring if we lost our sense of humour? I found this example of humour on Stackoverflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;stop(); // Hammertime!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F5z9qbpnd18fv55vbidrj.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F5z9qbpnd18fv55vbidrj.gif" alt="Stop Hammertime!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While this is funny if you know the &lt;a href="https://www.youtube.com/watch?v=otCpCn0l4Wo" rel="noopener noreferrer"&gt;MC Hammer song&lt;/a&gt;, it’s worth bearing in mind some people won't find this funny if they don't understand the cultural reference. A comment like this may well end up confusing or annoying some people.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;If you skipped to the end, in summary... although some people are advocates for self-documenting code, others think code comments can be useful if your code is complex or if you feel the need to explain why you did something a certain way. In my opinion:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using code comments&lt;/strong&gt; &amp;gt; &lt;strong&gt;Writing code people can’t understand&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you &lt;em&gt;are&lt;/em&gt; going to use code comments, my tips include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use descriptive names.&lt;/li&gt;
&lt;li&gt;Don't comment the obvious.&lt;/li&gt;
&lt;li&gt;Keep it concise.&lt;/li&gt;
&lt;li&gt;Avoid ambiguous words.&lt;/li&gt;
&lt;li&gt;Don't use jargon. Define acronyms if you do.&lt;/li&gt;
&lt;li&gt;Use the active voice where possible.&lt;/li&gt;
&lt;li&gt;Avoid using slang.&lt;/li&gt;
&lt;li&gt;Don't write in Latin.&lt;/li&gt;
&lt;li&gt;Avoid location/temporal words.&lt;/li&gt;
&lt;li&gt;Be careful with humour (probably best to avoid!).&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>documentation</category>
      <category>ux</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>How to write a kickass README</title>
      <dc:creator>James.Scott</dc:creator>
      <pubDate>Mon, 28 Oct 2019 18:57:08 +0000</pubDate>
      <link>https://dev.to/scottydocs/how-to-write-a-kickass-readme-5af9</link>
      <guid>https://dev.to/scottydocs/how-to-write-a-kickass-readme-5af9</guid>
      <description>&lt;p&gt;Arguably the single most important piece of documentation for any open source project is the README. A good README not only informs people what the project does and who it is for but also how they use and contribute to it.&lt;/p&gt;

&lt;p&gt;If you write a README without sufficient explanation of what your project does or how people can use it then it pretty much defeats the purpose of being open source as other developers are less likely to engage with or contribute towards it.&lt;/p&gt;

&lt;p&gt;TL;DR - Too long? Skip to the end and use my template.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a README?
&lt;/h2&gt;

&lt;p&gt;Essentially a README is a single text file (&lt;code&gt;.txt&lt;/code&gt; or &lt;code&gt;.md&lt;/code&gt;) that acts as the one-stop shop documentation for a project or directory. It is usually the most visible piece of documentation and landing page for most open source projects. Even a README file's name in all-caps is designed to catch your reader's attention and ensure it is the first thing they read.&lt;/p&gt;

&lt;p&gt;There's evidence that READMEs date back as far as the 1970s. The oldest example I could find was &lt;a href="http://pdp-10.trailing-edge.com/decus_20tap3_198111/01/decus/20-0079/readme.txt.html" rel="noopener noreferrer"&gt;this README&lt;/a&gt; for DEC's PDP-10 computer which is dated 27th November 1974. Although the origin of the name README is disputed, the two most popular theories are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Programmers of the original mainframe computers which came with punch cards, would leave a stack of paper instructions with “READ ME!” written across the front.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The name is a nod to Lewis Carroll's Alice in Wonderland in which the main character Alice finds a bottle of potion labelled “DRINK ME” and cake labelled "EAT ME" which make her change in size.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What should you include in a README?
&lt;/h2&gt;

&lt;p&gt;Ok, so what should an awesome README file contain? As a starting point, I would recommend you include the following key things:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Name the thing&lt;/strong&gt;&lt;br&gt;
Don't forget to give your project or feature a name. There are a surprising number of projects on GitHub that don't have a name.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. An introduction or summary&lt;/strong&gt;&lt;br&gt;
Write a short two or three line introduction explaining what your project does and who it is for. Also leave out headings like 'Introduction', 'Summary' or 'Overview' - it's obvious this is an introduction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Prerequisites&lt;/strong&gt; &lt;br&gt;
Immediately after your introduction add a section titled listing any prerequisite knowledge or tools anyone who wants to use the project might need before they begin. For example, if it runs on the latest version of Python, tell them to install Python. Here's an example:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;

Prerequisites

Before you continue, ensure you have met the following requirements:
&lt;span class="p"&gt;
*&lt;/span&gt; You have installed the latest version of Ruby.
&lt;span class="p"&gt;*&lt;/span&gt; You are using a Linux or Mac OS machine. Windows is not currently supported.
&lt;span class="p"&gt;*&lt;/span&gt; You have a basic understanding of graph theory.&lt;span class="sb"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;4. How to install the thing&lt;/strong&gt;&lt;br&gt;
Provide installation steps! It's amazing how many projects I've come across that only provide basic usage instructions and expect you to magically know how to install it. Make sure to break the installation down into numbered steps if it requires multiple steps. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. How to use the thing&lt;/strong&gt;&lt;br&gt;
Add steps for how to use the project once the user has installed it. Make sure to include usage examples and a reference explaining command options or flags if you think they will be helpful. If you have more advanced documentation in a separate file or site, link to this from here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. How to contribute to the thing&lt;/strong&gt;&lt;br&gt;
Provide steps for contributing to the project. Alternatively you might want to create a contributor's guide in a separate file and link to this from your README if you want people to read it before contributing pull requests to your project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Add contributors&lt;/strong&gt;&lt;br&gt;
Credit any contributors who have helped with the project in an author section. It's a nice way to make open source feel like a team effort and acknowledges everyone who has taken the time to contribute. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Add acknowledgements&lt;/strong&gt;&lt;br&gt;
Similarly, if you have used anyone else's work (code, designs, images etc) that has a copyright that requires acknowledgement, you might want to add that here. You can also acknowledge any other developers or institutions who helped with the project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. Contact information&lt;/strong&gt;&lt;br&gt;
You might not want to do this is you're an extremely private person but if someone has questions, wants to collaborate with you or is impressed enough with your project to offer you a job opportunity, it makes sense to have your contact details front and centre.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10. Add licence information&lt;/strong&gt;&lt;br&gt;
You definitely want to include licence information if applicable. Startups and other companies who rely on third-party software are unlikely to be able to use your project unless you provide this. Check out &lt;a href="https://choosealicense.com/" rel="noopener noreferrer"&gt;choosealicense.com&lt;/a&gt; or &lt;a href="https://opensource.org/licenses" rel="noopener noreferrer"&gt;opensource.org&lt;/a&gt; for a list of licences you may be able to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Add flare to your README 🔥
&lt;/h2&gt;

&lt;p&gt;If you really want to make your README stand out and look visually appealing you can do things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Add a logo&lt;/strong&gt;: If your project has a logo, add this at the top of your README. Branding makes a project looks more professional and helps people remember it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Add badges or shields&lt;/strong&gt;: You can add badges and shields to reflect the current status of the project, the licence it uses and if any dependencies it uses are up-to-date. Plus they look pretty cool! You can find a list of badges or design your own at &lt;a href="https://shields.io/" rel="noopener noreferrer"&gt;Shields.io&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Add screenshots&lt;/strong&gt;: Sometimes a simple screenshot or set of screenshots can say far more than a thousand words. Be warned though, if you do use screenshots you will need to update them each time you update your project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use emojis?&lt;/strong&gt;: A lot of projects seem to use emojis these days, although it’s up to you whether you want to use them. They can be a good way to inject a bit colour and humour into your README and makes the project feel a bit more human. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're using &lt;a href="https://allcontributors.org/" rel="noopener noreferrer"&gt;All Contributors&lt;/a&gt; to acknowledge contributions, you could use their &lt;a href="https://allcontributors.org/docs/en/emoji-key" rel="noopener noreferrer"&gt;emoji key&lt;/a&gt; to denote different contributions types:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* 🐛 for raising a bug
* 💻 for submitting code
* 📖 for docs contributions etc.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;This is what GitHub badges or shields look like for reference (No doubt you've seen them before!):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fde766ouyuouxmjs2yvcm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fde766ouyuouxmjs2yvcm.png" alt="Shields.io badges"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My template &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;I've created a template that covers most of the recommendations made in this post. Feel free to fork the repository, make suggestions to improve it or customize it for your own purposes! You can find my template on GitHub &lt;a href="https://github.com/scottydocs/README-template.md" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;If you want more advice on READMEs, I'd also recommend these resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Daniel Beck's talk &lt;a href="https://www.youtube.com/watch?v=2dAK42B7qtw" rel="noopener noreferrer"&gt;'Write the Readable'&lt;/a&gt; from Write the Docs in 2016.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lorna Jane Mitchell's talk &lt;a href="https://youtu.be/fXMN4X9B8Rg" rel="noopener noreferrer"&gt;'Github as a landing page'&lt;/a&gt; from API the Docs 2019.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check out Franck Abgrall's &lt;a href="https://github.com/kefranabg/readme-md-generator" rel="noopener noreferrer"&gt;README generator&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>opensource</category>
      <category>documentation</category>
      <category>github</category>
      <category>beginners</category>
    </item>
    <item>
      <title>My bitesize Unix tutorial (with pixel art)
</title>
      <dc:creator>James.Scott</dc:creator>
      <pubDate>Fri, 18 Oct 2019 12:33:51 +0000</pubDate>
      <link>https://dev.to/scottydocs/my-bitesize-unix-tutorial-with-pixel-art-9hh</link>
      <guid>https://dev.to/scottydocs/my-bitesize-unix-tutorial-with-pixel-art-9hh</guid>
      <description>&lt;p&gt;While it might not be everyone’s cup of tea, Unix command line is incredibly useful to learn. Unix-based operating systems are under the hood of everything from Android phones to Chromebooks, Macbooks and even Playstations so there’s a pretty high chance you have used a *nix-powered device at some point in your life.&lt;/p&gt;

&lt;p&gt;Learning Unix command line offers you a quick and powerful way to carry out tasks like file management, troubleshooting and customisation. Plus the next time you watch Mr Robot you might actually be able to understand some of what Elliot is typing!&lt;/p&gt;

&lt;p&gt;Inspired by the covers of Julia Evans’ &lt;a href="https://wizardzines.com"&gt;programming zines&lt;/a&gt;, I’ve created a tutorial to explain most of the commonly-used Unix commands, along with some accompanying pixel art — specially designed for people who don’t want to make a meal out of learning Unix 😉.&lt;/p&gt;

&lt;h2&gt;
  
  
  Entrée — Listing files and directories.
&lt;/h2&gt;

&lt;p&gt;To start using Unix, it’s important to know how to navigate your way around your file system and its various directories:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--30oob509--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/6bzlcfvo3376fwwgxp6o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--30oob509--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/6bzlcfvo3376fwwgxp6o.png" alt="ls,cd,pwd and mkdir"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls&lt;/code&gt; (list segments — like a lemon!) — lists the files and directories in your current working directory. You can use different options with &lt;code&gt;ls&lt;/code&gt; to sort or display additional information:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls -l&lt;/code&gt;: displays files + permissions, owner, group, size, time and name.&lt;br&gt;
&lt;code&gt;ls -t&lt;/code&gt;: sorts files by time.&lt;br&gt;
&lt;code&gt;ls -r&lt;/code&gt;: sorts files in reverse order.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd&lt;/code&gt; (change directory) — change your current working directory to another folder. You can specify the file path you want to move to as follows:&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;cd&lt;/span&gt; /usr/folder/subfolder
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can go back to the previous directory with cd -or move up one folder with &lt;code&gt;cd ..&lt;/code&gt; or move up three folders with &lt;code&gt;cd ../../..&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pwd&lt;/code&gt; (print working directory) — displays the path of the current working directory you are in. Not really used for much else, just a good way to find out where on earth you are if you get lost!&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mkdir&lt;/code&gt; (make directory) — creates a directory if it does not already exist. For example, to create a directory called “stuff”:&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;stuff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also make subdirectories using the &lt;code&gt;-p&lt;/code&gt; option:&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; &lt;span class="nt"&gt;-p&lt;/span&gt; /home/stuff/morestuff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also use &lt;code&gt;rmdir&lt;/code&gt; to remove a directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Starter — File operations
&lt;/h2&gt;

&lt;p&gt;The next things to familiarise yourself with are copying, moving, creating and removing things:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KXT47v6g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/6rtoio3z6kcikslueimd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KXT47v6g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/6rtoio3z6kcikslueimd.png" alt="cp and others"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cp&lt;/code&gt; (copy) — creates a duplicate of file or directory. To use it, type &lt;code&gt;cp&lt;/code&gt; followed by the source file and the new file name. For example:&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;cp &lt;/span&gt;myfile1.txt myfile2.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alternatively enter the source file name and location you want to create a copy in. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cp myfile.txt /Users/your.name/Documents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;mv&lt;/code&gt;(move) — move one or more files or directories from one location to another. Like &lt;code&gt;cp&lt;/code&gt; it follows the format, &lt;code&gt;mv sourcefile destination&lt;/code&gt;. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mv ~/Desktop/myfile.text ~/MyFolder
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;touch&lt;/code&gt; — a quick way to create a file or multiples files. You can also use touch to change a file’s timestamp. Pass the name of the file you want to create as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;touch filename.text
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If a file already exists with that name, &lt;code&gt;touch&lt;/code&gt; updates the file’s access time (last time it was read), modification time (last time the contents were modified) and change time (last time the file’s metadata was changed).&lt;/p&gt;

&lt;p&gt;&lt;code&gt;rm&lt;/code&gt; (remove) — delete files. Enter the command and the file’s location:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rm /home/Desktop/-file.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Be warned &lt;code&gt;rm&lt;/code&gt; can be quite a dangerous command to use if you don’t know what you’re doing. The one to really avoid is the dreaded &lt;code&gt;rm -rf /&lt;/code&gt; which essentially deletes every file in your Unix system. Linux blogger Wayne Richardson posted a video of what happens if you run it if you’re curious:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/D4fzInlyYQo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Main — File searching, permissions and ownership.
&lt;/h2&gt;

&lt;p&gt;You can search for files and directories and change the permissions and ownership for different files and directories:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Kjyak3JR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/mndvdq8x9wuweb9fgx5b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Kjyak3JR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/mndvdq8x9wuweb9fgx5b.png" alt="Main pixelart"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;find&lt;/code&gt; — find files and directories in your system. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;find ./directoryname -name file.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also find all files with a certain pattern. For example, all files that end &lt;code&gt;.txt&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;find ./directoryname -name *.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;grep&lt;/code&gt; (global regular expression print) — search for text or search within a specified file for text matching a given string. You can couple it with the &lt;code&gt;-i&lt;/code&gt; to make case insensitive searches:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$grep -i "grape" wine.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This would return:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Grape varieties includes cultivated grape, whether used for wine, or eating as a table grape, fresh or dried (raisin, currant, sultana). The origin of the word grape comes from a Frankish or other Germanic word 'grap' meaning "hook".
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also use &lt;code&gt;grep&lt;/code&gt; to count the number of times a word appears in a file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$grep -c "grape" wine.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For this file the output would be 4.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chmod&lt;/code&gt;(change mode) — changes the permissions for files and directories. There are three classes you define permissions for: Owner (the owner of the file), Group (users of the same group) and Others (anyone else). You enter one of the following numbers for each class when you run chmod:&lt;/p&gt;

&lt;p&gt;0 — No permission.&lt;br&gt;
1 — Execute.&lt;br&gt;
2 — Write.&lt;br&gt;
3 — Write and execute.&lt;br&gt;
4 — Read.&lt;br&gt;
5 — Read and execute.&lt;br&gt;
6 — Read and write.&lt;br&gt;
7 — Read, write, and execute.&lt;/p&gt;

&lt;p&gt;For example, &lt;code&gt;chmod 777&lt;/code&gt; grants read, write and execute permissions to all classes and &lt;code&gt;chmod 755&lt;/code&gt; grants all permissions to the owner of the file but only read and execute permissions to other users.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chown&lt;/code&gt;(change owner) — changes ownership of files and directories in your file system. To change the owner of a text file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo chown myuser myfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Extras — Comparing, linking, tailing and killing.
&lt;/h2&gt;

&lt;p&gt;You can compare files, link files, output the tail of files and kill processes:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_Iqo7ZUC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/h0s6ojh4k3zob9jsibzy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_Iqo7ZUC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/h0s6ojh4k3zob9jsibzy.png" alt="Extras pixel art"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cmp&lt;/code&gt; — Compare the bytes between different files. If there are no differences between the two files, no output is returned. The format for using cmp is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cmp -b textfile1.txt textfile2.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output for files with several differences is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;textfile1.txt textfile2.txt differ: byte 20, line 1 is  56 . 162 r
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;cat&lt;/code&gt;(concatenate) — use it to create a file, link multiple files together or display the contents of a file. For example, to link or “concatenate” two text files (file1.txt and file2.txt) to create new text file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cat file1.txt file2.txt &amp;gt; file3.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;tail&lt;/code&gt; — output the “tail”, the final part, of a file. By default tail outputs the last 10 lines of a file. You can use tail as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tail textfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To output a greater number of lines, you can use the &lt;code&gt;-n&lt;/code&gt; option:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tail -n 50 textfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;kill&lt;/code&gt; — terminates a process. To see the signals you can kill run: &lt;code&gt;kill -l&lt;/code&gt;. You can terminate a specific process as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kill -s signalName PID
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Desserts — More, Curl, SSH and Sudo.
&lt;/h2&gt;

&lt;p&gt;Some additional commands you can use in Unix include more, cURL, SSH and Sudo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bIgIq63Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/zin7tw51cbm6qqlaq3aw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bIgIq63Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/zin7tw51cbm6qqlaq3aw.png" alt="Desserts"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;more&lt;/code&gt; — display more text on the screen. To use &lt;code&gt;more&lt;/code&gt; to display the contents of a file beginning at line 10:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;more +10 myfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;curl&lt;/code&gt; (Client URL) — a command line tool for transferring data over various protocols (HTTP, SMTP, LDAP, SCP etc). This comes in-built with MacOS and most Linux-based operating systems.&lt;/p&gt;

&lt;p&gt;You can use cURL to send data or retrieve data over HTTP using an API request. For example, if you set up a webhook with Slack, you can use cURL to send a message to a Slack channel:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -X POST -H 'Content-type: application/json' --data '{"text":"Good morning everyone!"}' your_webhook_url
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;ssh&lt;/code&gt; (Secure Shell) — use it to operate securely over an unsecured network. The syntax for using ssh to login to a remote host is as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh remote_host
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alternatively to &lt;code&gt;ssh&lt;/code&gt; into the remote host as a root user. For example, this might be useful if you wanted to edit configuration files on a system in a virtual machine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh root@remote_host
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;sudo&lt;/code&gt; (superuser do) — allows you to execute commands as a superuser. You can use sudo if you know the root password for your Unix system. For example to shutdown your machine using sudo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo shutdown -r now
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Drinks — Text editors.
&lt;/h2&gt;

&lt;p&gt;There a number of core text editors you can use in Unix-based operating systems:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S-082rmA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/1irxp4fgbapeie5ak00i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S-082rmA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/1irxp4fgbapeie5ak00i.png" alt="Drinks pixel art"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vi&lt;/code&gt; — the original text editor created for Unix by developer Bill Joy. Despite being released way back in 1976 it is still one of the most popular text editors for Linux-based systems.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vim&lt;/code&gt; (short for Vi Improved) — is a clone of the original Vi editor. Enhancements with Vim are the inclusion of plugins, the comparison and merging of files, and the ability to edit compressed files in formats such as gzip, zip and tar.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;emacs&lt;/code&gt; (Editor MACroS) — another old-timer of a text editor. Like Vi, it was also released in 1976 and is one of the oldest open source projects still in development.&lt;/p&gt;

&lt;p&gt;One cool tip if you launch Emacs is if you press &lt;strong&gt;Esc&lt;/strong&gt;, type 'x' and type 'pong', it launches a game of pong:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uI96jP6j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3qhj9az6vxor2uuu9h03.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uI96jP6j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3qhj9az6vxor2uuu9h03.png" alt="Screenshot of pong being played in the emacs editor"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This also works for tetris, snake, and solitaire (the marble game not the card game!).&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nano&lt;/code&gt; — another editor for Unix-like operating systems. Initially released in June 2000, GNU nano is a simple text editor that’s very beginner friendly.&lt;/p&gt;

&lt;p&gt;You can also use open-source text editors like Atom or Sublime if you prefer. These come with way more bells and whistles (things like linters to check there are no syntax or stylistic errors in your code). Hopefully some of this tutorial was useful. Good luck on your *nix adventures and remember to be careful with &lt;code&gt;rm&lt;/code&gt;!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Here is the full “&lt;a href="https://ibb.co/vzNvPxZ"&gt;menu&lt;/a&gt;” of pixel art if you want to download it.&lt;/p&gt;

</description>
      <category>unix</category>
      <category>linux</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to build a documentation culture</title>
      <dc:creator>James.Scott</dc:creator>
      <pubDate>Mon, 07 Oct 2019 11:32:09 +0000</pubDate>
      <link>https://dev.to/scottydocs/how-to-build-a-documentation-culture-2mk7</link>
      <guid>https://dev.to/scottydocs/how-to-build-a-documentation-culture-2mk7</guid>
      <description>&lt;p&gt;Some of you probably don’t like writing documentation, most of you might even hate it. Writing docs often seems to be treated like the annoying but necessary task that is left until the last minute or sometimes forgotten about altogether. However, writing documentation is important for a number of reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Not writing good documentation creates technical debt.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you have poor docs, your colleagues (new team members in particular) or your end users have to ask you questions — this costs you time!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Without docs, you create knowledge silos where only a few engineers know how an aspect of your technology works. If these people leave your team it creates knowledge gaps.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you think documentation is lacking at your company, whether it is a tech startup or a mature software company, there are a number of things you can do to try and build a better documentation culture.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Find someone to drive it
&lt;/h2&gt;

&lt;p&gt;If you don’t already have a technical writer, UX writer or content specialist in your team and you have the budget, then hire one! They will become the foundation of establishing your docs culture.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F40ii4cmrmdnnqvkhwiff.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F40ii4cmrmdnnqvkhwiff.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alternatively, you could try finding a “documentarian” — or “friend of the docs” — a programmer or perhaps a tester who is a good wordsmith and knows enough about your existing documentation and is willing to help drive the documentation effort.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Create a style guide
&lt;/h2&gt;

&lt;p&gt;You can establish a form of quality control by picking or writing a style guide. This becomes your reference to ensure best practices and for things like terminology, capitalisation, syntax and tone and voice. If you don’t have the time or resources to write your own, you can adopt an existing one. Most technical writers refer to one of the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://docs.microsoft.com/en-us/style-guide/welcome/" rel="noopener noreferrer"&gt;Microsoft Writing Style Guide&lt;/a&gt; (formerly Microsoft Manual of Style)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.chicagomanualofstyle.org/home.html" rel="noopener noreferrer"&gt;Chicago Manual of Style&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developers.google.com/style" rel="noopener noreferrer"&gt;Google Developer Documentation Style Guide&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You will also find some useful style resources at &lt;a href="https://www.writethedocs.org" rel="noopener noreferrer"&gt;Write the Docs&lt;/a&gt;, a global community of people who care about documentation. There is even an entire page about &lt;a href="https://www.writethedocs.org/guide/writing/style-guides/" rel="noopener noreferrer"&gt;style guides&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Use spell checkers and linters
&lt;/h2&gt;

&lt;p&gt;Another way to establish consistency in your technical content is to encourage the use of spell checkers and linters. If you use open-source text editors like Atom or Sublime, you can install free spelling checking linters to help drive the accuracy and consistency of spelling and grammar. Some linters and tools you could consider include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://alexjs.com/" rel="noopener noreferrer"&gt;Alex&lt;/a&gt;&lt;/strong&gt;: Linter available on multiple platforms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://atom.io/packages/linter-american" rel="noopener noreferrer"&gt;American linter&lt;/a&gt;&lt;/strong&gt;: Linter to make spelling American again. This is useful if you're from Europe, Asia or Africa but work for a US-based company who use American spelling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="http://www.hemingwayapp.com/" rel="noopener noreferrer"&gt;Hemingway&lt;/a&gt;&lt;/strong&gt;: App that checks content for passive voice and gives a readability grade level (a high grade level means your text may be confusing or tedious for the reader).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/btford/write-good" rel="noopener noreferrer"&gt;Write Good&lt;/a&gt;&lt;/strong&gt;: Linter for English prose for developers. Available for Atom and Visual Studio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/errata-ai/vale" rel="noopener noreferrer"&gt;Vale&lt;/a&gt;&lt;/strong&gt;: A natural language linter that supports plain text, markup and source code comments. Available via CLI and as a desktop app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Alternatively, you can create some form of presubmit check or filter to prevent specific typos or spelling mistakes. It may be little heavy-handed but I have created several presubmit checks to prevent developers in my current team from using ambiguous terminology.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Raise bugs
&lt;/h2&gt;

&lt;p&gt;Another good way to raise awareness about documentation is to raise bugs against spelling or grammatical issues in your product itself or in the codebase.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F8afyd01lqx6pclmnuycy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F8afyd01lqx6pclmnuycy.png" alt="How to raise a bug in three simple steps"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I joined a startup, I was initially nervous about raising bugs and interrupting developer velocity but after a few months of highlighting things like spelling issues, passive voice and typos, more and more engineers started coming to me for advice about content such as error messages, release notes, parameter names and code comments so we were able to ensure the text was correct in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Reward writing
&lt;/h2&gt;

&lt;p&gt;While it might sound cynical, offering your colleagues rewards or incentives for contributing to the documentation can work. Some things you might consider include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Running a "doc-a-thon" or one-day docs sprint and offering prizes to the people who contribute the most documentation changes.&lt;/li&gt;
&lt;li&gt;If your company runs a peer bonus scheme like &lt;a href="https://bonus.ly/" rel="noopener noreferrer"&gt;Bonusly&lt;/a&gt;, give contributors peer bonus points for their documentation efforts.&lt;/li&gt;
&lt;li&gt;Offer physical rewards or swag for contributions to docs such as stickers or mugs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a naive junior technical writer, I even had some success with buying chocolate bars for developers who helped me with documentation but I’m not sure this is the healthiest option for your colleagues or your wallet!&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Offer documentation training
&lt;/h2&gt;

&lt;p&gt;If you’re a solo documentation writer in a large team of developers, you can’t realistically be expected to write everything. Your best bet is to teach your team some documentation best practices to improve the quality of your docs. Some topics you might want to cover include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Voice&lt;/strong&gt;: Using active voice instead of passive voice. The latter can create ambiguity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ambiguity&lt;/strong&gt;: Avoiding the use of words that can create ambiguity. For example, if an action is mandatory use ‘you must do x’ instead of ‘you should do x’. The word 'should' suggests an action is optional.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audience&lt;/strong&gt;: Encourage your team to think about who they are writing for and any prerequisite knowledge or tools they might need.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. Give talks about documentation
&lt;/h2&gt;

&lt;p&gt;I used to be terrified of public speaking but over the past two years, I’ve given a number of internal and external talks about documentation and best practices.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F6ybk01ba1zryqsoatc4e.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F6ybk01ba1zryqsoatc4e.jpg" alt="Photo of me speaking at Write the Docs conference in Prague"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s not only been a great way to test yourself and overcome your fears (if you’re not a comfortable public speaker) but it also helped to raise awareness about the importance of technical documentation both at your company and in the wider community.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Use the open source community
&lt;/h2&gt;

&lt;p&gt;If your product is open source, you can reach out to technical writers and documentarians in the open source community to help with your documentation.&lt;/p&gt;

&lt;p&gt;Some companies like Google run open source initiatives where they actually pay technical writers to contribute to open source projects. See &lt;a href="https://developers.google.com/season-of-docs" rel="noopener noreferrer"&gt;Season of Docs&lt;/a&gt; for more details.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;So in summary, if you want to get started and build some form of documentation culture and improve your company’s technical content:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find a writer or “documentarian” to drive the docs.&lt;/li&gt;
&lt;li&gt;Create or choose a style guide to establish consistency.&lt;/li&gt;
&lt;li&gt;Use spell checkers or linters to establish quality.&lt;/li&gt;
&lt;li&gt;Raise bugs to raise documentation awareness.&lt;/li&gt;
&lt;li&gt;Reward writing to encourage others to contribute.&lt;/li&gt;
&lt;li&gt;Offer training to empower your colleagues.&lt;/li&gt;
&lt;li&gt;Give talks to inspire and teach others about docs.&lt;/li&gt;
&lt;li&gt;Use open source if you need more help!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are probably lots of other things you can try but if you attempt some of these suggestions, I think you’ll be on your way to creating a documentation culture at your company. Good luck!&lt;/p&gt;

</description>
      <category>documentation</category>
      <category>culture</category>
    </item>
  </channel>
</rss>
