<?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[ ide - 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[ ide - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sun, 24 May 2026 16:30:53 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/ide/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ How to Install Neovim Using the nvchad Framework ]]>
                </title>
                <description>
                    <![CDATA[ Neovim is a popular IDE and is a solid alternative to VS Code. Neovim supports every major programming language and allows you to build anything, anywhere.  Neovim can be a bit problematic to start with, especially for newcomers. Writing a Neovim con... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/install-neovim-with-nvchad/</link>
                <guid isPermaLink="false">66d038bbdac44f94fd94e9d6</guid>
                
                    <category>
                        <![CDATA[ ide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Integrated Development Environment   ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Rajdeep Singh ]]>
                </dc:creator>
                <pubDate>Thu, 14 Mar 2024 14:17:07 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2024/03/How-to-Install-Neovim-Using-the-nvchad-Framework.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><a target="_blank" href="https://neovim.io/">Neovim</a> is a popular IDE and is a solid alternative to VS Code. Neovim supports every major programming language and allows you to build anything, anywhere. </p>
<p>Neovim can be a bit problematic to start with, especially for newcomers. Writing a Neovim configuration from scratch is often difficult. To resolve this issue, we will install Neovim using the Nvchad framework. </p>
<p><a target="_blank" href="https://nvchad.com/">Nvchad</a> is a Neovim framework/configuration provider that has a rich, beautiful UI interface, blazing-fast startup time, and helps you work productively with Neovim.</p>
<p>You don't need to configure everything from scratch, as most things come pre-configured. There are multiple themes, code snippets, syntax highlighting, LSP configuration, plugin management, key mapping, and other helpful features.</p>
<p>In this article, I'll give you step-by-step instructions on installing Neovim and nvchad from scratch in your Linux and Debian based distro.</p>
<h2 id="heading-how-to-set-up-the-project">How to Set Up the Project</h2>
<p>To download Neovim and nvchad in your distro, you'll need some additional command line tools. These will help you install the software:</p>
<ol>
<li><a class="post-section-overview" href="#heading-install-the-git-cli">Git CLI</a></li>
<li><a class="post-section-overview" href="#heading-install-the-curl-cli">Curl CLI</a></li>
<li><a class="post-section-overview" href="#heading-install-the-unzip-cli">Unzip CLI</a></li>
<li><a class="post-section-overview" href="#heading-install-the-fc-cache-font-config-cli">Fc cache (Font Config) CLI</a></li>
</ol>
<p>Let's go through installing these tools to make sure you have them:</p>
<h3 id="heading-install-the-git-cli">Install the Git CLI</h3>
<p>To install Git, run the following command:</p>
<pre><code class="lang-bash">sudo apt-get install git
</code></pre>
<h3 id="heading-install-the-curl-cli">Install the Curl CLI</h3>
<p>To install curl, run the following command:</p>
<pre><code class="lang-bash">sudo apt-get install curl
</code></pre>
<h3 id="heading-install-the-unzip-cli">Install the Unzip CLI</h3>
<p>To install Unzip, run the following command:</p>
<pre><code class="lang-bash">sudo apt-get install unzip
</code></pre>
<h3 id="heading-install-the-fc-cache-font-config-cli">Install the Fc cache (Font Config) CLI</h3>
<p>To install the Fc cache CLI, run the following command.</p>
<pre><code class="lang-bash">sudo apt install fontconfig
</code></pre>
<h2 id="heading-how-to-install-neovim-and-nvchad">How to Install Neovim and nvchad</h2>
<p>If you follow these steps, you can easily install Neovim and nvchad, even if you are a newcomer. It takes some time, but you don't need to have deep knowledge about Neovim and nvchad to get them set up.</p>
<h3 id="heading-install-neovim">Install Neovim</h3>
<p>The first step is to install Neovim on your machine. To do that, you'll need to run the following command depending on your distro:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># Ubuntu ( Snap User)</span>
sudo snap install nvim --classic

<span class="hljs-comment"># NixOS</span>
nix-env -iA nixpkgs.neovim

<span class="hljs-comment"># MacOS</span>
brew install neovim

<span class="hljs-comment"># Arch Linux</span>
sudo pacman -S neovim
</code></pre>
<p>For other operating systems such as Windows, you can read the <a target="_blank" href="https://github.com/neovim/neovim/blob/master/INSTALL.md">installation documentation Page</a>. I've also written an article on <a target="_blank" href="https://medium.com/thelinux/the-correct-way-to-install-the-neovim-42f3076f9b88"><strong>the correct way to install Neovim</strong></a>, which you can also check out.</p>
<h2 id="heading-how-to-install-nerd-font">How to Install Nerd Font</h2>
<p>The next step is to install Nerd Font on your laptop or operating system. Nerd Font is a prerequisite for nvchad. If you cannot download Nerd Font, your nvchad UI will not work.</p>
<p>To install Nerd Font in Debian or Debian-based distros and macOS, you can run the following command:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># Debain, Ubuntu, Linux Mint, Kali Linux, etc.</span>
bash -c  <span class="hljs-string">"<span class="hljs-subst">$(curl -fsSL https://raw.githubusercontent.com/officialrajdeepsingh/nerd-fonts-installer/main/install.sh)</span>"</span> 

<span class="hljs-comment"># MacOS</span>
brew tap homebrew/cask-fonts &amp;&amp; brew install --cask font-&lt;Nerd-FONT- NAME&gt;-nerd-font
</code></pre>
<p>Before running the <a target="_blank" href="https://github.com/officialrajdeepsingh/nerd-fonts-installer">nerd-fonts-installer</a>, make sure you've installed <strong>curl</strong>, <strong>unzip</strong>, and <strong>Fc cache</strong> CLI in your Debian distro, following the instructions above.</p>
<h2 id="heading-how-to-install-nvchad">How to Install nvchad</h2>
<p>The last and final step is to install the nvchad framework in Neovim. To do so, run the following command:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># Linux &amp; macOS</span>
git <span class="hljs-built_in">clone</span> https://github.com/NvChad/starter ~/.config/nvim &amp;&amp; nvim
</code></pre>
<p>The following command takes some time, depending on your internet speed, and installs additional plugins required by nvchad from the internet. </p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>For a newcomer starting with Neovim, the nvchad framework is a great choice. Without nvchad, configuring Neovim from scratch is a hard task for a beginner. Choosing the Neovim framework (configuration) is the right choice for newcomers.</p>
<p>Before starting with Neovim, read up and make sure It is the right choice for you. I recently found a <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=asvetliakov.vscode-neovim">VS Code plugin</a> created and maintained by Neovim. You can get the same Neovim experience inside VS Code. After that, you can decide which you prefer.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Set Up Your Java Development Environment ]]>
                </title>
                <description>
                    <![CDATA[ By Jacob Isah  Setting up an efficient Java development environment is key if you're a Java dev. It helps streamline your coding process and makes you more productive.  In this article, I will walk you through the important steps you need to set up a... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-set-up-java-development-environment-a-comprehensive-guide/</link>
                <guid isPermaLink="false">66d45f389208fb118cc6cfd1</guid>
                
                    <category>
                        <![CDATA[ ide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Java ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 08 Jun 2023 20:14:59 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/06/How-To-Set-Up-Java-Development-Environment--A-Comprehensive-Guide-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Jacob Isah </p>
<p>Setting up an efficient Java development environment is key if you're a Java dev. It helps streamline your coding process and makes you more productive. </p>
<p>In this article, I will walk you through the important steps you need to set up a Java development environment. We'll cover how to install the Java Development Kit (JDK), the Integrated Development Environment (IDE), and configure the necessary tools and libraries. Let's dive in!</p>
<h2 id="heading-how-to-install-the-java-development-kit-jdk">How to Install the Java Development Kit (JDK)</h2>
<p>To begin, you need to install the JDK, which includes the Java Runtime Environment (JRE) as well as development tools, like the Java compiler and debugger. </p>
<p>Follow these steps below:</p>
<ol>
<li>Visit the <a target="_blank" href="https://www.oracle.com/java/technologies/downloads/">official Oracle website</a>.</li>
<li>Download the latest version of the JDK that matches your operating system.</li>
<li>Run the installer and follow the on-screen instructions.</li>
<li>After installation, set the <code>JAVA_HOME</code> environment variable to the JDK installation directory.</li>
</ol>
<h3 id="heading-how-to-set-the-javahome-environment-variable">How to Set the <code>JAVA_HOME</code> Environment Variable</h3>
<h4 id="heading-know-the-jdk-installation-directory">Know the JDK Installation Directory</h4>
<p>The first step you need to take before setting the <code>JAVA_HOME</code> environment variable, is to know the installation directory of the JDK. Take note of the path where the JDK is installed on your machine.</p>
<h4 id="heading-how-to-access-environment-variables">How to Access Environment Variables</h4>
<p>To access the environment variables on your machine, follow the steps below:</p>
<ol>
<li>On Windows: Right-click on the "This PC" or "My Computer" icon on your desktop or File Explorer and select "Properties." In the System window, click on "Advanced system settings" on the left-hand side. You can now copy the environment variables.</li>
<li>On macOS: Go to "System Preferences" and click on "Security &amp; Privacy." Then, click on the "Privacy" tab and select "Full Disk Access" from the left-hand side. Click on the lock icon at the bottom left and enter your password to make changes. Now, you can copy the environment variables.</li>
</ol>
<h4 id="heading-set-the-javahome-environment-variable">Set the <code>JAVA_HOME</code> Environment Variable</h4>
<p>Depending on your operating system, follow the instructions below:</p>
<p><strong>Windows:</strong></p>
<ol>
<li>In the System Properties window, click on the "Environment Variables" button.</li>
<li>In the "System Variables" section, click on the "New" button.</li>
<li>Set the "Variable name" as <code>JAVA_HOME</code>.</li>
<li>In the "Variable value" field, enter the path to the JDK installation directory. For example, if the JDK is installed in "C:\Program Files\Java\jdk1.8.0_XXX" (where XXX represents the specific update number), enter that path.</li>
<li>Click "OK" to save the changes.</li>
</ol>
<p><strong>macOS:</strong></p>
<ol>
<li>In the System Preferences window, click on "Security &amp; Privacy" and navigate to the "Privacy" tab.</li>
<li>Scroll down and select "Full Disk Access" from the left-hand side.</li>
<li>Click on the "+" button and navigate to the Applications &gt; Utilities folder.</li>
<li>Open the "Terminal" application and click "Open."</li>
<li>In the Terminal, enter the following command:</li>
</ol>
<pre><code class="lang-java">echo export JAVA_HOME=/Library/Java/JavaVirtualMachines/{JDK_VERSION}/Contents/Home &gt;&gt; ~/.bash_profile
</code></pre>
<p>Replace <code>{JDK_VERSION}</code> with the actual version number of the installed JDK without the curly braces {}.</p>
<p>Then you can close the Terminal and you should be all set.</p>
<h4 id="heading-verify-the-javahome-environment-variable">Verify the <code>JAVA_HOME</code>  Environment Variable</h4>
<p>To ensure that the <code>JAVA_HOME</code> environment variable is set correctly, open a new terminal or command prompt window and enter the following command:</p>
<p><strong>For Windows:</strong></p>
<pre><code class="lang-java">echo %JAVA_HOME%
</code></pre>
<p><strong>For macOS:</strong></p>
<pre><code class="lang-java">echo $JAVA_HOME
</code></pre>
<p>The command above should display the path to the JDK installation directory that you previously set.</p>
<p>Congratulations! You have successfully set the <code>JAVA_HOME</code> environment variable to the JDK installation directory. This variable is now accessible to Java applications and tools on your system.</p>
<h2 id="heading-choose-an-integrated-development-environment-ide">Choose an Integrated Development Environment (IDE)</h2>
<p>An IDE makes coding simple and gives you various features like code editing, debugging, and project management. </p>
<p>There are many popular IDEs for Java development. I recommend IntelliJ because of its advanced refactoring tools.</p>
<p>You can download IntelliJ IDEA Community Edition or Ultimate Edition, depending on your requirements. Install it, and you will be guided through the setup process, including selecting key plugins and themes. If you are a student of any university, you can get the <a target="_blank" href="https://education.github.com/students">Github Student Pack</a>.</p>
<h3 id="heading-how-to-configure-your-ide">How to Configure Your IDE</h3>
<p>Once you have downloaded IntelliJ as your chosen IDE, you need to configure it to suit your needs. </p>
<p>The following configurations are some of the things you can do once you have downloaded the IntelliJ IDE.</p>
<h4 id="heading-set-the-jdk">Set the JDK</h4>
<p>You'll need to point your IntelliJ to the JDK installation directory so that it uses the correct Java version for compilation and execution.</p>
<p>Open IntelliJ IDEA and go to "File" in the menu bar, I am using Ubuntu to demonstrate this.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/06/Screenshot-from-2023-06-07-14-13-13.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>then select "Project Structure":</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/06/Screenshot-from-2023-06-07-14-14-25.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In the Project Structure dialog, navigate to the "SDKs" section (under "Platform Settings") on the left-hand side.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/06/Screenshot-from-2023-06-07-14-17-33.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Click the "+" button on the top  right-hand side to add a new JDK. You can see what this looks like from the screenshot above.</p>
<p>In the "Add JDK" dialog, locate and select the directory where your JDK is installed. I am on Ubuntu. </p>
<pre><code class="lang-java">/usr/lib/jvm/java-<span class="hljs-number">11</span>-openjdk-amd64
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/06/Screenshot-from-2023-06-07-14-48-59.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>The JDK installation directory typically has a structure like this: </p>
<p><strong>Windows</strong></p>
<p><code>C:\Program Files\Java\jdk1.x.x_xx</code>  </p>
<p><strong>macOS</strong></p>
<p><code>/Library/Java/JavaVirtualMachines/jdk1.x.x_xx.jdk/Contents/Home</code></p>
<p>Click "OK" to add the JDK.</p>
<p>After adding the JDK, go to the "Project" section (under "Project Settings") on the left-hand side of the Project Structure dialog.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/06/Screenshot-from-2023-06-07-21-25-33.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In the "SDK" dropdown, select the JDK you just added.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/06/Screenshot-from-2023-06-07-21-27-35.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you want to set the JDK for a specific module, go to the "Modules" section (under "Project Settings") on the left-hand side, select the module, and then choose the JDK from the "Module SDK" dropdown.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/06/Screenshot-from-2023-06-07-21-29-59.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Click "OK" to apply the changes and close the Project Structure dialog.</p>
<p>IntelliJ IDEA should now be configured to use the JDK you selected for compilation and execution of your Java projects.</p>
<h4 id="heading-customize-editor-preferences">Customize Editor Preferences</h4>
<p>Adjust the code editor's font, indentation, and code style settings to match your coding style. This enhances readability and consistency.</p>
<h4 id="heading-install-plugins">Install Plugins</h4>
<p>IntelliJ offers a wide range of plugins to extend functionality. Install plugins for version control systems (for example, Git), build tools (for example, Maven), icons, and any other tools you frequently use.</p>
<h2 id="heading-explore-additional-tools-and-libraries">Explore Additional Tools and Libraries</h2>
<p>Java offers a vast ecosystem of tools and libraries that can enhance your development experience. </p>
<p>Some popular options include:</p>
<ol>
<li>JUnit: A unit testing framework for Java that helps write and execute tests to ensure code quality.</li>
<li>Apache Commons: A library containing reusable components and utilities, such as handling file operations, collections, and string manipulation.</li>
<li>Log4j: A logging framework that assists in generating log statements during runtime.</li>
</ol>
<h1 id="heading-conclusion">Conclusion</h1>
<p>In this article, you learned how to set up Java development environment that is tailored to your needs. </p>
<p>Specifically, you learned how to install the JDK, select an IDE, configure it appropriately, and leverage build tools and libraries that will empower you to write efficient, high-quality Java code. </p>
<p>Thanks for reading.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What is an IDE? IDE Meaning in Coding ]]>
                </title>
                <description>
                    <![CDATA[ When you're first learning to code, there are a few tools you'll typically want to decide on before getting started. You'll pick a tech stack and a programming language to learn and use, and you'll also choose an IDE, or integrated development enviro... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/what-is-an-ide-for-beginners/</link>
                <guid isPermaLink="false">66d4600a264384a65d5a9588</guid>
                
                    <category>
                        <![CDATA[ ide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Integrated Development Environment   ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Joel Olawanle ]]>
                </dc:creator>
                <pubDate>Thu, 01 Sep 2022 18:48:32 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/09/cover-template--4-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>When you're first learning to code, there are a few tools you'll typically want to decide on before getting started.</p>
<p>You'll pick a tech stack and a programming language to learn and use, and you'll also choose an IDE, or integrated development environment, where you'll write your code.</p>
<p>Many different types of IDEs are available today. Some work only online, while others work locally and possibly online. Some have specific features that help you write more precise and correct code, and so on.</p>
<p>In this article, you will learn what an IDE is, what features an IDE can have, and what factors to consider when selecting an IDE for coding.</p>
<h2 id="heading-what-is-an-ide">What is an IDE?</h2>
<p>Developers use an IDE, which stands for Integrated Development Environment, to write computer programs. You can write these computer programs in any language, including Python, Java, and many others.</p>
<p>There are always tools that you'll use to help you achieve your goals in life. For example, a writer uses text editors such as Microsoft Word and Google Docs. An accountant uses spreadsheets such as Microsoft Excel and Google Sheets. And a programmer uses IDEs.</p>
<p>These IDEs increase your productivity by making writing, editing, debugging, and testing code easier.</p>
<p><strong>Note:</strong> You can write code with text editors, but these text editors won't give you all the benefits an IDE can offer.</p>
<h2 id="heading-why-use-an-ide">Why Use an IDE?</h2>
<p>Before IDEs were introduced, programmers used text editors such as Notepad to write code. They then saved that code using programming language extensions such as .php for PHP files and many more.</p>
<p>However, these text editors were plain and lacked some features. This made writing, debugging, and running code difficult and time-consuming.</p>
<p>This resulted in the development of the IDE, which includes some core functionality that extends beyond text editing, such as:</p>
<h3 id="heading-syntax-highlighting">Syntax Highlighting</h3>
<p>An IDE detects the programming language and then applies specific colors, fonts, and styles to certain keywords, words, and text. This makes your code readable, clean, easier to detect syntax errors, and lots more.</p>
<pre><code class="lang-bash">// without syntax highlighting

const sayHello = () =&gt; {
  console.log(<span class="hljs-string">"Hello World"</span>);
}
</code></pre>
<pre><code class="lang-js"><span class="hljs-comment">// with syntax highlighting</span>

<span class="hljs-keyword">const</span> sayHello = <span class="hljs-function">() =&gt;</span> {
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Hello World"</span>);
}
</code></pre>
<h3 id="heading-auto-completion">Auto Completion</h3>
<p>When we type code in an IDE, a dropdown of possible suggestions appears from which we can select what we want. These helpful suggestions appear without us having to write the entire code, which can be slow and may result in a syntax error.</p>
<p><img src="https://media2.giphy.com/media/8TB7KS8Q9vHIx1F9vC/giphy.gif?cid=790b761183e20bb773f96c56784399cc5608e9c3035aa750&amp;rid=giphy.gif&amp;ct=g" alt="Animated GIF" width="480" height="140" loading="lazy"></p>
<h3 id="heading-easier-debugging">Easier Debugging</h3>
<p>Because programmers are humans, we are prone to making mistakes (bugs) in our code. These can be challenging to detect with text editors but can be easier with IDEs.</p>
<p>When we run or test our code, an IDE will show us the errors, including the lines where they appear and potential solutions.</p>
<p>This makes debugging (the process of fixing any errors or bugs discovered during testing) much more straightforward.</p>
<p><img src="https://paper-attachments.dropbox.com/s_110D5189045A36DC79B67893295C6233E2BEE4B4A7634435CBB07595B3BC257C_1662065625612_image.png" alt="s_110D5189045A36DC79B67893295C6233E2BEE4B4A7634435CBB07595B3BC257C_1662065625612_image" width="600" height="400" loading="lazy"></p>
<p>There are many more reasons why you should use IDEs, such as the ability to easily compile your code and lots more.</p>
<h2 id="heading-how-to-choose-an-ide-for-coding">How to Choose an IDE for Coding</h2>
<p>Having read this article to this point, the next question on your mind is likely - how do I choose an IDE?</p>
<p>Don't worry, this doesn't have to be too complicated. But weighing some options before choosing an IDE is a good idea.</p>
<p>Here are some things to consider:</p>
<h3 id="heading-what-programming-language-youre-using">What programming language you're using</h3>
<p>There are many different types of IDEs, as mentioned above. Some are dedicated and only work with specific languages, while others are multi-language and support multiple languages.</p>
<p>The specialized IDEs include automation features tailored to the syntax of specific languages. This means that language is an important consideration when selecting an IDE.</p>
<p>Some examples of specialized IDEs include <a target="_blank" href="https://www.jetbrains.com/pycharm/">PyCharm</a> for Python, <a target="_blank" href="http://www.jetbrains.com/idea/">Intellij IDEA</a> for Java, <a target="_blank" href="http://www.codeblocks.org/">Code::Blocks</a> for C/C++, and <a target="_blank" href="http://www.jetbrains.com/ruby/">RubyMine</a> for Ruby/Rails.</p>
<p>If you're looking for a multi-language IDE, <a target="_blank" href="https://code.visualstudio.com/">Visual Studio Code</a> is a popular option. It's useful for web development and many other purposes.</p>
<h3 id="heading-what-operating-system-youre-using">What operating system you're using</h3>
<p>Another essential factor to consider is the operating system you're using.</p>
<p>Some IDEs work very well on one OS but not on another. On one operating system, an IDE may be slow or difficult to use, and vice versa on another. Some IDEs exist on one OS but not on another, even though most IDEs today have multiple versions for different operating systems.</p>
<p>For example, Xcode is the built-in IDE for macOS. It is not installed by default, but you can get it for free from Apple via the Terminal or Apple's website. However, this IDE is incompatible with Windows.</p>
<h3 id="heading-the-cost">The cost</h3>
<p>Even if most IDEs are free, the add-ons or customization features may not be. This means you must research the specific features you desire, the cost, and whether they are affordable.</p>
<p>For example, if you want an AI assistant that can suggest code and complete your code for you, saving you time, there are many extensions available, such as <a target="_blank" href="https://www.tabnine.com/">Tabnine</a> for VScode. This supports almost all programming languages, but it is paid and only offers a 14-day free trial.</p>
<p>Before selecting an IDE, you should compare as many extensions that offer what you want and the IDE they work with, their cost, the languages they support, and other factors as possible.</p>
<p>There are other details to consider, but this will get you started.</p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>In this article, you have learned what an IDE is, why programmers use them, and how to choose one.</p>
<p>To summarize, there are some IDEs that are specific to specific programming languages, as we discussed above. But others, like VSCode, are more general-purpose and support many languages.</p>
<p>Before selecting an IDE, research your preferred language, operating system, financial capabilities, and customization features.You can read more on <a target="_blank" href="https://www.freecodecamp.org/news/what-is-an-ide-in-programming-an-ide-definition-for-developers/">What is an IDE in Programming?</a> on our previous areticle by <a target="_blank" href="https://www.freecodecamp.org/news/author/larymak/">Hillary</a>.</p>
<p>Have fun coding!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Python IDE – Best IDEs and Editors for Python ]]>
                </title>
                <description>
                    <![CDATA[ Much of your experience as a developer will depend on what program you've chosen to write your code in. A good integrated development environment (IDE) or Code Editor can really boost your productivity. The problem with popular languages like Python ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/python-ide-best-ides-and-editors-for-python/</link>
                <guid isPermaLink="false">66b0ab472344be226f331c6c</guid>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Farhan Hasin Chowdhury ]]>
                </dc:creator>
                <pubDate>Tue, 12 Apr 2022 19:28:47 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/04/Python-IDE---Best-IDEs-and-Editors-for-Python.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Much of your experience as a developer will depend on what program you've chosen to write your code in. A good integrated development environment (IDE) or Code Editor can really boost your productivity.</p>
<p>The problem with popular languages like Python is that every IDE or code editor under the sun seems to have good support for the language. While this can be great, choosing the best one becomes a bit tricky. </p>
<p>In this article I'll introduce you to three IDEs and code editors that can make your Python journey smoother.</p>
<p>But before I begin I want to clarify the fact that this is not an exhaustive list. Like I said, Python is one of the most popular programming languages so it's supported by a large number of code editors and IDEs. </p>
<p>I could've included as many of them as possible, but instead I chose to include the ones that I've used at some point in my life and don't mind going back to. Because I think this'll be more helpful.</p>
<p>Without any further ado, let's jump in!</p>
<h2 id="heading-table-of-contents">Table of Contents</h2>
<ul>
<li><a class="post-section-overview" href="#heading-ide-vs-code-editor-whats-the-difference">IDE vs Code Editor – What's the difference?</a></li>
<li><a class="post-section-overview" href="#heading-pycharm">PyCharm</a></li>
<li><a class="post-section-overview" href="#heading-microsoft-visual-studio-code">Microsoft Visual Studio Code</a></li>
<li><a class="post-section-overview" href="#heading-sublime-text">Sublime Text</a></li>
<li><a class="post-section-overview" href="#heading-conclusion">Conclusion</a></li>
</ul>
<h2 id="heading-ide-vs-code-editor-whats-the-difference">IDE vs Code Editor – What's the Difference?</h2>
<p>Before you start reading about the IDEs and Code Editors I have in store for you, let's clarify the definitions of an IDE and a Code Editor.</p>
<p>As you may already know, source code files are just text files with certain extensions appended to them. Any text editor that has some special feature such as syntax highlighting, automatic code indentation, and so on to make editing code files easier is called a code editor. </p>
<p>Popular code editors include Visual Studio Code, Sublime Text, Atom, Notepad++ and more.</p>
<p>An IDE or Integrated Development Environment, on the other hand, is a much more complex suite of software that combines multiple tools such as a code editor, a file browser, a terminal emulator, a database explorer and more in a single package. </p>
<p>Popular IDEs include PyCharm, IntelliJ Idea, Microsoft Visual Studio, and others.</p>
<p>But thanks to modern highly extensible code editors such as Microsoft Visual Studio Code, the line between an IDE and a Code Editor has started to fade away.</p>
<p>Now that you have a better idea of what an editor is compared to a full-blown IDE, let's look at some of the best for Python coding.</p>
<h2 id="heading-pycharm">PyCharm</h2>
<p>The first one in our list is an IDE from JetBrains. <a target="_blank" href="https://www.jetbrains.com/pycharm/">PyCharm</a> is one of the most used Python IDEs out there (if not the most used).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/complexLook@2x.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>https://www.jetbrains.com/pycharm/</em></p>
<p>The IDE has two editions. The professional edition will cost you $8.90 every month and $89.00 every year if billed yearly. There is also the community edition which is completely free and is built on open-source software. In this article I'll discuss the community edition.</p>
<p>Both editions are available for Windows, macOS, and Linux. You can download the 30 day trial of the professional edition or the community edition from the official <a target="_blank" href="https://www.jetbrains.com/pycharm/download/">download page</a>.</p>
<p>The installation process is pretty straightforward regardless of the platform you're on. Once you've downloaded and installed PyCharm on your computer, you should be able to start the IDE. You can use the start menu shortcut on Windows, the Applications directory on macOS, or your application launcher on Linux.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-17.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can create a new Python project by clicking on the <em>New Project</em> button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-18.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In the next step, choose where you'd like to store your project. You can either create a new virtual environment or use a previously configured interpreter. In this case, I'm creating a new environment.</p>
<p>If you check the <em>Create a main.py welcome script</em> option, a new Python file with some boilerplate code will be created inside your project. Once you're happy with all the choices, hit the <em>Create</em> button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-19.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>This is what the code editor looks like once the project has been created. On the left side you can browse all your source files, and you can hit the play button on the top right corner of the window to run the selected scripts in the dropdown.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/run-code-pycharm.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>As you can see, PyCharm comes with a terminal built in on the bottom of the window and you can see outputs from your program without ever leaving PyCharm.</p>
<p>The community edition is quite complete and you can do more or less everything you can do on the professional edition. The professional edition has better support for web frameworks like Django and some other bells and whistles.</p>
<p>If you're a student, you can get PyCharm Professional Edition and all other JetBrains stuff for free <a target="_blank" href="https://www.jetbrains.com/community/education/#students">by applying on their website</a>. You can also get a free license of all the JetBrains products if you're <a target="_blank" href="https://www.jetbrains.com/community/opensource/">an open-source maintainer</a>.</p>
<h2 id="heading-microsoft-visual-studio-code">Microsoft Visual Studio Code</h2>
<p>Next in the list of my favorites is Microsoft Visual Studio Code or VSCode for short. It's an open-source, electron-powered, cross-platform code editor from Microsoft with a ton of customization options and extensions.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-21.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>By installing the right set of extensions, you can turn Visual Studio Code into almost a fully-featured Python IDE. You can download VSCode for free from the <a target="_blank" href="https://code.visualstudio.com/#alt-downloads">official download site</a> for Windows, macOS, and Linux.</p>
<p>Once you've installed VSCode on your system, open the software and go to the extensions tab by hitting the <em>Ctrl + Shift + X</em> key combination.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-22.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Use the search bar to search for and install the following extensions:</p>
<ul>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=ms-python.python">Python</a> – provides features such as IntelliSense (Pylance), linting, debugging, code navigation, code formatting, refactoring, variable explorer, test explorer, and more!</li>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance">PyLance</a> – works alongside Python in Visual Studio Code to provide performant language support.</li>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode">Visual Studio IntelliCode</a> – provides AI-assisted development features for Python, TypeScript/JavaScript and Java developers in Visual Studio Code.</li>
</ul>
<p>Once you have these three installed, you're good to go. Create a directory anywhere on your machine and open that folder using VSCode. You can use the integrated terminal to run your code or execute any command in general.</p>
<p>You can set breakpoints by clicking on the left side of any line number. Then you can hit <em>F5</em> to start debugging or <em>Ctrl + F5</em> to run the program without debugging. VSCode has a lot more tricks up its sleeve that you'll find out as you keep using it.</p>
<h2 id="heading-sublime-text">Sublime Text</h2>
<p>Sublime Text is one of the OG code editors that has been used by developers for years. It's a very performant, powerful code editor with rich support for packages.</p>
<p>You can download Sublime Text from their <a target="_blank" href="https://www.sublimetext.com/download">official download page</a> for Windows, macOS, and Linux. Once you have it installed, start Sublime Text like any other software.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-23.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Now click on <em>Tools &gt; Install Package Control...</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-24.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>This'll install the Sublime Package Manager. Wait until a success message shows up.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-25.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Now go to Command Palette using the <em>Ctrl + Shift + P</em> key combination and type <em>Install Package</em>:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-26.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Select the first option and search for the <a target="_blank" href="https://packagecontrol.io/packages/Anaconda">Anaconda</a> package. This is the ultimate Python package that turns Sublime Text into a Python IDE with features like autocompletion, code linting, IDE features, autopep8 formating, McCabe complexity checker, Vagrant and Docker support, and more.</p>
<p>There are also more specific packages such as <a target="_blank" href="https://packagecontrol.io/packages/Djaneiro">Djaneiro</a> for Django support and <a target="_blank" href="https://packagecontrol.io/packages/requirementstxt">requirementstxt</a> for requirements.txt support on Sublime Text. Just look around the Package Control <a target="_blank" href="https://packagecontrol.io/browse">website</a> and you may find some pretty useful packages.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>As I've already said, this is not an exhaustive list of all the popular Python IDEs and Code Editors. I've also used <a target="_blank" href="https://www.spyder-ide.org/">Spyder</a> at a point in my life but decided to leave it off since it's targeted at scientists and engineers. </p>
<p>I've also used <a target="_blank" href="https://docs.python.org/3/library/idle.html">IDLE</a> for a brief period as well but it didn't seem like a strong enough option when it comes to larger projects. </p>
<p>If you think I've left out any other good one, let me know via <a target="_blank" href="https://twitter.com/frhnhsin">Twitter</a> or <a target="_blank" href="https://www.linkedin.com/in/farhanhasin/">LinkedIn</a>. Also, if you're native Bengali speaker, checkout freeCodeCamp's <a target="_blank" href="https://www.freecodecamp.org/bengali/news/">Bengali Publication</a> and <a target="_blank" href="https://www.youtube.com/channel/UCYl5XjGuTM1gbXUuxH1e0jA">YouTube Channel</a>. Till the next one, stay safe and keep learning.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ The 5 Best Code Editors for Mac – MacOS Text Editor Guide ]]>
                </title>
                <description>
                    <![CDATA[ By Dillion Megida When you're coding, you're writing various text that can be executed by different language compilers. And what makes this text fun and easy to write are the editors that we use. Different editors have different features. But they ha... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/the-5-best-code-editors-for-mac-macos-text-editor-guide/</link>
                <guid isPermaLink="false">66d84f6063d2055c664a1a5d</guid>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Integrated Development Environment   ]]>
                    </category>
                
                    <category>
                        <![CDATA[ macOS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ vim ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 28 Feb 2022 14:46:44 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/02/pexels-negative-space-169573.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Dillion Megida</p>
<p>When you're coding, you're writing various text that can be executed by different language compilers. And what makes this text fun and easy to write are the editors that we use.</p>
<p>Different editors have different features. But they have a common goal: making writing code easier – easier to compose, debug, and read.</p>
<p>In this article, we'll look at five code editors that can improve development on your Mac device.</p>
<h2 id="heading-1-sublime-text">1. Sublime Text</h2>
<p><a target="_blank" href="https://www.sublimetext.com/">Sublime Text</a> is a lightweight editor with many features for improving your code-writing experience. Here are some of its features:</p>
<h3 id="heading-multiple-view-panes">Multiple view panes</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-92.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://forum.sublimetext.com/t/follow-mode-for-sublime/5100/4">Multiple view panes</a></em></p>
<p>Sublime Text offers multiple view panes for writing code. This way, you can view multiple files at once. </p>
<p>What's more fun is you can open the same file in two panes. This feature can be helpful when you're writing code in a file with long lines of code, as you'll be able to scroll to the top in one pane and then write in the bottom of the other.</p>
<h3 id="heading-side-by-side-view-for-type-definitions">Side-by-side view for Type Definitions</h3>
<p>Instead of just viewing type definitions in a small popup or opening the definition file that overrides the current view, Sublime Text provides a side-by-side view of a definition file for the types in the current file.</p>
<h3 id="heading-multiple-selections">Multiple Selections</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-93.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://medium.com/sweetmeat/multi-line-selection-text-entry-with-sublime-text-77f226812324">Multi-Line Selection Text Entry with Sublime Text</a></em></p>
<p>There are two forms of multi-selections: multi-selecting the same characters or different characters.</p>
<h4 id="heading-same-character-selection">Same character selection</h4>
<p>Say you want to rename a literal (variable, function, and so on) in multiple places. Sublime Text allows you to highlight the literal, and using <code>Ctrl/Cmd D</code> you can select other occurrences of that literal and edit, replace, or do what you want.</p>
<h4 id="heading-different-characters-selection">Different characters selection</h4>
<p>Maybe some literals are spelled differently, but you want to highlight them together. Sublime allows you to use your mouse to highlight many things at once and operate on them as you choose.</p>
<h2 id="heading-2-vscode">2. VSCode</h2>
<p>The <a target="_blank" href="https://code.visualstudio.com/">VSCode</a> editor offers syntax light, <a target="_blank" href="https://code.visualstudio.com/docs/editor/intellisense#:~:text=IntelliSense%20is%20a%20general%20term,%2C%20and%20%22code%20hinting.%22">IntelliSense</a> features (autocompletes, code hinting, and more), custom configurations, and room for different plugins. VSCode also allows multiple selections and multiple view panes.</p>
<p>Here are more features of VSCode:</p>
<h3 id="heading-code-debugging">Code Debugging</h3>
<p>With VSCode, you do not need to debug on your browser or other tools.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-94.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://code.visualstudio.com/docs/editor/debugging">Debugging in Visual Studio Code</a></em></p>
<p>VSCode allows you to debug right from your editor using breakpoints, the call stack, and even an interactive console.</p>
<h3 id="heading-many-extensions-for-different-things">Many extensions for different things</h3>
<p>VSCode has a <a target="_blank" href="https://www.freecodecamp.org/news/p/fbff585a-bfcd-44e5-8a3a-024bb1eb2774/Extensions%20for%20Visual%20Studio%20family%20of%20products%20|%20Visual%20Studio%20Marketplace">large marketplace</a> for different languages, frameworks, and even your editor. You have extensions that beautify your editor's appearance and experience and tools that help with autocompletion when writing code.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-95.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://code.visualstudio.com/docs/editor/extension-marketplace">Managing Extensions in Visual Studio Code</a></em></p>
<h3 id="heading-built-in-terminal">Built-in Terminal</h3>
<p>With VSCode, you have a a built-in shell terminal where you can execute commands without leaving your editor to go to a different terminal app. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-97.png" alt="Image" width="600" height="400" loading="lazy">
<em>The terminal view of VSCode</em></p>
<p>A small screen may make your editing view small and a bit inconvenient, but with a large monitor, for example, the view is just okay.</p>
<p>VSCode also has multiple view panes, character selection, and multiple character replacements.</p>
<h2 id="heading-3-atom">3. Atom</h2>
<p><a target="_blank" href="https://atom.io/">Atom</a> is a highly customizable code editor. This is why the team calls it a "hackable text editor". From the appearance and colors on the editor to the key combinations for commands and many other things, you can customize Atom as much as you wish and make it very personalized.</p>
<p>Here are some features:</p>
<h3 id="heading-real-time-code-collaboration">Real-time Code Collaboration</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-98.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://teletype.atom.io/">Teletype for Atom</a></em></p>
<p>Atom has a <a target="_blank" href="https://teletype.atom.io/">Teletyping</a> feature that allows multiple people to work on a codebase in real-time. This feature improves collaboration in a team workspace on projects. For VSCode, you'll usually need an extension for this.</p>
<h3 id="heading-git-integration">Git Integration</h3>
<p>With Atom, you never have to go to your terminal for your Git operations.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-99.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://github.atom.io/">GitHub for Atom</a></em></p>
<p>Git actions are integrated into Atom using the GitHub package, and this creates a smooth version control experience while you write code.</p>
<h3 id="heading-smart-autocompletion">Smart Autocompletion</h3>
<p>With many languages and syntaxes integrated into Atom, you also get a nice auto-completion feature while writing code.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-100.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://flight-manual.atom.io/using-atom/sections/autocomplete/">Autocomplete (atom.io)</a></em></p>
<p>You don't have to type out those long method and variable names anymore. Atom's smart enough to help you avoid that 😉.</p>
<p>In Atom, you also have search and replace features, view panes, and more.</p>
<h2 id="heading-4-webstorm">4. WebStorm</h2>
<p><a target="_blank" href="https://www.jetbrains.com/webstorm/">WebStorm</a> calls itself "The Smartest JavaScript IDE". It takes a lot of confidence to call itself that, and WebStorm actually delivers. WebStorm makes writing JavaScript and its related technologies not just convenient but more enjoyable.</p>
<p>Some features include:</p>
<h3 id="heading-built-in-developer-tools">Built-in developer tools</h3>
<p>WebStorm takes the name "development editor" quite literally. From running scripts to breakpoints and general debugging, WebStorm provides developer tools that allow you to write, execute and debug your code.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-101.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://www.jetbrains.com/webstorm/features/#integrated-developer-tools">WebStorm: Integrated Developer Tools</a></em></p>
<h3 id="heading-smart-features">Smart features</h3>
<p>This editor allows you to move files between folders seamlessly. It also helps you refactor your code and suggest fixes for errors. </p>
<p>And the most brilliant feature I love about it is that you can easily rename a specific variable across your application. Say you have a variable you've imported in many files – you can easily rename that variable from one of the files.</p>
<h3 id="heading-fast-search-and-navigation">Fast search and navigation</h3>
<p>Another fantastic feature of WebStorm, which people generally praise it for, is the fast file or folder search and navigation.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-102.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://www.jetbrains.com/webstorm/features/#navigation-and-search">WebStorm: Navigation and Search</a></em></p>
<p>From searching file names, class names, function names within files, and special selectors, you can easily find a file you're looking for.</p>
<p>There's also collaboration, view panes, search and replace in WebStorm.</p>
<h2 id="heading-5-vim">5. Vim</h2>
<p>And there's <a target="_blank" href="https://www.vim.org/">Vim</a>. It's worth noting that Vim is not for everyone, as it arguably has a steep learning curve – but Vim has many features that make it worth trying out. I have a friend who's never letting go of Vim and keeps advocating that people are missing out.</p>
<p>Here are some features:</p>
<h3 id="heading-high-customizability">High Customizability</h3>
<p>I mentioned earlier that Atom is highly customizable, but I don't think it's as flexible as Vim.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-103.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://github.com/fatih/subvim">Vim customized to be like SublimeText</a></em></p>
<p>Down to the low-level commands and feel of the editor, you can configure many things that makes using another editor very strange for you. You can also create scripts that automate things for you.</p>
<h3 id="heading-support-for-many-languages-and-file-formats">Support for Many Languages and File Formats</h3>
<p>Vim has support for many languages and files of different kinds. It also integrates with many tools.</p>
<h3 id="heading-powerful-search-feature">Powerful search feature</h3>
<p>With powerful selectors and regex, you can do multi-level file searches and replacements. With Vim's scripts, you can also get plugins that take the search features to another level.</p>
<p>Agreed, it's not very easy to learn. But it's pretty powerful and consumes less memory, surprisingly. It also has an extensive <a target="_blank" href="https://www.vim.org/scripts/script_search_results.php">script system</a> that gives you much power while writing code.</p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>There you have it - five code editors you can use to write cleaner, more readable code. I hope you find the one that best fits your needs!</p>
<p>Thanks for reading :)</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Use Replit – A Beginner's Guide ]]>
                </title>
                <description>
                    <![CDATA[ Replit is a popular free online IDE that you can use to create your projects with very little setup. This editor supports over 50 languages and many programming courses use it, including freeCodeCamp.  In this article, I will show you how to get star... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-use-replit/</link>
                <guid isPermaLink="false">66b8d9b798b552b8a8592b2b</guid>
                
                    <category>
                        <![CDATA[ beginners guide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Integrated Development Environment   ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jessica Wilkins ]]>
                </dc:creator>
                <pubDate>Thu, 04 Nov 2021 15:08:02 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-11.30.00-AM.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><a target="_blank" href="https://replit.com/">Replit</a> is a popular free online IDE that you can use to create your projects with very little setup. This editor supports over 50 languages and many programming courses use it, including <a target="_blank" href="https://www.freecodecamp.org/learn">freeCodeCamp</a>. </p>
<p>In this article, I will show you how to get started with Replit and show you how to use a lot of the basic features. </p>
<p>Here is a list of topics discussed in the article:</p>
<ul>
<li><a class="post-section-overview" href="#heading-how-to-create-a-free-replit-account">How to create a free Replit account</a></li>
<li><a class="post-section-overview" href="#heading-what-is-a-repl-and-how-do-you-create-one">What is a Repl and how do you create one?</a></li>
<li><a class="post-section-overview" href="#heading-basic-features-of-the-replit-editor">Basic features of the Replit edito</a>r</li>
<li><a class="post-section-overview" href="#heading-replit-files-and-folders">Replit files and folders</a></li>
<li><a class="post-section-overview" href="#heading-version-control-in-replit">Version control in Replit</a></li>
<li><a class="post-section-overview" href="#heading-replit-debugger">Replit Debugger</a></li>
<li><a class="post-section-overview" href="#heading-how-to-install-packages-in-replit">How to install packages in Replit</a></li>
<li><a class="post-section-overview" href="#heading-secrets-environment-variables-in-replit">Secrets(Environment Variables) in Replit</a></li>
<li><a class="post-section-overview" href="#heading-how-to-customize-replit-settings">How to customize Replit settings</a></li>
<li><a class="post-section-overview" href="#heading-replit-database">Replit Database</a></li>
<li><a class="post-section-overview" href="#heading-how-to-add-unit-tests-in-replit">How to add Unit Tests in Replit</a></li>
<li><a class="post-section-overview" href="#heading-how-to-use-the-run-button-in-replit">How to use the run button in Replit</a></li>
<li><a class="post-section-overview" href="#heading-how-to-clear-the-console-in-replit">How to clear the console in Replit</a></li>
<li><a class="post-section-overview" href="#heading-what-is-the-replit-shell-console">What is the Replit shell console?</a></li>
<li><a class="post-section-overview" href="#heading-how-to-add-a-custom-domain-in-replit">How to add a custom domain in Replit</a></li>
<li><a class="post-section-overview" href="#heading-how-to-publish-your-project-in-replit">How to publish your project in Replit</a></li>
<li><a class="post-section-overview" href="#heading-how-to-share-replit-project-urls">How to share Replit project URLs</a></li>
<li><a class="post-section-overview" href="#heading-how-to-invite-others-to-edit-your-repls">How to invite others to edit your repls</a></li>
<li><a class="post-section-overview" href="#heading-what-is-included-with-the-replit-paid-subscription">What is included with the Replit paid subscription?</a></li>
</ul>
<h2 id="heading-how-to-create-a-free-replit-account">How to create a free Replit account</h2>
<p>To get started, you will first need to go to the <a target="_blank" href="https://replit.com/">Replit homepage</a>. In the top right hand corner, click on <a target="_blank" href="https://replit.com/signup?from=landing">Sign Up</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-11.37.09-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can create an account with your own username, email, and password. Or you can create an account using your Google, Facebook, or GitHub account.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-11.38.16-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Once you are logged in, then it should take you to your account homepage.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-11.39.37-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-what-is-a-repl-and-how-do-you-create-one">What is a Repl and how do you create one?</h2>
<p>Repl stands for read-eval-print loop and it is an interactive programming environment for developers to create small projects.</p>
<p>In Replit, there are three places where you can create a new repl.</p>
<p>One way is to click on the <code>Create Repl</code> button located at the top left hand corner of the homepage.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-11.55.53-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can also create a repl by clicking on the <code>+</code> icon under the Create section.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.12.35-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>The last option is the click on the <code>+</code> icon located at the upper right hand corner.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.19.31-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then you can choose from one of Replit's many templates including Python, Node, Java, HTML &amp; CSS, Ruby, and more. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-11.58.45-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Once you choose your language, pick a name for your project.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-11.59.58-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>For the free version of Replit, you are not allowed to create private projects. If you want a private repl, then you will need to upgrade to the paid subscription.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.01.10-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Once you are done naming your repl, click on the blue <code>Create Repl</code> button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.02.50-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then you should be taken to the editor.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.03.49-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-basic-features-of-the-replit-editor">Basic features of the Replit editor</h2>
<p>In this section, I will go over some of the basic features you can use in the Replit editor. These features include a debugger, files and folders, version control, unit tests, and more. </p>
<h3 id="heading-replit-files-and-folders">Replit Files and Folders</h3>
<p>In the upper left hand corner, you can click on the file icon to add files and folders to your project.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.20.09-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>To add a file, click on the Add file icon.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.21.17-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>To add a folder, click on the Add folder icon.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.22.01-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you want to upload files or folders from your computer, click on the three vertical dots icon.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.23.15-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.23.41-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you need to delete files or folders, then click on the three dots icon located next to the file you want to delete. Then from there, choose the delete option.</p>
<p>You can also right click on the file and you should see the list of options.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.07.43-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-version-control-in-replit">Version control in Replit</h3>
<p>You also have the ability to connect to your GitHub account and create a repository for this project. At the time of this writing, this feature is currently in beta. </p>
<p>First click on the version control icon on the left hand side of the editor page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.27.30-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You should then see an option to connect to your GitHub account.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.28.20-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You will be prompted to grant Replit permission to create new repositories on GitHub.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.29.18-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Enter in your login information for GitHub.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.30.32-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you have multiple accounts linked to your profile, choose the account where you want to install Replit.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.31.44-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You will then need to authorize Replit to install.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.33.12-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>After you Install and Authorize Replit, you should be directed back to the Replit editor.</p>
<p>Now all of our changes will be tracked and we can push those changes to GitHub. Write a short commit message and click on the <code>Commit &amp; push button</code>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.37.15-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You should see all of your commit messages in the version control panel.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.38.12-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then click on the <code>Connect to GitHub</code> button so you can create a new repository.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.39.59-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can add a description for the repo and then click on the <code>Create GitHub repository</code> button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.41.02-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Once it is created, you should see the name of the repository in the version control panel.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.42.00-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can also see your new repository in GitHub.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.42.39-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-replit-debugger">Replit Debugger</h3>
<p>The Replit editor has a debugger tool, where you can walk through your code step by step to see what is happening and fix errors. This is also a Beta feature. </p>
<p>You can find this feature on the left hand side of the editor page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.47.14-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.47.37-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-install-packages-in-replit">How to install packages in Replit</h3>
<p>You can also install different packages into your projects like <code>morgan</code>, <code>express</code> or <code>cors</code> using the Packages panel on the left hand side of the editor page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.51.02-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Search for the package that you want to use and click on the <code>+</code> icon to install it into your project.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.52.16-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Inside the console, which is located on the right hand side of the screen, you should see the package being installed. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.53.14-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-secrets-environment-variables-in-replit">Secrets (Environment variables) in Replit</h3>
<p>Replit no longer supports creating <code>.env</code> files.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.57.28-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Instead, you will have to use the Secrets tab to store your environment variables. You can find this Secrets icon on the left hand side of the editor page. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.59.07-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You will write the name of your key in the Key input field and write the value in the value input field. Then click on Add new secret.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.02.36-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p> Then you should see your newly created environment variable in the Secrets tab.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.03.59-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you need to edit that variable, hover your mouse over the variable name and click on the pencil icon. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.05.12-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.05.41-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Now you should be able to use that environment variable inside your code.</p>
<h3 id="heading-how-to-customize-replit-settings">How to customize Replit settings</h3>
<p>If you need to customize the editor settings for your project, click on the settings icon on the left hand side of the editor page..</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.07.56-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.08.24-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-replit-database">Replit Database</h3>
<p>If you want to use Replit's key-value storage, then click on the Database icon on the left hand side of the editor page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.10.38-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.13.40-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>To learn more about how to use the Replit Database, please visit the <a target="_blank" href="https://docs.replit.com/hosting/database-faq">documentation</a>.</p>
<h3 id="heading-how-to-add-unit-tests-in-replit">How to add unit tests in Replit</h3>
<p>If you need to add Unit tests to your project, click on the Unit tests icon on the left hand side of the editor page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.15.35-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then click on the Add test button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.17.24-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then you can create your Unit tests by providing a name, the code, and a failure message. Click save when you are done.</p>
<p>This is a screenshot using the Replit example unit tests for adding two numbers:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.19.47-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then click on the Run tests button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.46.37-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Inside the console, you will see the tests running with the results.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.47.41-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-use-the-run-button-in-replit">How to use the Run button in Replit</h3>
<p>If you want to start the server for your project, then click on the green Run button located at the top of the editor page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.53.10-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>When you click on the Run button then you should see the results of your code in the preview window and console located on the right hand side of the editor page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.57.10-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-clear-the-console-in-replit">How to clear the console in Replit</h3>
<p>If you need to clear out the console, then click on the <code>x</code> icon located at the right hand side of the console window. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.59.38-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-what-is-the-replit-shell-console">What is the Replit Shell console?</h3>
<p>If you need to type in commands, such as removing or adding folders, then you can use the Shell console.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.05.23-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-add-a-custom-domain-in-replit">How to add a custom domain in Replit</h3>
<p>In the preview editor, you can add a custom domain for your project. Click on the pencil icon next to the preview URL.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.21.46-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then you can add your custom domain and CNAME information:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.23.42-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-publish-your-project-in-replit">How to publish your project in Replit</h3>
<p>Once you are finished creating your project, then you can publish it and have it displayed in the collection of Replit Apps.</p>
<p>First click on the name of the project, which is located in the top left hand corner.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.24.52-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then you can provide a short description of the project and click on Publish.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.26.19-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You will then have the option to provide a description, cover image, and tag information. When you are finished, click on the publish button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.28.01-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.28.58-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you want to publish an update, then you can click on your project and then click on Publish update.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.24.52-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.33.18-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you need to unpublish your project, click on the three dots icon to the right of the publish page and choose the unpublish option.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.34.14-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.34.41-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.34.53-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-share-replit-project-urls">How to share Replit project URLs</h2>
<p>If you want to share your project URL, you will first need to click on green Run button followed by the Open in new tab button located in the preview window.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.53.10-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.38.24-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then you should see your page in a new tab.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.39.09-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you want to share your URL which contains the editor and preview window, use the link found in the top of the browser.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.40.21-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you visit the link, you should see this result:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.41.44-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you need help on a project and want other developers to see your code and files, then you share that browser link. Others won't be able to see your environment variables when you share your project. </p>
<h2 id="heading-how-to-invite-others-to-edit-your-repls">How to invite others to edit your repls</h2>
<p>Replit has a feature where you can invite other developers to join your project and edit the code. </p>
<p>First, click on the Invite button located at the top right hand side of the editor page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.08.24-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In the search field, you can add users from replit or add the email addresses of those you want to invite.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.10.39-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then click on the blue Invite button to send invites for users.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.11.16-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You will see that their invitation is pending.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.13.20-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can also send out a join link to the user you want to add to the project. Click on the <code>Generate a join link</code> button located at the bottom.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.13.56-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.16.06-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you need to remove invited users, then click on the <code>x</code> icon located next to their name.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.16.50-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-what-is-included-with-the-replit-paid-subscription">What is included with the Replit paid subscription?</h2>
<p>The Hacker paid subscription level comes with more memory, storage, speed and private repls.</p>
<p>The Teams paid subscription level comes with educational projects for students and teachers to work with.</p>
<p>To learn more, please visit <a target="_blank" href="https://replit.com/site/pricing">Replit's pricing page</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.50.22-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>I hope you enjoyed this Replit starter guide and best of luck on your developer journey.  </p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ GitHub Codespaces vs Gitpod – Full Stack Development Moves to the Cloud ]]>
                </title>
                <description>
                    <![CDATA[ By Nader Dabit Gitpod and GitHub Codespaces are cloud based developer environments that allow you to spin-up high-performance, automated dev environments in seconds. Over the past few months I have gone down the rabbit hole of cloud-based developer e... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/github-codespaces-vs-gitpod-cloud-based-dev-environments/</link>
                <guid isPermaLink="false">66d46044ffe6b1f641b5fa3a</guid>
                
                    <category>
                        <![CDATA[ Cloud Computing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ codespaces ]]>
                    </category>
                
                    <category>
                        <![CDATA[ GitHub ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Gitpod ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 30 Aug 2021 17:10:36 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/08/pexels-josh-sorenson-1154504.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Nader Dabit</p>
<p><a target="_blank" href="https://www.gitpod.io/">Gitpod</a> and <a target="_blank" href="https://github.com/features/codespaces">GitHub Codespaces</a> are cloud based developer environments that allow you to spin-up high-performance, automated dev environments in seconds.</p>
<p>Over the past few months I have gone down the rabbit hole of cloud-based developer environments. I'm moving several of my projects to the cloud so that developers can deploy the projects with a single click, like <a target="_blank" href="https://github.com/dabit3/polygon-ethereum-nextjs-marketplace">this full stack NFT marketplace</a>.</p>
<p>This has been especially helpful for me, as a teacher and content creator helping developers learn how to code. Now these developers can deploy the example projects without having to set up their local environments so there's one less hurdle for them if they are just getting started. </p>
<p>It is also an overall productivity and efficiency boost as I don’t have to clone and set up projects anymore locally when making updates. Instead, I can just click a button and it’s ready to go.</p>
<p>In this article I'll share my view on the ecosystem together with a comparison of the two leading options in accomplishing this – GitHub Codespaces and Gitpod.</p>
<p>For transparency, Gitpod is also a sponsor of <a target="_blank" href="https://www.youtube.com/naderdabit">my YouTube channel</a>. That being said, I only choose to accept sponsorships from projects that I already enjoy using myself.</p>
<h2 id="heading-cloud-based-development-this-is-the-way"><strong>Cloud-based Development – This Is the Way</strong></h2>
<p>As developers, we like to automate things. We speed up our own workflows, automate infrastructure and CI/CD pipelines, and even create tools that <a target="_blank" href="https://copilot.github.com/">write code themselves</a>. </p>
<p>If you look at modern software pipelines, there is one area we have not automated: our developer environments. They are still brittle, tied to local machines, and require nerve-wracking set-up and maintenance efforts that distract us from being creative and productive. </p>
<p>Dev environments are a constant source of friction during onboarding and ongoing development (remember your last “works on my machine” discussion).</p>
<p>As a teacher and content creator helping new developers learn how to code, one of the most common issues isn't the tutorial or content itself. Rather, it's the developer's local environment not being set up properly, and it's often not even their fault. </p>
<p>There are countless variances of operating systems and application versions that have to be taken into account.</p>
<p>The pain that comes with local dev environments will only get worse over time: larger workloads, more data, more dependencies, more testing, multi-service and multi-track development are all things that are difficult to account for.</p>
<h2 id="heading-github-codespaces-and-gitpod-lead-the-pack-of-cloud-based-dev-environments"><strong>GitHub Codespaces and Gitpod Lead the Pack of Cloud-based Dev Environments</strong></h2>
<p>Some years ago, Cloud9 moved into the area as a first generation of browser IDEs. Though their ideas were going in the right direction, technology and community just were not ready (yet).</p>
<p>A lot has changed since then. In addition to the advent and meteoric rise of VS Code, there were big leaps in container and VM technology that made it faster, more secure, scalable, and practical to run developer environments in the cloud. </p>
<p>No surprise that we are seeing companies like Google, Facebook, Shopify and most recently GitHub fully moving software development to the cloud with internal solutions.</p>
<p>There are a few players in the area that have taken advantage of those developments – although some might argue that other existing solutions focus more on prototyping and playground work for specific languages and are not a full replacement for local development. </p>
<p>When it comes to cloud-based dev environments that work for day-to-day professional software development, there are two main options: <a target="_blank" href="https://www.gitpod.io/">Gitpod</a> and <a target="_blank" href="https://github.com/features/codespaces">GitHub Codespaces</a>.</p>
<p>So what do they do? Well, essentially they let you spin up <strong>task-based developer environments</strong> in the cloud from any Git context. Once you’re done, you just close them. </p>
<p>This is a huge boost for productivity. Think about multi-track development (no changing of dev environment settings when switching contexts to review pull-requests), onboarding, consistency or just working remotely. You can work from any computer, Chromebook, or tablet.</p>
<p>In this article we will take a look under the hood and assess and evaluate both products according to the following categories:</p>
<ul>
<li>Workflow and Collaboration</li>
<li>IDE</li>
<li>Runtime</li>
<li>Automation</li>
<li>Open Source &amp; Ecosystem</li>
<li>Availability &amp; Pricing</li>
</ul>
<p>Let’s dive into it!</p>
<h2 id="heading-github-codespaces-vs-gitpod-workflow">GitHub Codespaces vs Gitpod Workflow</h2>
<p>GitHub Codespaces and Gitpod are both services that allow you to do exactly the same as what you could do locally on a Linux machine with one major addition: your developer environment can be configured as code and hence is version controlled, reproducible and automatable. </p>
<p>GitHub Codespaces allows you to do that with a <a target="_blank" href="https://code.visualstudio.com/docs/remote/devcontainerjson-reference">devcontainer.json</a> file and Gitpod with a <a target="_blank" href="https://www.gitpod.io/docs/references/gitpod-yml">.gitpod.yml</a> file that you place into your repository (more on that later). Both do essentially the same thing, like define what Docker container to use, what scripts to run, and they control what extensions will be available in your Codespace (GitHub) / workspace (Gitpod). </p>
<p>Both products embrace a software development flow that enables developers to start a developer environment from any Git context (Issue, PR/MR, branches, and so on) with one-click for the specific task you are working on. </p>
<p>This task-based development flow is what ultimately sold me on switching from local dev for real world projects and, after using it, feels like it would be really hard to go back to not having it.</p>
<p>Developer environments turn just into some resource I can spin up on demand and close and forget about if I am done with my task. Gitpod is excelling at that workflow and built their product around it. </p>
<p>Reading the <a target="_blank" href="https://github.blog/2021-08-11-githubs-engineering-team-moved-codespaces/">blog post</a> from the engineering team at GitHub, it feels like they internally adapted a similar workflow, however this is not native with Codespaces right now.</p>
<p><img src="https://lh4.googleusercontent.com/q0xOqarPIMDK9-hcOLujGzXbJsrkFiFyNnGmGSpkqk4u4eKGbnoHmG7cNYQlLtm_58M7rkpZ_dgHuFHyAK6o3V2rL61hfk-r87NsYTPWJS_kLQW_L9LLo0Idwg_7pq-TXh-u9MK3=s0" alt="Image" width="720" height="874" loading="lazy"></p>
<p><img src="https://lh6.googleusercontent.com/8LIlWDgOmEO32gO9JSUYL_5tPKr-W9g3C0mnFTuefYVWpd3ppCI4IVT8ap5jkfb2HuhVcHb3LSqkBcGHQf7wnEFVeyN7Nl5Eph2a9VndnNMlkxQBbeaktYZWJS1RhKERq4tHU9Vg=s0" alt="Image" width="640" height="480" loading="lazy"></p>
<h2 id="heading-collaboration-with-codespaces-vs-gitpod">Collaboration with Codespaces vs Gitpod</h2>
<p>Both GitHub Codespaces and Gitpod offer ways to collaborate, but they differ in their approach. </p>
<p>On both platforms, when your development environment is running, you can expose any TCP port publicly or privately to the internet. This enables workflows where you can share links to a web-server or API server as standard URLs. </p>
<p>Gitpod offers functionality to share a snapshot of the workspace with a co-worker but GitHub Codespaces does not.</p>
<p>GitHub Codespaces offers the ability to interactively pair program when the <a target="_blank" href="https://visualstudio.microsoft.com/services/live-share/">LiveShare extension</a> is installed while Gitpod offers the ability to share the workspace itself with collaborators. </p>
<p>Once Gitpod enables local VS Code support (1-2 weeks from this writing) you can also use LiveShare with Gitpod.</p>
<p>Here are some further resources where you can read more about this.</p>
<ul>
<li><a target="_blank" href="https://www.gitpod.io/blog/i-said-goodbye-to-local-development-and-so-can-you#develop-a-new-feature">https://www.gitpod.io/blog/i-said-goodbye-to-local-development-and-so-can-you#develop-a-new-feature</a></li>
<li><a target="_blank" href="https://github.blog/2021-08-11-githubs-engineering-team-moved-codespaces/">https://github.blog/2021-08-11-githubs-engineering-team-moved-codespaces/</a></li>
<li><a target="_blank" href="https://visualstudio.microsoft.com/services/live-share/">https://visualstudio.microsoft.com/services/live-share/</a></li>
</ul>
<h2 id="heading-gitpod-vs-codespaces-ide">Gitpod vs Codespaces IDE</h2>
<p>Both Gitpod and Codespaces ship upstream, and stock VS Code as their default IDE running in the browser. It feels like, acts like, and is literally the same VS Code that you are used to from your desktop. Be aware of cmd+W however :). </p>
<p>As GitHub is owned by Microsoft, I understand that the VS Code team was heavily involved in building GitHub Codespaces. </p>
<p>The team behind Gitpod has a long background in open-source developer tooling, and they initially created <a target="_blank" href="https://theia-ide.org/">Theia</a> (which is also based on VS Code). |But recently, they switched to stock VS Code and maintain a very lightweight fork of VS Code that has also continued to gain adoption by other teams in the industry (<a target="_blank" href="https://github.com/gitpod-io/vscode/">https://github.com/gitpod-io/vscode/</a>).</p>
<p><img src="https://lh6.googleusercontent.com/F__NabACVugaw59_F56hT_7euuIyGyGo2gUYRo3tpcRWHZRHKQpomawaGJGph2scXTsD14G-PQwy3H71DKWTU0XQs03tJSENU4IeDRxh-lXL0G3_JB1C9CqWIqPxWFhlSQsKRpy1=s0" alt="Image" width="1570" height="1592" loading="lazy"></p>
<p><img src="https://lh3.googleusercontent.com/rIv3ade5u-A027pXxPZ7K-zn--ddFchT3EbjTS-XzYD35jFZ5E-MdefIc3gch2Y5xLvSy6udUuCfWkL-CFZvlvNSkjwrun3MqwjO7ZH98qHrcyQ1HcWm7P7obCqSwVZhulNd1pLS=s0" alt="Image" width="1570" height="1592" loading="lazy"></p>
<h2 id="heading-vs-code-extension-marketplace-for-codespaces-and-gitpod">VS Code Extension Marketplace for Codespaces and Gitpod</h2>
<p>Having the VS Code team behind the product and being able to access all proprietary extensions (like Liveshare, for example) through the Microsoft-controlled Visual Studio Marketplace is a plus for Codespaces. </p>
<p>As a response, Gitpod created <a target="_blank" href="https://open-vsx.org/">https://open-vsx.org/</a> (now hosted under the Eclipse Foundation), which is a vendor-neutral marketplace run by the Eclipse Foundation for VS Code extensions that is accessible through Gitpod. </p>
<p>Though there is almost extension parity for the most popular VS Code extensions, Microsoft’s (excellent) proprietary extensions have not found a way to OpenVSX. </p>
<p>In case you don’t find an open-source extension on OpenVSX, you can trigger the publish automation by sending in a pull-request to <a target="_blank" href="https://github.com/open-vsx/publish-extensions">https://github.com/open-vsx/publish-extensions</a>.</p>
<h3 id="heading-remote-development-from-desktop-vs-code">Remote Development from Desktop VS Code</h3>
<p>I am a big fan of being able to connect from my local Desktop VS Code into a dev environment running on somebody else's computer. </p>
<p>Both products offer that feature, but the flow that Codespaces ships out of the box is superior compared to the approach from Gitpod. </p>
<p>While you can achieve the same with Gitpod’s <a target="_blank" href="https://www.gitpod.io/blog/local-app">local app</a>, the setup involves more work and friction from a user’s perspective. Asking the Gitpod team about this, I received feedback that they will release a similar one-click experience at the end of August.</p>
<h3 id="heading-what-about-other-ides-than-vs-code">What about other IDEs than VS Code?</h3>
<p>For GitHub Codespaces I could not find any information for other IDEs than VS Code. And given that Microsoft is behind both projects, I’d expect that they'll probably focus on VS Code. </p>
<p>In contrast, Gitpod tries to stress that what they have built is, on an architectural level, IDE independent and allows you to run any IDE image you can run remotely in their container. </p>
<p>I found some templates in their GitHub Repo that allow you to run the Jetbrains product fleet (based on <a target="_blank" href="https://github.com/JetBrains/projector-installer">https://github.com/JetBrains/projector-installer</a>). </p>
<p>The developer experience there still feels a bit clunky. Digging a bit deeper I found this interesting <a target="_blank" href="https://youtrack.jetbrains.com/issue/IDEA-226455#focus=Comments-27-5125731.0-0">discussion</a> around one of the most requested features from the Jetbrains community that would enable remote support via SSH out of the box. I would love to see that supported by Gitpod and Codespaces.</p>
<p><img src="https://lh4.googleusercontent.com/rmSR14doieAaSg3SibqyU7LewYPc23SlZ6ntjhnAiczvd2zQZLVgwhlWsQ58z6Ax7Xbw3f0e_aUUQYSv8c6TezMwqMSR3usbAIWEezVerseZuHjLHZl3JBhxZ1JSuXxEucoRnVR_=s0" alt="Image" width="1398" height="1650" loading="lazy"></p>
<p>Here are some resources for further reading:</p>
<ul>
<li><a target="_blank" href="https://www.theregister.com/2021/04/08/gitpod_talks_up_importance_of/">https://www.theregister.com/2021/04/08/gitpod_talks_up_importance_of/</a></li>
<li><a target="_blank" href="https://www.gitpod.io/blog/local-app">https://www.gitpod.io/blog/local-app</a></li>
<li>https://www.gitpod.io/docs/integrations/jetbrains</li>
</ul>
<h2 id="heading-codespaces-vs-gitpod-runtime">Codespaces vs Gitpod Runtime</h2>
<p>GitHub Codespaces runs on virtual machines which come with great isolation out of the box and are easier to provision and manage. However, they also carry the overhead of the full operating system, making them larger and slower to start as well as more costly.</p>
<p>Gitpod runs on lightweight containers that spin up quickly and enjoy a far higher cloud density (as more processes can run in parallel on the same underlying hardware, there is less idle compute). This allows Gitpod workspaces to spin-up faster and be more resource – that is cost and energy – efficient.</p>
<p>The downside of containers is that, by default, they do not have the same isolation/security benefits as virtual machines provide. </p>
<p>Before last year, sudo-rights (and with that docker-in-docker) were not possible in Gitpod workspaces. Earlier this year they implemented namespace isolation features that made both of those things possible (see their <a target="_blank" href="https://www.youtube.com/watch?v=iYLCHQgj0fE&amp;t=274s">head of engineering explaining how they achieved that</a>).</p>
<p>Both Codespaces and Gitpod support docker-in-docker for Docker Compose scenarios and nested virtualization which enables running operating systems or appliances in your browser.</p>
<p>Here are some more resources for you on this:</p>
<ul>
<li><a target="_blank" href="https://www.gitpod.io/blog/root-docker-and-vscode">https://www.gitpod.io/blog/root-docker-and-vscode</a></li>
<li><a target="_blank" href="https://github.com/gitpod-io/template-nixos">https://github.com/gitpod-io/template-nixos</a></li>
</ul>
<h2 id="heading-automation-with-codespaces-and-gitpod">Automation with Codespaces and Gitpod</h2>
<p>Both heavily embrace the notion of dev environment as code that Vagrant first coined and Gitpod then further built out. </p>
<p>The basic idea behind that is applying ideas from Infrastructure as Code to dev environments. Codespaces uses a <a target="_blank" href="https://code.visualstudio.com/docs/remote/devcontainerjson-reference">devcontainer.json</a> format as a configuration file while Gitpod uses a .gitpod.yml.</p>
<p>Given the reach and distribution power of Codespaces and VS Code, my prediction is that the <a target="_blank" href="https://code.visualstudio.com/docs/remote/devcontainerjson-reference">devcontainer.json</a> format will win long-term as the industry standard for configuring developer environments. As listed on their <a target="_blank" href="https://github.com/gitpod-io/roadmap/issues/16">roadmap</a>, Gitpod plans to support that as well. Right now they don’t and run on a <a target="_blank" href="https://www.gitpod.io/docs/references/gitpod-yml">.gitpod.yml</a>.</p>
<p>Creating and setting up your dev-env-as-code is only the first step towards fully automated per-task developer environments. As you do not want to wait for dependencies to download and code to build every time you start a developer environment, the workspaces/codespaces need to be prebuilt before you even start.</p>
<p>Gitpod supports <a target="_blank" href="https://www.gitpod.io/docs/prebuilds">prebuilds</a> for that (think about them as a CI/CD server where Gitpod prebuilds the full workspace / runs the automation on every commit to Git). Automation only works if executed frequently. </p>
<p>Codespaces currently do not have prebuilds included in their GA, but internally they already use them. Therefore it should be a matter of months until they also publicly release that feature.</p>
<p>You can read more here:</p>
<ul>
<li><a target="_blank" href="https://www.gitpod.io/screencasts/continuously-prebuild-your-project">https://www.gitpod.io/screencasts/continuously-prebuild-your-project</a></li>
<li><a target="_blank" href="https://github.blog/2021-08-11-githubs-engineering-team-moved-codespaces/">https://github.blog/2021-08-11-githubs-engineering-team-moved-codespaces/</a></li>
</ul>
<h2 id="heading-codespaces-and-gitpod-open-source-and-ecosystem">Codespaces and Gitpod Open Source and Ecosystem</h2>
<p>The biggest difference between the two is that Gitpod is open source and everyone can contribute to the project. You can self-host it on <a target="_blank" href="https://www.gitpod.io/docs/self-hosted/latest/installation/on-gke">GKE</a>, <a target="_blank" href="https://www.gitpod.io/docs/self-hosted/latest/installation/on-amazon-eks">EKS</a>, and vanilla Kubernetes. </p>
<p>Their roadmap and development work is public and everyone can contribute to the project. In addition to this, maintainers and core contributors to open-source projects <a target="_blank" href="https://www.gitpod.io/docs/professional-open-source">get Gitpod for free</a>.</p>
<p>With GitHub, Microsoft owns the market leading social platform for developers and they integrated GitHub Codespaces as a first-class citizen into the developer experience on GitHub. This means that by default the UI in GitHub shows you an Open in Codespaces button, which nicely embeds into your development workflow. </p>
<p>For Gitpod to achieve the same level of integration you need to download either the <a target="_blank" href="https://www.gitpod.io/docs/browser-extension/">browser extension</a> or a <a target="_blank" href="https://www.gitpod.io/docs/browser-bookmarklet">bookmarklet</a>. GitLab has a <a target="_blank" href="https://about.gitlab.com/blog/2021/07/19/teams-gitpod-integration-gitlab-speed-up-development/">strategic partnership</a> with Gitpod and has on every repository and merge request an “Open in Gitpod” button built into the GitLab UI.</p>
<p>Contrary to Microsoft, Gitpod follows a strategy where it is neutral by default, not owned by big tech and designed in a way to integrate with whatever tooling developers want to use. </p>
<p>This means it not only works with GitHub but also other Git providers such as GitLab and Bitbucket and you can deploy it on your own infrastructure.</p>
<h2 id="heading-availability-pricing-and-specs-of-codespaces-vs-gitpod">Availability, Pricing, and Specs of Codespaces vs Gitpod</h2>
<p>Gitpod has been available for more than 2.5 years, while GitHub Codespaces came out of beta on the 11th of August 2021 for customers with a GitHub Team or GitHub Enterprise subscription. </p>
<p>Based <a target="_blank" href="https://twitter.com/natfriedman/status/1425508910476271624?s=20">on a tweet</a> from their CEO, Nat Friedman, we can expect that individual developers will have access to GitHub Codespaces at the end of the year.</p>
<p>GitHub Codespaces is currently free for all organizations on a GitHub Team or GitHub Enterprise subscription until September 10th. The billing increment is for the amount of minutes a workspace is active, and for the amount of storage used on disk for each workspace until a user deletes the workspace.</p>
<p>You can <a target="_blank" href="https://docs.github.com/en/codespaces/codespaces-reference/understanding-billing-for-codespaces">read more about that here</a>. </p>
<p>Gitpod is free for public and private repositories for 50 hours per month. Maintainers and core contributors of well-established open-source projects can apply for a voucher that upgrades their account to unlimited hours per month.</p>
<p>Read more about Gitpod pricing in these resources:</p>
<ul>
<li><a target="_blank" href="https://www.gitpod.io/blog/cloud-based-development-for-everyone">https://www.gitpod.io/blog/cloud-based-development-for-everyone</a></li>
<li><a target="_blank" href="https://www.gitpod.io/pricing">https://www.gitpod.io/pricing</a></li>
<li><a target="_blank" href="https://www.gitpod.io/docs/professional-open-source">https://www.gitpod.io/docs/professional-open-source</a></li>
</ul>
<p>To simplify comparing the offerings from GitHub Codespaces and Gitpod, here are three different scenarios using the same amounts of CPU, memory, and storage for each use case.  </p>
<table><colgroup><col><col><col><col></colgroup><tbody><tr><td><br></td><td><p><span>Product Manager</span></p></td><td><p><span>Developer</span></p></td><td><p><span>Power Developer</span></p></td></tr><tr><td><p><span>Working hours</span></p></td><td><p><span>2h per day, 21 working days per month</span></p></td><td><p><span>5h per day, 21 working days per month</span></p></td><td><p><span>10h per day, 21 working days per month.</span></p></td></tr><tr><td><p><span>Total Hours per month</span></p></td><td><p><span>42 hours</span></p></td><td><p><span>105 hours</span></p></td><td><p><span>210 hours</span></p></td></tr><tr><td><p><span>Amount&nbsp; of CPUs</span></p></td><td><p><span>8 cores</span></p></td><td><p><span>8 cores</span></p></td><td><p><span>8 cores</span></p></td></tr><tr><td><p><span>Amount of Memory</span></p></td><td><p><span>12GB</span></p></td><td><p><span>12GB</span></p></td><td><p><span>12GB</span></p></td></tr><tr><td><p><span>Amount of Storage</span></p></td><td><p><span>64Gb</span></p></td><td><p><span>64Gb</span></p></td><td><p><span>64Gb</span></p></td></tr><tr><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><p><span>Total Cost on GitHub Codepsaces</span></p></td><td><p><span>$30.24 USD/month compute and $2.24 USD/month in additional storage fees (first 32GB per workspace is free)</span></p></td><td><p><span>$75.6 USD/month compute and $2.24 USD/month in additional storage fees (first 32GB per workspace is free)</span></p></td><td><p><span>$151.2 USD/month compute and $2.24 USD/month in additional storage fees (first 32GB per workspace is free)</span></p></td></tr><tr><td><p><span>Total Cost on Gitpod</span></p></td><td><p><span>$9 USD/month</span></p></td><td><p><span>$25 USD/month</span></p></td><td><p><span>$39 USD/month</span></p></td></tr></tbody></table>

<p>The amount of CPU and memory for each workspace launched is configurable in GitHub Codespaces and they offer SKUs of up to 32 CPU cores and 64GB of RAM. Gitpod at this time does not yet offer a way to have more or less compute resources.</p>
<h2 id="heading-see-it-in-action"><strong>See it in action</strong></h2>
<p>I hope you’re as excited as I am after first hearing about the concept of dev environments as code in the cloud! Give both a try and see for yourself how you like them.  </p>
<p>Right now I prefer Gitpod as it’s free for my use cases, has pre-builds, is accessible to anyone who wants to use it, is open source, and can be used with any Git provider including GitHub.</p>
<h3 id="heading-how-to-get-started-with-gitpodhttpgitpodio">How to Get Started with <a target="_blank" href="http://gitpod.io">Gitpod</a>:</h3>
<ul>
<li>Prefix any GitLab, GitHub or Bitbucket URL with gitpod.io/# to dive right in</li>
<li>Or use their <a target="_blank" href="https://www.gitpod.io/docs/browser-extension/">browser extension</a> or <a target="_blank" href="https://www.gitpod.io/docs/browser-bookmarklet">browser bookmarklet</a> for starting workspaces from any git context</li>
<li>Or try their <a target="_blank" href="https://github.com/gitpod-io?q=template-">quickstart templates</a></li>
<li>Check out my guides <a target="_blank" href="https://www.youtube.com/watch?v=tXSF7lIQouQ">here</a> and <a target="_blank" href="https://www.youtube.com/watch?v=hUSzdIOrlY4">here</a></li>
</ul>
<h3 id="heading-how-to-get-started-with-codespaceshttpsgithubcomfeaturescodespaces">How to Get Started with <a target="_blank" href="https://github.com/features/codespaces">Codespaces</a>:</h3>
<ul>
<li>If you’re a GitHub Teams or Enterprise customer, look for an “Open in GitHub” button next to a repo</li>
<li>Individual developers need to wait until it launches more widely</li>
<li>Check out <a target="_blank" href="https://www.youtube.com/watch?v=dMs-8QY1URw">this</a> video for an overview.</li>
</ul>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What is an IDE in Programming? An IDE Definition for Developers ]]>
                </title>
                <description>
                    <![CDATA[ Every developer needs a good development enviroment, whether you're into mobile development or web apps or even if you're just learning your first programming language. Just like any beginning developer, when I began to learn coding I needed some gui... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/what-is-an-ide-in-programming-an-ide-definition-for-developers/</link>
                <guid isPermaLink="false">66b8dc14f88daef58d10eef2</guid>
                
                    <category>
                        <![CDATA[ beginners guide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Integrated Development Environment   ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Hillary Nyakundi ]]>
                </dc:creator>
                <pubDate>Mon, 28 Jun 2021 20:04:28 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/06/uide-to-writting-a-good-readme-file-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Every developer needs a good development enviroment, whether you're into mobile development or web apps or even if you're just learning your first programming language.</p>
<p>Just like any beginning developer, when I began to learn coding I needed some guidance on how to get started. And one of the most important things that I had problems choosing was an application to help me write my code. </p>
<p>There were plenty of options to choose from, and every tutorial I followed used a different one. But eventually I was able to find one and stick to it.</p>
<p>Now if you happen to work in web development or any programming related field, then there is an application you'll use to write code. It's called an Integrated Development Environment, or IDE for short. But, what exactly is an IDE and how does it help you out?</p>
<p>In this article we are going to focus on what an IDE is, the different types of IDEs out there, and how you can utilize them to make your work flow easier. We will also look at some of the top IDEs out there today. </p>
<p>Let's get started!</p>
<h2 id="heading-what-is-an-ide">What is an IDE?</h2>
<p>In simple words, an IDE is a handy piece of software that acts as a text editor, debugger, and compiler all in one. IDEs are designed to make coding easier for developers. </p>
<p>So basically, an IDE is an application that facilitates application development, and gives you a central interface featuring all the tools you'll need like:</p>
<ul>
<li>A code editor that's designed to help you write and edit your code. It also helps you make it more readabile and clean.</li>
<li>A compiler that transforms code written by a human into machine-readable form.</li>
<li>A debugger that helps you eliminate errors from your programs so that your code executes and performs the way it should. This feature provides tools to help you examine your code.</li>
</ul>
<p>Some IDEs also allow plugins to be installed in them to give you even more features.</p>
<p>Just like any other piece of tech, there is a history behind it. Have you ever wondered how developers back in the days used to work? Let's learn a little of the IDE's history.</p>
<h2 id="heading-history-of-the-ide">History of the IDE</h2>
<p>Back in the day, you could say that coding was "text-only". It may sound boring but I suppose professional developers back then liked it a lot (or didn't have any other options). </p>
<p>Developers used to write code in a text editor (like Notepad, Emacs, and others). They would write and save applications in the editors with various extensions like <code>.java</code>, and then later run the compiler, note the errors, and go back and fix them until the code worked.</p>
<p>Over time, these various activities started to get baked into coding enviroments and became more automated by just the click of a few buttons.  Microsoft's Visual Basic was the first real IDE, and later many companies developed different IDEs for different languages <em>(as we will discuss below)</em>.</p>
<p>So how did this work – with different companies developing different development environments? You'd think they should adhere to consistent rules of work, right? For example an IDE should support one or more languages, and should be either web development or mobile development based. </p>
<p>Well, let's see the different types of IDEs we have today.</p>
<h2 id="heading-types-of-ides">Types of IDEs</h2>
<p>We have a variety of different IDEs today, depending on how you work and the kind of code you are working on. </p>
<p>We have IDEs designed for specific languages, and there are multi-language IDEs. Some are customized for the development of mobile apps, and others for web apps. There are also have cloud-based IDEs. </p>
<p>Let's look at each one in turn.</p>
<h3 id="heading-multi-language-ides">Multi-Language IDEs</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/Gray-Marble-Professional-Business-Style-LinkedIn-Banners--1-.gif" alt="Gray-Marble-Professional-Business-Style-LinkedIn-Banners--1-" width="600" height="400" loading="lazy"></p>
<p>Just like the name says, these are IDEs that support more than one language. As a beginner starting out (and planning to advance on your knowledge later) you might want to consider learning to use a multi-language IDE. </p>
<p>Here are some examples of multi-lang IDEs and their supported languages:</p>
<ul>
<li><p><mark><a target="_blank" href="https://www.eclipse.org/">Eclipse</a></mark> – A free and open source editor. It's highly recommended by many professional developers. Eclipse began as a Java-based enviroment but has recently been updated to support languages like: C, C++, Python, PHP, Ruby, Perl, and Java just to mention a few.</p>
</li>
<li><p><mark><a target="_blank" href="https://visualstudio.microsoft.com/">Visual Studio</a></mark> – One of the most widely used IDEs, Visual Studio is known for its amazing features and continuous support for extensions and updates. And it can easily support a new language by adding an extension.</p>
</li>
</ul>
<p>Devs use Visual Studio to develop web applications, games, mobile apps, web APIs, and more. Some of the built-in language support includes: C, C++, C#, JavaScript, Typesript, HTML, CSS, XML and many more.</p>
<ul>
<li><mark><a target="_blank" href="https://www.oracle.com/ke/tools/technologies/netbeans-ide.html">NetBeans</a></mark> – Just like Eclipse, NetBeans is an open source, free, and a cross platform IDE. Developers mostly use it to develop mobile apps, desktop apps, and web applications. </li>
</ul>
<p>It provides simple features like drag and drop, making it easir to work with. And just like Eclipse you can also extend it via plugins. </p>
<p>Some of the supported langs include: Java, PHP, C, C++, HTML, JavaScript, CSS and more.</p>
<ul>
<li><mark><a target="_blank" href="https://www.activestate.com/products/komodo-ide/">Komodo</a></mark> – A cross platform IDE that has a premium option. You can enhance its features by adding packages and other addons. </li>
</ul>
<p>It supports a number of languages like Python, PHP, Perl, GoLang, Ruby, C#, C, C++, HTML, CSS, JavaScript, TypeScript and more.</p>
<h4 id="heading-common-features-of-multi-lang-ides">Common Features of Multi-lang IDEs</h4>
<p>Most multi-language IDEs have certain features in common that prove very useful when you're coding.</p>
<ul>
<li>Intellisence – IDEs with this feature can provide code completion, quick info, and member lists on a project.</li>
<li>Smart code editing – your IDE can indent code lines, match words and brackets, and also highlight keywords.</li>
<li>Debugger – most IDEs provide powerful debugging features and along with a graphical debugger and breakpoints.</li>
<li>Extension/plugin manager – you can add new extensions/plugins to extend your IDE's functionality.</li>
<li>Version Control – IDEs offer support for various version control systems like Git, Subversion, Mercurial, CVS and so on.</li>
</ul>
<h3 id="heading-mobile-development-ides">Mobile Development IDEs</h3>
<p>Mobile app development is one of the most compelling and exciting fields of development today, and it's a common reason that people learn how to code. </p>
<p>Not only that, but almost every organization from governmental bodies to individuals are building mobile apps. </p>
<p>As the mobile app development industry grows, there are lots of new tools to help out. In order to develop good and resourceful apps, mobile app devs need a platform that's focused on that type of development. </p>
<p>For example if you're building an app for Android, iOS, and web, you'll need a cross-platform IDE that supports all that tech. </p>
<p>Some of the multi-language IDEs also fall in this category, like Visual Studio, Eclipse, Visual Studio Code, and others. But now let's look at some specifically mobile development-focused IDEs.</p>
<p>Here are some examples of mobile dev IDEs:</p>
<ul>
<li><mark>Android Studio</mark> – the official Android IDE, created to help developers build high quality Android apps for Android devices. It supports Java and Kotlin.</li>
<li><mark>Intellij</mark> – Mostly known to support Java (Java Centric), but with plugins it can support other languages as well. It was created with intelligent coding and ergonomic design. Using it is like a treat.</li>
<li><mark>Xamarin</mark> – a cross-platform app that is completely free and open source. Used to develop apps for both Android and iOS. It supports .NET and C#.</li>
<li><mark>Xcode</mark> – Apple's very own IDE, which is used only to develop Apple products. It allows you to manage your entire workflow from start to finish. Support langs like: Swift, Objective-C and C++.</li>
</ul>
<h3 id="heading-webcloud-based-ides">Web/Cloud-Based IDEs</h3>
<p>Recently, cloud-based IDEs have started growing in popularity. This is because they give you access to your code from anywhere compared to offline IDEs. No matter the language you use, there is a cloud-based IDE for almost every usecase.</p>
<p>Here are some examples of cloud-based IDEs:</p>
<ul>
<li><mark>Cloud9</mark> – the most powerful and extendable online development platform available because of its integration with AWS. It combines a code editor with a terminal and also has powerful debugging tools. Also allows collaborative programming with teams.</li>
<li><mark>CodeTasty</mark> – a quick and simple to set up IDE. It supports all the major langs we have. It also has its own terminal and an output window. Although it's free, to get other functionalities like collaborations with team members you have to use the paid version.</li>
</ul>
<p>The above are the most commonly known multi-lang cloud based IDE, but there are a number of others that just don't have the same capabilities as these I listed. They include: <a target="_blank" href="https://codepen.io/">Codepen</a>, <a target="_blank" href="https://repl.it/">Replit</a>, <a target="_blank" href="https://codenvy.io/">Codevny</a>, <a target="_blank" href="https://www.codecademy.com/">Codeacademy</a>, and <a target="_blank" href="https://coderun.in/">CodeRun</a>. </p>
<p>Many of these more limited IDEs are capable of doing everything you might need them to do. Although they may have some limitations, like you need an internet connection to use them or you may also have to subscribe to others.</p>
<p>If you haven't yet encountered your favorite IDE, then it probably falls into our 4th type. In fact, my favourite IDE is a single-language IDE, which we'll talk about below.</p>
<h3 id="heading-specific-language-ides">Specific language IDEs</h3>
<p>I think most developeres have a favorite language they would choose over the rest. If that is the case, chances are there is an IDE designed specifically for that language. And it probably has more features to help you out compared to the other enviroments. Let's have a look:</p>
<ul>
<li>For <mark>Python</mark> – <a target="_blank" href="https://www.jetbrains.com/pycharm/">PyCharm</a>, <a target="_blank" href="https://github.com/spyder-ide/spyder">Spyder</a>, <a target="_blank" href="http://thonny.org/">Thonny</a>, <a target="_blank" href="https://docs.python.org/3/library/idle.html">IDLE</a>, <a target="_blank" href="https://www.pydev.org/">PyDev</a>.</li>
<li>For <mark>Java</mark> – <a target="_blank" href="http://www.jetbrains.com/idea/">Intellij IDEA</a>, <a target="_blank" href="http://jikes.sourceforge.net/">Jikes</a>, <a target="_blank" href="http://www.jcreator.com/">Jcreator</a>.</li>
<li>For <mark>C/C++</mark> – <a target="_blank" href="http://www.codeblocks.org/">Code::Blocks</a>, <a target="_blank" href="http://www.programarts.com/cfree_en/buy.htm">C-Free</a>, <a target="_blank" href="http://www.bloodshed.net/devcpp.html">Dev-C++</a></li>
<li>For <mark>Ruby/Rails</mark> – <a target="_blank" href="http://www.jetbrains.com/ruby/">RubyMine</a>, <a target="_blank" href="http://redcareditor.com/">Redcar</a>, <a target="_blank" href="http://www.aptana.com/products/radrails">RadRails</a>.</li>
</ul>
<p>Alright, we've now learned what IDEs are, the different types we have, and what their main functionality/capabilities are. Now, on to the next step. </p>
<p>Why do you think developers use IDEs? Or rather, what are the advantages of IDEs (as well as their disadvantages)? Let's break that down to understand the why.</p>
<h2 id="heading-why-should-you-use-an-ide-when-you-code">Why Should You Use an IDE When You Code?</h2>
<p>Here are some of the main advantages of using an IDE:</p>
<ul>
<li><strong>IDEs save you time and effort</strong> – the entire purpose of using an IDE is to make development faster and easier. IDEs do this by providing you many helpful resources, shortcuts, and error recognition, and more.</li>
<li><strong>They're Easy to Setup</strong> – An IDE brings different capabilities together in one place, and therefore reduces the struggle of constantly switching between tools. If you're having trouble setting up your IDE, check out this article <a target="_blank" href="https://www.freecodecamp.org/news/how-to-set-up-an-integrated-development-environment-ide/">Here</a> for guidance.</li>
<li><strong>They support collaboration</strong> – most IDEs support groups working together and so can help speed up production.</li>
<li>IDEs can <strong>correct syntax</strong>, give warnings, and help you write quality code.</li>
<li>You can also use them to create drivers and utilities.</li>
</ul>
<h3 id="heading-disadvantages-of-ides">Disadvantages of IDEs</h3>
<p>There are a few tricky parts to using an IDE, so let's see what they are:</p>
<ul>
<li>It's hard to keep up with constant updates including new samples, templates, and newly added features.</li>
<li>IDEs can't automatically fix errors – you still need knowledge to write clean code.</li>
<li>Some IDES are complex for beginners to understand.</li>
</ul>
<h3 id="heading-how-to-choose-an-ide">How to Choose an IDE</h3>
<p>Is there something like the perfect IDE? In my opinion, I don't think there is. Usually it depends on the job at hand.</p>
<p>But here are some of the things to consider when you're choosing an IDE:</p>
<ul>
<li>The cost – although most IDEs are free, the addons may not be. Most of the paid IDEs comes with premium features and also support, so just choose according to your project's needs.</li>
<li>Ease of use, packages, and libraries – IDEs that contain plenty of packages and libraries can become harder to use. But this depends on how those libraries and packages are implemented. Choose wisely depending on your needs.</li>
<li>Server connection – check to see if you're able to deploy your code to the server from your IDE.</li>
</ul>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Choosing an IDE usually depends on the type of the project you're working on, along with various environmental requirements like platform, programming language, version control system, and more. And of course you also have to take into account budget and personal preferences. </p>
<p>But now that we've gone through these examples above, hopefully you will find the one that's best for you. If you have a favourite, do share which one. Personally I switch between PyCharm while writing Python code and VS Code in other situations.</p>
<p>Enjoy Coding!💻❤</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How the Language Server Protocol Affects the Future of IDEs ]]>
                </title>
                <description>
                    <![CDATA[ By Mehul Mohan The release of Visual Studio Code single-handedly impacted the developer ecosystem in such a way that there's no going back now. It's open source, free, and most importantly, a super powerful tool.  But with VSCode, Microsoft gave life... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/language-server-protocol-and-the-future-of-ide/</link>
                <guid isPermaLink="false">66d46060733861e3a22a7337</guid>
                
                    <category>
                        <![CDATA[ ide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ programming languages ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 02 Apr 2020 15:19:25 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/04/screely.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Mehul Mohan</p>
<p>The release of Visual Studio Code single-handedly impacted the developer ecosystem in such a way that there's no going back now. It's open source, free, and most importantly, a super powerful tool. </p>
<p>But with VSCode, Microsoft gave life to another super important thing back in 2016, which is less well-known. It is called Language Server Protocol.</p>
<h1 id="heading-what-is-language-server-protocol">What is Language Server Protocol?</h1>
<p>Language Server Protocol (LSP) is a protocol or a way of talking to language servers (just like HTTP or FTP). </p>
<p>Language servers are special programs that run on regular servers. They take in the meta state of editor in which you're coding (for example, where your cursor is currently inside the editor, which token you're hovering over right now), and return a set of actions/instructions – what token should appear next, what should happen when you CMD/Ctrl-click that token, and so on.</p>
<p>This communication happens using a set of rules defined by the protocol. Language Server Protocol could be thought of as a trimmed down version of HTTP and communicates only on JSON-RPC.</p>
<h1 id="heading-why-is-lsp-required">Why is LSP required?</h1>
<p>You see those fancy autosuggestion and error messages popping up in VSCode all the time? And how, just by adding a simple extension from the VSCode marketplace, you get all that IntelliSense power for a completely different language like C, Python, Java, and so on? That comes from LSP.</p>
<p>Support for autocompletion and IntelliSense for HTML/CSS/JavaScript comes baked into VSCode (just like PyCharm comes baked in with Python support). However, the same support for other languages can be implemented using Language Server Protocol for those languages.</p>
<p><img src="https://dev-to-uploads.s3.amazonaws.com/i/pn5c0n3zus769e5fadbk.gif" alt="LSP in Monaco editor" width="600" height="315" loading="lazy"></p>
<h1 id="heading-what-is-json-rpc">What is JSON-RPC?</h1>
<p>JSON-RPC stands for JSON Remote Procedure Call. It is an architecture (similar to how REST is an architecture) but with the fundamental unit being a procedure call rather than an API endpoint in the case of REST.</p>
<p>Here's a simple payload for JSON-RPC:</p>
<pre><code class="lang-sh">// Request
curl -X POST —data <span class="hljs-string">'{
  "jsonrpc": "2.0",
  "method": "runThisFunction",
  "params": [ "some-param", 2 ],
  "id": 1
}'</span>
// Response
{
  <span class="hljs-string">"jsonrpc"</span>: <span class="hljs-string">"2.0"</span>,
  <span class="hljs-string">"result"</span>: <span class="hljs-string">"codedamn"</span>,
  <span class="hljs-string">"id"</span>: 1
}
</code></pre>
<p>In this example we're sending a JSON encoded payload following RPC specification. If the server is configured to handle JSON-RPC correctly, it will execute the method <code>runThisFunction</code> with the passed parameters and return the result in the form as shown.</p>
<h1 id="heading-lsp-json-rpc">LSP + JSON-RPC</h1>
<p>LSP uses JSON-RPC to communicate to remote server. It follows this:</p>
<pre><code class="lang-sh">Content-Length: &lt;bytes of JSON&gt;\r\n\r\n&lt;json-payload&gt;
</code></pre>
<p>To write an example, it'll be like this:</p>
<pre><code class="lang-sh">Content-Length: 78

{<span class="hljs-string">"jsonrpc"</span>:<span class="hljs-string">"2.0"</span>,<span class="hljs-string">"method"</span>:<span class="hljs-string">"runThisFunction"</span>,<span class="hljs-string">"params"</span>:[<span class="hljs-string">"some-param"</span>,2],<span class="hljs-string">"id"</span>:1}
</code></pre>
<p>The LSP requires you to pass the <code>Content-Length</code> header followed by 2 <code>CRLF</code> tokens <code>\r\n</code>. When the running language servers like <code>ccls</code> receive this, they'll respond with an appropriate message:</p>
<p><img src="https://dev-to-uploads.s3.amazonaws.com/i/7zxtfv0a4c15mqxdl2mr.png" alt="ccls server" width="2064" height="356" loading="lazy"></p>
<p>Of course, in the example above, you can see that <code>ccls</code> says that there is no method called <code>runThisFunction</code>. But you can see that the remote server also responds with a <code>Content-Length</code> header with a JSON-RPC specification.</p>
<h1 id="heading-why-does-all-this-matter">Why does all this matter?</h1>
<p>With the introduction of a formal protocol LSP, Microsoft reduced the famous <code>M x N</code> problem to an <code>M + N</code> problem.</p>
<p>M = Different languages (C, C++, PHP, Python, Node, Swift, Go, etc.)<br>N = Different editors (VSCode, Eclipse, Notepad++, Sublime Text, etc.)</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/04/Screenshot-2020-04-02-at-8.30.21-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Previously, for M editors to support N languages, you need M*N solutions. That is, every editor had to implement native support for every language differently.</p>
<p>With the introduction of LSP, the editor only needed to implement support for the Language Server Protocol. Once it did, anyone who makes a language server (following the LSP standards) can be seamlessly integrated with the editor, without the editor ever intelligently "knowing" what language it is working with!</p>
<h1 id="heading-the-future-of-ides">The future of IDEs</h1>
<p>As more and more languages come out with their language servers, people will have more ability to choose the editor they like best. </p>
<p>No longer will you have to stick to only XCode for Swift development, or PyCharm for Python. Not only this, but LSPs can also be implemented straight into JavaScript to support IntelliSense in the browser like I'm doing at <a target="_blank" href="https://codedamn.com">codedamn</a>, a platform for developers to learn and grow! It's an exciting time to be alive!</p>
<p>Peace,<br>Mehul</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Move from Coding Tutorials to Building Projects as a Developer ]]>
                </title>
                <description>
                    <![CDATA[ By M. S. Farzan Learning to code by following tutorials works for many people. And yet there tends to be a separate learning curve when you're trying to move out of the tutorial ecosystem and into creating your own projects. I've written elsewhere ab... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/five-tips-for-moving-from-coding-tutorials-to-making-progress-as-a-developer/</link>
                <guid isPermaLink="false">66d851e2bdc56847ac959f48</guid>
                
                    <category>
                        <![CDATA[ beginner ]]>
                    </category>
                
                    <category>
                        <![CDATA[ C ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Integrated Development Environment   ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learn to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tips ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tutorial purgatory ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 19 Dec 2019 17:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2019/12/jefferson-santos-V9sv7QrDUgc-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By M. S. Farzan</p>
<p>Learning to code by following tutorials works for many people. And yet there tends to be a separate learning curve when you're trying to move out of the tutorial ecosystem and into creating your own projects.</p>
<p>I've <a target="_blank" href="https://www.freecodecamp.org/news/how-to-choose-a-programming-language-and-escape-tutorial-purgatory/">written elsewhere</a> about how to escape tutorial purgatory and make progress as a programmer. But to summarize here, it's a necessary step in your growth as a developer to venture out into the wild west of programming and build something. This will expose you to the ins and outs of your chosen coding ecosystem.</p>
<p>Here are five tips to help you move out of those tutorials and into making real progress as a developer by building projects.</p>
<h2 id="heading-1-choose-a-project">1. Choose a Project</h2>
<p>Whether you're coding from a book or working through online tutorials, your first step upon leaving the safety of your nest is to choose a project that is specific to your field of interest.</p>
<p>If you're an aspiring front end developer, that might mean creating a basic website. If you're learning Python, that could look like a simple web scraper. Find something that interests you, and research examples to get an idea of what your project might look like when it's complete.</p>
<h2 id="heading-2-set-up-an-ide">2. Set Up an IDE</h2>
<p>If you've been learning from online tutorials which provide a console that handles all of the back end work for you, take some time to set up an <a target="_blank" href="https://www.freecodecamp.org/news/how-to-set-up-an-integrated-development-environment-ide/">integrated development environment</a> (IDE) that is specific to your intended project and ecosystem.</p>
<p>The actual form of your IDE will vary greatly depending on your project. You could be cobbling together a workflow that includes a code editor, command line interface, version control system, and package manager. Or, on the other hand, you might install a game engine that has all of the stuff that you need built-in for you.</p>
<p>The important component of this step is to become comfortable coding in an environment that is standard for the type of work you want to do. This helps you move away from only coding in a browser or following a book.</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/f-JWTicIOwI" 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>
<h2 id="heading-3-get-comfortable-with-documentation">3. Get Comfortable with Documentation</h2>
<p>Here's a glimpse of a familiar workflow when you're beginning a new project:</p>
<ol>
<li>Set up your IDE</li>
<li>Code</li>
<li>Get stuck or forget the syntax for something</li>
<li>Google some half-formed question about the issue</li>
<li>Find the official documentation and a handful of Stack Overflow posts</li>
<li>Check social media for no reason</li>
<li>Return to the documentation and Stack Overflow to find your answer</li>
<li>Return to step 2</li>
</ol>
<p>Unless you're a super expert in your field, chances are that you'll get stuck trying to figure out a solution to some aspect of your project. The official documentation for the library or framework that you're using will likely have some sort of answer - even if it's an obscure one - for whatever's puzzling you. But if it doesn't, someone has probably asked a similar question on Stack Overflow or elsewhere.</p>
<p>Even if there are no answers out there for your specific question, there will be a breadcrumb somewhere that'll lead you to an approach for how to solve your problem.  </p>
<p>If you're trying to use ES6 classes in some obscure JavaScript framework, for example, you might not find the <em>exact</em> answer you're looking for. But there will be plenty of similar resources out there that can help you come up with a solution yourself.</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/z9xz-R4iuaU" 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>
<h2 id="heading-4-ask-for-help">4. Ask for Help</h2>
<p>One of the best things you can do for yourself as an aspiring developer is to make friends with other developers in your field. They can look at your code and provide feedback about how to make it better.</p>
<p>For some people, the idea of sharing their work and having it critiqued is an anxiety-inducing experience. I recommend working as diligently as you can to overcome this emotion as it will stagnate your growth as a programmer.</p>
<p>When you're starting out with your own projects, it can be <em>extremely</em> helpful to have someone who's already walked the path to look at your work and offer constructive criticism. Even if doing so requires you to rewrite whole sections of code.  In many cases, you might be trying to recreate the wheel while other options already exist. There, you'll benefit greatly from learning best practices from experts that have experience in the field.</p>
<h2 id="heading-5-identify-other-areas-for-growth">5. Identify Other Areas for Growth</h2>
<p>One project usually leads to another, and you'll quickly identify areas in which you're able to grow as a developer.  This might mean that you'll move from front end development to back end, or vice versa, or hop from 2D game programming into 3D.</p>
<p>It might also mean that you need to keep building your skill set just to complete the initial project that you've chosen. There's no shame in learning C#, for example, then deciding to build the back end of a web app, and having to learn all about <a target="_blank" href="https://docs.microsoft.com/en-us/aspnet/?view=aspnetcore-3.1">ASP.NET</a> and <a target="_blank" href="https://docs.microsoft.com/en-us/aspnet/core/razor-pages/?view=aspnetcore-3.1&amp;tabs=visual-studio">Razor Pages</a> before actually making any progress!</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/0-dUB52eEMk" 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>Happy coding!</p>
<p>If you enjoyed this article, please consider <a target="_blank" href="https://www.nightpathpub.com/">checking out my games and books</a>, <a target="_blank" href="https://www.youtube.com/msfarzan?sub_confirmation=1">subscribing to my YouTube channel</a>, or <a target="_blank" href="https://discord.gg/RF6k3nB">joining the <em>Entromancy</em> Discord</a>.</p>
<p>M. S. Farzan, Ph.D. has written and worked for high-profile video game companies and editorial websites such as Electronic Arts, Perfect World Entertainment, Modus Games, and MMORPG.com, and has served as the Community Manager for games like <em>Dungeons &amp; Dragons Neverwinter</em> and <em>Mass Effect: Andromeda</em>. He is the Creative Director and Lead Game Designer of <em><a target="_blank" href="https://www.nightpathpub.com/rpg">Entromancy: A Cyberpunk Fantasy RPG</a></em> and author of <em><a target="_blank" href="http://nightpathpub.com/books">The Nightpath Trilogy</a></em>. Find M. S. Farzan on Twitter <a target="_blank" href="https://twitter.com/sominator">@sominator</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Use GitHub and ES6 Features to Create and Structure Your Code ]]>
                </title>
                <description>
                    <![CDATA[ By M. S. Farzan If you're moving from coding tutorials into creating your own JavaScript projects, you'll want to become familiar with using a version control system like GitHub and benefiting from ES6 features to clean up your code and streamline yo... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-use-github-and-es6-features-to-create-and-structure-your-code/</link>
                <guid isPermaLink="false">66d851f32c0761b6f5a251f3</guid>
                
                    <category>
                        <![CDATA[ beginner ]]>
                    </category>
                
                    <category>
                        <![CDATA[ C ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ES6 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ GitHub ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Integrated Development Environment   ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learn to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Tutorial ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tutorial purgatory ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 19 Dec 2019 17:00:00 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9e9b740569d1a4ca3e11.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By M. S. Farzan</p>
<p>If you're moving from coding tutorials into creating your own JavaScript projects, you'll want to become familiar with using a version control system like <a target="_blank" href="https://github.com/">GitHub</a> and benefiting from <a target="_blank" href="https://www.w3schools.com/js/js_es6.asp">ES6 features</a> to clean up your code and streamline your development process.</p>
<p>In this new video, we'll walk through cloning an existing repository from GitHub, creating your own local and remote repositories, utilizing node package manager (NPM) to install dependencies, creating a streamlined code base using ES6 classes, import/export modules, and arrow functions, and adding, committing, and pushing changes to GitHub.</p>
<p>Plus, we'll talk through the basic file structure for a <a target="_blank" href="https://phaser.io/">Phaser 3</a> project!</p>
<p>Check it out (50 minute watch):</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/z9xz-R4iuaU" 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>Happy coding!</p>
<p>If you enjoyed this article, please consider <a target="_blank" href="https://www.nightpathpub.com/">checking out my games and books</a>, <a target="_blank" href="https://www.youtube.com/msfarzan?sub_confirmation=1">subscribing to my YouTube channel</a>, or <a target="_blank" href="https://discord.gg/RF6k3nB">joining the <em>Entromancy</em> Discord</a>.</p>
<p>M. S. Farzan, Ph.D. has written and worked for high-profile video game companies and editorial websites such as Electronic Arts, Perfect World Entertainment, Modus Games, and MMORPG.com, and has served as the Community Manager for games like <em>Dungeons &amp; Dragons Neverwinter</em> and <em>Mass Effect: Andromeda</em>. He is the Creative Director and Lead Game Designer of <em><a target="_blank" href="https://www.nightpathpub.com/rpg">Entromancy: A Cyberpunk Fantasy RPG</a></em> and author of <em><a target="_blank" href="http://nightpathpub.com/books">The Nightpath Trilogy</a></em>. Find M. S. Farzan on Twitter <a target="_blank" href="https://twitter.com/sominator">@sominator</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Set Up an Integrated Development Environment (IDE) ]]>
                </title>
                <description>
                    <![CDATA[ By M. S. Farzan If you're moving from online tutorials to building your own projects, you might be overwhelmed by the idea of setting up your own integrated development environment (IDE), or wonder why you even need one to get your work done. In this... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-set-up-an-integrated-development-environment-ide/</link>
                <guid isPermaLink="false">66d851f1afbaabf7a144aefe</guid>
                
                    <category>
                        <![CDATA[ beginner ]]>
                    </category>
                
                    <category>
                        <![CDATA[ C ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Integrated Development Environment   ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learn to code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Tutorial ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tutorial purgatory ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sun, 17 Nov 2019 21:25:59 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9f42740569d1a4ca41a5.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By M. S. Farzan</p>
<p>If you're <a target="_blank" href="https://www.freecodecamp.org/news/how-to-choose-a-programming-language-and-escape-tutorial-purgatory/">moving from online tutorials to building your own projects</a>, you might be overwhelmed by the idea of setting up your own integrated development environment (IDE), or wonder why you even need one to get your work done.</p>
<p>In this article, I'll discuss what an IDE <em>is</em> and give you some ideas about what yours might look like, particularly if you're working in JavaScript, although the information will be applicable irrespective of language or project type.</p>
<p>Here's a video version of this post if you'd prefer (28 minute watch):</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/f-JWTicIOwI" 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>
<h2 id="heading-what-is-an-integrated-development-environment">What is an Integrated Development Environment?</h2>
<p>An integrated development environment, put simply, is everything a programmer needs to get their work done.  The actual makeup of an IDE will vary between programming languages, types of projects, and even between programmers, but there are some things that are common among a lot of IDEs, which I'll cover below.</p>
<p>The simplest way to understand an IDE is to consider an "all-in-one" solution like <a target="_blank" href="https://unity.com/">Unity</a>. As a fully-featured game engine, Unity has everything you'll need to create a 2D or 3D game: a GUI that allows you to build your game world, a code editor (Visual Studio) where you can write scripts, a way to download dependencies and assets, and even GitHub integration so that you can keep track of build versions and collaborate on projects.  For smaller projects, Unity can be thought of as a fully functional integrated development environment, where everything is already set up for you after downloading the game engine.</p>
<p>Other IDEs can vary greatly in complexity, particularly if you're coming from an online tutorial that allows you to code right in the browser.  One of my gripes with common answers to the question, "what programming language should I learn?" is the notion that learning JavaScript is easier because "it just runs in your browser."</p>
<p>Tell that to anyone who's attempted to set up an IDE for Create React App, which requires several components to get up and running - none of which are apparent when you're working through online tutorials.  To actually do work as a developer, you'll need four main things to set up your integrated development environment: a code editor, command line interface (CLI), version control system, and package manager.</p>
<p>Major caveat: your IDE may vary greatly depending on programming language or type of project, but you'll likely need one or more of the following in any case!</p>
<h2 id="heading-ide-tool-1-code-editor-and-compiler">IDE Tool #1: Code Editor (and Compiler)</h2>
<p>A whole bunch of online tutorials allow you to just code in the browser, which is great for understanding basic programming concepts, but in the long run, you'll need an editor that allows you to save your code (and compile it, if you're using a language like C# or C++).</p>
<p>There are a lot of code editors out there, such as <a target="_blank" href="https://atom.io/">Atom</a> (lightweight, free, and open source), <a target="_blank" href="https://www.sublimetext.com/">Sublime</a> (super popular with tons of integrations), and <a target="_blank" href="https://visualstudio.microsoft.com/">Visual Studio / Visual Studio Code</a> (supported by Microsoft and wonderful to work with).  It would be reductive to say that they're "all the same thing," as each one provides a different approach to supporting your coding workflow, so you might try one or two before deciding which one you like best.</p>
<h2 id="heading-ide-tool-2-command-line-interface-cli">IDE Tool #2: Command Line Interface (CLI)</h2>
<p>If you have a computer, you've undoubtedly used your file explorer or some other navigational GUI to access the file system, create folders, delete files, and so on.</p>
<p>The command line interface (CLI) allows you to do the same thing...in plain text.  Which might seem super archaic or annoying at first, but once you wrap your head around chaining commands together and integrating them into your workflow, you'll begin to see the power of the CLI and how essential it is to most development environments.</p>
<p>On Mac, you might be using the Terminal.  Because I've installed GitHub for Windows (more on GitHub below) on my machine, I use Git Bash for my work.  There are several options here for you, and it might do to check out a few command line tutorials to understand some of the basic principles so that you feel comfortable using it in your IDE.</p>
<h2 id="heading-ide-tool-3-version-control-system">IDE Tool #3: Version Control System</h2>
<p>There are several <a target="_blank" href="https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control">resources</a> out there that provide overviews of what is version control and why you should use it. Suffice it to say that when you're building anything other than a simple project, you'll need a way to back up your work, share your code with collaborators, and keep track of the different build versions so that you can muck with parts of the code base and not others.</p>
<p><a target="_blank" href="https://github.com/">GitHub</a> isn't the only version control system out there, but it is the gold standard at the moment, and it would be worth your while to look up a few tutorials to learn how to take advantage of its features, even if you just wind up using it as a remote backup method.</p>
<p>Additionally, while there are several addons to integrate GitHub right into your code editor (or game engine), the standard practice for doing Git-related tasks is by using the command line interface, which provides another reason for becoming proficient with your CLI of choice.</p>
<h2 id="heading-ide-tool-4-package-manager">IDE Tool #4: Package Manager</h2>
<p>For some IDEs, like with our Unity example above, all you need to do is download and install software to get started with building your projects.  Most of the dependencies that you'll need will be included with your initial download, and if not, there will be a way to access them from within the game engine (e.g. Unity's <a target="_blank" href="https://assetstore.unity.com/">Asset Store</a>).</p>
<p>For other, more choose-your-own-adventure IDEs, you'll need to piece things together yourself, and one of the essential components will be a package manager like <a target="_blank" href="https://www.npmjs.com/">NPM</a> or <a target="_blank" href="https://docs.conda.io/en/latest/">Conda</a>.</p>
<p>Package managers do a lot of things, and at their most basic functionality, they'll help you to install all the dependencies you'll need to get your work done.  If you want to get started on a React project, for example, you'll navigate to a folder through your CLI, and, after installing NPM (which is bundled with <a target="_blank" href="https://nodejs.org/en/">Node.js</a>) type:</p>
<pre><code>npx create-react-app my-app 
cd my-app 
npm start
</code></pre><p>The first line basically says: "Hey, NPM! Download all the dependencies for Create React App, and put them in a folder called 'my-app.'"</p>
<p>The second line then tells your CLI: "Navigate to the new directory called 'my-app.'"</p>
<p>The third line gets the action going: "NPM, it's me again. Start a development server that displays my project in a browser and updates it whenever I make changes to the code."</p>
<p>Once you've installed all of the necessary dependencies using your package manager, you'll begin working in your code editor and using the command line interface to make pull requests or push code to a remote repository using your version control system.</p>
<p>In summary, an integrated development environment comprises all of the things you need to get your work done, and varies based on language, project type, and your personal preference.  Ordinarily, IDEs include a code editor (and compiler), command line interface, version control system, and package manager, but your integrated development environment might have different requirements or a combination thereof.</p>
<p>You can do it!</p>
<p>If you enjoyed this article, please consider <a target="_blank" href="https://www.nightpathpub.com/">checking out my games and books</a>, <a target="_blank" href="https://www.youtube.com/msfarzan?sub_confirmation=1">subscribing to my YouTube channel</a>, or <a target="_blank" href="https://discord.gg/RF6k3nB">joining the <em>Entromancy</em> Discord</a>.</p>
<p><strong>M. S. Farzan, Ph.D.</strong> has written and worked for high-profile video game companies and editorial websites such as Electronic Arts, Perfect World Entertainment, Modus Games, and MMORPG.com, and has served as the Community Manager for games like <em>Dungeons &amp; Dragons Neverwinter</em> and <em>Mass Effect: Andromeda</em>. He is the Creative Director and Lead Game Designer of <em><a target="_blank" href="https://www.entromancy.com/rpg">Entromancy: A Cyberpunk Fantasy RPG</a></em> and author of <em><a target="_blank" href="http://nightpathpub.com/books">The Nightpath Trilogy</a></em>. Find M. S. Farzan on Twitter <a target="_blank" href="http://www.twitter.com/sominator">@sominator</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
