<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ language - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ language - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 26 May 2026 10:37:26 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/language/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ How to Help Translate freeCodeCamp into Your Native Language ]]>
                </title>
                <description>
                    <![CDATA[ The freeCodeCamp community has been hard at work translating our 9,000+ tutorials into many world languages. Quality is everything. So instead of relying on machine translation, we are doing this entire process by hand. Dozens of native speakers are ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/help-translate-freecodecamp-language/</link>
                <guid isPermaLink="false">66b8d3890c9c1d363b7c4222</guid>
                
                    <category>
                        <![CDATA[ community ]]>
                    </category>
                
                    <category>
                        <![CDATA[ language ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Quincy Larson ]]>
                </dc:creator>
                <pubDate>Wed, 15 Jun 2022 16:55:35 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/06/farzad-mohsenvand-pKhfJme9mP0-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>The freeCodeCamp community has been hard at work translating our 9,000+ tutorials into many world languages.</p>
<p>Quality is everything. So instead of relying on machine translation, we are doing this entire process by hand.</p>
<p>Dozens of native speakers are collaborating to make these free learning resources accessible to more people around the world.</p>
<p>Over the past two years, we've experimented with different approaches to this massive task. And I'm happy to announce that we have converged on some really efficient workflows.</p>
<h2 id="heading-the-freecodecamp-localization-process">The freeCodeCamp Localization Process</h2>
<p>For each language, our goal is to:</p>
<ol>
<li>Translate the most popular English tutorials into each world language, then publish them on the corresponding publication. For example, <a target="_blank" href="https://chinese.freecodecamp.org/news">the Chinese publication</a> now boasts more than 800 tutorials.</li>
<li>Then once we've made progress with that, we'll shift gears to focus on translating the core freeCodeCamp curriculum. For example, <a target="_blank" href="https://www.freecodecamp.org/portuguese/">the entire curriculum is now available in Portuguese</a>. (You can switch languages from the menu button.)</li>
<li>Finally, we will launch YouTube channels for each of these languages. <a target="_blank" href="https://www.youtube.com/freecodecampespanol">The Spanish YouTube channel</a> has been a big success, and already has more than 100,000 subscribers.</li>
</ol>
<p>We have already made significant progress with the following world languages:</p>
<ul>
<li>Arabic</li>
<li>Bengali</li>
<li>Chinese</li>
<li>German</li>
<li>Hindi</li>
<li>Italian</li>
<li>Japanese</li>
<li>Korean</li>
<li>Portuguese</li>
<li>Spanish</li>
<li>Swahili</li>
<li>Turkish</li>
<li>Ukrainian</li>
<li>Urdu</li>
</ul>
<p>And we eventually hope to support dozens of other languages as well.</p>
<h2 id="heading-how-to-translate-freecodecamp">How to Translate freeCodeCamp</h2>
<p>If you are interested in contributing, here's how you can get involved.</p>
<p>Step 1: <a target="_blank" href="https://docs.google.com/forms/d/e/1FAIpQLSdWC609yj1_2afEX0G8AGQyrkGj7bhj1J4XWgCt4BJGuzQk5g/viewform">Fill out this Google form</a>.</p>
<p>Step 2: <a target="_blank" href="https://discord.gg/PRyKn3Vbay">Join the freeCodeCamp Official Discord</a>, visit the "start-here" room, and follow the instructions there.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/06/discord-localization-start-here.jpg" alt="An arrow pointing to the start-here room in freeCodeCamp's Discord server" width="600" height="400" loading="lazy"></p>
<p>Note that Discord has a couple of verification steps you will need to complete.</p>
<p>If you see a message at the bottom of Discord that says "You must complete a few more steps before you can talk", click the "Complete" button, then read and agree to our community rules to finish the onboarding process.</p>
<p>Alternatively, if you just created your Discord account, you might need to wait up to 5 minutes to send messages. (This is an anti-spam counter-measure.)</p>
<h3 id="heading-you-will-get-an-email-from-a-language-lead-within-a-few-days">You will get an email from a Language Lead within a few days</h3>
<p>We have Language Leads for each world language. Depending on which language you want to contribute to, you will receive an email from one of them to learn a bit more about you and your goals.</p>
<p>They may give you access to the freeCodeCamp publication, where you can start translating articles.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/Spanish-freeCodeCamp-publication.png" alt="The Ghost dashboard for the Spanish publication." width="600" height="400" loading="lazy">
<em>We use Ghost, a powerful open source CMS, for our publication. This screenshot is our Spanish publication.</em></p>
<p>Here is a list of some of our active <a target="_blank" href="https://github.com/freeCodeCamp/news-translation-tasks/projects?query=is%3Aopen">GitHub project boards</a> where we have the articles we'd like to prioritize. Eventually we'll add more languages.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/06/image-6.png" alt="A directory of GitHub project boards for the Chinese, Portuguese, Spanish, Japanese, Ukrainian, Italian, and Korean News translation efforts." width="600" height="400" loading="lazy">
<em>A list of all the GitHub project boards for languages we're actively translating News articles for.</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/06/image-4.png" alt="The Spanish GitHub project board listing articles we're prioritizing translating." width="600" height="400" loading="lazy">
<em>The GitHub project board we use to coordinate our Spanish translation efforts.</em></p>
<h2 id="heading-lets-make-freecodecamp-accessible-to-everyone-around-the-world">Let's Make freeCodeCamp Accessible to Everyone Around the World</h2>
<p>This is a massive undertaking, and it will take many years. But the community has already made some concrete steps toward realizing this goal.</p>
<p>Please join us as we make these free learning resources more accessible to people around the world. 🌏🌍🌎</p>
<p>Happy coding.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What is a Contraction? Grammar and Definition ]]>
                </title>
                <description>
                    <![CDATA[ Take  a look at the following sentences: I’m learning how to  code. I'll get a software developer job.  Learning how to code doesn’t have to cost you money. The words I’m, I’ll and doesn’t are called contractions. In this article, you'll learn all ab... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/what-is-a-contraction-grammar-and-definition/</link>
                <guid isPermaLink="false">66b1e4cf98966ccde43c3c62</guid>
                
                    <category>
                        <![CDATA[ english ]]>
                    </category>
                
                    <category>
                        <![CDATA[ grammar ]]>
                    </category>
                
                    <category>
                        <![CDATA[ language ]]>
                    </category>
                
                    <category>
                        <![CDATA[ reading ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technical writing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ writing ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Dionysia Lemonaki ]]>
                </dc:creator>
                <pubDate>Mon, 20 Sep 2021 13:59:58 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/09/clarissa-watson-jAebodq7oxk-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Take  a look at the following sentences:</p>
<p>I’m learning how to  code.</p>
<p>I'll get a software developer job. </p>
<p>Learning how to code doesn’t have to cost you money.</p>
<p>The words <strong>I’m</strong>, <strong>I’ll</strong> and <strong>doesn’t</strong> are called contractions.</p>
<p>In this article, you'll learn all about contractions – what they are, when and where you'll most likely come across them, when and when not to use them. Finally you'll see some of the most common contractions used in the English language.</p>
<p>Let's get started!</p>
<h2 id="heading-what-are-contractions">What are contractions?</h2>
<p>Contractions, also known as 'short forms', are shortened words.</p>
<p>Specifically, a contraction is when two words are shortened in form and are put together to form one new word.</p>
<p>For example, <code>you</code> and <code>are</code> can be combined to create a shorter word, <code>you’re</code>.</p>
<p>When two words are combined, certain letters will disappear. You can lose just one letter or more, depending on the contraction.</p>
<p>When you combine those two words and the letter(s) disappear, an apostrophe (<code>’</code>) will take their place. </p>
<p>The missing, original letters get replaced by the apostrophe to show the place where the missing letters should be. Those letters will not appear in the contraction (as they've been replaced by the apostrophe).</p>
<p>For example, take the word <code>isn't</code>. This contraction combines the words <code>is</code> and <code>not</code>. When those two get paired together, the letter <code>o</code> disappears. An apostrophe now takes its place to show where the missing letter was.</p>
<p>Another example is when <code>you</code> and <code>will</code> get combined to form <code>you'll</code>. Now two letters disappear,<code>w</code> and <code>i</code>, and the apostrophe fills that space of two missing letters.</p>
<h2 id="heading-when-do-you-use-contractions">When do you use contractions?</h2>
<p>We use contractions every day in both speech and writing.</p>
<p>You'll hear them from your friends, family, and on TV. You'll see them in novels, non-fiction books, newspapers, instruction manuals, blog posts, learning material, and much more. There are a couple in this very paragraph, and I use them throughout this article.</p>
<p>They are informal and casual, since they give your writing a more friendly, light, accessible, and approachable tone. </p>
<p>Contractions can make the reader feel like you are talking directly to them and having a conversation. It helps make your writing appear uncomplicated for everyone to understand and make sense of.</p>
<p>Because contractions are shorter, it also means that they take up less space. Because of that, you'll often see them in advertisements where space is valuable.</p>
<p>In a nutshell, you can comfortably use contractions in more informal writing and on relaxed occasions.</p>
<h3 id="heading-when-to-avoid-using-contractions">When to avoid using contractions</h3>
<p>It's best to avoid using contractions when you want to maintain a more serious and formal tone in your writing.</p>
<p>For example, skip using them in academic research papers, important business presentations, or in any situation where informal writing or speech would not make much sense.</p>
<h2 id="heading-common-contractions">Common contractions</h2>
<p>Below are some of the most widely used and common contractions you'll encounter when speaking and writing in English.</p>
<h3 id="heading-common-contractions-ending-in-ll">Common Contractions ending in <code>-ll</code></h3>
<p>Contractions ending in <code>-ll</code> include the word <code>will</code>. The <code>w</code> and <code>i</code> letters get dropped.</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Contracted</td><td>Uncontracted</td></tr>
</thead>
<tbody>
<tr>
<td>I’ll</td><td>I + will</td></tr>
<tr>
<td>She’ll</td><td>She + will</td></tr>
<tr>
<td>It’ll</td><td>It + will</td></tr>
<tr>
<td>We’ll</td><td>We + will</td></tr>
<tr>
<td>You’ll</td><td>You + will</td></tr>
<tr>
<td>They’ll</td><td>They + will</td></tr>
<tr>
<td>Who’ll</td><td>Who + will</td></tr>
<tr>
<td>That’ll</td><td>That + will</td></tr>
<tr>
<td>There’ll</td><td>There + will</td></tr>
<tr>
<td>What’ll</td><td>What + will</td></tr>
<tr>
<td>When’ll</td><td>When + will</td></tr>
<tr>
<td>Where’ll</td><td>Where + will</td></tr>
<tr>
<td>How’ll</td><td>How + will</td></tr>
</tbody>
</table>
</div><h3 id="heading-common-contractions-ending-in-re">Common Contractions ending in <code>-re</code></h3>
<p>Contractions ending in <code>-re</code> include the word <code>are</code>. The letter <code>a</code> gets dropped.</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Contracted</td><td>Uncontracted</td></tr>
</thead>
<tbody>
<tr>
<td>We’re</td><td>We + are</td></tr>
<tr>
<td>You’re</td><td>You + are</td></tr>
<tr>
<td>They’re</td><td>You + are</td></tr>
<tr>
<td>Who’re</td><td>Who + are</td></tr>
<tr>
<td>What’re</td><td>What + are</td></tr>
<tr>
<td>When’re</td><td>When + are</td></tr>
<tr>
<td>Where’re</td><td>Where + are</td></tr>
<tr>
<td>Why’re</td><td>Why + are</td></tr>
<tr>
<td>How’re</td><td>How + are</td></tr>
</tbody>
</table>
</div><h3 id="heading-common-contractions-ending-in-s">Common Contractions ending in <code>-s</code></h3>
<p>Contractions ending in <code>-s</code> include either the word <code>is</code> or <code>has</code>.</p>
<p>For example:</p>
<ul>
<li><code>He is going = He’s going</code></li>
<li><code>It has gone = It’s gone</code>.</li>
</ul>
<p>The letter <code>i</code> or the letters <code>h</code> and <code>a</code>, respectively, get dropped.</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Contracted</td><td>Uncontracted</td></tr>
</thead>
<tbody>
<tr>
<td>He’s</td><td>He + is / He + has</td></tr>
<tr>
<td>She’s</td><td>She + is / She + has</td></tr>
<tr>
<td>It’s</td><td>It + is / It + has</td></tr>
<tr>
<td>Who’s</td><td>Who + is / Who + has</td></tr>
<tr>
<td>There’s</td><td>There + is / There + has</td></tr>
<tr>
<td>Thats’s</td><td>That + is / That + has</td></tr>
<tr>
<td>What’s</td><td>What + is</td></tr>
<tr>
<td>When’s</td><td>When + is</td></tr>
<tr>
<td>Where’s</td><td>Where + is</td></tr>
<tr>
<td>Why’s</td><td>Why + is</td></tr>
<tr>
<td>How’s</td><td>How + is</td></tr>
</tbody>
</table>
</div><p>What about <code>let's</code> ? That is a bit different. <code>let's</code> comes from <code>let + us</code>.</p>
<h3 id="heading-common-contractions-ending-in-ve">Common Contractions ending in <code>-ve</code></h3>
<p>Contractions ending in <code>-ve</code> include the word <code>have</code>. The letters <code>h</code> and <code>a</code> get dropped.</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Contracted</td><td>Uncontracted</td></tr>
</thead>
<tbody>
<tr>
<td>I’ve</td><td>I + have</td></tr>
<tr>
<td>You’ve</td><td>You + have</td></tr>
<tr>
<td>We’ve</td><td>We + have</td></tr>
<tr>
<td>They’ve</td><td>They + have</td></tr>
<tr>
<td>Could’ve</td><td>Could + have</td></tr>
<tr>
<td>Would’ve</td><td>Would + have</td></tr>
<tr>
<td>Should’ve</td><td>Should + have</td></tr>
<tr>
<td>Must’ve</td><td>Must + have</td></tr>
<tr>
<td>Might’ve</td><td>Might + have</td></tr>
<tr>
<td>Who’ve</td><td>Who + have</td></tr>
<tr>
<td>What’ve</td><td>What + have</td></tr>
<tr>
<td>When’ve</td><td>When + have</td></tr>
<tr>
<td>Where’ve</td><td>Where + have</td></tr>
<tr>
<td>Why’ve</td><td>Why + have</td></tr>
<tr>
<td>How’ve</td><td>How + have</td></tr>
</tbody>
</table>
</div><h3 id="heading-common-contractions-ending-in-d">Common Contractions ending in <code>-d</code></h3>
<p>Contractions ending in <code>-d</code> include either the word <code>had</code> or <code>would</code>.</p>
<p>Some examples with the word <code>had</code>:</p>
<ul>
<li><code>I'd better go now = I had better go now</code></li>
<li><code>I wish I'd never left = I wish I had never left</code>.</li>
</ul>
<p>Some examples with the word <code>would</code>:</p>
<ul>
<li><code>I'd rather not go there = I would rather not go there</code></li>
<li><code>I'd like something to drink please = I would like something to drink please</code>.</li>
</ul>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Contracted</td><td>Uncontracted</td></tr>
</thead>
<tbody>
<tr>
<td>I’d</td><td>I + had / I + would</td></tr>
<tr>
<td>She’d</td><td>She + had / She + would</td></tr>
<tr>
<td>We’d</td><td>We + had / We + would</td></tr>
<tr>
<td>They’d</td><td>They + had / They + would</td></tr>
<tr>
<td>Who’d</td><td>Who + had / Who + would</td></tr>
<tr>
<td>That’d</td><td>That + had / That + would</td></tr>
<tr>
<td>What’d</td><td>What + had / What + would</td></tr>
<tr>
<td>There’d</td><td>There + had / There + would</td></tr>
<tr>
<td>When’d</td><td>When + had / When + would</td></tr>
<tr>
<td>Where’d</td><td>Where + had / Where + would</td></tr>
<tr>
<td>Why’d</td><td>Why + had / Why + would</td></tr>
<tr>
<td>How’d</td><td>How + had / How + would</td></tr>
</tbody>
</table>
</div><h3 id="heading-common-contractions-ending-in-m">Common Contractions ending in <code>-m</code></h3>
<p>Contractions ending in <code>-m</code>,include the word <code>am</code>. </p>
<p>The letter <code>a</code> gets dropped.</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Contracted</td><td>Uncontracted</td></tr>
</thead>
<tbody>
<tr>
<td>I’m</td><td>I + am</td></tr>
</tbody>
</table>
</div><h3 id="heading-negative-contractions">Negative contractions</h3>
<p>Negative contractions are those that end in <code>-nt</code>.</p>
<p>You achieve this by adding the word <code>not</code> to a verb, making it negative.</p>
<p>In this case,the letter <code>o</code> gets dropped.</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Contracted</td><td>Uncontracted</td></tr>
</thead>
<tbody>
<tr>
<td>Can’t</td><td>Can + not</td></tr>
<tr>
<td>Hadn’t</td><td>Had + not</td></tr>
<tr>
<td>Hasn’t</td><td>Has + not</td></tr>
<tr>
<td>Haven’t</td><td>Have + not</td></tr>
<tr>
<td>Didn’t</td><td>Did + not</td></tr>
<tr>
<td>Doesn’t</td><td>Does + not</td></tr>
<tr>
<td>Don’t</td><td>Do + not</td></tr>
<tr>
<td>Daren’t</td><td>Dare + not</td></tr>
<tr>
<td>Couldn’t</td><td>Could + not</td></tr>
<tr>
<td>Wouldn’t</td><td>Would + not</td></tr>
<tr>
<td>Shouldn’t</td><td>Should + not</td></tr>
<tr>
<td>Mustn’t</td><td>Must + not</td></tr>
<tr>
<td>Mightn't</td><td>Might + not</td></tr>
<tr>
<td>Oughtn’t</td><td>Ought + not</td></tr>
<tr>
<td>Needn’t</td><td>Need + not</td></tr>
<tr>
<td>Wasn't</td><td>Was+ not</td></tr>
<tr>
<td>Isn’t</td><td>Is+ not</td></tr>
<tr>
<td>Aren’t</td><td>Are + not</td></tr>
<tr>
<td>Weren’t</td><td>Were + not</td></tr>
<tr>
<td>Shan’t</td><td>Shall + not</td></tr>
</tbody>
</table>
</div><p>A word that is a little different and an exception to what has been shown so far is <code>won’t</code> – it comes from <code>will + not = won’t</code>. </p>
<p><code>will</code> does not turn into <code>willn’t</code>. In fact the word "will" does not appear in the contraction at all. Just think of it as an irregular contraction (like how we have irregular verbs).</p>
<h2 id="heading-common-mistakes-with-contractions">Common mistakes with contractions</h2>
<p>A couple of contractions commonly cause confusion and people often use them in the wrong way - you'll even see native English speakers make these mistakes.</p>
<p>These contractions sound exactly the same with other words, so these mistakes commonly occur in writing.</p>
<h3 id="heading-youre-and-your">You’re and Your</h3>
<p><code>You’re</code> is a contraction, a combination of the words <code>you</code> and <code>are</code>.</p>
<p>For example, <code>You’re learning how to code</code> or <code>You’re doing great!</code>.</p>
<p><code>Your</code> is a possesive pronoun, it is used to indicate that something is owned by/belongs to someone.</p>
<p>For example, <code>Your cat is so cuddly!</code> or <code>Your cooking always tastes so good</code>.</p>
<p><code>Your doing great</code> makes no sense since it doesn't indicate that something belongs to someone. <code>You’re doing great</code> does, since it indicates action and verbs are used for that.</p>
<p>If you get confused and don't know which to use, read it out to yourself as <code>you are</code> and see if it sounds right.</p>
<p><code>Your are cat is so cuddly!</code> doesn't make sense or sound right, for example.</p>
<h3 id="heading-its-and-its">It’s and Its</h3>
<p><code>It’s</code> is a contraction – a combinations of <code>it</code> and <code>is</code> or <code>has</code>.</p>
<p>For example, <code>It’s raining outside</code> or <code>It’s been great for me so far, I’m really enjoying it here</code>.</p>
<p><code>Its</code> is a possesive pronoun. <code>Its</code> shows possession.</p>
<p>For example, <code>Don’t judge a book by its cover</code> or <code>The cat is in its sleeping basket</code>.</p>
<p>Similarly to the example from the previous section, if you're confused use the verbs <code>is</code> or <code>has</code> in your sentence and check to see if it makes sense to add the apostrophe/make it a contraction: <code>Don’t judge a book by it is cover</code> doesn't make sense, so you use the possessive "its" with no apostrophe.</p>
<p><code>It is raining outside</code> makes sense, so you now know that you can use an apostrophe.</p>
<h3 id="heading-theyre-their-and-there">They’re, Their, and There</h3>
<p>All three of these words sound the same.</p>
<p><code>They’re</code> is a contraction. <code>They</code> and <code>are</code> were combined.</p>
<p>For example,<code>They’re going away for the holiday season</code> or <code>They’re buying a house together</code>.</p>
<p>Does the sentence sound right when you use <code>they are</code>? Then use <code>they’re</code>.</p>
<p><code>Their</code> shows possesion. </p>
<p>For example,<code>Their dog bit me last night</code> or <code>I don’t like their attitude</code>.</p>
<p>Finally, <code>There</code> indicates a place, a location.</p>
<p>For example,<code>I wish I was there instead</code> or <code>I’m never going there again</code>.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>And there you have it!</p>
<p>This article gave an overview of contractions and how to use them in both spoken and written English.</p>
<p>You saw some of the most common ones used and some frequent mistakes made when using them.</p>
<p>Thanks for reading!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ World Translation Month – Help Us Translate freeCodeCamp into Your Native Language ]]>
                </title>
                <description>
                    <![CDATA[ We believe that everyone deserves to have free programming education in their own native language. So we are expanding International Translation Day (September 30th) into a full month-long effort. Over the past few years, hundreds of volunteer contri... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/world-translation-month-event/</link>
                <guid isPermaLink="false">66bae5f92c1f85b4545c8bc7</guid>
                
                    <category>
                        <![CDATA[ community ]]>
                    </category>
                
                    <category>
                        <![CDATA[ language ]]>
                    </category>
                
                    <category>
                        <![CDATA[ localization ]]>
                    </category>
                
                    <category>
                        <![CDATA[ translation ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Rafael D. Hernandez ]]>
                </dc:creator>
                <pubDate>Tue, 07 Sep 2021 17:37:37 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/09/WTM_BG-yt-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>We believe that everyone deserves to have free programming education in their own native language. So we are expanding International Translation Day (September 30th) into a full month-long effort.</p>
<p>Over the past few years, hundreds of volunteer contributors have worked to translate freeCodeCamp into major world languages. In February, <a target="_blank" href="https://www.freecodecamp.org/news/world-language-translation-effort/">Quincy announced</a> that freeCodeCamp had successfully launched both Spanish and Chinese editions. And Portuguese and Italian soon followed.</p>
<p>During World Translation Month, we will celebrate what we have achieved collectively – and what we will accomplish for everybody around the world<em>.</em> Watch this one-minute announcement video:</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/i2XjBz_U28E" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<p><em>If you are interested in participating in translating freeCodeCamp into any world language, you can <a target="_blank" href="https://chat.freecodecamp.org/channel/contributors">visit our contributors channel and learn more</a>.</em></p>
<h2 id="heading-latest-translation-accomplishments">Latest Translation Accomplishments</h2>
<p>Today, we have successfully launched the Italian and Brazilian Portuguese curriculum. We are eager to see what is to come for these active communities.</p>
<p>And the Ukrainian community has really taken off in their translation efforts. They have eight certifications fully translated and two close to 100%, almost all completed within a month. It is remarkable to witness the dedication and perseverance every language community has shown.</p>
<p>We have multiple other communities and individuals who are translating the curriculum to their native languages. You can take a look at the current statuses of all the active translations and their progress here.</p>
<h2 id="heading-current-translation-progress">Current Translation Progress</h2>
<div class="hn-table">
<table>
<thead>
<tr>
<td>World Language</td><td>Curriculum %</td><td>Docs %</td></tr>
</thead>
<tbody>
<tr>
<td>Afrikaans</td><td>1%</td><td>59%</td></tr>
<tr>
<td>Arabic</td><td>11%</td><td>29%</td></tr>
<tr>
<td>Azerbaijani</td><td>2%</td><td>1%</td></tr>
<tr>
<td>Bengali</td><td>27%</td><td>1%</td></tr>
<tr>
<td>Catalan</td><td>3%</td><td>1%</td></tr>
<tr>
<td>Chinese</td><td>65%</td><td>56%</td></tr>
<tr>
<td>Czech</td><td>1%</td><td>17%</td></tr>
<tr>
<td>Danish</td><td>1%</td><td>18%</td></tr>
<tr>
<td>Dutch</td><td>4%</td><td>23%</td></tr>
<tr>
<td>Finissh</td><td>1%</td><td>17%</td></tr>
<tr>
<td>French</td><td>20%</td><td>45%</td></tr>
<tr>
<td>German</td><td>31%</td><td>98%</td></tr>
<tr>
<td>Greek</td><td>1%</td><td>1%</td></tr>
<tr>
<td>Hebrew</td><td>1%</td><td>1%</td></tr>
<tr>
<td>Hindi</td><td>1%</td><td>11%</td></tr>
<tr>
<td>Hungarian</td><td>1%</td><td>1%</td></tr>
<tr>
<td>Indonesian</td><td>7%</td><td>30%</td></tr>
<tr>
<td>Italian</td><td>80%</td><td>100%</td></tr>
<tr>
<td>Japanese</td><td>79%</td><td>99%</td></tr>
<tr>
<td>Korean</td><td>1%</td><td>1%</td></tr>
<tr>
<td>Norwegian</td><td>1%</td><td>17%</td></tr>
<tr>
<td>Persian</td><td>12%</td><td>5%</td></tr>
<tr>
<td>Polish</td><td>1%</td><td>19%</td></tr>
<tr>
<td>Portuguese-BR</td><td>79%</td><td>100%</td></tr>
<tr>
<td>Romainian</td><td>48%</td><td>31%</td></tr>
<tr>
<td>Russian</td><td>15%</td><td>95%</td></tr>
<tr>
<td>Spanish</td><td>44%</td><td>84%</td></tr>
<tr>
<td>Swahili</td><td>1%</td><td>1%</td></tr>
<tr>
<td>Swedish</td><td>1%</td><td>19%</td></tr>
<tr>
<td>Tamil</td><td>!%</td><td>34%</td></tr>
<tr>
<td>Telugu</td><td>1%</td><td>4%</td></tr>
<tr>
<td>Turkish</td><td>3%</td><td>4%</td></tr>
<tr>
<td>Ukrainian</td><td>77%</td><td>74%</td></tr>
<tr>
<td>Vietnamese</td><td>1%</td><td>4%</td></tr>
</tbody>
</table>
</div><p>Currently, volunteers around the world are in the process of translating freeCodeCamp's curriculum into 28 world languages.</p>
<p>And many of these world languages are showing significant progress, especially the French, Romanian, Japanese, and German-speaking communities. Keep up the great work!</p>
<h2 id="heading-what-is-the-goal-of-the-world-translation-month-event">What is the Goal of the World Translation Month Event?</h2>
<p>freeCodeCamp's goal is to give every individual the tools to translate the curriculum into their native language. Also, we will dedicate all our efforts and time to this event to reach significant progress for every world language. </p>
<p>We have witnessed what a handful of contributors can do together with a singular purpose. And we hope that World Translation Month will become a yearly event when all world languages can celebrate having access to free programming education translated by their community for their community.</p>
<h2 id="heading-our-reward-system">Our Reward System 🥇</h2>
<p>freeCodeCamp wants to make this a memorable event for every contributor who participates.</p>
<p>During the WTM event, we will give all participants a World Translation Month Badge. Also, at the end of the event, we will present special badges to the Top Translators and Top Proofreaders who have made the most contributions. </p>
<p>You can display these badges on your freeCodeCamp curriculum and forum profiles if you want to do so.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/WTM_Badges.png" alt="Image" width="600" height="400" loading="lazy">
<em>2021 World Translation Month badges</em></p>
<h2 id="heading-the-freecodecamp-localization-roadmap">The freeCodeCamp Localization Roadmap</h2>
<p>The freeCodeCamp curriculum is already available in Chinese and Spanish. And beyond this, these communities have many other resources at their disposal, thanks to the efforts of hundreds of contributors.</p>
<p>For example, the Chinese-speaking community has translated nearly all the certifications into Chinese. They also have close to 600 articles translated, there are 10 of freeCodeCamp's video tutorials with subtitles on <a target="_blank" href="https://space.bilibili.com/335505768/video">Bilibili</a>, and they've organized hundreds of meetups, hackathons, conferences, live coding events, and coding workshops in universities and high schools.</p>
<p><img src="https://chinese.freecodecamp.org/news/content/images/2021/09/image-1.png" alt="Image" width="913" height="557" loading="lazy">
<em>freeCodeCamp bilibili 频道</em></p>
<p>The Spanish-speaking community has the first two certifications available in Spanish, and they've translated around 250 articles. Community members have also written about 20 original articles, created 3 original full-length video tutorials, and <a target="_blank" href="https://www.freecodecamp.org/news/p/fc63f178-c627-414a-8ae6-877eb3458261/@EstefaniaCassN">Estefania</a> has created 24 short videos for the Spanish YouTube channel. </p>
<p>The response from the Spanish-speaking community has been remarkable on <a target="_blank" href="https://www.youtube.com/c/freeCodeCampEspa%C3%B1ol/videos">YouTube</a> and <a target="_blank" href="https://twitter.com/freecodecampES">Twitter</a>. Thanks to the fantastic job Estefania has been doing by engaging with the community with posts and short videos on YouTube, the channel now has over 12,000 followers. And freeCodeCamp's Twitter account en Español has reached 7,300 followers while continuing to grow.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-06-at-2.23.41-AM.png" alt="Image" width="600" height="400" loading="lazy">
<em>YouTube Channel freeCodeCamp en Español</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-06-at-2.29.17-AM.png" alt="Image" width="600" height="400" loading="lazy">
<em>Twitter freeCodeCamp en Español</em></p>
<h2 id="heading-the-translation-blueprint">The Translation Blueprint</h2>
<p>As Quincy mentioned in the <a target="_blank" href="https://www.freecodecamp.org/news/world-language-translation-effort/">World Language Translation Effort</a> article, freeCodeCamp's "<em>...long-term goal is for each of these language communities to come into its own.</em>" </p>
<p>And we'll take the same steps as we took with the thriving Spanish-speaking and Chinese-speaking communities with other language communities around the world. </p>
<p>The plan is to launch a localized publication, YouTube Channel, sub-forum, and Twitter account for these language communities, each with their own contributors and staff.</p>
<h2 id="heading-thank-you-to-all-the-translators-contributors-and-proofreaders">Thank You to All the Translators, Contributors, and Proofreaders!</h2>
<p>I want to finish up by thanking the proofreaders and translators who have dedicated hours upon hours to translating and proofreading. </p>
<h3 id="heading-active-translators">Active Translators</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Name</td><td>World Language</td><td>Translated Strings</td></tr>
</thead>
<tbody>
<tr>
<td>Aziz Meknassi</td><td>Arabic</td><td>4</td></tr>
<tr>
<td>Damani Salah Eddin</td><td>Arabic</td><td>18</td></tr>
<tr>
<td>elmadhdi1962</td><td>Arabic</td><td>4</td></tr>
<tr>
<td>fatima</td><td>Arabic</td><td>2</td></tr>
<tr>
<td>Gehad Salem</td><td>Arabic</td><td>11</td></tr>
<tr>
<td>Khalid Benjelloun</td><td>Arabic</td><td>3</td></tr>
<tr>
<td>Rundi Wadi</td><td>Arabic</td><td>38</td></tr>
<tr>
<td>Modasser Billah</td><td>Bengali</td><td>5</td></tr>
<tr>
<td>nr072</td><td>Bengali</td><td>77</td></tr>
<tr>
<td>Pabitra Jana</td><td>Bengali</td><td>1</td></tr>
<tr>
<td>Raihan Mahmud</td><td>Bengali</td><td>70</td></tr>
<tr>
<td>Salman Shuvo</td><td>Bengali</td><td>47</td></tr>
<tr>
<td>Chengjun.L</td><td>Chinese</td><td>49</td></tr>
<tr>
<td>cocoder</td><td>Chinese</td><td>26</td></tr>
<tr>
<td>Simon Yang</td><td>Chinese</td><td>1</td></tr>
<tr>
<td>xhksun</td><td>Chinese</td><td>166</td></tr>
<tr>
<td>ztftrue</td><td>Chinese</td><td>1</td></tr>
<tr>
<td>Hana Klingová</td><td>Czech</td><td>28</td></tr>
<tr>
<td>johmar</td><td>Dutch</td><td>339</td></tr>
<tr>
<td>cbnrd</td><td>French</td><td>43</td></tr>
<tr>
<td>David Heusler</td><td>French</td><td>109</td></tr>
<tr>
<td>Flo</td><td>French</td><td>1</td></tr>
<tr>
<td>Julien Li</td><td>French</td><td>449</td></tr>
<tr>
<td>Mariefay</td><td>French</td><td>14</td></tr>
<tr>
<td>MNE</td><td>French</td><td>29</td></tr>
<tr>
<td>Rémy Beumier</td><td>French</td><td>1</td></tr>
<tr>
<td>srasay2</td><td>French</td><td>1</td></tr>
<tr>
<td>Andrew Russell</td><td>German</td><td>28</td></tr>
<tr>
<td>AW</td><td>German</td><td>84</td></tr>
<tr>
<td>Julia Wegmayr</td><td>German</td><td>248</td></tr>
<tr>
<td>Martin Seibert</td><td>German</td><td>1</td></tr>
<tr>
<td>Philipp R. Proksch</td><td>German</td><td>3</td></tr>
<tr>
<td>Philipp S</td><td>German</td><td>312</td></tr>
<tr>
<td>Vairus</td><td>Greek</td><td>10</td></tr>
<tr>
<td>Jod Louis</td><td>Haitian Creole</td><td>1</td></tr>
<tr>
<td>Ami</td><td>Hebrew</td><td>28</td></tr>
<tr>
<td>bachdor24</td><td>Hebrew</td><td>4</td></tr>
<tr>
<td>Curiosity_17</td><td>Hindi</td><td>1</td></tr>
<tr>
<td>Japmohan kumar</td><td>Hindi</td><td>1</td></tr>
<tr>
<td>adh</td><td>Indonesian</td><td>299</td></tr>
<tr>
<td>Arief Darmawan</td><td>Indonesian</td><td>503</td></tr>
<tr>
<td>Danang Aprias Noor Fadilla</td><td>Indonesian</td><td>46</td></tr>
<tr>
<td>Dicky Giancini</td><td>Indonesian</td><td>94</td></tr>
<tr>
<td>Dyah Achwatiningrum</td><td>Indonesian</td><td>368</td></tr>
<tr>
<td>Fahmi Aditia</td><td>Indonesian</td><td>50</td></tr>
<tr>
<td>Hendra Bangun Dwi R</td><td>Indonesian</td><td>8</td></tr>
<tr>
<td>Rifqi</td><td>Indonesian</td><td>1</td></tr>
<tr>
<td>Tjandra Darmo</td><td>Indonesian</td><td>6</td></tr>
<tr>
<td>wardhen</td><td>Indonesian</td><td>115</td></tr>
<tr>
<td>iuri86</td><td>Italian</td><td>10</td></tr>
<tr>
<td>TOMMASO DI COSTANZO</td><td>Italian</td><td>35</td></tr>
<tr>
<td>Emi</td><td>Japanese</td><td>7</td></tr>
<tr>
<td>Julie Park</td><td>Korean</td><td>19</td></tr>
<tr>
<td>San</td><td>Korean</td><td>9</td></tr>
<tr>
<td>Sewook Han</td><td>Korean</td><td>6</td></tr>
<tr>
<td>Zergro</td><td>Norwegian</td><td>3</td></tr>
<tr>
<td>m_golzar</td><td>Persian</td><td>8</td></tr>
<tr>
<td>najme</td><td>Persian</td><td>571</td></tr>
<tr>
<td>Jakub Siwik</td><td>Polish</td><td>27</td></tr>
<tr>
<td>BrainMath</td><td>Portuguese, Brazilian</td><td>10</td></tr>
<tr>
<td>Clovis Goulart</td><td>Portuguese, Brazilian</td><td>340</td></tr>
<tr>
<td>Cássio Barth</td><td>Portuguese, Brazilian</td><td>1</td></tr>
<tr>
<td>fcc_javascript_4linux</td><td>Portuguese, Brazilian</td><td>1</td></tr>
<tr>
<td>Felipe Santos</td><td>Portuguese, Brazilian</td><td>8</td></tr>
<tr>
<td>Isabella Lima</td><td>Portuguese, Brazilian</td><td>3</td></tr>
<tr>
<td>Jualianaluzia</td><td>Portuguese, Brazilian</td><td>36</td></tr>
<tr>
<td>Lais Golin</td><td>Portuguese, Brazilian</td><td>1</td></tr>
<tr>
<td>luforain</td><td>Portuguese, Brazilian</td><td>1</td></tr>
<tr>
<td>Rick</td><td>Portuguese, Brazilian</td><td>2</td></tr>
<tr>
<td>Silvano RM</td><td>Portuguese, Brazilian</td><td>17</td></tr>
<tr>
<td>Clovis Goulart</td><td>Portuguese, Portugal</td><td>37</td></tr>
<tr>
<td>Pedro Goncalves</td><td>Portuguese, Portugal</td><td>65</td></tr>
<tr>
<td>Ghenadie Tofan</td><td>Romanian</td><td>422</td></tr>
<tr>
<td>Alexander Filëv</td><td>Russian</td><td>114</td></tr>
<tr>
<td>Beloze</td><td>Russian</td><td>26</td></tr>
<tr>
<td>Cherepnin</td><td>Russian</td><td>97</td></tr>
<tr>
<td>Corrector</td><td>Russian</td><td>87</td></tr>
<tr>
<td>Farid</td><td>Russian</td><td>2</td></tr>
<tr>
<td>Helge Kim</td><td>Russian</td><td>5</td></tr>
<tr>
<td>Knopentiya</td><td>Russian</td><td>3</td></tr>
<tr>
<td>Pavel Ryazantsev</td><td>Russian</td><td>7</td></tr>
<tr>
<td>Rita Shinger</td><td>Russian</td><td>25</td></tr>
<tr>
<td>vekotov</td><td>Russian</td><td>28</td></tr>
<tr>
<td>Виктор Сударинен</td><td>Russian</td><td>1</td></tr>
<tr>
<td>Тимофей Рассолов</td><td>Russian</td><td>198</td></tr>
<tr>
<td>daca</td><td>Serbian</td><td>6</td></tr>
<tr>
<td>Abel Campos</td><td>Spanish</td><td>13</td></tr>
<tr>
<td>Aldair Avalos</td><td>Spanish</td><td>86</td></tr>
<tr>
<td>Alvaro Agamez</td><td>Spanish</td><td>159</td></tr>
<tr>
<td>Andres</td><td>Spanish</td><td>2</td></tr>
<tr>
<td>Atilio Garcia Pezo</td><td>Spanish</td><td>4</td></tr>
<tr>
<td>Christian Caracach</td><td>Spanish</td><td>13</td></tr>
<tr>
<td>DavitBoo</td><td>Spanish</td><td>1</td></tr>
<tr>
<td>devsiderio</td><td>Spanish</td><td>23</td></tr>
<tr>
<td>Drifting Live</td><td>Spanish</td><td>1</td></tr>
<tr>
<td>Erik</td><td>Spanish</td><td>4</td></tr>
<tr>
<td>Hernan David Cuy Salcedo</td><td>Spanish</td><td>20</td></tr>
<tr>
<td>Javier Coronado Velasquez</td><td>Spanish</td><td>377</td></tr>
<tr>
<td>JorgeT</td><td>Spanish</td><td>2</td></tr>
<tr>
<td>Karlos Arroyo Fernandez</td><td>Spanish</td><td>8</td></tr>
<tr>
<td>Laura</td><td>Spanish</td><td>1</td></tr>
<tr>
<td>Luis Carlos Figueroa Veliz</td><td>Spanish</td><td>10</td></tr>
<tr>
<td>Marco Segura</td><td>Spanish</td><td>5</td></tr>
<tr>
<td>Mariano Esquivel</td><td>Spanish</td><td>20</td></tr>
<tr>
<td>Martin Diaz</td><td>Spanish</td><td>1</td></tr>
<tr>
<td>Maximiliano Romero</td><td>Spanish</td><td>4</td></tr>
<tr>
<td>Nestor Plasencia</td><td>Spanish</td><td>1</td></tr>
<tr>
<td>Renzo-Chong</td><td>Spanish</td><td>2</td></tr>
<tr>
<td>Rumen Zaechki</td><td>Spanish</td><td>6</td></tr>
<tr>
<td>Santiago Correa Alvarez</td><td>Spanish</td><td>18</td></tr>
<tr>
<td>Sergio Fdez</td><td>Spanish</td><td>21</td></tr>
<tr>
<td>Sofiapicco</td><td>Spanish</td><td>2</td></tr>
<tr>
<td>Ulises Lopez</td><td>Spanish</td><td>12</td></tr>
<tr>
<td>Chaandha Raghav</td><td>Tamil</td><td>128</td></tr>
<tr>
<td>Raviraj Subramanian</td><td>Tamil</td><td>7</td></tr>
<tr>
<td>Eren Byxlarge</td><td>Turkish</td><td>8</td></tr>
<tr>
<td>Kubilaycitak</td><td>Turkish</td><td>18</td></tr>
<tr>
<td>Mehmet Emin Eraslan</td><td>Turkish</td><td>2</td></tr>
<tr>
<td>Alina Bovsunivska</td><td>Ukrainian</td><td>217</td></tr>
<tr>
<td>alina_farafonova</td><td>Ukrainian</td><td>15</td></tr>
<tr>
<td>alx<em>man</em></td><td>Ukrainian</td><td>122</td></tr>
<tr>
<td>Anastasia Trius</td><td>Ukrainian</td><td>304</td></tr>
<tr>
<td>Anastasia_k</td><td>Ukrainian</td><td>131</td></tr>
<tr>
<td>andrii.bodnar</td><td>Ukrainian</td><td>2</td></tr>
<tr>
<td>Angelina Yaremchuk</td><td>Ukrainian</td><td>242</td></tr>
<tr>
<td>Anna Verbytska</td><td>Ukrainian</td><td>183</td></tr>
<tr>
<td>anna.linevych</td><td>Ukrainian</td><td>106</td></tr>
<tr>
<td>anya_filipchuk</td><td>Ukrainian</td><td>1</td></tr>
<tr>
<td>coolakova</td><td>Ukrainian</td><td>185</td></tr>
<tr>
<td>Cофія Назарчук</td><td>Ukrainian</td><td>199</td></tr>
<tr>
<td>Daria Deinekina</td><td>Ukrainian</td><td>156</td></tr>
<tr>
<td>Darina Gorichenko</td><td>Ukrainian</td><td>373</td></tr>
<tr>
<td>DarinaMilova</td><td>Ukrainian</td><td>168</td></tr>
<tr>
<td>Daryna</td><td>Ukrainian</td><td>270</td></tr>
<tr>
<td>Diana</td><td>Ukrainian</td><td>169</td></tr>
<tr>
<td>Dmytro Zubenko</td><td>Ukrainian</td><td>534</td></tr>
<tr>
<td>Doctorplague</td><td>Ukrainian</td><td>110</td></tr>
<tr>
<td>Inga Usenko</td><td>Ukrainian</td><td>1</td></tr>
<tr>
<td>Iryna Lobko</td><td>Ukrainian</td><td>212</td></tr>
<tr>
<td>Ivan Adamchuk</td><td>Ukrainian</td><td>366</td></tr>
<tr>
<td>Ivanka_Kvasna</td><td>Ukrainian</td><td>202</td></tr>
<tr>
<td>Julia Serbinenko</td><td>Ukrainian</td><td>283</td></tr>
<tr>
<td>K_Katrina_A</td><td>Ukrainian</td><td>36</td></tr>
<tr>
<td>Kateryna_sk</td><td>Ukrainian</td><td>410</td></tr>
<tr>
<td>Katya Belikova</td><td>Ukrainian</td><td>190</td></tr>
<tr>
<td>Khristina Konvaliuk</td><td>Ukrainian</td><td>91</td></tr>
<tr>
<td>Liubov Kot</td><td>Ukrainian</td><td>9</td></tr>
<tr>
<td>Maria Gaidarzhy</td><td>Ukrainian</td><td>162</td></tr>
<tr>
<td>Mariana Minko</td><td>Ukrainian</td><td>319</td></tr>
<tr>
<td>Maryna Moroz</td><td>Ukrainian</td><td>124</td></tr>
<tr>
<td>minkaffe</td><td>Ukrainian</td><td>262</td></tr>
<tr>
<td>Nata</td><td>Ukrainian</td><td>143</td></tr>
<tr>
<td>Nataliia Mykolyshyn4</td><td>Ukrainian</td><td>314</td></tr>
<tr>
<td>nathuzovata</td><td>Ukrainian</td><td>257</td></tr>
<tr>
<td>ol_kvasna</td><td>Ukrainian</td><td>198</td></tr>
<tr>
<td>Olena Tyshkevych</td><td>Ukrainian</td><td>321</td></tr>
<tr>
<td>olena.karpina</td><td>Ukrainian</td><td>209</td></tr>
<tr>
<td>olia-k</td><td>Ukrainian</td><td>228</td></tr>
<tr>
<td>Pavlo Tiupa</td><td>Ukrainian</td><td>320</td></tr>
<tr>
<td>Roksolana Khanas</td><td>Ukrainian</td><td>313</td></tr>
<tr>
<td>Solomia2108 Kotiai</td><td>Ukrainian</td><td>330</td></tr>
<tr>
<td>Solomiia Stupak</td><td>Ukrainian</td><td>228</td></tr>
<tr>
<td>SOPHIE_20861</td><td>Ukrainian</td><td>17</td></tr>
<tr>
<td>Sophiya</td><td>Ukrainian</td><td>349</td></tr>
<tr>
<td>tetiana_kinashchuk</td><td>Ukrainian</td><td>272</td></tr>
<tr>
<td>vdenyssko</td><td>Ukrainian</td><td>164</td></tr>
<tr>
<td>Viktoriia Farenyk</td><td>Ukrainian</td><td>353</td></tr>
<tr>
<td>Viktoriia_Shoptenko</td><td>Ukrainian</td><td>79</td></tr>
<tr>
<td>vitka-kvitka</td><td>Ukrainian</td><td>199</td></tr>
<tr>
<td>Yaroslav Stryhun</td><td>Ukrainian</td><td>291</td></tr>
<tr>
<td>yulialutsenko</td><td>Ukrainian</td><td>2</td></tr>
<tr>
<td>Zhandm</td><td>Ukrainian</td><td>26</td></tr>
<tr>
<td>Аліна Соловій</td><td>Ukrainian</td><td>334</td></tr>
<tr>
<td>Андрій Андрійович Сукнацький</td><td>Ukrainian</td><td>271</td></tr>
<tr>
<td>Андрій Біленко</td><td>Ukrainian</td><td>275</td></tr>
<tr>
<td>Богдана Вознюк</td><td>Ukrainian</td><td>6</td></tr>
<tr>
<td>Вікторія Мельник</td><td>Ukrainian</td><td>145</td></tr>
<tr>
<td>Дарія Фадєєва</td><td>Ukrainian</td><td>210</td></tr>
<tr>
<td>Кристина Єщенко</td><td>Ukrainian</td><td>59</td></tr>
<tr>
<td>Таня Щадило</td><td>Ukrainian</td><td>339</td></tr>
<tr>
<td>Тимофей Рассолов</td><td>Ukrainian</td><td>1</td></tr>
<tr>
<td>Тоня Маркиш</td><td>Ukrainian</td><td>98</td></tr>
<tr>
<td>Ілона Єщенко</td><td>Ukrainian</td><td>67</td></tr>
<tr>
<td>Anushah Nadir</td><td>Urdu</td><td>17</td></tr>
<tr>
<td>Muhammad Ali</td><td>Urdu</td><td>54</td></tr>
<tr>
<td>Sharaf A</td><td>Urdu</td><td>12</td></tr>
</tbody>
</table>
</div><h3 id="heading-active-proofreaders">Active Proofreaders</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Name</td><td>World Language</td><td>Translated Strings</td><td>Approved Strings</td></tr>
</thead>
<tbody>
<tr>
<td>Miya Liu</td><td>Chinese</td><td>18</td><td>2547</td></tr>
<tr>
<td>Alan Luo</td><td>Chinese</td><td>567</td><td>480</td></tr>
<tr>
<td>Christophe Thomas</td><td>French</td><td>537</td><td>372</td></tr>
<tr>
<td>Gaelle Tjat</td><td>French</td><td>572</td><td>1492</td></tr>
<tr>
<td>Stephan Düsterhöft</td><td>German</td><td>1070</td><td>1144</td></tr>
<tr>
<td>Michaelsndr</td><td>German</td><td>586</td><td>809</td></tr>
<tr>
<td>Dicky Giancini</td><td>Indonesian</td><td>83</td><td>492</td></tr>
<tr>
<td>Andrea Ros</td><td>Italian</td><td>875</td><td>52</td></tr>
<tr>
<td>Ilenia Magoni</td><td>Italian</td><td>405</td><td>18</td></tr>
<tr>
<td>alevanni19</td><td>Italian</td><td>11</td><td></td></tr>
<tr>
<td>sidemt</td><td>Japanese</td><td>162</td><td>175</td></tr>
<tr>
<td>Daniel Rosa</td><td>Portuguese, Brazil</td><td>1427</td><td>1839</td></tr>
<tr>
<td>Ricardo Passos</td><td>Portuguese, Brazil</td><td>77</td><td></td></tr>
<tr>
<td>fcc_javascript_4linux</td><td>Portuguese, Brazil</td><td>1</td><td></td></tr>
<tr>
<td>Sam_3877</td><td>Romanian</td><td>1696</td><td></td></tr>
<tr>
<td>Juan Carrillo</td><td>Spanish</td><td>241</td><td>1951</td></tr>
<tr>
<td>choidavid4</td><td>Spanish</td><td>357</td><td>349</td></tr>
<tr>
<td>Bohdana Vozniuk</td><td>Ukrainian</td><td>103</td><td>137</td></tr>
</tbody>
</table>
</div><p>Also, thank you to all the proofreaders and participants in the World Translation Month video:</p>
<ul>
<li>Andrea Ros - Italian Proofreader</li>
<li><a target="_blank" href="https://twitter.com/Daniel__Rosa">Daniel Rosa</a> - Portuguese-BR Proofreader</li>
<li><a target="_blank" href="https://twitter.com/stephandue">Stephan Düsterhöft</a> and Michael Franz - German Proofreaders</li>
<li><a target="_blank" href="https://twitter.com/sideyoks">Sidemt (Yoko)</a> - Japanese Proofreader</li>
<li>Adina Solomon - Romanian Proofreader</li>
<li>Khalid - Arabic Proofreader</li>
<li><a target="_blank" href="https://twitter.com/juancarrillofl">Juan Carrillo</a> - Spanish Proofreader</li>
<li><a target="_blank" href="https://github.com/S1ngS1ng">S1ng S1ng</a>，<a target="_blank" href="https://github.com/iLtc">Alan Luo</a>，<a target="_blank" href="https://github.com/ZhichengChen">Zhicheng Chen</a>，<a target="_blank" href="https://github.com/zhannicholas">Nicholas Zhan</a>，<a target="_blank" href="https://twitter.com/miyaliu666">Miya Liu</a> - Translators/Proofreaders</li>
</ul>
<p><em>If you are interested in participating in translating freeCodeCamp's curriculum into any world language, you can <a target="_blank" href="https://chat.freecodecamp.org/channel/contributors">visit our contributors channel and learn more</a>.</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ This is what modern PHP looks like ]]>
                </title>
                <description>
                    <![CDATA[ By Felipe Lopes The title is really pretentious, isn’t? Yeah, it is. Although I’ve been working with PHP for years, how could I state what are the best practices and tools for the job? I couldn’t, but I’m going to do so. I’m seeing a real change in t... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/this-is-what-modern-php-looks-like-769192a1320/</link>
                <guid isPermaLink="false">66c36321c00e5b110b380478</guid>
                
                    <category>
                        <![CDATA[ coding ]]>
                    </category>
                
                    <category>
                        <![CDATA[ language ]]>
                    </category>
                
                    <category>
                        <![CDATA[ PHP ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 12 Jan 2018 23:29:01 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*NAnxO5afaagm6GqHFfDEVw.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Felipe Lopes</p>
<p>The title is really pretentious, isn’t? Yeah, it is. Although I’ve been working with PHP for years, how could I state what are the best practices and tools for the job? I couldn’t, but I’m going to do so.</p>
<p>I’m seeing a real change in the way developers are doing their job with PHP, not only is the language drastically changing to become more mature and robust with new versions and improvements, but the entire ecosystem around it is changing.</p>
<p>New tools, libraries, frameworks and articles are being created, patterns are being defined to make code more elegant and easy to understand. Several people are thinking about ways to make the work (and your life as a developer) more productive, clean and fun.</p>
<p>I’m not an early adopter of new trends, actually, I only adopt a new tool when I’m sure there is a community behind it and I really think it will improve my work. What I always do is try to write my code following the best practices.</p>
<p>Because of that, It took me time to start using things like Composer and PHPUnit. About a year ago, more or less, I’ve opened my heart to all those shiny new things.</p>
<p>PSR came first, then Composer, PHPUnit, Travis-ci and several other libraries and amazing tools. I’m even using an IDE now (Vim FTW, but PHPStorm with XDebug integration is a must for a sane workflow)!</p>
<h3 id="heading-what-is-modern">What is modern?</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/YZBaPT1Lru14OBbpx3EVkSF18fLAhwhsPRUs" alt="Image" width="800" height="723" loading="lazy">
_By [http://creativecommons.org/licenses/by/2.0](https://www.flickr.com/photos/karen_roe/" rel="noopener" target="_blank" title="Go to Karen Roe's photostream"&gt;Karen Roe (Flickr) [CC BY 2.0 (&lt;a href="http://creativecommons.org/licenses/by/2.0" rel="noopener" target="<em>blank" title="))]</em></p>
<p>There are tons of articles around the web about how awful PHP is, how your life would be terrible if you had to work with PHP code, how the language is ugly and whatever else you could think of!</p>
<p>If you are going to work with legacy code, maybe your life will not be that good, but if you have the opportunity to work on a new project and are able to use all the new tools, you’re going to see this new PHP I’m gonna talk about.</p>
<p>I have several problems working with PHP on a daily basis, but one cannot close their eyes to the changes taking place in the language, community and the ecosystem. There is a long road ahead, but things are getting mature in the land of PHP.</p>
<p>I started creating an SDK for an internal API in the company I work for, just as a pet project, and decided to follow best practices. Most of them I was already doing, but I’ve made few changes in the way I do some things. Those changes and what I learned in the last year are the subject of this article and what I call Modern PHP.</p>
<h3 id="heading-lets-start-with-the-workflow">Let’s start with the workflow</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/OxFTdnqCE2r6crD78HLRRgtwsvv01ctxu7aT" alt="Image" width="800" height="563" loading="lazy">
_TRIO FABRIKKER — [https://nos.twnsnd.co](https://nos.twnsnd.co" rel="noopener" target="<em>blank" title=")</em></p>
<p>As I said, I’m a newcomer to this IDE-thing, but it was love at first sight. PHPStorm is a great-great piece of software. It is my first and only IDE. It was my fist try and I don’t even needed to try any other.</p>
<p>The integration with XDebug is perfect, PHP namespace resolution, composer integration, git integration, auto-complete, code generating, code refactoring. I could keep going on and on.</p>
<p>I don’t think you must use an IDE, actually, this point is completely personal. You should use whatever suits your needs - Vim, Atom, Emacs, Bracket, NetBeans, PHPStorm, Eclipse, whatever. Two important points here are productivity and ergonomics. Your IDE/text editor must be there to help you.</p>
<p>However, for me, a great point is debugger integration. To write code for big projects (actually for the small ones too) you have to use a decent debugger. Let’s forget those var_dumps and print_rs. You need to poke those variables at runtime, analyze stack traces, set breakpoints. These things are essential and make development and refactoring easier.</p>
<p>I don’t even know if there are other options here, XDebug has everything you need. Do you have a few minutes? If you haven’t done this yet, take a moment to setup XDebug and integrate it into your IDE or text editor. Start debugging your code using the right tools.</p>
<p>The other tool I want to bring your attention to is GitHub. Another entire article could be written about how good Git and GitHub are and why you must start keeping your code under a versioning system. But I wanna show you another reason.</p>
<p>The focus here is integration.</p>
<p>There are several tools which integrate with GitHub and you should start using them. Those tools can generate metrics, run tests, run jobs for you during a continuous integration process and do all sorts of things in your workflow. Integration is a good reason for you to start using GitHub, all the others are subject for another moment.</p>
<h3 id="heading-dependency-management">Dependency management</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/TQqLDoQvKV730jefjQIuEyaUOSYyAY596Tzg" alt="Image" width="800" height="1078" loading="lazy">
_INSTITUTO PASTEUR. LISBOA, PORTUGAL — [https://nos.twnsnd.co](https://nos.twnsnd.co" rel="noopener" target="<em>blank" title=")</em></p>
<p>Another point in this modern PHP ecosystem is dependency management, and Composer is the tool for the job.</p>
<p>Composer is 5 years old, but it seems to me that massive adoption took place a couple of years ago. Maybe because I’m not an early adopter or maybe because PHP developers are reluctant to change.</p>
<p>This tool provides a front end to Packagist, which is a PHP package repository consisting of PHP libraries, projects and tools, whose source code is stored in Github (or other places like BitBucket).</p>
<p>All the libraries I’m talking about in this article, and maybe one of those pet projects of yours, can be added to your project with a simple</p>
<pre><code>$ composer <span class="hljs-built_in">require</span> package_vendor/package_name
</code></pre><p>If you don’t know the vendor of a package, you can <code>search</code> for a package to find and install the right one.</p>
<pre><code>$ composer search package_name
</code></pre><p>Composer would be a great tool if it just did this work, manage dependencies, but it does a lot more. Take a time to install Composer and read the <a target="_blank" href="https://getcomposer.org/doc/">documentation</a>.</p>
<h3 id="heading-command-line-interface-done-right">Command line interface done right</h3>
<p>I really like to try ideas quickly using CLI interfaces. For me, one of the greatest REPL tools is the <a target="_blank" href="https://ipython.org/">IPython</a>. It helps you autocomplete your code, let you easily define functions, ease the access to the documentation and several other amazing features. The downside for us, the tool is for Python, not PHP.</p>
<p>In the PHP world we have something called “interactive mode” which can be accessed by terminal, just typing</p>
<pre><code>$ php -aInteractive mode enabled
</code></pre><pre><code>php &gt;
</code></pre><p>At this point, you are in the interactive mode and can start testing something. It works, but the tool is just too unintuitive. I’ve tried it several times but, since I knew what IPython was able to do, I could not keep using it.</p>
<p>To our luck, there is a cool new CLI (command line interface) on the block and its name is Psysh. Psysh is an amazing tool, full of interesting features and can be installed globally or per project using composer.</p>
<p>The nicest Psysh feature for me is inline documentation. Accessing the doc for a PHP function without heading over to Php.net is great. The downside is that you need to do few things before it is fully functional.</p>
<p>After installing it, type the following commands (I’m using Debian here, this may not work for everyone) in order to get it working properly</p>
<pre><code>$ apt-get install php7<span class="hljs-number">.1</span>-sqlite3$ mkdir /usr/local/share/psysh$ wget http:<span class="hljs-comment">//psysh.org/manual/en/php_manual.sqlite -o /usr/local/share/psysh/php_manual.sqlite</span>
</code></pre><p>The first command is not mandatory and if you have the Sqlite already installed you can skip this step. The second command creates the directory to store the documentation and the third line downloads and save the doc into the previously created directory. Remember, all these commands must run as root.</p>
<p>Now you have this</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/PLyALiyVTXJ5076Iq7s9f085JJxWdJWGqo-X" alt="Image" width="800" height="518" loading="lazy">
_Screenshot of psysh doc in action, showing information about json<em>decode</em></p>
<p>Head to <a target="_blank" href="http://psysh.org">Psysh</a> and learn more about this awesome tool.</p>
<h3 id="heading-you-should-start-testing">You should start testing</h3>
<p>This a mantra I’m saying to myself every day. Like lots of people, I don’t test my code as much as TDD suggests. I’m getting into testing now and have been doing so for the past half a year, and there is a long road ahead.</p>
<p>I decided to learn about tests when working with a complex legacy project. The code was so fragile and rigid that anytime we added some code it broke something. New feature? Implement and break something! Fixing a bug? Create another one.</p>
<p>That was a big problem, which I discussed in <a target="_blank" href="https://medium.freecodecamp.org/few-thoughts-on-legacy-hell-e229f76529e0">another article</a>, and made me start giving tests a chance.</p>
<p>The first tool I was presented was <a target="_blank" href="https://phpunit.de/">PHPUnit</a>. As stated in the official site</p>
<blockquote>
<p>PHPUnit is a programmer-oriented testing framework for PHP.<br>It is an instance of the xUnit architecture for unit testing frameworks.</p>
</blockquote>
<p>So, PHPUnit is a framework for helping you create tests for your projects, unitary tests. It gives you several functions to test the outcome of your code and generate a nice output with the result from those tests.</p>
<p>Since I started thinking about tests, reading and talking to people about it, I’ve discovered another great tool, which complements the work you’ve put in those unitary tests, it is calle Behat, which is a BDD framework for PHP.</p>
<p>BDD (Behavior-Driven Development) is a development process which came from TDD (Test-Driven Development). Those acronyms are not important now, what is important is that you can specify your tests using a more natural language, a language that non-technical folks can understand.</p>
<p>This language is called Gherkin and is used to describe the expected behavior being tested. A test description, using Gherkin, looks like this</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/m0wRKIZ8qPUqDcmhRejF4pes2rLYVJoR4mRJ" alt="Image" width="688" height="487" loading="lazy"></p>
<p>Behind those lines there is PHP code that is called whenever there is a match between a line and a regex pattern specified in the PhpDoc of the method. This code implements those steps and what a real user would do, using your SDK, application or web system.</p>
<p>The workflow with Behat is so smooth. After everything properly configured, you start writing all possible scenarios for testing a feature. The first time you run Behat, it gives you all the method templates you should add to your PHP Context class in order to implement each step in a scenario.</p>
<p>After that, you start writing the actual code for each step and keep repeating this cycle.</p>
<ul>
<li>Implement PHP code for a step</li>
<li>Run tests</li>
<li>If everything is fine, write PHP code for another step</li>
<li>If something is broken, fix it</li>
</ul>
<p>After half an hour of configuring and reading documentation, you are prepared to use Behat, you’ll see that in the end it is all PHP code and you already know how to program with it.</p>
<h3 id="heading-continuous-integration">Continuous Integration</h3>
<p>Continuous integration (CI) is a process - a way to do something, and this thing, for us software engineers, is creating software.</p>
<p>In plain English, it is the act of incorporating small chunks of code constantly (maybe several times a day) into your code base. Code which has been tested and did not break anything. CI helps you automate the building, testing and deployment of your applications.</p>
<p>With a few clicks you can integrate your GitHub project with Travis CI and every push to your repository will run those tests you created with PHPUnit and Behat, telling you whether the the last feature you’ve implemented is ready, or not, to be merged. Besides that, you can use Travis CI to deploy your code to production and staging.</p>
<p>Having a nice pipeline of work with a well defined process is great and Travis CI can help you with this job. Follow this nice <a target="_blank" href="https://docs.travis-ci.com/user/getting-started/">Getting started</a> and discover how interesting it is to think about the process of software development, not just the code itself.</p>
<h3 id="heading-adhere-to-psr-1-and-psr-2">Adhere to PSR-1 and PSR-2</h3>
<p>If you don’t know what PSR is, you should. Actually, PSR stands for PHP Standard Recommendations and is proposed by <a target="_blank" href="http://www.php-fig.org/">PHP-FIG</a> (PHP Framework Interop Group), a consortium formed by members from the biggest PHP projects, frameworks and CMSs, which are thinking about the future of the language, ecosystem and discussing standards to be followed.</p>
<p>For a long time, PHP had no coding style. I’m not that old, but every time I looked into someone’s project or library, it was following a different style. Sometimes the bracket was left in one position, sometimes it was put in the next line, different approaches were used to deal with long lines and every other combination of style and preference you could think of. It was a mess.</p>
<p>PHP-FIG does many other jobs, but by proposing a single unity of code, they are saying “Let’s stop worrying about code style, let’s everyone follow a standard and start thinking about creating great software”. Now, whenever you take a look at someone’s code you just worry about understanding how it works, not blaming the format, the structure.</p>
<p>There are, until the end of this article, 9 accepted PSRs proposing common solutions for common problems. But if you don’t know anything about those standards, start with the <a target="_blank" href="http://www.php-fig.org/psr/psr-1/">PSR-1</a> and <a target="_blank" href="http://www.php-fig.org/psr/psr-2/">PSR-2</a>.</p>
<p>These standards propose the modern PHP coding style. Make sure you read them before start using them. Don’t think you’ll remember all of them when coding, it is a process, but to make you sure, there are tools to help you with it.</p>
<p><a target="_blank" href="https://packagist.org/packages/squizlabs/php_codesniffer">PHP CodeSniffer</a> is a tool you can find on Packagist that you can install with Composer. I don’t think the repository name was the best choice, because it ships two different tools, phpcs and phpcbf.</p>
<p>Phpcs is the code sniffer, it will scan your entire code, looking for parts that are not following the configured coding standard.</p>
<p>You can use several coding standards with phpcs and you can even create your own. At the end of the code scan, phpcs shows you a list of the pieces of code not following the standard. It is great.</p>
<p>Now, how to change everything which is wrong? You could open every file, change the code, run phpcs again, see the error not being shown, and repeat the process. It’ll be extra boring.</p>
<p>To solve this problem, PHP CodeSniffer came with another tool, called phpcbf, or PHP Code Beautifier. You run phpcbf, following the same rule set and, voilá, it fixes everything for you, or it tries to do its best without breaking your code.</p>
<p>Try to create the habit of running phpcs and phpcbf before pushing any changes in your code to the repository, this will ensure that all of your code adhere to the standards and if someone likes your tool/project and wants to contribute, they will have no problem reading it.</p>
<h3 id="heading-frameworks">Frameworks</h3>
<p>I’m not going to dedicate too much time discussing frameworks. There are several good ones out there, each one with its ups and downs. Personally, I prefer not to use those big frameworks, with everything inside. I like the idea that you must use just what you need.</p>
<p>If you need a HTTP client, use Guzzle. If you need a template engine, use Twig. If you need a router, find a good component which suits your needs and use it. Glue these components together and create your application.</p>
<p><a target="_blank" href="https://symfony.com/">Symfony</a> is doing a great job towards this concept. You can use the entire framework for a project, or you can just take whatever you want and use it. Simple as that.</p>
<p>However, whenever I need a framework to write an application, I chose one of the so called microframeworks. They are really small, offer just the basics and are easy to customize and easier to make them follow your project structure.</p>
<p>My microframework of choice is <a target="_blank" href="https://www.slimframework.com/">Slimframework</a> and I think you should read about it. It is simple for doing small projects, but it gets a bit more complex for bigger ones.</p>
<p>By the way, and this is for those who are starting with programming, I really think that before adopting a framework and dying for it, you should try to create your own. This will give you the understanding of the whole mechanism and ease the adoption of a big one.</p>
<h3 id="heading-the-modern-php-toolset">The Modern PHP Toolset</h3>
<p>Let’s finish this article with a list of links. To me, these components, tools and libraries represent a great deal of what Modern PHP is:</p>
<ul>
<li><a target="_blank" href="https://www.slimframework.com/">Slimframework</a>: a nice and cool microframework</li>
<li><a target="_blank" href="http://symfony.com/">Symfony</a>: a bigger framework which is filled with great and reusable components</li>
<li><a target="_blank" href="http://docs.guzzlephp.org/en/stable/">Guzzle</a>: a simple and easy to use HTTP client</li>
<li><a target="_blank" href="https://phpunit.de/">PHPUnit</a>: a framework for unitary testing</li>
<li><a target="_blank" href="http://behat.org/en/latest/">Behat</a>: a framework for Behavior-Driven Development</li>
<li><a target="_blank" href="https://github.com/squizlabs/PHP_CodeSniffer">PHPCS/CBF</a>: code sniffer and code beautifier</li>
<li><a target="_blank" href="https://github.com/fzaninotto/Faker">Faker</a>: fake data generator</li>
<li><a target="_blank" href="http://psysh.org/">Psysh</a>: a runtime developer console (CLI) full of amazing features</li>
<li><a target="_blank" href="https://getcomposer.org/">Composer</a>: dependency management and other useful features</li>
<li><a target="_blank" href="https://packagist.org/">Packagist</a>: package repository</li>
<li><a target="_blank" href="https://twig.symfony.com/">Twig</a>: template engine</li>
</ul>
<p>The title was really pretentious, I know. What I really wanted to show here is that PHP is evolving and the ecosystem is evolving at the same (maybe faster) pace.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ We have been programming for thousands of years ]]>
                </title>
                <description>
                    <![CDATA[ By Tautvilas Mečinskas Computer programs are all around us. We interact with them every day. It looks as if software is becoming more and more important to our society. But why do we find programs so necessary to us? Why and when did we start program... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/what-is-programming-22a72ef4fd02/</link>
                <guid isPermaLink="false">66c365b6139b845d61e84bb8</guid>
                
                    <category>
                        <![CDATA[ history ]]>
                    </category>
                
                    <category>
                        <![CDATA[ language ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Philosophy ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 19 May 2016 12:30:43 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*baG6RijcVa8LysywkCpN8g.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Tautvilas Mečinskas</p>
<p>Computer programs are all around us. We interact with them every day. It looks as if software is becoming more and more important to our society. But why do we find programs so necessary to us? Why and when did we start programming? What is the essence of programming? These questions might sound trivial, but I feel that today we still don’t have a good definition of what programming is. Maybe this post can help to change that.</p>
<p>It is pretty hard to define programming because it is so diverse. One can program games, mobile apps, websites, compilers, simulations and much more. In this case it might be helpful to start by breaking down some misconceptions and clarifying what programming is not.</p>
<p><em>Programming is not science.</em> Science is the art of examining the world and discovering repeatable patterns in it. The scientific method is about making a hypothesis, and then performing experiments to prove or reject it. We don’t use such a method in programming — thus it is not science. Programming is not about discovery, but creativity.</p>
<p><em>Programming is not math.</em> Yes, there is an aspect of math to programming. Some parts of programs can be expressed as mathematical functions. Writing a Fibonacci number generator is fun, but completely useless without a real-world application. Math in programming is means to an end, not a core part of the process.</p>
<p><em>Programming is not about electronic computers.</em> Computers are very useful, but not necessary. Programs can be understood and interpreted by human beings as well. Therefore, computers are just tools we use in programming.</p>
<p>So what is programming about? What is at the core of every program — big or small?</p>
<p>Abstractions.</p>
<p>What is abstraction? It is a reduced image of the world. When abstracting, we are converting reality into symbols which can be transmitted as information. The word <em>abstraction</em> originates from two Latin words, which are <em>abs,</em> meaning <strong>away from</strong> and <em>trahere,</em> meaning <strong>to draw</strong>. The Latin translation suggests that abstracting implies separating one from the whole.</p>
<p>Is the process of abstraction unique to programming? Not really. It is something that humans have been doing for quite some time now. And our most basic tools of abstraction are the map and the clock.</p>
<p>Archaeologists have discovered stone maps that humans made <a target="_blank" href="http://www.telegraph.co.uk/news/worldnews/europe/spain/5978900/Worlds-oldest-map-Spanish-cave-has-landscape-from-14000-years-ago.html">more than 14,000 years ago</a>. This shows that map-making is fundamental to humans. It is a process of transforming territory into symbols by abstracting it. A map is a way to abstract space. It is a tool that helps us to make sense of surrounding territory so that navigating it will be easier.</p>
<p>A clock, on the other hand, is a way to abstract time. We find the continuous nature of time confusing, so we abstract it. Humans split time into discrete intervals: years, months, days, hours, minutes, seconds. While a map helps us navigate space, a clock helps us navigate time. The predecessor of the clock — the calendar — emerged <a target="_blank" href="http://gizmodo.com/archaeologists-discover-worlds-oldest-calendar-in-scotl-922374641">more than 10,000 years ago</a>.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/K2-yzsletJjBjTnKwA7kvn4sz4Ynu1UOC3ou" alt="Image" width="800" height="587" loading="lazy">
_Giant solar calendar [Chankillo](https://en.wikipedia.org/wiki/Chankillo" rel="noopener" target="<em>blank" title=") was built 2,300 years ago.</em></p>
<p>What about computers then? They are also tools that deal with abstractions. There are 3 fundamental parts to every computer:</p>
<ol>
<li>Internal clock — a computer’s way to abstract time</li>
<li>Memory — a computer’s way to abstract space</li>
<li>Processing unit —a computer’s way to perform logical operations</li>
</ol>
<p>These facilities give computers a way to understand space abstractions and their interactions in abstracted time. This means that programs are abstractions of spacetime, and programming is the art of creating spacetime abstractions. These abstractions help us to navigate reality, and that is why they are so important to us.</p>
<p>And there is one abstraction method that is very similar to programming, but is even older than maps, clocks and calendars: language.</p>
<p>If you look closer at our natural language, you will see that it has all the features necessary to abstract spacetime.</p>
<p>Let’s look at an example sentence:</p>
<blockquote>
<p>Go to the garden and pick up some flowers this evening.</p>
</blockquote>
<p><strong>The garden</strong> and <strong>flowers</strong> refer to abstracted space. <strong>This evening</strong> is a way to abstract time. <strong>And</strong> adds logic to the sentence. <strong>Go to</strong> and <strong>pick up</strong> are subroutines.</p>
<p>We can easily transform the sentence above into JavaScript:</p>
<pre><code>whenEvening.then(<span class="hljs-function">()=&gt;</span>you.goTo(garden)).then(<span class="hljs-function">()=&gt;</span>you.pickUp(flower))
</code></pre><p>This sentence can be understood by a computer that has definitions of <strong>evening</strong>, <strong>you</strong>, <strong>flowers,</strong> and the necessary subroutines defined.</p>
<p>The problem with natural language is that it has very broad applications. Language can be used not only to communicate information, but also to express feelings and emotions. The best examples of pure natural language programs are laws, board game rules, and instruction manuals.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/xQoLcFFm2PL69Hv3LpF1saAtoAn86lGejQ99" alt="Image" width="640" height="423" loading="lazy">
_[ CC BY-NC-SA](https://en.wikipedia.org/wiki/Code_of_Hammurabi" rel="noopener" target="_blank" title=""&gt;Code of Hammurabi is one of the oldest natural language programs (photo by <a href="https://www.flickr.com/photos/prof_richard/" target="_blank">Richard</a> /&lt;a href="https://creativecommons.org/licenses/by-nc-sa/2.0/" rel="noopener" target="<em>blank" title="))</em></p>
<p>Programming languages, on the other hand, are strict and can only create abstractions. Computers are designed to interpret these abstractions in a very specific and deterministic way.</p>
<p>In order to write computer programs one has to learn how to encode natural language to symbols that computer can understand. This usually requires intricate knowledge of computer architecture and the syntax of the chosen computer language. Thus if you want a computer to understand your reality abstractions, you have to learn how to code.</p>
<p>Computers are tools that can execute rules defined in programs with superhuman speed and precision. They empower us with the ability to construct complex, multilayered abstractions, and transform our programs into truly dynamic and interactive maps of reality.</p>
<p>In many ways, programming is something that all of us already know how to do. The process of reality abstraction is fundamental to human beings. Computer programming is just the most effective way of doing this.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ In Honor of National Grammar Day ]]>
                </title>
                <description>
                    <![CDATA[ By Pete Considine …or The Joy and Pain of Code as Language When I’m not coding, reading about coding, or solving coding problems, I’m a managing editor for a business technology-related educator in the Pacific Northwest. As such, I spend at least eig... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/in-honor-of-national-grammar-day-f62930407f4b/</link>
                <guid isPermaLink="false">66c357f471e87702d4e5b6d6</guid>
                
                    <category>
                        <![CDATA[ language ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                    <category>
                        <![CDATA[ writing ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 07 Mar 2016 17:01:03 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*PO0Z0bmKZmZn8CnJy2BlTw.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Pete Considine</p>
<h4 id="heading-or-the-joy-and-pain-of-code-as-language">…or The Joy and Pain of Code as Language</h4>
<p>When I’m not coding, reading about coding, or solving coding problems, I’m a managing editor for a business technology-related educator in the Pacific Northwest. As such, I spend at least eight hours a day in that place where art and science crash headlong into each other, playing word doctor to the resulting casualties. Believe me, there are many. Fortunately, it seems I’m one of those who can cross the right brain/left brain divide without too much effort (though I confess to greatly preferring the right brain functions), so I’m comfortable hanging out in the middle space between them.</p>
<p>That also means that I spend at least eight hours a day thinking about language. Language and clarity. Clarity and efficiency. Efficiency and effectiveness. Effectiveness and … you get the point.</p>
<p>All this thinking has led me to conceive of the word “language” very broadly. For example, several years working in educational publishing taught me the linguistic qualities of mathematics — the grammar of how problems are written, the specific vocabulary used, and how many mathematical properties can actually be interpreted as simply finding synonyms for different “words.”</p>
<h3 id="heading-getting-to-the-point">Getting to the point …</h3>
<p>Some time ago, in an online forum for self-taught coders, someone asked a question about why learning the basics (which we can generally take to be HTML, CSS, and JavaScript) is so difficult; or rather, why it’s so difficult for some, but not for others. I replied that we’re basically trying to learn three foreign languages all at the same time. Not only that, but three foreign languages that use similar, but not <em>quite</em> the same, vocabularies. I thought it would be far stranger if it <em>wasn’t</em> as difficult as it is.</p>
<p>So what difference does that make? We already knew that we were learning languages, right? I mean, it’s right there in the name — programming <em>languages</em>. For the coders who don’t struggle, it doesn’t make much difference, if any at all. But for those who feel like they’re “never going to get it,” that their brains “just aren’t wired that way,” and that they’re “not cut out for coding,” it could make all the difference in the world. So the rest of this article is written for them.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*JcOG1YCnREvOzJUU8ul0gg.jpeg" alt="Image" width="500" height="333" loading="lazy">
_Photo by [Matylda Czarnecka](https://twitter.com/matylda" rel="noopener" target="<em>blank" title=").</em></p>
<h3 id="heading-learning-to-speak-all-over-again">Learning to Speak All Over Again</h3>
<p>Let’s start with a simple question — when was the last time you learned a new language? For many Americans, that was grade school, when they took a few years of Spanish, or German, or what have you. For some people, though, that would have been about the same time they <em>learned to walk</em>. No joke. If you weren’t forced to learn a foreign language at some point since then, the last time you learned a foreign language — before you started coding — was when you learned your native tongue.</p>
<p>Think about that for a minute. Most people say their first word at between 10 and 15 months. They don’t get a firm grasp on spelling and grammar until between 8 and 10 years old. Those that truly master the language usually only do so after several years of college.</p>
<p>You expect to master JavaScript in four months. As well as HTML5 and CSS3.</p>
<p>[<em>Insert skeptical expression here</em>]</p>
<p>So yeah, what you’re trying to do is hard.</p>
<h4 id="heading-a-side-argument-for-the-love-of-language"><em>(A Side Argument for the Love of Language)</em></h4>
<p>I hate to be one of those guys, because I think it’s somewhat out of step with the self-taught coder ethos, but <em>why</em> is also very important. Why are you learning to code? Not too many people learn to speak so they can get a job. In fact, everyone starts out learning to speak because they need to communicate something and have found that language is much more effective than crying at the top of their lungs until someone figures it out.</p>
<p>In the same way, I often suspect that the people who struggle most with learning to code are the ones that don’t have anything they want to communicate. Their reason for learning the language is much more pragmatic. There’s nothing wrong with pragmatism. I think the world needs more of that, actually. It’s just harder to learn things if there isn’t a passion or some sort of more intrinsic motivation for the learning. That’s why I did really well at calculus, but not very well at basic algebra — I was way more enthusiastic about calculus. I didn’t need to be forced to learn its grammar and vocabulary and punctuation. I wanted to know how to answer the questions that only calculus could answer.</p>
<h3 id="heading-one-last-thing-about-tools">One Last Thing About Tools</h3>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*tn3xelUuSq4AANdP5wN-ow.jpeg" alt="Image" width="375" height="500" loading="lazy">
_Photo by [Terry Madeley](http://href=”https://www.flickr.com/photos/terry/6156784804" data-flickr-embed="”true”"" rel="noopener" target="<em>blank" title=").</em></p>
<p>As I’ve been learning, I’ve seen bazillions of questions about frameworks and libraries and text editors and just about everything related to coding that isn’t actual code. It’s the same thing I saw with photography when I was moderating an online critique group— beginners who feel too insecure to participate in conversations about the substance of a thing instead choosing to talk about tools and rules. I totally get it. The problem is that it can often be a distraction from the real matter at hand, because just like the real test of a camera is the photograph that results from the photographer using it, the real test of a framework or library or text editor is the code that the coder produces with it.</p>
<p>As I’ve been learning, I’ve been trying out some of the different frameworks, libraries, and tools out there. With environments like <a target="_blank" href="http://codepen.io/">Codepen</a> and <a target="_blank" href="https://c9.io/">Cloud9</a>, it’s effortless to road test something new. The ones that I’ve taken to the most are the ones that simplify the grammar of coding rather than the ones that tend to the book itself.</p>
<p>I’ve come to think that one of the things that makes coding so hard is that some languages like HTML are about 75% grammar and punctuation and only 25% meaningful vocabulary. For example, here’s a line of HTML from one of my <a target="_blank" href="http://codepen.io/pete_considine/full/XdmbEJ/">Freecodecamp projects</a>:</p>
<br><i></i>

<p>And here’s the same line written in Jade:</p>
<p>button.Adjust.add(type=’button’)<br> i.fa.fa-fw.fa-arrow-circle-up</p>
<p>Naturally, I love the Jade version. It’s clear, concise, efficient, and effective. It makes the word doctor in me smile at its simplicity.</p>
<p>Things like NPM, on the other hand, drive me crazy. They’re basically just like having an editorial assistant whose only job is running around collecting your dictionaries every time you sit down to write something — even when you don’t actually need them. Sure he’s useful, but he’s a total distraction when he gets all amped up on Red Bull and starts breaking things.</p>
<p>There are times when the editorial assistant comes with the job and you can’t fire him because he’s the president’s nephew. So be it. You work with him as best you can and try not to shove him out a 12th-story window. But you sure as hell don’t go hiring your own if you don’t have to.</p>
<p>Of course, these are all the opinions of a maybe-intermediate level, self-taught code monkey whose interest in coding is much more passion project than ambitious career path, so take everything I’ve said with a healthy dose of “does that fit with my experience?”</p>
<p>As the Buddha said, “Rely not on theory, but on experience.”</p>
<p><em>(This essay began as a discussion in the <a target="_blank" href="https://www.facebook.com/groups/1594816820775537/">Newbie Coder Warehouse</a> Facebook group. If you’re a self-teaching coder, it’s an excellent resource.)</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ You’re Saying it Wrong ]]>
                </title>
                <description>
                    <![CDATA[ By Den McHenry Because my opinions are the best opinions While focusing on JavaScript to level up my web dev skills over the last several months, I’ve waged a silent war in my head over how everyone else seems to pronounce certain things. Well, here ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/you-re-saying-it-wrong-359e4634268/</link>
                <guid isPermaLink="false">66c367d7b737bb2ce707323a</guid>
                
                    <category>
                        <![CDATA[ humor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ language ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ writing ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sat, 24 Oct 2015 08:32:24 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*vgzNZcDIavmDHGfNKs0sSw.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Den McHenry</p>
<h4 id="heading-because-my-opinions-are-the-best-opinions">Because my opinions are the best opinions</h4>
<p>While focusing on JavaScript to level up my web dev skills over the last several months, I’ve waged a silent war in my head over how everyone else seems to pronounce certain things.</p>
<p>Well, here at last is my declaration, and I will countenance no disagreement and no appeals to sensible arguments or respected authorities.</p>
<ul>
<li>var rhymes with bear, not bar</li>
</ul>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*XZd1a-VGssYbpY90OHBtIg.jpeg" alt="Image" width="800" height="454" loading="lazy">
<em>var bear = true, bar = false;</em></p>
<ul>
<li>tuts rhymes with boots, not butts</li>
<li>JSON sounds like Jason, not Khe Sanh</li>
</ul>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*-xsBTvm-RvRT1wr-THlgRw.jpeg" alt="Image" width="800" height="520" loading="lazy">
<em>Okay, let’s parse this …</em></p>
<ul>
<li>in regex/regexp, reg rhymes with leg, not ledge</li>
<li>names ending in -ify are consciously and playfully improper. They do not follow normal accentuation rules (i.e., not like PERson to perSONify). Browserify is BROWSer-ify, not brow-ZER-ify. JSONify is JASon-ify, not jay-SAHN-ify</li>
<li>jQuery is like, “Hey, Siri,” not “Hey, Jerry”</li>
</ul>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*hXWcMUosfaA9K6aMwg69LA.jpeg" alt="Image" width="800" height="450" loading="lazy">
<em>Hey, Jerry: get a job!</em></p>
<ul>
<li>favicon is a “fave icon” and does not sound like “have a naan” (but don’t mind if I do)</li>
<li>SQL and its derivatives are cooler pronounced “sequel” rather than “ess queue el”</li>
</ul>
<p>I know it may be difficult to break those habits, but change can happen. After decades on the wrong side of two bitter fights I finally own a Mac and pronounce gif with a soft G.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*kVUmFRv0yf25TpXcFU3rHw.gif" alt="Image" width="500" height="292" loading="lazy"></p>
<p>And so can you!</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
