<?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[ Visual Studio Code - 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[ Visual Studio Code - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Fri, 12 Jun 2026 05:20:24 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/vscode/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Visual Studio Code Extensions to Boost Your Productivity in 2024 ]]>
                </title>
                <description>
                    <![CDATA[ According to the 2023 Stack Overflow Developer Survey, Visual Studio Code (also known as VSCode) ranked as the most preferred integrated developer environment (IDE) tool. Visual Studio Code has many great features out-of-the-box, and supports a large... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/best-vscode-extensions/</link>
                <guid isPermaLink="false">66bc4ca470137bd197ce3238</guid>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Natalie Pina ]]>
                </dc:creator>
                <pubDate>Wed, 24 Jan 2024 22:42:52 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2024/01/Group-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>According to the <a target="_blank" href="https://survey.stackoverflow.co/2023/#section-most-popular-technologies-integrated-development-environment">2023 Stack Overflow Developer Survey</a>, Visual Studio Code (also known as VSCode) ranked as the most preferred integrated developer environment (IDE) tool.</p>
<p>Visual Studio Code has many great features out-of-the-box, and supports a large community of extensions to add enhanced functionality.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/Screenshot-2024-01-12-at-12.01.59-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Stack Overflow survey image showing VSCode's popularity (73.71% of respondents use it)</em></p>
<p>Using extensions can expand VSCode's available features and tools. With a majority of tools in one place, it allows for less context switching which has been shown to <a target="_blank" href="https://asana.com/resources/context-switching">kill productivity</a>.</p>
<p>I have tested out over 40 different extensions in the last year and refined a curated list of my favorites. These extensions boosted my productivity as a software engineer. I want to share this list with you to boost your productivity, too.</p>
<p>This list is designed to be language-agnostic with an emphasis on productivity. If you're interested in exploring my recommended extensions to customize the style of your editor, you can find more details <a target="_blank" href="https://www.freecodecamp.org/news/best-colorful-vscode-extensions-for-productivity/">in this article</a>.</p>
<h2 id="heading-vscode-extensions-well-cover">VSCode Extensions We'll Cover:</h2>
<ul>
<li><p><a class="post-section-overview" href="#heading-better-comments">Better Comments</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-bookmarks">Bookmarks</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-code-spell-checker">Code Spell Checker</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-codesnap">CodeSnap</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-codiumai">CodiumAI</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-error-lens">Error Lens</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-git-history">Git History</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-gitlens">GitLens</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-github-copilot">GitHub Copilot</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-icon-themes">Icons Themes</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-indent-rainbow">Indent Rainbow</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-live-share">Live Share</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-multiple-cursor-case-preserve">Multiple Cursor Case Preserve</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-path-intellisense">Path Intellisense</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-peacock">Peacock</a></p>
</li>
<li><p><a target="_blank" href="https://www.freecodecamp.org/news/p/db680fa0-6ecb-42b3-a803-ea6b47c90add/@prettier">Prettier</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-project-manager">Project Manager</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-tabnine">Tabnine</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-todo-highlight">TODO Highlight</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-todo-tree">Todo Tree</a></p>
</li>
</ul>
<p>In this article, I will cover all of these extensions in greater detail and advise on how they can elevate your levels of efficiency as a developer.</p>
<h2 id="heading-better-comments">Better Comments</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments">Better Comments</a> helps you strengthen the comments in code. Code comments are beneficial for readability, and providing explanations or context for future reference. Leaving good code comments can save others and yourself time in the future.</p>
<p>Supported features include the ability to categorize the annotations from alerts, writing queries, making a TODO list, and showing highlights. There is an extensive list of supported languages.</p>
<p>Lines of code that are commented out are styled to be dark gray with a text strikethrough, emphasizing their exclusion and signaling that they should be removed.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/better-comments.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Styled code comments with Better Comments.</em></p>
<h2 id="heading-bookmarks">Bookmarks</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=alefragnani.Bookmarks">Bookmarks</a> allows you to bookmark positions in your code. These lines are noted with a blue bookmark icon. Bookmarks can be organized and named to allow for quick reference.</p>
<p>All of the bookmarks can be found in a dedicated sidebar section. This is a great tool to improve navigation, and to help you spend lest time searching for references.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/printscreen-toggle.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Bookmarks displayed in blue with a bookmark icon next to the line number.</em></p>
<h2 id="heading-code-spell-checker">Code Spell Checker</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker">Code Spell Checker</a> lives up to its name. It provides a basic spell checker to find and fix spelling errors throughout your codebase. Misspelled words are indicated with a squiggly underline. It is available in many languages.</p>
<p>This is one of my personal favorite extensions. I have caught and fixed so many typos thanks to this one.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/example.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>This image displays how Spell Checker detects and corrects spelling errors.</em></p>
<h2 id="heading-codesnap">CodeSnap</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=adpyke.codesnap">CodeSnap</a> is used to snap a screenshots of code. It can come in handy for sharing code snippets with ease.</p>
<p>To snap a shot of your code, use (Ctrl+Shift+P on Windows and Linux, Cmd+Shift+P on OS X) and search for <code>CodeSnap</code>. Then select the area of your code to screenshot, adjust the width, and click the shutter button. You can also take a snapshot by selecting code, right clicking, and selecting CodeSnap.</p>
<p>There are websites that can do this, however, having these tools right in your editor allows for less context switching to boost productivity.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/material_operator-mono.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Sample React code snippet created with CodeSnap.</em></p>
<h2 id="heading-codiumai">CodiumAI</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=Codium.codium">CodiumAI</a> is a free AI-powered code toolkit. It supports features like code autocompletion, chat, enhanced search, and suggestions.</p>
<p>AI has become a major player in improved developer productivity. Imagine spending half the time writing tests, allowing you to spend more time on other crucial, creative tasks.</p>
<p>When it comes to testing, CodiumAI excels. It can analyze code and generate meaningful tests and comprehensive test suites.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/Tests-Gif.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>CodiumAI generating a test suite based on a section of Python code.</em></p>
<p>This is a relatively new extension and that has been rapidly gaining popularity. Languages supported are Python, JavaScript, TypeScript, Java, Go, and others.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/g_python_random_gen_with_logo.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>CodiumAI's autocomplete functionality used to create functions based on natural language prompts.</em></p>
<h2 id="heading-error-lens">Error Lens</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens">Error Lens</a> improves highlighting of errors, warnings, and other language diagnostics. This is a great debugging and error-prevention tool to have.</p>
<p>Errors will not go unnoticed with this extension. Error and warnings are made prominent by highlighting the entire line, along with the related message printed inline.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/demo.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Error Lens identifying an error, notifying that there is a missing semicolon and a syntax error.</em></p>
<p>Spend less time sourcing errors, as clicking on an an annotation routes you directly to the corresponding line of code.</p>
<p>There is support for multiple languages which makes it a valuable for developers working in projects in different languages. You can also configure the appearance and behavior of errors and warnings.</p>
<h2 id="heading-git-history">Git History</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=donjayamanne.githistory">Git History</a> is an extremely useful extension for version control with Git (the extension has 10 million installs, so it's clear that it's popular). This extension allows you to explore the detailed history of your Git repository directly from the VSCode interface. You can view file history, git log, and perform comparisons.</p>
<p>It provides an interactive and visual representation of commit logs, branches, and file changes over time. This extension provides a more accessible and uncomplicated experience working on version-controlled projects.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/gitLogv3--1-.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Git History is being used here to create a tag on a specific commit.</em></p>
<h2 id="heading-gitlens">GitLens</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens">GitLens</a> is the most robust Git tool, with so many features bundled into one extension. It has a strong open-source community, and it continues to have active support with frequent updates.</p>
<p>With GitLens, you can gain powerful insights into your repositories directly in VSCode. Annotations are integrated throughout the editor, displaying tons of Git information.</p>
<p>One of the most useful features of GitLens is the blame annotation. This allows you to see who wrote the code, and how long ago.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/current-line-blame.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>GitLens traces the line of code to a commit created 4 years ago from the user (You).</em></p>
<p>Another feature that I have found to be handy is the interactive rebase editor. This provides a nice user experience when performing rebases.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/rebase.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>GitLens' example of an interactive rebase. Commits can be picked, edited, dropped, squashed, and more.</em></p>
<h2 id="heading-github-copilot">GitHub Copilot</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=GitHub.copilot">GitHub Copilot</a> has gained a ton of traction over the last two years. This product has revolutionized the coding experience by leveraging advanced AI capabilities. It not only assists with completing code snippets but also acts as an AI pair programming copilot, offering intelligent suggestions for entire lines or blocks of code.</p>
<p>The strength of GitHub Copilot lies in its integration with OpenAI, tapping into a vast repository of open-source code to provide contextually relevant and practical suggestions. This not only accelerates coding speed but also serves as a valuable learning tool, exposing you to diverse coding patterns and best practices.</p>
<p>This is not a free tool. A subscription can run you $10 per month as an individual, or it can be purchased for teams at a discounted rate. If you'd like to try out GitHub Copilot, there is currently a 30-day trail offer.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/212964557-8d832278-61bb-4288-a8a7-47f35859e868.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>GitHub Copilot using intelligent autocomplete on a function.</em></p>
<p>There are also some free alternatives which you can <a target="_blank" href="https://www.freecodecamp.org/news/ai-tools-to-use-in-vs-code/">read more about here</a> (and I talk about Tabnine below as well).</p>
<h2 id="heading-icon-themes">Icon Themes</h2>
<p>While VSCode includes default icons, incorporating icon packs provides an excellent means to boost productivity and infuse a visually appealing aesthetic into the editor.</p>
<p>Icon packs provide a more extensive and visually recognizable set of icons compared to the defaults. This can make it easier for visual distinction between file types and folders. It can build intuitive recognition and reduce the cognitive load when navigating through files.</p>
<p>There are plenty of options when it comes to choosing an icon pack. Three popular choices are the <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=Equinusocio.vsc-material-theme-icons">Material Theme Icons</a>, <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons">vscode-icons</a>, and <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=file-icons.file-icons">file-icons</a>.</p>
<p>I find that a good set of icons improves the overall readability of the file explorer. I enjoy the added benefits of the upgraded visual experience.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/Group-2.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Side-by-side comparison of my editor with the vscode-icons (left) and Material Icon Theme (right) enabled. There are icons for file types and folders that indicate what they contain.</em></p>
<h2 id="heading-indent-rainbow">Indent Rainbow</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow">Indent Rainbow</a> is a colorful extension that you can use to make indentation comprehensible, aiding in maintaining well-organized and properly indented code.</p>
<p>Each indent is marked with a different color, alternating between 4 different colors. The colorful representation of the structure is not only useful but also visually appealing. This extension is particularly useful for languages that rely heavily on indentation such as YAML or Python.</p>
<p>If you aren't fond of the default set of colors, you can configure your own!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/example--1-.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>A side-by-side comparison of two styles from Indent Rainbow. The one on the left shows the lines of the indent in vibrant color and the other shows the entire indention in a muted tone.</em></p>
<h2 id="heading-live-share">Live Share</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare">Live Share</a> is a collaborative development extension, enabling real-time sharing.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/Screenshot-2024-01-18-at-12.10.57-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>The Live Share header in the extension marketplace. There are 15 million installs.</em></p>
<p>This extension helps you facilitate productive teamwork. Unlike traditional pair programming sessions, Live Share lets you work together while retaining your own editor preferences. Each person has their own cursor, and you can follow each others' cursors around the codebase.</p>
<p>With Live Share, there is no need to clone repositories or encounter conflicts when working off of a shared branch. Context is immediately gained from the environment when entering a session.</p>
<h2 id="heading-multiple-cursor-case-preserve">Multiple Cursor Case Preserve</h2>
<p>The <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=Cardinal90.multi-cursor-case-preserve">Multiple Cursor Case Preserve</a> extension is a productivity-boosting tool that aids in rapid code editing.</p>
<p>I have personally experienced the frustration when targeting multiple variable names throughout a file for renaming, and inadvertently overriding casing when making a change.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/Example--1-.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Targeting multiple variables with the same word but different casing, and updating them all from 'element' to 'node' with the casing remaining in tact.</em></p>
<h3 id="heading-tip-multi-line-editing-in-vscode">Tip: Multi-Line Editing in VSCode</h3>
<p>Take advantage of these Mac keyboard shortcuts for multi-line editing:</p>
<ul>
<li><p><strong>Cmd + D:</strong> Quickly select a word and press it again to extend the selection to sequential occurrences.</p>
</li>
<li><p><strong>Alt + Shift + Up/Down:</strong> Create multiple cursors above or below your cursor. Use <code>Cmd + Right/Left</code> to navigate each cursor to the line end or start, and <code>Cmd + Left/Right</code> to reach the start or end of a word.</p>
</li>
<li><p><strong>Alt + Up/Down:</strong> Move the current line up or down. Combine with <code>Shift + Up/Down</code> to select and move multiple lines simultaneously, streamlining your code editing process.</p>
</li>
</ul>
<p>By preserving the case, it streamlines the editing process by reducing the manual effort required to fix casing.</p>
<h2 id="heading-path-intellisense">Path Intellisense</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense">Path Intellisense</a> is a file path productivity tool. It has intelligent auto-completion that dynamically suggests file paths and directory names as you type. It can minimize errors due to incomplete or wrong file paths.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/iaHeUiDeTUZuo.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Path Intellisense used to auto-complete a link element's 'href' attribute with a style.css file.</em></p>
<p>It is compatible with a variety of programming languages. But if you are using npm, the <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=christian-kohler.npm-intellisense">npm Intellisense</a> plugin is recommended specifically.</p>
<h2 id="heading-peacock">Peacock</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=johnpapa.vscode-peacock">Peacock</a> is a personal favorite of mine, as I love to add more color to my editor. Not only does it outline your editor in color, but it also allows you to configure specific colors for each workspace which is very beneficial when context switching.</p>
<p>Peacock comes with a range of preselected colors, while also allowing for user-defined custom colors.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/peacock-windows.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>A stack of editors from Peacock showing the various default color options. The color is applied to the sidebar and bottom section in the editor window.</em></p>
<h2 id="heading-prettier">Prettier</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode">Prettier</a> is a widely embraced code formatting tool with over 40 million installations. It provides you with a shared solution to improve code readability.</p>
<p>This opinionated code formatter enforces consistent style throughout a codebase. With support for various programming languages, Prettier automatically analyzes and formats code according to a set of standardized rules, this eliminates debates over coding style and enhancing collaboration.</p>
<p>Prettier's integration with "format on save" in VSCode vastly increases productivity by automatically applying formatting, preventing any time spent on manual formatting concerns.</p>
<p>You've probably already heard about Prettier, nonetheless it's important to mention as one of the top extensions to have.</p>
<h2 id="heading-project-manager">Project Manager</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager">Project Manager</a> is a simple tool to set projects (aka Favorites) and access them. It includes a dedicated side bar section to manage all of your projects in one place.</p>
<p>This is great tool when you have a lot of projects to manage and need to frequently switch between them. It comes with a set of handy features like the ability to further organize projects by tags.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/vscode-project-manager-side-bar-tags.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Project Manager's example of how to create a tag by selecting 'Edit Tags', choosing from the previously created tags, and where to view them under Favorites.</em></p>
<h2 id="heading-tabnine">Tabnine</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=TabNine.tabnine-vscode">Tabnine</a> is an free AI coding assistant. It can help to increase your productivity by providing real-time code completions.</p>
<p>Beyond basic code completion, it takes in the context and offers further relevant suggestions. This can be particularly useful when working in intricate codebases demanding extensive code exploration.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/completions-main.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Tabnine's example of autocompletion. The autocomplete is used to quickly create Python and TypeScript code.</em></p>
<p>Tabnine supports many programming languages. Adaptive learning is used to adjust to the developer's coding style over time. There is an added focus on privacy, as code is never stored or shared.</p>
<p>As I mentioned above, Tabnine is often compared to as a GitHub Copilot alternative, and worth trying out at no cost. Keep an eye out on this one as they add new competitive features.</p>
<p>Support for this extension is strong with continual updates. Chat functionality is soon to come, allowing you to ask questions and generate anything from code to documentation.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/260391624-68c486fc-fa0d-4cfe-b8e1-432684b057d8.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Example from Tabnine of how the new AI chat functionality will look. The user asks for a weather API and Tabnine responds with several examples.</em></p>
<h2 id="heading-todo-highlight">TODO Highlight</h2>
<p>Never forget another to-do with <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight">TODO Highlight</a>. It emphasizes <code>TODO</code>s and other annotations with a colorful highlight.</p>
<p>It is common to encounter a <code>TODO</code> or <code>FIXME</code> relic of the past in a codebase that has been around for awhile. These can be hard to remember to remove. TODO Highlight is here to help remind you to not leave a trail.</p>
<p>Wether your theme is light or dark, TODO Highlight will put a spotlight on annotations.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/material-night-eighties.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Some JavaScript code with a TODO highlighted in yellow along with a FIXME highlighted in pink.</em></p>
<h2 id="heading-todo-tree">Todo Tree</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree">Todo Tree</a> offers a quick and organized solution to uncover annotations. It searches your workspace for <code>TODO</code> and other annotations and organizes them in a file tree.</p>
<p>It occupies a specific section in the side activity bar. Clicking on each <code>TODO</code> opens the related file, where the <code>TODO</code> is highlighted for immediate attention.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/screenshot.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>The TODO Tree sidebar section with a selected to-do of 'TODO Fix this!'. In the code to the right, the 'TODO' is highlighted with a bright purple color.</em></p>
<h2 id="heading-summary">Summary</h2>
<p>VSCode stands out for its expansive extension ecosystem, making it a go-to choice for developers. Having thoroughly tested an array of popular extensions, I've carefully curated this list of my top recommendations.</p>
<p>This list is a great place to start from and build on. I highly encourage you to implement routine trial periods with new extensions. Delve into other extensions through the <a target="_blank" href="https://marketplace.visualstudio.com/vscode">Visual Studio Code extension search</a>.</p>
<p>Recognizing the importance of minimizing cognitive load for sustained focus, each extension on this list is chosen with the goal of reducing unnecessary mental burdens like context switching. Make VSCode become your main hub of development needs, and you an improved focus mode along with other benefits.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/Screenshot-2024-01-23-at-10.33.01-AM-1.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>I hope these recommendations allow you to optimize your workflow, minimize distractions, and ultimately boost your productivity!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ AI Tools You Can Use in Visual Studio Code Besides GitHub Copilot ]]>
                </title>
                <description>
                    <![CDATA[ AI tools have become quite popular recently. Developers use these tools to help generate ideas, create simple code examples, and so on.  In 2023, ChatGPT and other Large Language Models found their way into many of our toolkits. And we can use them t... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/ai-tools-to-use-in-vs-code/</link>
                <guid isPermaLink="false">66b9f47068badebf96ed5f95</guid>
                
                    <category>
                        <![CDATA[ AI ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Artificial Intelligence ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Ijeoma Igboagu ]]>
                </dc:creator>
                <pubDate>Mon, 22 Jan 2024 19:56:13 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2024/01/ai-tool-cover-2-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>AI tools have become quite popular recently. Developers use these tools to help generate ideas, create simple code examples, and so on. </p>
<p>In 2023, ChatGPT and other Large Language Models found their way into many of our toolkits. And we can use them to be more productive and save time on repetitive tasks.</p>
<p>In this article, you'll discover other helpful tools besides GitHub Copilot.</p>
<p>Before we discuss alternatives, let's go over what GitHub Copilot is and what it does.</p>
<h2 id="heading-what-is-github-copilot">What is GitHub Copilot?</h2>
<p>GitHub Copilot helps developers write code more quickly and efficiently. It's a tool developed by GitHub and OpenAI that employs a strong AI and Codex.</p>
<p><a target="_blank" href="https://www.freecodecamp.org/news/how-to-use-github-copilot-with-visual-studio-code/">GitHub Copilot works with a variety of code editors, including Visual Studio Code</a>, NeoVim, and JetBrains.</p>
<p>GitHub Copilot uses machine learning. It doesn't autocomplete – it suggests entire code snippets as you work in your text editor. It can also help you debug and refactor old code. The goal is to improve coding efficiency, decrease time spent on repetitive tasks, and increase productivity.</p>
<p>But GitHub Copilot has a downside: after the trial period, it costs $10 per month, which some users may consider too high.</p>
<p>So now let's look at some alternatives which are free to use.</p>
<h2 id="heading-synk-deepcode">Synk (DeepCode)</h2>
<p>Synk, formerly known as DeepCode, is a tool that helps you keep your code safe. It works directly with your project file or repository, making it simple for teams to <a target="_blank" href="https://snyk.io/platform/deepcode-ai/">find and fix any security issues in their code</a>, dependencies, containers, and infrastructure.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/image-44.png" alt="Synk (DeepCode) Homepage" width="600" height="400" loading="lazy">
<em>Synk(DeepCode) Homepage</em></p>
<h3 id="heading-use-cases">Use Cases</h3>
<ul>
<li>Ideal for early-stage security reviews.</li>
<li>Effective bug detection and resolution.</li>
</ul>
<h3 id="heading-features-of-synk">Features of Synk</h3>
<ul>
<li>Scans your code early in development to help it pass security reviews. This helps avoid costly fixes later in the development cycle.</li>
<li>Scans for vulnerabilities and presents results with security issues.</li>
<li>Finds possible bugs in your code, helping you catch and fix issues early.</li>
<li>Suggests how to make your code run better.</li>
<li>Gets smarter by learning from different code examples. It gives better suggestions over time using algorithms.</li>
</ul>
<h3 id="heading-limitations-of-synk">Limitations of Synk</h3>
<p>While Snyk is a powerful too, it has a couple limitations as well. First, it examines whole codebases, which could demand significant computing power, affecting the performance.</p>
<p>To help mitigate this issue, you can break down large codebases into smaller, manageable modules.</p>
<p>Also, there might be a bit of a learning curve for developers to understand how to get the most out of the tool.</p>
<p>But your team can offer training sessions or documentation to help you and other developers better understand how to use Synk effectively. Also, encourage your team to provide support resources, such as forums or documentation, to address common issues and questions.</p>
<h3 id="heading-price">Price</h3>
<p>Using Synk in Visual Studio Code for individual code security testing is entirely free. This allows for checking your code's security before deploying it to production. </p>
<p>To collaborate within a team or for business purposes, upgrading the plan is necessary. You can find more information about the pricing plan <a target="_blank" href="https://snyk.io/plans/">here</a>.</p>
<h3 id="heading-how-to-set-up-synk-in-visual-studio-code">How to set up Synk in Visual Studio Code</h3>
<p>To set up Snyk, select the "View" option in your text to reveal a dropdown menu.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/image-45.png" alt="view in the editor" width="600" height="400" loading="lazy">
<em>Select the "view" option in the editor</em></p>
<p>Then click on the "Extensions" option in that dropdown, and it will take you to the Visual Studio Code Marketplace.</p>
<p>In the marketplace,  type "Synk Security" and hit enter, then go ahead and install it.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/image-46.png" alt="Marketplace" width="600" height="400" loading="lazy">
<em>Marketplace</em></p>
<h3 id="heading-how-to-authenticate-in-snyk">How to authenticate in Snyk</h3>
<p>After you've installed Snyk, you'll need to authenticate.</p>
<p>Click on the Synk icon in your editor. This will take you to the authentication page.</p>
<p>Click on the button to authenticate and connect. Once you're authenticated, go back to your editor. That's it!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/authenticate-synk.gif" alt="Authenticate and connect to so it works with your visual studio code" width="600" height="400" loading="lazy">
<em>Authenticate and connect to so it works with your visual studio code</em></p>
<p>After completing this step, you can now use Snyk to examine, understand, and analyze your code before sending it in for production.</p>
<h3 id="heading-example-use-case">Example use case</h3>
<p>To scan for possible vulnerabilities in the project file, just click on the sync icon on the left panel. This will analyze the code and highlight any potential issues that need attention.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/synk-example-in-action.gif" alt="example Synk in action" width="600" height="400" loading="lazy">
<em>Example Synk in action</em></p>
<p>If you take a closer look, you'll see some letters indicating how vulnerable codes written is.</p>
<ul>
<li>"H" means it's really high and needs fixing ASAP.</li>
<li>"M" means it's at the maximum vulnerability level.</li>
<li>"L" means it's at a low vulnerability level.</li>
</ul>
<p>If you click on a vulnerability, you'll get suggestions on how to fix it, which are displayed on the right side of the editor.</p>
<h2 id="heading-swimm-ai">Swimm AI</h2>
<p>Swimm is a <a target="_blank" href="https://swimm.io/">coding assistance tool</a> that helps you understand complex and large code bases. </p>
<p>Swimm, acting as an intelligent guide for developers, simplifies the process of understanding complex code by delivering quick insights. It also excels at automatically correcting and augmenting any documentation gaps that may emerge, resulting in a complete and well-documented development environment. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/homepage-of-swimm.gif" alt="Homepage of Swimm AI" width="600" height="400" loading="lazy">
<em>Homepage of Swimm AI</em></p>
<h3 id="heading-use-cases-1">Use Cases</h3>
<ul>
<li>Document Creation.</li>
<li>Workflow Organization.</li>
<li>Automatic Generation of Code Snippet Explanations.</li>
</ul>
<h3 id="heading-features-of-swimm-ai">Features of Swimm AI</h3>
<ul>
<li>Simplifies document creation.</li>
<li>Transforms pull requests into user-friendly documents for easy knowledge sharing.</li>
<li>Enhances workflow organization with rules for document visibility.</li>
<li>Improves communication clarity through guided documentation enhancement, making information more understandable and accessible.</li>
<li>Analyzes your code from multiple perspectives, creating easy-to-understand documents for complex code flows.</li>
<li>Continuously updated knowledge base, that is it auto-syncs automatically to align your documentation and latest code changes.</li>
</ul>
<h3 id="heading-limitations-of-swimm-ai">Limitations of Swimm AI</h3>
<p>As always when using AI tools, you should always double-check before finalizing your decisions based off the AI's output. </p>
<h3 id="heading-price-1">Price</h3>
<p>When Swimm is incorporated into your development environment, it is free to use. But larger businesses might consider <a target="_blank" href="https://swimm.io/pricing">upgrading</a> because enhanced plans give unlimited user access. </p>
<h3 id="heading-how-to-set-up-swimm-ai-in-visual-studio-code"><strong>How to set up</strong> Swimm AI <strong>in Visual Studio Code</strong></h3>
<p>Visit your Integrated Development Environment (IDE)'s marketplace, type "swimm," and hit Enter. </p>
<p>Then, proceed with the installation from the marketplace, or you can go to their <a target="_blank" href="https://swimm.io/integrations">website to integrate</a> it into your IDE.</p>
<p>Click the VSCode icon to initiate it. Then you'll need to login or sign-up – click the button that appears. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/swimm-sign-in.gif" alt="Clicking of the icon to reveal login and signup button" width="600" height="400" loading="lazy">
<em>Clicking of the icon</em></p>
<p>To sign up, simply follow the instructions provided by the website.</p>
<p>Since you are authenticated, you can now log in and use the application.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/Login-swimm.gif" alt="Login direction" width="600" height="400" loading="lazy">
<em>Login direction</em></p>
<p>When the external website opens, synchronize your Integrated Development Environment (IDE). </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/sync-swmm.gif" alt="Authorizing with your IDE" width="600" height="400" loading="lazy">
<em>Authorizing with your IDE</em></p>
<p>Now let's go ahead and see how it works with a practical example.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/Code_Jj8izaMNGF.gif" alt="Example" width="600" height="400" loading="lazy">
<em>Swimm AI example</em></p>
<h2 id="heading-cody-ai">Cody AI</h2>
<p>Cody AI is a <a target="_blank" href="https://sourcegraph.com/cody">smart coding assistant</a> that uses advanced AI to understand and analyze your code. It helps you code more quickly and also improves your understanding of the codebase. It goes beyond basic functions, identifying patterns and suggesting improvements, making your coding experience more efficient and insightful.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/image-49.png" alt="Cody Homepage" width="600" height="400" loading="lazy">
<em>Cody Homepage</em></p>
<h3 id="heading-use-cases-for-cody-ai">Use Cases for Cody AI</h3>
<ul>
<li>Facilitating creativity in tasks and brainstorming. </li>
<li>Resolving common issues with digital tools. </li>
<li>Strengthening teamwork through quick information sharing.</li>
</ul>
<h3 id="heading-features-of-codyai">Features of CodyAI</h3>
<ul>
<li>Provides immediate responses to inquiries.</li>
<li>Allows you to upload various data types to build a customized knowledge base.</li>
<li>Cody's responses all have adequate source citations.</li>
<li>Can help with email authoring, document translation, and marketing material generation.</li>
<li>Assists teams in using digital technologies to diagnose and resolve problems.</li>
<li>Based on previous encounters and contextual history, it makes suggestions and thoughts.</li>
</ul>
<h3 id="heading-limitations-of-cody-ai">Limitations of Cody AI</h3>
<p>As with any tool, there are limitations. First of all, the search capability of the AI isn't as powerful. It analyzes user queries using available information. As a result, the AI may give answers that lack your desired depth or specificity at times.</p>
<p>Also, Cody AI Bots can't do math or handle tables well. This means the AI might not give accurate answers when dealing with numbers or complex data.</p>
<p>Lastly, Cody AI Bots can't understand pictures, diagrams, or anything visual in documents. It only uses text to come up with responses, so it's not great at dealing with visual elements.</p>
<p>To help mitigate these issues, make sure you're as clear and specific as possible when formulating your queries to help Cody better understand your intentions.</p>
<p>You can also break down complex questions into simpler components to improve the chances of accurate responses.</p>
<h3 id="heading-price-2">Price</h3>
<p>Installing Cody in your integrated development environment is free for personal use. However, for professionals or businesses looking to leverage Cody's capabilities, <a target="_blank" href="https://meetcody.ai/pricing/">an upgrade is required</a>.</p>
<h3 id="heading-how-to-set-up-cody-in-visual-studio-code">How to set up Cody in Visual Studio Code</h3>
<p>First, select the "View" option in your text editor to reveal a dropdown menu as shown above.</p>
<p>Click "Extensions", and it will take you to the Visual Studio Code Marketplace.</p>
<p>In the marketplace, type "Cody" and hit enter, then go ahead and install it.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/image-50.png" alt="Installing Cody AI" width="600" height="400" loading="lazy">
<em>Cody Plugin</em></p>
<p>Now that the installation is complete, you can begin utilizing Cody in your editor. </p>
<p>Cody provides different command prompts to assist you with your code:</p>
<ul>
<li>It can help you generate documentation for your code</li>
<li>If you're contributing to an open-source project and find the codebase confusing, Cody AI can provide explanations.</li>
<li>It can tell you which programming language a piece of code is written in.</li>
<li>You can ask Cody questions without leaving your coding environment.</li>
<li>Cody can make edits to your code based on given instructions.</li>
</ul>
<p>Now, I'll illustrate how Cody can help explain parts of your code with an example:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/explain-cody-example.gif" alt="One command prompt of Cody AI" width="600" height="400" loading="lazy">
<em>One command prompt of Cody AI</em></p>
<h2 id="heading-tabnine">Tabnine</h2>
<p>Tabnine is a powerful AI assistant designed for developers, providing AI-driven <a target="_blank" href="https://www.tabnine.com/">code completions and suggestions</a> to boost productivity. </p>
<p>It is compatible with a wide range of programming languages and major Integrated Development Environments (IDEs), enabling developers to leverage its smart code recommendations effectively.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/image-52.png" alt="TabNine Homepage" width="600" height="400" loading="lazy">
<em>Tabnine Homepage</em></p>
<h3 id="heading-use-cases-2">Use cases</h3>
<ul>
<li>Speeding up Software Development: Facilitates faster and more efficient code writing.</li>
<li>Ensuring Code Consistency: Maintains a consistent coding style among different team members.</li>
</ul>
<h3 id="heading-features-of-tabnine">Features of Tabnine</h3>
<ul>
<li>Learns from the code you type and adjusts its suggestions to match your coding style.</li>
<li>Cares about your privacy. It only learns from open-source and permissive code, so you always own your code.</li>
<li>Awesome for developers because it works with many programming languages. It's like a handy tool for different tech stuff!</li>
<li>Makes coding easier by giving smart suggestions, helping developers save time.</li>
<li>It works well with popular code editors like Visual Studio code. Developers can  use it in their coding environments.</li>
</ul>
<h3 id="heading-limitations-of-tabnine">Limitations of Tabnine</h3>
<p>Tabnine learns from how you code over time, so it might take a little time to match your coding style. It helps if you actively use the tool and provide consistent input to help it learn your coding style faster.</p>
<p>Tabnine also suggests code, but it doesn't create entire sections. While this may seem like a limitation, it's actually best for code quality. </p>
<p>Finally, it might suggest code that is not quite right. Developers should double-check the suggestions for accuracy. To help Tabnine suggest better code, you can regularly review and accept/reject suggestions to fine-tune its understanding of your preferences.</p>
<p>You should also always double-check the suggested code for correctness and adherence to coding standards before finalizing it.</p>
<h3 id="heading-price-3">Price</h3>
<p>Installation comes at no monthly cost, making it free. However, for larger organizations, it's recommended to consider upgrading. Upgraded plans for larger organizations provide unlimited user access while prioritizing security and privacy.</p>
<h3 id="heading-how-to-set-up-tabnine-in-visual-studio-code">How to set up Tabnine in Visual Studio Code</h3>
<p>To begin, select the "View" option in your text editor to reveal a dropdown menu as shown above.</p>
<p>Click "Extensions" and it will take you to the Visual Studio Code Marketplace.</p>
<p>In the marketplace, type "Tabnine" and hit enter, then go ahead and install it.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/use-tabnine-cover.png" alt="Extension (marketplace in IDE)" width="600" height="400" loading="lazy">
<em>Extension (marketplace in IDE)</em></p>
<p>Now that we've got it installed, you can start using Tabnine in your editor. Here's an example:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/use-tabnine-example.gif" alt="Example in the editor" width="600" height="400" loading="lazy">
<em>Example in the editor</em></p>
<p>And here's the code:</p>
<pre><code class="lang-js"><span class="hljs-keyword">const</span> add = <span class="hljs-function">(<span class="hljs-params">a, b</span>) =&gt;</span> {

 <span class="hljs-keyword">return</span> a + b;

}

<span class="hljs-built_in">console</span>.log(add(<span class="hljs-number">5</span>,<span class="hljs-number">9</span>))<span class="hljs-comment">// output 14</span>
</code></pre>
<h2 id="heading-code-whisperer">Code Whisperer</h2>
<p>CodeWhisperer is a smart helper for coding. It uses AI to suggest bits of code or whole functions as you work in your coding environment. Made by <a target="_blank" href="https://aws.amazon.com/codewhisperer/">AWS</a>, it makes coding easier with features like autocomplete and code restructuring.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/image-56.png" alt="Code Whisperer Homepage" width="600" height="400" loading="lazy">
<em>Code Whisperer Homepage</em></p>
<h3 id="heading-features-of-code-whisperer">Features of Code Whisperer</h3>
<ul>
<li>Code Whisperer suggests code in real-time as you write.</li>
<li>Integrates with your Integrated Development Environment (IDE).</li>
<li>Helps enhance code readability and efficiency by assisting in improving and restructuring.</li>
<li>Supports a diverse range of programming languages.</li>
<li>Offers valuable help in generating and understanding code documentation.</li>
</ul>
<h3 id="heading-limitations-of-code-whisperer">Limitations of Code Whisperer</h3>
<p>CodeWhisperer might find it hard to handle new coding tasks that need creativity.</p>
<p>Also, errors in its training data/models may lead to inaccurate code suggestions.</p>
<p>With these in mind, you should primarily use CodeWhisperer as a tool for generating routine or repetitive code, leaving more complex and creative tasks to human expertise.</p>
<p>Also make sure to review and verify any suggestions from CodeWhisperer often and don't just take the information at face value.</p>
<h3 id="heading-how-to-set-up-code-whisperer-in-visual-studio-code">How to set up Code Whisperer in Visual Studio Code</h3>
<p>First, select the "View" option in your text editor to reveal a dropdown.</p>
<p>Click on "Extensions" and it will take you to the Visual Studio Code Marketplace.</p>
<p>In the marketplace, type "AWS Toolkit" and hit enter, then go ahead and install it.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/image-58.png" alt="Image" width="600" height="400" loading="lazy">
<em>Extension(marketplace in IDE)</em></p>
<p>Now that the extension is installed, let's put it to use in our Integrated Development Environment (IDE).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/example-code-whisper.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Here's the code:</p>
<pre><code class="lang-js"><span class="hljs-comment">// create a greet function</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">greet</span>(<span class="hljs-params">name</span>) </span>{
    <span class="hljs-keyword">return</span> <span class="hljs-string">"Hello "</span> + name;
}
<span class="hljs-comment">// export the greet function</span>
<span class="hljs-built_in">module</span>.exports = greet;
</code></pre>
<h2 id="heading-codegeex-ai">CodeGeex AI</h2>
<p>CodeGeeX is a <a target="_blank" href="https://codegeex.cn/en-US">helpful tool for coding</a> that creates comments, suggests code, and provides AI-powered chat help. It can also translate your code into different languages and works well with many programming languages and tools. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/chrome_4C9oZTEpBe.png" alt="Image" width="600" height="400" loading="lazy">
<em>CodeGeex Homepage</em></p>
<h3 id="heading-use-cases-3">Use Cases</h3>
<ul>
<li>Make coding faster.</li>
<li>Guides new developers through big code with auto comments and explanations.</li>
</ul>
<h3 id="heading-features-of-codegeex-ai">Features of CodeGeex AI</h3>
<ul>
<li>Great at finishing code. It helps by autocompleting and generating lines based on existing code or comments.</li>
<li>Creates comments for both methods and lines in the code, saving time and making it easy to understand unfamiliar code.</li>
<li>Helps change code from one programming language to another – like turning Python into Java.</li>
<li>Developers can ask CodeGeeX coding questions and get quick answers without searching the web.</li>
<li>CodeGeeX does more than suggesting code. It can interpret selected code, fix bugs, summarize code, and more.</li>
</ul>
<h3 id="heading-limitations-of-codegeex-ai">Limitations of CodeGeeX AI</h3>
<p>When you're using CodeGeeX, keep in mind that it's a research prototype, so it might not always create perfect code for every situation.</p>
<p>It also might misunderstand some language descriptions or code snippets, leading to possible mistakes.</p>
<p>As always, make sure you carefully verify the generated code for accuracy and adherence to coding standards.</p>
<p>Also, when providing language descriptions or code snippets, be as clear and detailed as possible.</p>
<h3 id="heading-price-4">Price</h3>
<p>CodeGeex is free to install on Visual Studio Code, and for an upgrade, it starts at $9/month.</p>
<h3 id="heading-how-to-set-up-codegeex-ai-in-visual-studio-code">How to set up CodeGeeX AI in Visual Studio Code</h3>
<p>Select the "View" option in your text editor to unveil a dropdown menu.</p>
<p>Click on "Extensions" in your text editor, and it will take you to the Visual Studio Code Marketplace.</p>
<p>In the marketplace,  type "CodeGeex" and hit enter, then proceed to install it.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/image-61.png" alt="Install CodeGeex" width="600" height="400" loading="lazy">
<em>Install CodeGeex</em></p>
<p>After installation, click on the icon, and it will take you back to a page where you can log in or sign up.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/image-62.png" alt="Login page in CodeGeex" width="600" height="400" loading="lazy">
<em>Login page in CodeGeex</em></p>
<p>Once you've completed this step, you'll be able to interact with the AI in your IDE.</p>
<p>To trigger it, navigate to your IDE, highlight the desired code, and right-click. A dropdown menu will appear, allowing you to choose the specific command you want the AI to execute for you.</p>
<p>Here's an example:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/use-codegeex.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Example of using CodeGeex</em></p>
<p>The GIF example showed one thing CodeGeex AI can do. </p>
<p>To learn more about its abilities, visit the docs: <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=aminer.codegeex">CodeGeeX: AI Code AutoComplete, Chat, Auto Commen</a>t.</p>
<p>Code:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> colors = [<span class="hljs-string">'pink'</span>, <span class="hljs-string">'blue'</span>, <span class="hljs-string">'purple'</span>, <span class="hljs-string">'green'</span>];

colors.forEach(<span class="hljs-function"><span class="hljs-params">color</span> =&gt;</span> {
    <span class="hljs-built_in">console</span>.log(color);
});
</code></pre>
<h2 id="heading-codeium">Codeium</h2>
<p>Codeium is a <a target="_blank" href="https://codeium.com/">free and powerful tool</a> that makes coding faster using advanced AI. It's like a superhero for coding, with a tool that helps you complete code in over 70 languages. It's super speedy and gives top-notch suggestions, making coding much more efficient. You can use Codeium as a <a target="_blank" href="https://chromewebstore.google.com/detail/codeium-ai-code-autocompl/hobjkcpmjhlegmobgonaagepfckjkceh">Google Chrome extension</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/image-64.png" alt="Codeium Homepage" width="600" height="400" loading="lazy">
<em>Codeium Homepage</em></p>
<p>Just keep in mind that, because of its power, using Codeium makes it easy to over-rely on AI-generated suggestions. This could lead to errors in your code if you're not vigilant and don't keep up your skills. So make sure you still check/run your code, learn new topics as you need to, and keep your own code-writing abilities sharp. </p>
<p>You can <a target="_blank" href="https://ai-review.com/code-assistant/codeium/">read more about Codeium here</a>.</p>
<h3 id="heading-price-5">Price</h3>
<p>The AI is initially free to install in your Integrated Development Environment (IDE) but may require an upgrade which starts at <a target="_blank" href="https://codeium.com/pricing">$12/month with team usage</a>.</p>
<h3 id="heading-how-to-set-up-codeium-in-visual-studio-code">How to set up Codeium in Visual Studio Code</h3>
<p>To start, visit Codeium's <a target="_blank" href="https://codeium.com/">website</a> and select the sign-in option.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/image-66.png" alt="Sign-in user" width="600" height="400" loading="lazy">
<em>Sign-in user</em></p>
<p>Clicking on this will redirect you to the login page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/image-67.png" alt="Login page" width="600" height="400" loading="lazy">
<em>Login page</em></p>
<p>Sign in using either your email or Google account.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/image-68.png" alt="Image" width="600" height="400" loading="lazy">
<em>Authenticate</em></p>
<p>Once you've completed the login, you'll encounter various integrated development environments (IDEs). Choose the one that aligns with your preferences – for instance, I use Visual Studio Code.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/choose-ide-codeium.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Choosing your IDE</em></p>
<p>Go ahead and install it in your Visual Studio Code IDE.</p>
<p>After installation, click on the account sign-in option in Visual Studio Code to authenticate with the website.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/use-codeium-authentication-1.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Authenticate</em></p>
<p>Once completed, you can now use Codeium within your IDE.</p>
<p>Now, let's see a practical example:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/result-from-codium.gif" alt="Example" width="600" height="400" loading="lazy">
<em>Codeium example</em></p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>The article discusses various AI tools that you can use to speed up development. Some developers think only about GitHub Copilot. But there are other AI tools with different features that can help you too.</p>
<p>If you've found value in this tutorial, consider sharing it with fellow developers who might also benefit. </p>
<p>To stay updated with my latest projects by following me on <a target="_blank" href="https://https//twitter.com/ijaydimples">Twitter</a> and <a target="_blank" href="https://www.linkedin.com/in/ijeoma-igboagu/">LinkedIn</a> or check out my <a target="_blank" href="https://www.biodrop.io/ijayhub">BioDrop</a>. </p>
<p>If you'd like to show your support, you can also <a target="_blank" href="https://www.buymeacoffee.com/ijewriter">Buy me a coffee</a>☕</p>
<p>Thank you for taking the time to read💖  </p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Use SonarLint to Write Cleaner Code ]]>
                </title>
                <description>
                    <![CDATA[ When you're building a coding project, the better it is, the more fun it'll be to use. And the prouder you'll be of your hard work, right? Also, writing quality and performant code helps your program or website work as expected – which should be ever... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/use-sonarlint-to-write-cleaner-code/</link>
                <guid isPermaLink="false">66d4609233b83c4378a51822</guid>
                
                    <category>
                        <![CDATA[ clean code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ workflow ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Okosa Leonard ]]>
                </dc:creator>
                <pubDate>Thu, 18 Jan 2024 23:58:39 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2024/01/slint.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>When you're building a coding project, the better it is, the more fun it'll be to use. And the prouder you'll be of your hard work, right?</p>
<p>Also, writing quality and performant code helps your program or website work as expected – which should be every developer's goal.</p>
<p><a target="_blank" href="https://docs.sonarsource.com/sonarcloud/improving/sonarlint/">SonarLint</a> is a tool that helps you make sure your code is top-notch. It's like having a friendly guide who checks your code to see if it's well-written and doesn't have mistakes.</p>
<h2 id="heading-what-is-sonarlint">What is SonarLint?</h2>
<p>SonarLint is an open-source code analysis tool that helps you find and resolve security and code quality problems in your source code as you're writing it. This plugin works with several integrated development environments (IDEs), including well-known ones like IntelliJ IDEA, Eclipse, and Visual Studio.</p>
<p>SonarLint's main purpose is to give you immediate feedback on possible problems with your code, including security flaws, bugs, and other recommended practices for programming. SonarLint analyzes code in the background while you create or change it in your IDE, giving you instant feedback and frequently exposing problems right in the code editor.</p>
<p>SonarLint is a component of the larger SonarQube ecosystem.</p>
<p>In this article, I'll teach you how to use SonarLint to help you write quality code.</p>
<h2 id="heading-why-is-sonarlint-useful">Why is SonarLint Useful?</h2>
<p>Let's imagine that building a website is like constructing a house. You want your house to be safe and well-designed, right? Well, SonarLint is like having a thorough inspector who checks your work as you build, making sure everything is just right.</p>
<p>Here's why SonarLint is important in web development:</p>
<ol>
<li><p><strong>Catch Mistakes Early (Code Quality):</strong> Assuming you were building a staircase, and accidentally put a step in the wrong place, SonarLint is like a smart friend who tells you immediately, "Hey, you might have made a mistake here!" It helps catch small errors in your code before they become big problems.</p>
</li>
<li><p><strong>Follow the Blueprint (Coding Standards):</strong> When building a house, you follow a blueprint to make sure everything fits together. In coding, there are also rules (like a blueprint) on how to write good code. SonarLint helps you stick to these rules, making your code easy to read and work with.</p>
</li>
<li><p><strong>Keep It Secure (Security):</strong> Just like you'd want your house to have good locks on the doors, you'd want your website to be secure. SonarLint checks your code for potential security issues, ensuring there are no "unlocked doors" that could let bad things happen.</p>
</li>
<li><p><strong>Work Together Well (Collaboration):</strong> Imagine that each builder in your team used a different kind of tool. It would be chaos! SonarLint helps your team work together smoothly by making sure everyone follows the same coding standards. This way, everyone can understand and contribute to the project easily.</p>
</li>
<li><p><strong>Save Time and Effort (Efficiency):</strong> Fixing mistakes after the whole house is built would take a lot of time and effort. SonarLint helps you fix issues as you go, saving you from returning and redoing things. It's like having a helpful friend who stops you from making mistakes in the first place.</p>
</li>
<li><p><strong>Learn and Improve (Education):</strong> SonarLint does not only point out mistakes but also explains why they might be a problem. It's like having a coding teacher who helps you understand how to write better code. This way, you learn and become a better developer over time.</p>
</li>
</ol>
<p>So, in the world of web development, SonarLint is your coding buddy, and it makes sure your JavaScript "house" is strong, secure, and well-organized from the ground up. It's a valuable tool in your workflow and helps you create high-quality websites that everyone can enjoy.</p>
<p>But you still may be wondering why you need this tool. You have a debugger already installed in your IDE and it can already track the errors in your environment.</p>
<p>Well, integrating SonarLint complements your debugger by focusing on code quality and security during development.</p>
<p>While a debugger helps to find and fix runtime issues, SonarLint analyzes code in real time, identifies bugs and potential vulnerabilities, and enforces coding standards.</p>
<p>You can also customize and configure coding rules based on your project's specific requirements and coding standards.</p>
<p>This proactive approach enhances overall code quality and ensures cleaner, more maintainable code before it reaches the debugging stage. This leads to fewer errors and smoother development workflows.</p>
<p>Before we get into the details of how to set up and use SonarLint, let's look at what makes code high-quality.</p>
<h2 id="heading-code-quality-metrics">Code Quality Metrics</h2>
<p>Be the best cookbook author! When writing code there are specific guidelines you must follow.</p>
<p>Just like when you're cooking up a new recipe or want to follow a traditional one, you should make sure anyone who reads it can follow along, and that the recipe you wrote down results in a good dish.</p>
<p>In the same sense, when writing code, it's always important to make your code readable so that other developers can understand it easily and so your code works as it's supposed to. Code quality metrics are like measuring how well you followed the recipe.</p>
<p>Here's a breakdown:</p>
<p><strong>Readability (Clarity):</strong> This is similar to making sure your recipe instructions are clear. The code should be easy for others (or future you) to understand.</p>
<p><strong>Maintainability (Ease of Changes):</strong> If you had to change ingredients in your recipe (code), it should be easy to switch things without chaos.</p>
<p><strong>Performance (Speed):</strong> As you'd want your meal ready quickly, efficient code is expected to run fast. Code quality metrics check how fast your code is executed.</p>
<p><strong>Reliability (Consistency):</strong> A good recipe always tastes the same. Similarly, reliable code consistently produces the correct results.</p>
<p><strong>Security (Safety):</strong> Just like checking if ingredients are safe to eat, code quality metrics look for potential dangers in your code that could be exploited.</p>
<p>These should be your goals when writing quality code. And SonarLint can help you accomplish them.</p>
<h2 id="heading-how-to-set-up-sonarlint-and-integrate-with-your-ide">How to Set Up SonarLint and Integrate with Your IDE</h2>
<p>An IDE (Integrated Development Environment) is a software application that helps developers write and debug code more effectively. IDEs include a code editor and compiler or interpreter.</p>
<p>In this article, you'll see how to install SonarLint using VS Code extensions.</p>
<h3 id="heading-how-to-install-sonarlint-with-vs-code">How to Install SonarLint with VS Code</h3>
<p>First, install VS Code or open the application if you've already installed it.</p>
<p>Next, head over to the Extensions tab on VS Code and download the SonarLint extension.</p>
<p>To use the SonarLint extension for JavaScript, TypeScript, or CSS, you should have a minimum version of <code>14.17.0</code> of Node.js installed on your system (especially if you want to use <a target="_blank" href="https://docs.sonarsource.com/sonarlint/vs-code/team-features/connected-mode/">Connected Mode</a> with Sonar Cloud).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/sonar.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Install SonarLint in VS Code</em></p>
<p>Now that you've installed SonarLint, running an analysis on your code should be easy and it should start immediately after you open a new file.</p>
<p>This means SonarLint will start working and catching errors in your code as you write them on your IDE. Now let's look at an example in the next section.</p>
<h3 id="heading-how-to-use-sonarlint-in-your-ide">How to Use SonarLint in Your IDE</h3>
<p>Now let's look at how you can get the best out of SonarLint on your IDE. SonarLint is also a wonderful teacher, helping you better understand how to write clean code and giving you more information about why you have an error.</p>
<p>So instead of scouring the web to figure out what's wrong with your code, SonarLint explains why it has given you an error.</p>
<p>Here's an example of how to use it.</p>
<p>To be able to see the interface where we'll be working, open your terminal on VS Code – you can use Ctrl + backtick (`) to do this. I'm currently working on a project in React.js, and I didn't notice that I have duplicate border property names in my CSS class. Luckily, SonarLint caught this issue.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/sonarlint.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>A CSS error caught by SonarLint</em></p>
<p>If you click on the light bulb, you'll see an option to fix the code by deactivating the CSS rule or to be blunt removing the extra border which I have in my CSS class in this instance. There's also another option for opening a description rule so you can understand why you're getting that error.</p>
<p>So SonarLint gives you two options:</p>
<ol>
<li><p>It offers an option that gives you the ability and resources to understand why you have that error with the "Open description of rule".</p>
</li>
<li><p>It offers a solution to the error of the code which it has found.</p>
</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/sonarlint-another.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Options offered by SonarLint to help fix and understand this problem</em></p>
<p>If you click on the open description rule, SonarLint opens another tab in VS Code to help you understand why it has thrown that error and how you can write cleaner/better code.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/sonarlint-teacher.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Tab opened by SonarLint in VSCode to help understand the error</em></p>
<p>As you can see, SonarLint is an excellent teacher and your best buddy as you continue to build and work on your IDE.</p>
<p>Another great thing about SonarLint is that it works with multiple programming languages. So whatever programming language you're using, chances are that SonarLint can handle it.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>SonarLint is like having a coding buddy that helps you become a better programmer. As you write code, it's like having a teacher right there with you, pointing out ways to improve.</p>
<p>Imagine having a super-smart friend who does not just spot mistakes but also explains why they're wrong and shows you how to fix them.</p>
<p>Before your code gets to the testing stage, SonarLint checks for mistakes and makes sure your program runs smoothly. It's like having a superpower to catch issues early, saving you time and effort.</p>
<p>But that's not all! SonarLint is also like a security guard for your code. It watches out for any potential weak points that could let bad things happen. By learning from SonarLint, you can write better code and become more aware of keeping your code safe and secure.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Use Markdown in VSCode – Syntax and Examples ]]>
                </title>
                <description>
                    <![CDATA[ Markdown is a lightweight markup language for creating formatted text using a plain-text editor. It is widely used for creating README files, documentation, and other forms of text. Visual Studio Code (VSCode) is a popular source code editor that pro... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-use-markdown-in-vscode/</link>
                <guid isPermaLink="false">66b903972fd266308aa6ff62</guid>
                
                    <category>
                        <![CDATA[ markdown ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Victoria (Burah) Poromon ]]>
                </dc:creator>
                <pubDate>Fri, 12 Jan 2024 17:46:22 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2024/01/Markdown-in-vscode-cover-photo.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Markdown is a lightweight markup language for creating formatted text using a plain-text editor. It is widely used for creating README files, documentation, and other forms of text.</p>
<p>Visual Studio Code (VSCode) is a popular source code editor that provides excellent support for Markdown, making it easy for developers, writers, and anyone creating textual content to use Markdown effectively.</p>
<p>To follow through this tutorial, you must have VSCode installed on your computer and know how to navigate it.</p>
<h2 id="heading-importance-of-using-markdown-in-visual-studio-code-vscode">Importance of Using Markdown in Visual Studio Code (VSCode)</h2>
<p>The combination of Markdown and VSCode provides a user-friendly and efficient environment for writing, editing, and formatting text, which makes it a suitable choice for developers, writers, and content creators.</p>
<p>The following are some of the key reasons to use markdown in VSCode:</p>
<ul>
<li>Markdown in VSCode supports code snippets and syntax highlighting for various programming languages, making it suitable for documenting code and technical content.</li>
<li>VSCode provides a built-in preview feature that you can access by clicking the preview icon at the screen's top right corner. This allows you to see your raw markdown file alongside what it will look like when you publish it on the internet. This feature also helps you spot and fix simple mistakes as you go.</li>
<li>Many project repositories on platforms like GitHub use Markdown for documentation. Getting familiar with Markdown in VSCode ensures a smooth transition when contributing to open-source projects or collaborating with teams using similar documentation standards.</li>
<li>You do not need to be connected to the internet to use markdown in VSCode. You can work offline and still have access to all its features.</li>
<li>For developers, you can easily push your document to GitHub using VSCode's built-in terminal. This also allows for multiple persons to review and work on the same document.</li>
</ul>
<h2 id="heading-how-to-create-a-markdown-file-in-vscode">How to Create a Markdown File in VSCode</h2>
<p>Follow the steps below to create your markdown file in VSCode:</p>
<ol>
<li>Create a folder on your computer to store your documents.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/Screenshot--17--1.png" alt="Image" width="600" height="400" loading="lazy">
<em>An image showing you how to create a folder on the desktop page of your computer. (For windows)</em></p>
<ol start="2">
<li><p>Launch your VSCode app.</p>
</li>
<li><p>After launching your app, click on 'File', and then on 'Open Folder' to open the folder you just created.</p>
</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/Screenshot--18-.png" alt="Image" width="600" height="400" loading="lazy">
<em>An image showing you how to open your folder from the VSCode app.</em></p>
<ol start="4">
<li>Inside your folder, click on the file symbol and create a file that ends with '.md'(For example, First-file.md).</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/Screenshot--21--2.png" alt="Image" width="600" height="400" loading="lazy">
<em>An image showing you how to create a file inside your folder in VSCode.</em></p>
<ol start="5">
<li>Press enter after typing your file name and your document page will open up. You are now all set and can start writing.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2024/01/Screenshot--22-.png" alt="Image" width="600" height="400" loading="lazy">
<em>An image showing your file tab and your document page.</em></p>
<h2 id="heading-markdown-syntax">Markdown Syntax</h2>
<p>Markdown syntax is a collection of symbols/annotations you add to your text to tell each word or phrase what it should be doing.</p>
<p>Let's go through some of the most useful markdown syntax and features.</p>
<h3 id="heading-headers">Headers</h3>
<p>To create headers, add the pound/hash symbol (<code>#</code>) in front of your text. The number of pound symbols determines the header level.</p>
<p>For example:</p>
<pre><code class="lang-markdown"> # Header 1
 ## Header 2
 ### Header 3
 #### Header 4
 ##### Header 5
 ###### Header 6
</code></pre>
<p>Result:</p>
<h1 id="heading-header-1">Header 1</h1>
<h2 id="heading-header-2">Header 2</h2>
<h3 id="heading-header-3">Header 3</h3>
<h4 id="heading-header-4">Header 4</h4>
<h5 id="heading-header-5">Header 5</h5>
<h6 id="heading-header-6">Header 6</h6>
<h3 id="heading-lists">Lists</h3>
<p>There are two types of lists in Markdown, the ordered list and the unordered list. To create an ordered list, just use numbers followed by a period (like <code>1.</code>). To create an unordered list, add an asterisk, a plus sign, or a hyphen in front of your text (<code>*</code>, <code>+</code> or, <code>-</code>) and it will start an unordered list.</p>
<p>For example</p>
<pre><code class="lang-markdown">Ordered List
<span class="hljs-bullet"> 1.</span> First List
<span class="hljs-bullet"> 2.</span> Second List
<span class="hljs-bullet">    1.</span> Sublist 2.1
<span class="hljs-bullet">    2.</span> Sublist 2.2

 Unordered List
<span class="hljs-bullet"> *</span> List 1
<span class="hljs-bullet"> *</span> List 2
<span class="hljs-bullet">    +</span> Sublist 1.2
<span class="hljs-bullet">    +</span> Sublist 2.2
<span class="hljs-bullet"> -</span> Item a
<span class="hljs-bullet"> -</span> item b
</code></pre>
<p>Result</p>
<p>Ordered List</p>
<ol>
<li>First List</li>
<li><p>Second List</p>
<ol>
<li>Sublist 2.1</li>
<li>Sublist 2.2</li>
</ol>
<p>Unordered List</p>
</li>
<li>List 1</li>
<li>List 2<ul>
<li>Sublist 1.2</li>
<li>Sublist 2.2</li>
</ul>
</li>
<li>Item a</li>
<li>item b</li>
</ol>
<h3 id="heading-code">Code</h3>
<p>You can represent code in two ways in markdown: as inline code (like <code>this</code>), and as a codeblock (which you'll see below). </p>
<p>To create inline code, place your text within two backticks (``), for example:</p>
<pre><code class="lang-markdown"><span class="hljs-code">`inline code`</span>
</code></pre>
<p>Result:</p>
<p><code>inline code</code></p>
<p>To create a code block, enclose your code in triple backticks (```) at the beginning and end of the code block. You can also specify the programming language by adding the name of the language right after the first 3 backticks.</p>
<p>Here's an example:</p>
<pre><code class="lang-markdown">
</code></pre>
<p>def codeblock_example():
    print("Hello world!")</p>
<pre><code>
</code></pre><p>Result</p>
<pre><code>def codeblock_example():
    print(<span class="hljs-string">"Hello world!"</span>)
</code></pre><p>Here's an example code block in Python:</p>
<pre><code class="lang-python">```python
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">codeblock_example</span>():</span>
    print(<span class="hljs-string">"Hello world!"</span>)
</code></pre>
<pre><code>
Result

<span class="hljs-string">``</span><span class="hljs-string">`python
def codeblock_example():
    print("Hello world!")</span>
</code></pre><h3 id="heading-tables">Tables</h3>
<p>You can create a table using pipes and hyphens (<code>|</code> and <code>-</code>). The pipes divide your table into columns, while the hyphens create a horizontal line.</p>
<p>Here's an example of creating a basic table in Markdown:</p>
<pre><code class="lang-markdown">| Header 1 | Header 2 | Header 3 | Header 4 |
| -------- | -------- | -------- | -------- |
| Row 1, Col 1 | Row 1, Col 2 |Row 1, Col 3 | Row 1, Col 4 |
| Row 2, Col 1 | Row 2, Col 2 |Row 2, Col 3 | Row 2, Col 4 |
</code></pre>
<p>Result:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Header 1</td><td>Header 2</td><td>Header 3</td><td>Header 4</td></tr>
</thead>
<tbody>
<tr>
<td>Row 1, Col 1</td><td>Row 1, Col 2</td><td>Row 1, Col 3</td><td>Row 1, Col 4</td></tr>
<tr>
<td>Row 2, Col 1</td><td>Row 2, Col 2</td><td>Row 2, Col 3</td><td>Row 2, Col 4</td></tr>
</tbody>
</table>
</div><h3 id="heading-blockquotes">Blockquotes</h3>
<p>The greater than sign (<code>&gt;</code>) allows you to create a blockquote. You can add this sign in front of your statement or quote and it will indent and italicize the quote to set it apart from the rest of the text.</p>
<p>For example:</p>
<pre><code class="lang-markdown"><span class="hljs-quote">&gt; "The technology you use impresses no one. The experience you create with it is everything."</span>
<span class="hljs-quote">&gt; Sean Gerety - UX leader</span>
</code></pre>
<p>Result:</p>
<blockquote>
<p>"The technology you use impresses no one. The experience you create with it is everything." 
Sean Gerety - UX leader</p>
</blockquote>
<h3 id="heading-links">Links</h3>
<p>You can create or add links to your document using square brackets and parentheses (<code>[]</code> and <code>()</code>). Square brackets store the link text, while parentheses store the link URL.</p>
<p>For example:</p>
<pre><code class="lang-markdown">[<span class="hljs-string">freeCodeCamp</span>](<span class="hljs-link">https://www.freecodecamp.org/news/</span>)
</code></pre>
<p>Result:</p>
<p><a target="_blank" href="https://www.freecodecamp.org/news/">freeCodeCamp</a></p>
<p>The result is a clickable link that takes you to the freeCodeCamp site.</p>
<h3 id="heading-images">Images</h3>
<p>Adding images to your document is similar to adding links. The only difference is, you lead with an exclamation mark in front of the brackets and parentheses.</p>
<p>For example:</p>
<pre><code class="lang-markdown">![<span class="hljs-string">A cute cat image</span>](<span class="hljs-link">https://hips.hearstapps.com/hmg-prod/images/cute-cat-photos-1593441022.jpg?crop=1.00xw:0.753xh;0,0.153xh&amp;resize=1200:*</span>)
</code></pre>
<p><img src="https://hips.hearstapps.com/hmg-prod/images/cute-cat-photos-1593441022.jpg?crop=1.00xw:0.753xh;0,0.153xh&amp;resize=1200:*" alt="A cute cat image" width="1200" height="603" loading="lazy"></p>
<p>The result is the image of a cat.</p>
<h3 id="heading-emphasis">Emphasis</h3>
<p>To emphasize text or make it italic, you can wrap it in single (for italics) or double (for bold) asterisks or underscores (<code>*</code> or <code>_</code>).</p>
<p>For example:</p>
<pre><code class="lang-markdown"><span class="hljs-emphasis">*italic*</span> or <span class="hljs-emphasis">_italic_</span>
<span class="hljs-strong">**bold**</span> or <span class="hljs-strong">__bold__</span>
</code></pre>
<p>Result:</p>
<p><em>italic</em> or <em>italic</em>
<strong>bold</strong> or <strong>bold</strong></p>
<p>As you can see above, a single asterisk and underscore give your text an italic form while a double asterisk and underscore make your text bold.</p>
<h3 id="heading-escaping-characters"><strong>Escaping Characters</strong></h3>
<p>To display literal characters in markdown syntax, so they appear in your document without formatting it, you need to escape them using the backslash (<code>\</code>).</p>
<pre><code>\_literal underscore\_
</code></pre><p>Result:</p>
<p>_literal underscore_</p>
<h3 id="heading-html">HTML</h3>
<p>Markdown supports using HTML tags for more advanced formatting when there's a need for it.</p>
<p>Below are some of the ways you can use HTML tags in markdown:</p>
<ul>
<li>Images with HTML Attributes</li>
</ul>
<pre><code class="lang-markdown"><span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"image_url.jpg"</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Alt text"</span> <span class="hljs-attr">width</span>=<span class="hljs-string">"300"</span> <span class="hljs-attr">height</span>=<span class="hljs-string">"200"</span>&gt;</span></span>
</code></pre>
<p>The HTML attribute within the image tag allows you to control properties like the width and height of the image.</p>
<ul>
<li>Styling with HTML and CSS</li>
</ul>
<pre><code class="lang-markdown"><span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">style</span>=<span class="hljs-string">"color:green"</span>&gt;</span></span>This is a green text.<span class="xml"><span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span></span>
</code></pre>
<p>Result:</p>
<p><span>This is a green text.</span></p>
<p>You can include inline CSS styles for more advanced styling in your document.</p>
<ul>
<li>Embedding Videos</li>
</ul>
<pre><code class="lang-markdown"><span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">iframe</span> <span class="hljs-attr">width</span>=<span class="hljs-string">"500"</span> <span class="hljs-attr">height</span>=<span class="hljs-string">"300"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://www.nova.com/embed/example-video"</span> <span class="hljs-attr">frameborder</span>=<span class="hljs-string">"0"</span> <span class="hljs-attr">allowfullscreen</span>&gt;</span></span><span class="xml"><span class="hljs-tag">&lt;/<span class="hljs-name">iframe</span>&gt;</span></span>
</code></pre>
<p>You can embed videos in your document using the iframe HTML tag. The attributes within the tag allow you to control the video properties.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>This tutorial introduced you to using Markdown in VSCode. You learned how to initiate a Markdown file in VSCode, and you saw some common Markdown syntax. I hope you understand its importance for technical writers and content creators. </p>
<p>The synergy between Markdown and VSCode not only enhances productivity but also ensures a smooth transition into the world of standard documentation.</p>
<p>Whether you're writing technical documentation or contributing to collaborative coding efforts, you should now be equipped with a valuable skillset to help you effectively communicate and present your ideas.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Keep Branches Up-to-Date and Resolve Merge Conflicts in GitHub and VS Code ]]>
                </title>
                <description>
                    <![CDATA[ Hey {username}, we've merged a PR before yours. Please resolve the merge conflicts so we can review and merge your PR. Have you ever received that kind of message from a maintainer while waiting for your pull request to be reviewed and merged? And t... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/keep-branches-up-to-date-resolve-merge-conflicts/</link>
                <guid isPermaLink="false">66ba11e57282cc17abcf0c71</guid>
                
                    <category>
                        <![CDATA[ beginner ]]>
                    </category>
                
                    <category>
                        <![CDATA[ GitHub ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Ayu Adiati ]]>
                </dc:creator>
                <pubDate>Wed, 22 Nov 2023 23:23:20 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/11/How-to-Keep-Branches-Up-to-Date-and-Resolve-Merge-Conflicts-in-GitHub-and-VS-Code.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <blockquote>
<p>Hey {username}, we've merged a PR before yours. Please resolve the merge conflicts so we can review and merge your PR.</p>
</blockquote>
<p>Have you ever received that kind of message from a maintainer while waiting for your pull request to be reviewed and merged? And then, you're panicking because you don't know what to do? Or maybe you're thinking of closing your pull request, redoing everything from scratch, and opening a new pull request?</p>
<p>Well, the good news is you're not alone.</p>
<p>In this article, I will show you how to keep your remote and local branches up to date. I'll also walk you through resolving merge conflicts in GitHub and VS Code.</p>
<h2 id="heading-table-of-contents">Table of Contents</h2>
<ul>
    <li><a href="#prerequisites">Prerequisites</a></li>
    <li><a href="#understanding-merge-conflicts">Understanding Merge Conflicts</a></li>
    <li>
        <a href="#how-to-keep-the-branches-up-to-date">How to Keep the Branches Up to Date</a>
        <ul>
            <li><a href="#how-to-update-the-main-branch-in-your-forked-repository">How to Update the <code>main</code> Branch in Your Forked Repository</a></li>
            <li><a href="#how-to-update-your-local-branch">How to Update Your Local Branch</a></li>
        </ul>
    </li>
    <li>
        <a href="#how-to-resolve-merge-conflicts">How to Resolve Merge Conflicts</a>
        <ul>
            <li><a href="#1-resolving-merge-conflicts-on-github">1. Resolving Merge Conflicts on GitHub</a></li>
            <li><a href="#2-resolving-merge-conflicts-in-vs-code">2. Resolving Merge Conflicts in VS Code</a></li>
        </ul>
    </li>
    <li><a href="#final-words">Final Words</a></li>
</ul>

<h2 id="heading-prerequisites"><strong>Prerequisites</strong></h2>
<p>To follow along with this tutorial, you'll need the following:</p>
<ul>
<li>A <a target="_blank" href="https://github.com/">GitHub</a> account.</li>
<li><a target="_blank" href="https://code.visualstudio.com/">VS Code</a> installed on your machine.</li>
</ul>
<h2 id="heading-understanding-merge-conflicts">Understanding Merge Conflicts</h2>
<p>Merge conflicts usually occur when two commits have changes in the same line(s) of the same file(s) from two different branches. Sometimes, it can also happen when someone edits a file, and another person deletes it. </p>
<p>The thing is, Git can't resolve the conflict itself. It needs your help to decide which changes need to be kept.</p>
<p>When there's a merge conflict, you will see a notification in your pull request on GitHub that the branch has conflicts that must be resolved. Maintainers can't merge a pull request when merge conflicts happen. That's because the merge button is deactivated until the conflicts are resolved.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/branch-has-conflicts.png" alt="Image" width="600" height="400" loading="lazy">
<em>Warning on a GitHub's pull request: This branch has conflicts that must be resolved</em></p>
<h2 id="heading-how-to-keep-the-branches-up-to-date">How to Keep the Branches Up to Date</h2>
<p>Keeping your branches up to date is crucial. Habitually updating your remote and local <code>main</code> and working branches is highly recommended.</p>
<p>The best times to update your branches are:</p>
<ul>
<li>before you create a new branch to work on an issue,</li>
<li>after you commit your last changes and before you push them to the remote repo,</li>
<li>while you are waiting for your pull request to be reviewed.</li>
</ul>
<p>When a pull request gets merged while you wait for yours to be reviewed, there will be a warning in your pull request. It tells you that your branch is behind the <code>upstream</code> (original) repository's <code>main</code> branch.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/branch-out-of-date.png" alt="Image" width="600" height="400" loading="lazy">
<em>Warning on a GitHub pull request: This branch is out-of-date with the base branch.</em></p>
<h3 id="heading-how-to-update-the-main-branch-in-your-forked-repository">How to Update the <code>main</code> Branch in Your Forked Repository</h3>
<ol>
<li>Go to your forked repository on GitHub.</li>
<li>Click the "Sync fork" button.</li>
<li>Click the green "Update branch" button.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/update-branch.png" alt="Image" width="600" height="400" loading="lazy">
<em>"Sync fork" and "Update branch" buttons on GitHub.</em></p>
<p>After you update the branch, you will see a notification on the top that your branch is up to date.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/up-to-date-branch-github.png" alt="Image" width="600" height="400" loading="lazy">
<em>A notification on GitHub: This branch is up to date with organization-name/repository-name:main.</em></p>
<h3 id="heading-how-to-update-your-local-branch">How to Update Your Local Branch</h3>
<p>Now, your remote <code>main</code> branch has been updated. Let's update your local branch from your terminal.</p>
<h4 id="heading-step-1-go-to-your-working-branch">Step #1 - Go to Your Working Branch</h4>
<p>In your terminal, navigate to your working branch with this command:</p>
<pre><code class="lang-bash">git checkout branch-name
</code></pre>
<h4 id="heading-step-2-pull-the-changes">Step #2 - Pull the Changes</h4>
<p>Pull the latest changes from the <code>main</code> branch of your <code>origin</code> (forked) repository to your local branch.</p>
<pre><code class="lang-bash">git pull origin main
</code></pre>
<h4 id="heading-step-3-push-the-changes">Step #3 - Push the Changes</h4>
<p>Push these changes to your remote branch. If you need to resolve conflicts, you must fix them before you can push your changes<em>.</em></p>
<pre><code class="lang-bash">git push
</code></pre>
<h2 id="heading-how-to-resolve-merge-conflicts">How to Resolve Merge Conflicts</h2>
<p>You can only start to resolve the merge conflicts after your working branch is up to date. There are two ways to resolve the conflicts:</p>
<ol>
<li>On GitHub</li>
<li>In your VS Code</li>
</ol>
<h3 id="heading-1-resolving-merge-conflicts-on-github">1. Resolving Merge Conflicts on GitHub</h3>
<p>Resolving the conflicts directly on GitHub is only possible when the cause of the conflicts is that there are changes in the same line(s) of the same file(s) from two different branches. For any other type of conflicts, you must resolve them locally in your code editor.</p>
<p>Follow these steps to resolve conflicts directly on GitHub:</p>
<h4 id="heading-step-1-click-the-resolve-conflicts-button">Step #1 - Click the "Resolve conflicts" Button</h4>
<p>First, go to the <code>upstream</code> repository on GitHub. Then, click the "Pull request" tab. Find and open your pull request, and scroll down.</p>
<p>Towards the end, you will find the "Resolve conflicts" button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/resolved-conflicts-button.png" alt="Image" width="600" height="400" loading="lazy">
<em>A notification of "This branch has conflicts that must be resolved" and a "Resolve conflicts" button on GitHub.</em></p>
<h4 id="heading-step-2-take-a-closer-look-at-the-conflicts">Step #2 - Take a Closer Look at the Conflicts</h4>
<p>After clicking the "Resolve conflicts" button, you will be redirected to GitHub's conflict editor.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/github-resolve-conflict-2.png" alt="Image" width="600" height="400" loading="lazy">
<em>GitHub's conflict editor</em></p>
<p>You can see the file(s) that has conflicts on the left sidebar. On the top bar, you can find the number of conflicts in the file. And in the file itself, there are conflict markers <code>&lt;&lt;&lt;&lt;&lt;&lt;&lt;</code>, <code>=======</code>, and <code>&gt;&gt;&gt;&gt;&gt;&gt;&gt;</code>.</p>
<p>The lines between <code>&lt;&lt;&lt;&lt;&lt;&lt;&lt; branch-name</code> and <code>=======</code> are your changes. Anything between <code>=======</code> and <code>&gt;&gt;&gt;&gt;&gt;&gt;&gt; main</code> are the changes from the <code>main</code> branch of the <code>upstream</code> repository.</p>
<p>You need to look at the conflicts and decide which one you want to keep or if you need to make entirely new changes.</p>
<h4 id="heading-step-3-resolving-the-conflicts">Step #3 - Resolving the Conflicts</h4>
<p>After you decide how you want to resolve the conflicts, delete the conflict markers <code>&lt;&lt;&lt;&lt;&lt;&lt;&lt;</code>, <code>=======</code>, <code>&gt;&gt;&gt;&gt;&gt;&gt;&gt;</code>. Then you can make the changes. If there are several conflicts in the file, scroll down and resolve them before you mark them as resolved.</p>
<p>Once you resolved all conflicts, click the "Mark as resolved" button at the top bar.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/mark-as-resolved.png" alt="Image" width="600" height="400" loading="lazy">
<em>"Mark as resolved" button on GitHub.</em></p>
<p>If there are conflicts in another file(s), go to the file by clicking the file name at the left sidebar. And then repeat the same steps to resolve the conflicts.</p>
<h4 id="heading-step-4-click-the-commit-merge-button">Step #4 - Click the "Commit merge" Button</h4>
<p>After all conflicts in all conflicting files have been marked as resolved, a green "Commit merge" button will appear on the top right. Click the button to commit your changes.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/commit-merge-btn.png" alt="Image" width="600" height="400" loading="lazy">
<em>A "Commit merge" button on GitHub.</em></p>
<h3 id="heading-2-resolving-merge-conflicts-in-vs-code">2. Resolving Merge Conflicts in VS Code</h3>
<p>After you pulled the latest changes from the <code>main</code> branch of your forked repository, you will see line(s) between the conflict markers <code>&lt;&lt;&lt;&lt;&lt;&lt;&lt;</code>, <code>=======</code>, and <code>&gt;&gt;&gt;&gt;&gt;&gt;&gt;</code>.</p>
<p>You will also see the options for resolving the conflicts:</p>
<ul>
<li><strong>Accept Current Change</strong>: When you want to keep only your changes.</li>
<li><strong>Accept Incoming Change</strong>: When you want to keep only the changes from the <code>main</code> branch.</li>
<li><strong>Accept Both Changes</strong>: When you wish to keep yours and the incoming changes.</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/11/merge-conflicts-vscode.png" alt="Image" width="600" height="400" loading="lazy">
<em>Merge conflicts on VS Code.</em></p>
<p>The line(s) between <code>&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD (Current Change)</code> and <code>=======</code> are your changes. And anything between <code>=======</code> and <code>&gt;&gt;&gt;&gt;&gt;&gt;&gt; hash-numbers (Incoming Change)</code> are changes from the <code>main</code> branch of your forked repository.</p>
<p>Follow these steps to resolve the conflicts in VS Code:</p>
<h4 id="heading-step-1-resolving-the-conflicts">Step #1 - Resolving the Conflicts</h4>
<p>Take a closer look at the conflicts between the conflict markers. Then, you need to decide how you want to resolve the conflicts.</p>
<ul>
<li>You can manually delete the markers <code>&lt;&lt;&lt;&lt;&lt;&lt;&lt;</code>, <code>=======</code>, <code>&gt;&gt;&gt;&gt;&gt;&gt;&gt;</code> and make the changes.</li>
</ul>
<p><strong>OR</strong></p>
<ul>
<li>You can choose and click one of the acceptance options on the top and modify the changes based on your needs.</li>
</ul>
<h5 id="heading-undo-the-merging">Undo the Merging</h5>
<p>If at one point you feel confused and want to undo the merge and redo everything from scratch, run the <code>git merge --abort</code> command before committing your changes. It will abort the merge and return your file to the state before the conflicts.</p>
<h4 id="heading-step-2-commit-your-changes">Step #2 - Commit Your Changes</h4>
<p>Once you finished resolving the conflicts, you must commit your changes. Run this command to automatically stage and commit the changes:</p>
<pre><code class="lang-bash">git commit -am <span class="hljs-string">"Your message"</span>
</code></pre>
<h5 id="heading-understanding-git-commit-am-command">Understanding <code>git commit -am</code> Command</h5>
<p>The command <code>git commit -am</code> is different from running <code>git add .</code> followed by <code>git commit -m</code>.</p>
<p>Running <code>git add .</code> will add <em>all</em> files (including newly created files) to the staging area. While adding the <code>-a</code> flag to the <code>git commit</code>, it will automatically stage any files you have committed before. It includes staging deleted tracked files but will not stage newly created files.</p>
<p>So, combining the <code>-a</code> with <code>-m</code> flag to <code>git commit</code> allows you to skip the staging phase and directly write the message for the commit.</p>
<h4 id="heading-step-3-push-your-changes">Step #3 - Push Your Changes</h4>
<p>Now, you can push your changes to the remote branch with the following command:</p>
<pre><code class="lang-bash">git push
</code></pre>
<h2 id="heading-final-words">Final Words</h2>
<p>If you liked and found this article helpful, please share it with others. You can find other works on my <a target="_blank" href="https://adiati.com/">blog</a>, and let's connect on <a target="_blank" href="https://twitter.com/@AdiatiAyu">X (formerly Twitter)</a> or <a target="_blank" href="https://www.linkedin.com/in/adiatiayu/">LinkedIn</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Increase Your VS Code Productivity ]]>
                </title>
                <description>
                    <![CDATA[ Have you watched a seasoned developer work in Visual Studio Code (VS Code) and wondered how they make it look so effortless? The freeCodeCamp YouTube channel is here to help you unlock your coding superpowers with a new course we just published about... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/increase-your-vs-code-productivity/</link>
                <guid isPermaLink="false">66b2039cb7ebc564bd87e33a</guid>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ youtube ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Beau Carnes ]]>
                </dc:creator>
                <pubDate>Wed, 04 Oct 2023 14:05:32 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/10/productivevscode.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Have you watched a seasoned developer work in Visual Studio Code (VS Code) and wondered how they make it look so effortless?</p>
<p>The freeCodeCamp YouTube channel is here to help you unlock your coding superpowers with a new course we just published about increasing your productivity in VS Code.</p>
<p>Chris Sev developed this course. Chris is a popular instructor as well as a Dev Advocate at DigitalOcean and the founder of scotch.io.</p>
<p>Learning to harness the full potential of your text editor can make the difference between being a good developer and a great one. Chris Sev understands this, and that's why he's dedicated an entire course to help you master VS Code.</p>
<p>VS Code is packed with powerful features like Intellisense, built-in Git, a terminal, debugging tools, and a plethora of extensions. In this course you will learn how to unlock its full potential. The course is a comprehensive resource that covers everything you need to know to become a coding ninja in VS Code.</p>
<p>Here's a glimpse of what you'll learn:</p>
<ol>
<li>Boost your productivity with VS Code.</li>
<li>Make VS Code look stunning with the best themes and fonts.</li>
<li>Master over 100 essential settings.</li>
<li>Discover 50+ top extensions to supercharge your workflow.</li>
<li>Learn over 100 tips and tricks to streamline your coding process.</li>
<li>Unleash the power of multi-cursor editing.</li>
<li>Navigate like a pro with the fastest keyboard shortcuts.</li>
<li>Harness built-in Git and GitHub integration.</li>
<li>Master the built-in terminal for efficient development.</li>
<li>Seamlessly switch between projects.</li>
</ol>
<p>The course is structured into 54 comprehensive sections that cover every aspect of VS Code and its extensions. Here's a brief overview of some of the key sections:</p>
<ul>
<li><strong>Welcome to Productive VS Code</strong>: An introduction to the course.</li>
<li><strong>How I Use VS Code To Be Productive</strong>: Insights from Chris Sev on his coding workflow.</li>
<li><strong>Installing VS Code</strong>: Get started with setting up VS Code.</li>
<li><strong>A Tour of VS Code's UI</strong>: Familiarize yourself with the editor's interface.</li>
<li><strong>VS Code Themes and Icon Themes</strong>: Customize the look and feel of VS Code.</li>
<li><strong>Extensions and Customization in VS Code</strong>: Explore the world of extensions.</li>
<li><strong>Using Git and GitHub in VS Code</strong>: Master version control with VS Code.</li>
<li><strong>Multi Cursor: My Favorite Feature</strong>: Unlock the power of multi-cursor editing.</li>
<li><strong>Keyboard Shortcuts Cheat Sheet for VS Code</strong>: Become a keyboard shortcut ninja.</li>
<li><strong>Outro to Productive VS Code</strong>: Wrapping up the course and taking your skills to the next level.</li>
</ul>
<p>So if you want to become a more efficient and effective developer, head over to <a target="_blank" href="https://www.youtube.com/watch?v=heXQnM99oAI">the freeCodeCamp.org YouTube channel</a> to watch this course (6-hour watch). </p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/heXQnM99oAI" 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>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Create Diagrams as Code with Mermaid, GitHub, and Visual Studio Code ]]>
                </title>
                <description>
                    <![CDATA[ Diagrams are an important part of technical documentation. In this article we will explore how we can use code to generate diagrams and leverage them in Markdown. Here is an example of how a code generated diagram looks like: Diagram generated by co... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/diagrams-as-code-with-mermaid-github-and-vs-code/</link>
                <guid isPermaLink="false">66adea301ad24d82983fd24b</guid>
                
                    <category>
                        <![CDATA[ data visualization ]]>
                    </category>
                
                    <category>
                        <![CDATA[ documentation ]]>
                    </category>
                
                    <category>
                        <![CDATA[ GitHub ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Zaira Hira ]]>
                </dc:creator>
                <pubDate>Wed, 06 Sep 2023 20:51:45 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/09/mermaid-code-as-a-diagram.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Diagrams are an important part of technical documentation. In this article we will explore how we can use code to generate diagrams and leverage them in Markdown.</p>
<p>Here is an example of how a code generated diagram looks like:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/08/Untitled-design--1-.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Diagram generated by code</em></p>
<p>No tools, no dragging, aligning and snapping shapes to places. Just code. Interesting right?</p>
<h2 id="heading-pre-requisites">Pre-requisites</h2>
<p>To follow along with this tutorial, you should have the following:</p>
<ul>
<li><p>A basic understanding of Markdown. Have a look at <a target="_blank" href="https://www.freecodecamp.org/news/markdown-cheat-sheet/">this guide</a> if you aren't familiar with Markdown.</p>
</li>
<li><p>Visual Studio Code with a Markdown previewing extension (covered in detail in coming sections).</p>
</li>
<li><p>GitHub, to understand how you can render diagrams there.</p>
</li>
</ul>
<h2 id="heading-advantages-of-generating-diagrams-as-code">Advantages of Generating Diagrams as Code</h2>
<p>There are several advantages of generating diagrams as code rather than using traditional methods to manually 'create' diagrams. Let's see some of them:</p>
<ul>
<li><p><strong>Dynamic</strong>: Code-generated diagrams are dynamic which means that you can easily update them by updating the code.</p>
</li>
<li><p><strong>Editable</strong>: With code-generated images, you are not relying on complex image generating tools. You can simply edit the code in a text editor and get an updated image.</p>
</li>
<li><p><strong>Efficient</strong>: Code-generated images are fast to load compared to static images. Also you don't need to host them separately as an image in your website.</p>
</li>
<li><p><strong>Quick to create</strong>: You can use a template and quickly come up with diagrams just using code. You don't need to invest the time and effort in learning image creation tools, that are usually overwhelming to start with.</p>
</li>
</ul>
<h2 id="heading-how-to-render-and-view-mermaid-code">How to Render and View Mermaid Code</h2>
<p>There are several ways you can create and view Mermaid diagrams.</p>
<h3 id="heading-vscode">VSCode</h3>
<p>First, install a Markdown previewer that has the support for Mermaid. Here is an example of such an extension: <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid">Markdown Preview Mermaid Support</a>.</p>
<p>Create an empty Markdown file using the extension <code>.md</code>. Write your code in this file and open the preview on the right pane:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/08/image-226.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Code and preview in VSCode</em></p>
<h3 id="heading-stackedit">StackEdit</h3>
<p><a target="_blank" href="https://stackedit.io/">StackEdit</a> is an online, browser-based Markdown previewer. It provides an editor window and a preview on the right side.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732173257560/a5cf3d3d-7db4-4176-a1b8-fc59597d5966.png" alt="a5cf3d3d-7db4-4176-a1b8-fc59597d5966" class="image--center mx-auto" width="600" height="400" loading="lazy"></p>
<p><em>Code and preview in StackEdit</em></p>
<h3 id="heading-github">GitHub</h3>
<p>You can add Mermaid diagrams to create compelling README files in GitHub. Simply edit the <code>README.md</code> or any other Markdown file in GitHub to render Mermaid diagrams.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-40.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>Edit code in GitHub</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-41.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><em>View and render Mermaid diagram in GitHub</em></p>
<h2 id="heading-how-to-generate-diagrams-as-code-with-mermaid">How to Generate Diagrams as Code with Mermaid</h2>
<p>Mermaid is a JavaScript-based tool that transforms Markdown-style text into dynamic diagrams, allowing you to create and modify them effortlessly.</p>
<p>Mermaid makes it easy to generate diagrams and visuals using simple text and code.</p>
<p>It follows a simple syntax:</p>
<pre><code class="lang-bash">```mermaid
    your code goes here
    .
    .
    .

```
</code></pre>
<p>With Mermaid, you can generate the following diagram types:</p>
<ul>
<li><p>Flowchart</p>
</li>
<li><p>Sequence Diagram</p>
</li>
<li><p>Class Diagram</p>
</li>
<li><p>Gantt</p>
</li>
<li><p>Pie Chart</p>
</li>
</ul>
<p>Let's explore them one by one.</p>
<h3 id="heading-how-to-create-a-flowchart">How to Create a Flowchart</h3>
<p>A flowchart is a picture that shows the steps of a process using symbols, helping to explain the process in a clear and organized way. A flow chart is composed of nodes that are connected by arrows.</p>
<p>You can render flowcharts in mermaid using this example:</p>
<pre><code class="lang-bash">```mermaid
flowchart TD;
    A[Start] --&gt; B[Process 1];
    B --&gt; C[Process 2];
    C --&gt; D[End];
```
</code></pre>
<p><strong>Result:</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732173454651/613d31f6-102b-4a62-a24a-0360e5c32ca5.png" alt="613d31f6-102b-4a62-a24a-0360e5c32ca5" class="image--center mx-auto" width="600" height="400" loading="lazy"></p>
<p><em>Flowcharts in mermaid</em></p>
<p><strong>Syntax breakdown:</strong></p>
<ul>
<li><p><code>flowchart</code>: This keyword tells that we are creating a flowchart.</p>
</li>
<li><p><code>TD</code>: this is the orientation of the flowchart and stands for Top to Down. The other FlowChart orientations are:<br>  – <code>TB</code> - Top to bottom,same as TD.<br>  – <code>BT</code> - Bottom to top<br>  – <code>RL</code> - Right to left<br>  – <code>LR</code> - Left to right</p>
</li>
<li><p><code>--&gt;</code>: The direction of the arrow connecting the nodes.</p>
</li>
</ul>
<h3 id="heading-how-to-create-a-sequence-diagram"><strong>How to Create a Sequence Diagram</strong></h3>
<p>A sequence diagram is an illustrative representation of interactions between processes, demonstrating their operational flow and the sequence of execution.</p>
<p>You can render sequence diagrams in mermaid using this syntax:</p>
<pre><code class="lang-bash">```mermaid
sequenceDiagram
    participant Client
    participant Server
    Client-&gt;&gt;Server: Register user
    activate Server
    Server--&gt;&gt;Client: User already exists.
    deactivate Server

```
</code></pre>
<p><strong>Result:</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732173517259/9abf9118-8eb5-4203-ac16-c188d40a3e1f.png" alt="9abf9118-8eb5-4203-ac16-c188d40a3e1f" class="image--center mx-auto" width="600" height="400" loading="lazy"></p>
<p><em>Sequence diagram in mermaid</em></p>
<p><strong>Syntax breakdown:</strong></p>
<ul>
<li><p><code>sequenceDiagram</code>: This keyword specifies that we are making a sequence diagram.</p>
</li>
<li><p><code>participant</code>: These are the participants or the actors in a sequence diagram.</p>
</li>
<li><p><code>activate/ deactivate</code>: It is possible to activate and deactivate an actor. Activation shows as a small rectangle between interactions.</p>
</li>
<li><p><code>--&gt;&gt;</code>: Connecting lines (dashed).</p>
</li>
<li><p><code>-&gt;</code>: Connecting lines (solid).</p>
</li>
</ul>
<h3 id="heading-how-to-create-a-class-diagram"><strong>How to Create a Class Diagram</strong></h3>
<p>Class diagrams are used to visualize the structure and relationships of classes, interfaces, and their interactions in object-oriented programming (OOP). You can render class diagrams in Mermaid using this syntax:</p>
<pre><code class="lang-bash">```mermaid
classDiagram
    class Animal {
        +name: string
        +age: int
        +makeSound(): void
    }

    class Dog {
        +breed: string
        +bark(): void
    }

    class Cat {
        +color: string
        +meow(): void
    }

    Animal &lt;|-- Dog
    Animal &lt;|-- Cat

```
</code></pre>
<p><strong>Result:</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732173586580/980dadee-760a-4593-9a73-fbddb6ea7d41.png" alt="980dadee-760a-4593-9a73-fbddb6ea7d41" class="image--center mx-auto" width="600" height="400" loading="lazy"></p>
<p><em>Class diagram in mermaid</em></p>
<p><strong>Syntax breakdown:</strong></p>
<ul>
<li><p>Defining classes: An individual class is defined with the <code>class</code> keyword followed by the class name.</p>
</li>
<li><p>Adding class properties: Class properties are added with a <code>+</code> sign. In the example above, <code>+breed</code> is a property.</p>
</li>
<li><p>Adding methods: Methods are recognized by mermaid using <code>()</code>, the round braces. Note that all the properties and methods are grouped under the same class using curly braces.</p>
</li>
<li><p>Defining return types: Return types are defined after the method name/ class name. <code>string</code> and <code>void</code> are the return types in the above code.</p>
</li>
<li><p>Defining relation ships: In OOP, relationships are the specific types of logical connections found on class and object diagrams. The following relationship types are supported in mermaid:</p>
</li>
</ul>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>Type</strong></td><td><strong>Description</strong></td></tr>
</thead>
<tbody>
<tr>
<td>&lt;</td><td>--</td><td>Inheritance</td></tr>
<tr>
<td>*--</td><td>Composition</td></tr>
<tr>
<td>o--</td><td>Aggregation</td></tr>
<tr>
<td>--&gt;</td><td>Association</td></tr>
<tr>
<td>--</td><td>Link (Solid)</td></tr>
<tr>
<td>..&gt;</td><td>Dependency</td></tr>
<tr>
<td>..</td><td>&gt;</td><td>Realization</td></tr>
<tr>
<td>..</td><td>Link (Dashed)</td></tr>
</tbody>
</table>
</div><p>Here is a quick implementation of inheritance:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732173642098/8cac704a-455a-4317-93cc-885c4d28b066.png" alt="8cac704a-455a-4317-93cc-885c4d28b066" class="image--center mx-auto" width="600" height="400" loading="lazy"></p>
<p><em>Inheritance</em></p>
<h3 id="heading-how-to-create-a-gantt-chart"><strong>How to Create a Gantt Chart</strong></h3>
<p>A Gantt chart serves as a visual representation in the form of a bar chart. It effectively showcases a project's timeline, revealing the duration required for individual project components to reach completion.</p>
<p>You can render Gantt charts in Mermaid using this example:</p>
<pre><code class="lang-bash">```mermaid
gantt
    title Project Schedule
    dateFormat YYYY-MM-DD
    axisFormat %m/%d

    section Planning
    Define Project : 2023-01-01, 7d
    Research : 2023-01-08, 14d
    Define Requirements : 2023-01-22, 7d

    section Development
    Design : 2023-01-29, 21d
    Implementation : 2023-02-19, 28d

    section Testing
    Unit Testing : 2023-03-19, 14d
    Integration Testing : 2023-04-02, 14d

    section Deployment
    Deploy : 2023-04-16, 7d
    User Training : 2023-04-23, 14d

    section Maintenance
    Ongoing Support : 2023-05-07, 30d

```
</code></pre>
<p><strong>Result:</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732173699584/2755cdf2-a95e-40fa-a4ea-18eddd8d2919.png" alt="2755cdf2-a95e-40fa-a4ea-18eddd8d2919" class="image--center mx-auto" width="600" height="400" loading="lazy"></p>
<p><em>Gantt charts in mermaid</em></p>
<p><strong>Syntax breakdown:</strong></p>
<ul>
<li><p><code>gantt</code> specifies that you want to render a Gantt chart in mermaid.</p>
</li>
<li><p><code>title</code>represents the project title.</p>
</li>
<li><p><code>dateFormat YYYY-MM-DD</code> is the input date format for the chart.</p>
</li>
<li><p><code>axisFormat %m/%d</code> represents the shown date format, the output date, in the x-axis.</p>
</li>
<li><p><code>section</code> is used to separate different parts of the project.</p>
</li>
</ul>
<p>The x axis represents time and the y records the different tasks and the order in which they are to be completed.</p>
<h3 id="heading-how-to-create-a-pie-chart"><strong>How to Create a Pie Chart</strong></h3>
<p>A pie chart, also known as a circle chart, is a round visual representation used for displaying statistical data. It is divided into segments or slices to visually convey the numerical proportions of different categories or values.</p>
<p>Here is an example to create a pie chart in mermaid:</p>
<pre><code class="lang-bash">```mermaid
pie
    title Distribution of Expenses
    <span class="hljs-string">"Food"</span> : 60
    <span class="hljs-string">"Rent"</span> : 15
    <span class="hljs-string">"Entertainment"</span> : 10
    <span class="hljs-string">"Savings"</span> : 15

```
</code></pre>
<p><strong>Result:</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1732173761958/0664d574-0cc0-49d3-8744-68d1dbdd4d15.png" alt="0664d574-0cc0-49d3-8744-68d1dbdd4d15" class="image--center mx-auto" width="600" height="400" loading="lazy"></p>
<p><em>Pie charts in mermaid</em></p>
<p><strong>Syntax breakdown:</strong></p>
<p>In this example:</p>
<ul>
<li><p><code>pie</code> indicates that we are creating a pie chart.</p>
</li>
<li><p><code>title</code> sets the title for the pie chart.</p>
</li>
<li><p>The items in double quotes represent the categories (e.g., "Food," "Rent," "Entertainment," "Savings").</p>
</li>
<li><p>The numbers after the colons represent the proportions or percentages for each category. In this case, "Food" occupies 60% of the chart, "Rent" 15%, "Entertainment" 10%, and "Savings" 15%.</p>
</li>
</ul>
<h2 id="heading-wrapping-up"><strong>Wrapping up</strong></h2>
<p>In this article, we just scratched the surface of rendering diagrams in Mermaid. The diagrams are highly customizable and allow you to create very complex diagrams as well.</p>
<p>Mermaid supports even more types of diagrams that are not mentioned in this tutorial. To learn more about Mermaid, check out their <a target="_blank" href="https://web.archive.org/web/20240526110100/http://mermaid.js.org/">official documentation</a>.</p>
<p>I hope you found this article helpful. I would love to connect with you on any of these <a target="_blank" href="https://web.archive.org/web/20240526110100/https://zaira_.bio.link/">platforms</a>.</p>
<p>See you in the next tutorial, happy coding 😁</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Configure Visual Studio Code for Python Development ]]>
                </title>
                <description>
                    <![CDATA[ Visual Studio Code is one of the most versatile code editors out there. Even though it's a code editor, the sheer extensibility of the program makes it almost as capable as some of the JetBrains products out there. In this article, I'll walk you thro... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-configure-visual-studio-code-for-python-development/</link>
                <guid isPermaLink="false">66b0ab347cd8dca6718a22b6</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Farhan Hasin Chowdhury ]]>
                </dc:creator>
                <pubDate>Mon, 17 Jul 2023 17:13:01 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/10/visual-studio-code-for-python.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Visual Studio Code is one of the most versatile code editors out there. Even though it's a code editor, the sheer extensibility of the program makes it almost as capable as some of the JetBrains products out there.</p>
<p>In this article, I'll walk you through the entire process of configuring Visual Studio Code for Python development. It's not a universal setup, but this is something that I use personally and have found it to be really comfortable.</p>
<p>The first step is to install Visual Studio Code on your computer. I'm on Debian 12 at the moment and I have the editor ready to go. Platform specific <a target="_blank" href="https://code.visualstudio.com/docs/setup/setup-overview">installation instructions</a> are available in the documentation.</p>
<p>Assuming you are past the installation step, now I'll introduce you to a set of essential extensions that will elevate your Python development experience to the next level.</p>
<h2 id="heading-python-extension">Python Extension</h2>
<p>The first extension that you need to install is the <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=ms-python.python">Python Extension</a> from Microsoft.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/image-86.png" alt="Image" width="600" height="400" loading="lazy">
<em>https://marketplace.visualstudio.com/items?itemName=ms-python.python</em></p>
<p>This is actually an extension pack that contains two extensions. The first extension is the Python extension. It lays the foundation for Python development in Visual Studio Code.</p>
<p>The other one is <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance">Pylance</a>, which is a very performant language server for Python.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/image-88.png" alt="Image" width="600" height="400" loading="lazy">
<em>https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance</em></p>
<p>This extension provides rich intellisense support and is powered by <a target="_blank" href="https://github.com/microsoft/pyright">Pyright</a>, the static type checker from Microsoft. The next thing you need to think about is linting.</p>
<h2 id="heading-ruff-linter">Ruff Linter</h2>
<p>A linter is a program that analyses your code statically and provides valuable insights on possible errors.</p>
<p>The Pylance extension does an excellent job of finding out fatal errors within your code, but there is more to code than just that.</p>
<p>When working on a big project, it's pretty common to leave unwanted mess within your codebase. Things like unused imports and variables, bad code practices, and so on.</p>
<p>A good linter can point out code smells like this and make your code cleaner. Now, the go-to choice when it comes to Python linters is Pylint.</p>
<p>Pylint has been around for ages and works quite well, but I think there is a better alternative.</p>
<p>Ruff is an extremely fast Python linter written in Rust that imposes stricter linting rules than Pylint. The tool also has an <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff">official extension</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/image-89.png" alt="Image" width="600" height="400" loading="lazy">
<em>https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff</em></p>
<p>It's a plug n' play extension and doesn't require any additional configuration whatsoever. So once you have it installed, you're good to go.</p>
<h2 id="heading-isort">Isort</h2>
<p>Like a linter, <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=ms-python.isort">isort</a> is another utility that's sole purpose is sorting import statements.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/image-95.png" alt="Image" width="600" height="400" loading="lazy">
<em>https://marketplace.visualstudio.com/items?itemName=ms-python.isort</em></p>
<p>The utility sorts all the imports alphabetically, while also dividing them into sections.</p>
<p>The extension is very straightforward. Once you have the extension, it'll render squiggly lines under any import statement that seems out of place.</p>
<p>You can then use the quick action menu to sort them. Or, you can also use the command palette to quickly access the isort command.</p>
<h2 id="heading-mypy-type-checker">Mypy Type Checker</h2>
<p>Before I start talking about this extension, let me explain what <a target="_blank" href="https://mypy-lang.org/">mypy</a> actually is.</p>
<p>According to the info on their homepage:</p>
<blockquote>
<p>Mypy is an optional static type checker for Python that aims to combine the benefits of dynamic (or "duck") typing and static typing. Mypy combines the expressive power and convenience of Python with a powerful type system and compile-time type checking.</p>
</blockquote>
<p>In simpler words, mypy forces you to add essential type annotations to your Python programs, making them easier to comprehend.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/image-90.png" alt="Image" width="600" height="400" loading="lazy">
<em>https://mypy-lang.org/</em></p>
<p>Recently, Microsoft has published <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=ms-python.mypy-type-checker">an extension</a> that adds type checking functionality using mypy to their beloved editor.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/image-91.png" alt="Image" width="600" height="400" loading="lazy">
<em>https://marketplace.visualstudio.com/items?itemName=ms-python.mypy-type-checker</em></p>
<p>Once you have installed the extension, it'll perform necessary checks on your code and report any missing type annotations as compile-time errors.</p>
<p>While having type annotations is not mandatory, it's highly recommended.</p>
<h2 id="heading-intellicode">IntelliCode</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode">IntelliCode</a> provides AI assisted code completion in Visual Studio Code. It may sound similar to GitHub Copilot, but in reality it's a lot smaller than that.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/image-93.png" alt="Image" width="600" height="400" loading="lazy">
<em>https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode</em></p>
<p>Where GitHub Copilot or Tabnine provides full-blown code blocks, IntelliCode autocompletes lines of code pretty flawlessly.</p>
<p>In most cases, this extension can help you type less of the same code by suggesting the right thing while also keeping out of your way.</p>
<h2 id="heading-error-lens">Error Lens</h2>
<p>While not related to Python specifically, <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens">Error Lens</a> is a great extension that embeds errors right by the side of the line of code.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/image-94.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>I often work on my 14 inch Thinkpad and like to turn off the terminal pane. Error Lens eradicates the need to look at the terminal now and then to see my errors and warnings.</p>
<p>As useful as it may be, sometimes your editor can look cluttered due to all the warning and error outputs, so decide accordingly.</p>
<h2 id="heading-indent-rainbow">Indent Rainbow</h2>
<p>Unlike other programming languages, an incorrect level of indentation can literally break your program in Python.</p>
<p>Visual Studio Code already does a good job of visualizing indentation levels within your code, but if you want to add some color to it, the <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow">indent-rainbow</a> package is what you need.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/image-92.png" alt="Image" width="600" height="400" loading="lazy">
<em>https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow</em></p>
<p>It adds different colors to the different levels of indentation. Personally, I don't use this one on a regular basis, but you may find it useful.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Like I said, these extensions and my personal configuration are not a silver bullet. But this setup is something that I've been using for quite a while and I hope it's useful to you as well.</p>
<p>I often install specialized extensions depending on the projects I work on. For example, I use the <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=batisteo.vscode-django">Django</a> or <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=wholroyd.jinja">Jinja</a> project when I work on a Django or Flask project.</p>
<p>Or I install the <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter">Jupyter</a> extension while working on a Jupyter Notebook. So feel free to install whatever you need, just don't overdo it.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Install ChatGPT in VSCode for Better Productivity ]]>
                </title>
                <description>
                    <![CDATA[ Everyone wants to be able to be more productive – whether you're a developer, student, or other professional. After all, it means accomplishing more tasks in less time.  ChatGPT — or Chat Generative Pre-Training Transformer — has been making waves in... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/install-chatgpt-in-vscode/</link>
                <guid isPermaLink="false">66b9f47edceb76a2345d01c4</guid>
                
                    <category>
                        <![CDATA[ Artificial Intelligence ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Ijeoma Igboagu ]]>
                </dc:creator>
                <pubDate>Mon, 27 Mar 2023 17:50:01 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/03/coverchaat.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Everyone wants to be able to be more productive – whether you're a developer, student, or other professional. After all, it means accomplishing more tasks in less time. </p>
<p>ChatGPT — or Chat Generative Pre-Training Transformer — has been making waves in the tech industry recently. It was first launched in November 2022. Then the upgraded ChatGPT-4 came out in March 2023.</p>
<p>In this tutorial, I will explain how you can use ChatGPT to become more productive. Then I’ll walk you through how you can install the ChatGPT extension within your VSCode editor.</p>
<h1 id="heading-how-can-chatgpt-help-you-out">How Can ChatGPT Help You Out?</h1>
<p>In today’s fast-paced world, productivity is more crucial than ever, and ChatGPT is key to increased efficiency. While developers use ChatGPT for activities like debugging, code creation, and text rephrasing, this sophisticated tool also offers other important features:</p>
<ol>
<li><strong>Human-like Conversation</strong>: ChatGPT provides an enhanced conversational experience, giving you the impression that you're interacting with an actual person. This helps make it a more intuitive tool.</li>
<li><strong>Rapid and Accurate Answers</strong>: By utilizing ChatGPT, you can get precise responses to your queries, which helps maximize your productivity (just don't forget to fact-check!).</li>
<li><strong>Continuous Improvement</strong>: ChatGPT learns from user interactions and enhances its performance over time. This makes it an asset for both individual developers and teams, enabling them to remain competitive in our fast-paced and demanding world.</li>
<li><strong>Efficient Task Completion</strong>: ChatGPT acts as an assistant and saves you time by accomplishing mundane or repetitive tasks more quickly so you can focus on more important things.</li>
<li><strong>Customized Learning Experience</strong>: ChatGPT adapts to your learning style and pace. It can provide personalized explanations, examples, and resources based on your specific needs and interests. By emphasizing what works best for you and presenting concepts in a manner that aligns with your individual preferences, ChatGPT enhances your learning experience and promotes better understanding.</li>
<li><strong>Real-time Feedback and Guidance</strong>: By engaging with ChatGPT, you can receive real-time feedback on your code, allowing you to refine your programming skills. Whether you’re a beginner seeking guidance or an experienced developer looking to expand your programming skills, ChatGPT can provide valuable insights and suggestions.</li>
</ol>
<p>With ChatGPT by your side, you can achieve more in less time, while enjoying the convenience and effectiveness of a cutting-edge language model.</p>
<h1 id="heading-how-to-install-chatgpt-in-vscode">How to Install ChatGPT in VsCode</h1>
<p>Installing CodeGPT boosts your productivity as a developer and enhances your workflow. With the CodeGPT extension installed, you gain convenient access to ChatGPT’s features without you having to leave your Integrated Development Environment (IDE).</p>
<p><strong>Here’s how you can do that:</strong></p>
<p>First, you'll need to access the list of extensions in VSCode by following these steps:</p>
<ul>
<li>Open the View menu.</li>
<li>From the drop-down list, select Extensions.</li>
</ul>
<p>This will allow you to view and manage your extensions in VSCode.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:821/0*FHhMdaC9XX_3BVJ5.png" alt="opening the extension in Vscode" width="657" height="986" loading="lazy">
<em>extension in Vscode</em></p>
<p>Upon opening the extensions panel, you will have access to a marketplace where you can browse and install a wide range of tools to enhance your workflow in the IDE.</p>
<p>Next, install ChatGPT, also known as CodeGPT, and follow these simple steps:</p>
<ul>
<li>In VSCode, locate the search bar.</li>
<li>Type “CodeGPT” into the search bar.</li>
<li>Hit Enter.</li>
</ul>
<p>The extension should appear in the search results. Click on the <em>Install button</em> next to the CodeGPT extension to add it to your VSCode environment.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:875/0*h9OaM5iPbKWJ6hGY.png" alt="Vscode marketplace showing the list of plugins that can be installed" width="875" height="492" loading="lazy">
<em>marketplace in your Vscode</em></p>
<p>To get started with the extension, follow these steps:</p>
<ul>
<li>Open your preferred web browser.</li>
<li>Search for OpenAI or visit their website  <a target="_blank" href="https://openai.com/">OpenAI</a> .</li>
</ul>
<p><img src="https://miro.medium.com/v2/resize:fit:875/0*3wt6kJkJBJXegqti.png" alt="OpenAI website" width="875" height="248" loading="lazy">
_O<a class="ay ng" href="https://openai.com/" target="_blank">penAI </a>website_</p>
<p>To access the API reference follow these steps:</p>
<ul>
<li>Locate the menu bar at the top of the webpage</li>
<li>Click on the developer’s section in the menu</li>
<li>A drop-down menu will appear</li>
<li>select the API reference option from the drop-down menu.</li>
</ul>
<p><img src="https://miro.medium.com/v2/resize:fit:875/0*Qod4nHe_qqx_tGUO.png" alt="API reference" width="875" height="267" loading="lazy">
<em>API reference</em></p>
<p>Once you visit their website and click on the API reference section, the system will prompt you to create a new account or sign in using your Google account. This essential step is necessary to proceed with API-related activities and explore all the features it offers.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:875/0*3lxXZqugA5HKoxWd.gif" alt="creating an account or login with openai.com" width="1920" height="920" loading="lazy">
_creating an account or login with <a class="ay ng" href="http://openai.com/" target="_blank">openai.com</a>_</p>
<p>Once you have logged into your account, click on your account profile to reveal a drop-down menu. From the available options, select <em>View API Keys</em> to proceed.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:875/0*8lbAenLv5WhhZk49.gif" alt="View API Keys" width="1920" height="920" loading="lazy">
<em>View API Keys</em></p>
<p>Upon selecting <em>View API Keys</em>, the system will guide you to the next page. Locate the section labeled <em>API Keys</em> and click the <em>Create new secret key</em> button. This will generate an API key that you can integrate into your VSCode environment.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:875/0*5TpzQcN3iDOkfBmD.png" alt="Generating the API Keys" width="875" height="419" loading="lazy">
<em>Generating the API Keys</em></p>
<p>To integrate your API keys, follow these simple steps:</p>
<ul>
<li>Go back to VSCode.</li>
<li>Open the settings.</li>
<li>In the settings window, type “CodeGPT” in the search bar.</li>
<li>Find the “CodeGPT: API Key” section.</li>
<li>Copy the generated API key from OpenAI.</li>
<li>Paste the API key in the designated field under the “CodeGPT: API Key” section.</li>
</ul>
<p>By following these steps, you will integrate your API key into the CodeGPT extension in VSCode.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:875/0*iqy9RffCH8Btqq-2.gif" alt="Integration of your API keys" width="1920" height="1079" loading="lazy">
<em>Integration of your API keys</em></p>
<p>Once you have integrated your API key into VSCode, you will find it listed as an installed extension.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:875/0*BziOlsBLwfF4j3Kf.png" alt="codeGPT icon showing once installed" width="875" height="492" loading="lazy">
<em>codeGPT icon showing once installed</em></p>
<p>Once you have installed CodeGPT in your VSCode, you can start using its features and capabilities.</p>
<p>Here’s an example showcasing the results you can expect after installing CodeGPT in your VSCode environment:</p>
<p><img src="https://miro.medium.com/v2/resize:fit:875/0*8wqGGzk5u9yDZvFZ.gif" alt="A gif showing that codeGPT works" width="1920" height="1079" loading="lazy">
<em>A gif showing that codeGPT works</em></p>
<h3 id="heading-im-getting-a-429-undefined-error-while-i-try-to-install-the-extension-what-do-i-do">I'm getting a "429 undefined error" while I try to install the extension what do I do?</h3>
<p>If you encounter a “429 Undefined Error” while installing ChatGPT in your VSCode environment, this may mean that you have exceeded the usage limits or rate limits of the OpenAI API.</p>
<p><strong>To resolve this issue:</strong></p>
<ul>
<li>Get a new email and register. Use the new email to generate the API key, or better still watch the video under the resource section to guide you.</li>
<li>Verify your internet connection: Ensure that you have a stable internet connection to avoid any network-related errors.</li>
</ul>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Following this step-by-step guide to install ChatGPT in VSCode can increase your productivity and help you complete tasks. </p>
<p>Integrating ChatGPT into your VSCode environment will help you work faster and achieve better results. You can streamline your workflow, receive instant feedback, and maximize your potential with this powerful language model. </p>
<p>Embrace the future of productivity and make the most of ChatGPT in VSCode to save time and effort in your work.</p>
<p>If you found this article valuable, I kindly request that you share it with fellow developers who could also enjoy this content. Together, by exchanging knowledge and resources within our community, we can contribute to the advancement of our field.</p>
<p>To stay updated on my latest work, feel free to connect with me on <a target="_blank" href="https://twitter.com/ijaydimples">Twitter</a> and <a target="_blank" href="https://www.linkedin.com/in/ijeoma-igboagu/">LinkedIn</a>.</p>
<p>Thank you for taking the time to read 💖.</p>
<h3 id="heading-resources">Resources</h3>
<ul>
<li><a target="_blank" href="https://www.youtube.com/watch?v=lOzxkPMcFw0">ChatGPT for VSCode</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/ai-assistants-for-productivity/">Al Assistants That Help Your Productivity (Besides ChatGPT)</a></li>
</ul>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Write And Run C and C++ Code in Visual Studio Code ]]>
                </title>
                <description>
                    <![CDATA[ Visual Studio Code (or VS Code for short) is a very common and widely used text editor and IDE (Integrated Development Environment). You can make VS Code very powerful like an IDE using a lot of extensions. Before approaching the process of running y... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-write-and-run-c-cpp-code-on-visual-studio-code/</link>
                <guid isPermaLink="false">66b9030605ed142b6e64c273</guid>
                
                    <category>
                        <![CDATA[ C++ ]]>
                    </category>
                
                    <category>
                        <![CDATA[ c programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ compilers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Md. Fahim Bin Amin ]]>
                </dc:creator>
                <pubDate>Fri, 20 Jan 2023 21:45:48 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/01/asd.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Visual Studio Code (or VS Code for short) is a very common and widely used text editor and IDE (Integrated Development Environment). You can make VS Code very powerful like an IDE using a lot of extensions.</p>
<p>Before approaching the process of running your first C or C++ code on Visual Studio Code, let me guide you through the process and get it all set up based on the operating system you are using on your computer.</p>
<h2 id="heading-c-and-c-compilers">C and C++ compilers</h2>
<p>For running C or C++ code, you just need to have a valid C/C++ compiler installed on your computer. If you are using a Linux operating system, then there is a high chance that it is already installed on your system. But we need to make sure that it is correctly installed.</p>
<p>For checking whether or not you have the compiler (GCC/G++/MinGW) installed on your system or not, you have to check the compiler version first. </p>
<p>Simply open your terminal and use <code>gcc --version</code> and <code>g++ --version</code>. If you get the version number, then the compiler is already installed on your system. </p>
<p>You can check the version using the same commands on any operating system, whether that is a Windows, Linux, or macOS-based operating system. </p>
<p>If you get feedback on your terminal that it does not know anything about GCC or G++, then you have to install the compiler correctly. </p>
<p>If you are using the most used Windows operating system, then I already have written an in-depth article showing you all the processes step-by-step on freeCodeCamp. Make sure to read the entire article first, as it also contains a complete video to provide you with complete support.</p>
<p><a target="_blank" href="https://www.freecodecamp.org/news/how-to-install-c-and-cpp-compiler-on-windows/">Embedded content</a></p>
<p>If you are using another operating system, and you don't have the compilers installed, then make sure to install them before proceeding.</p>
<h2 id="heading-how-to-install-vs-code-or-vs-code-insiders">How to Install VS Code or VS Code Insiders</h2>
<p>You have to download Visual Studio Code directly from the official website: <a target="_blank" href="https://code.visualstudio.com/">https://code.visualstudio.com/</a>.</p>
<p>If you want, you can also install VS Code Insiders, and the same process is applicable for that as well. </p>
<p>Visual Studio Code Insiders is actually the "Insiders" build of Visual Studio Code, which contains all the latest features that are shipped daily. You can think of VS Code as the stable release and the VS Code Insiders as the Insiders release of that.</p>
<p>If you want to experience the latest updates instantly, then you might also try Visual Studio Code Insiders (I use it myself). For downloading VS Code Insiders, you can visit the official website for VS Code Insiders here: <a target="_blank" href="https://code.visualstudio.com/insiders/">https://code.visualstudio.com/insiders/</a></p>
<p>Make sure to download the exact file for your operating system.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-163.png" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Download Page: VS Code</strong></em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-164.png" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Download Page: VS Code Insiders</strong></em></p>
<p>The installation process is pretty basic. But I am going to show you all the steps sequentially. For now, I am going to show you the installation process using VS Code Insiders, but everything you will see here is going to be exactly the same for VS Code as well.</p>
<p>Make sure to click the box on the "I accept the agreement " box and click on <strong>Next</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-165.png" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Accept the agreement and click Next</strong></em></p>
<p>Keep everything as it is. Do not change anything from here.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-168.png" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Click Next</strong></em></p>
<p> Click <strong>Next</strong>. Again, simply click <strong>Next</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-170.png" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Click Next</strong></em></p>
<p>Make sure to add the checkmark (✔) on all of the boxes. Then click on <strong>Next</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-171.png" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Check all of the boxes, and click Next</strong></em></p>
<p>Click on <strong>Install</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-172.png" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Click Install</strong></em></p>
<p>It might take a little time to finish the installation.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-173.png" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Let it finish...</strong></em></p>
<p>Click on <strong>Finish</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-175.png" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Click Finish</strong></em></p>
<p>Congrats - you've successfully installed VS Code/VS Code Insiders on your system. Now, cheers! 🥂</p>
<h2 id="heading-how-to-prepare-vs-codevs-code-insiders-for-c-and-c-code">How to Prepare VS Code/VS Code Insiders For C and C++ Code</h2>
<p>First, open VS Code or VS Code Insiders.</p>
<p>Go to the Extension tab. Search for "C" or "C++" and install the first one that is already verified by Microsoft itself.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-178.png" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Install C/C++ extension</strong></em></p>
<p>Also, install <strong>C/C++ Extension Pack</strong>. It should also be verified by Microsoft.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-179.png" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Install C/C++ Extension Pack</strong></em></p>
<p>Then you have to search for <strong>Code Runner</strong> and install the extension as well.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-180.png" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Install Code Runner Extension</strong></em></p>
<p>Now, we need to change some settings.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-177.png" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Change some settings</strong></em></p>
<p>Click the <strong>gear</strong> box (It is called the Manage section), and then click <strong>Settings</strong>. Alternatively, you can also use the shortcut keys <code>Ctrl</code> + <code>,</code>. You need to replace the <code>Ctrl</code> key with the Command key for Mac.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-182.png" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Type "Run code in terminal" and press Enter key</strong></em></p>
<p>In the search bar, type "Run code in terminal" and press the Enter key.</p>
<p>Scroll down a little bit until you find <code>Code-runner: Run In Terminal</code>. Make sure that the box is checked (✔).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-184.png" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Make sure to check the box</strong></em></p>
<p>Now you need to restart your VS Code/VS Code Insiders. Simply close and reopen the program.</p>
<h2 id="heading-how-to-test-your-code">How to Test Your Code</h2>
<p>Simply open VS Code/VS Code Insiders, open any folder, and create any file with the extension <code>.c</code> for the C file and <code>.cpp</code> for the C++ file. </p>
<p>After writing your code, you can run the code directly using the play button you'll find in the upper right corner.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-185.png" alt="Image" width="600" height="400" loading="lazy">
<em><strong>This is how you can run any C/C++ program from VS Code/Insiders</strong></em></p>
<p>It will compile and then run the code directly. After running a code, the code runner button would be set default to run directly. So, your computer is 100% ready for compiling and running any C/C++ programming code.  😀</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Thanks for reading the entire article. If it helps you then you can also check out other articles of mine at <a target="_blank" href="https://www.freecodecamp.org/news/author/fahimbinamin/">freeCodeCamp</a>.</p>
<p>If you want to get in touch with me, then you can do so using <a target="_blank" href="https://twitter.com/Fahim_FBA">Twitter</a>, <a target="_blank" href="https://www.linkedin.com/in/fahimfba/">LinkedIn</a>, and <a target="_blank" href="https://github.com/FahimFBA">GitHub</a>. </p>
<p>You can also <a target="_blank" href="https://www.youtube.com/@FahimAmin?sub_confirmation=1">SUBSCRIBE to my YouTube channel</a> (Code With FahimFBA) if you want to learn various kinds of programming languages with a lot of practical examples regularly.</p>
<p>If you want to check out my highlights, then you can do so at my <a target="_blank" href="https://www.polywork.com/fahimbinamin">Polywork timeline</a>.</p>
<p>You can also <a target="_blank" href="https://fahimbinamin.com/">visit my website</a> to learn more about me and what I'm working on.</p>
<p>Thanks a bunch!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Debug Dockerized .NET Core Apps in VS Code ]]>
                </title>
                <description>
                    <![CDATA[ By Haseeb Ahmed I recently switched to VS Code for development of a dockerized .NET core app. But I then realized that there weren't many up-to-date articles about debugging dockerized .NET core applications in VS Code. Source: GIPHY So, here I am, ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-debug-dockerized-net-core-apps-in-vs-code/</link>
                <guid isPermaLink="false">66d461498812486a37369d66</guid>
                
                    <category>
                        <![CDATA[ debugging ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Docker ]]>
                    </category>
                
                    <category>
                        <![CDATA[ .NET ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 08 Sep 2022 15:34:10 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/09/debug_dockerized_dotnet_core_apps-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Haseeb Ahmed</p>
<p>I recently switched to VS Code for development of a dockerized .NET core app. But I then realized that there weren't many up-to-date articles about debugging dockerized .NET core applications in VS Code.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/09/image-217.png" alt="Image" width="600" height="400" loading="lazy">
<em>Source: GIPHY</em></p>
<p>So, here I am, writing this article. I hope that it'll help others like myself in debugging their dockerized .NET core applications in VS Code. </p>
<p>In this article we will discuss the following:</p>
<ol>
<li>VS Code extensions for Docker</li>
<li>VS Code launch configurations</li>
<li>How to debug .NET core apps on your local Docker</li>
</ol>
<h1 id="heading-vs-code-extensions-for-docker">VS Code Extensions for Docker</h1>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/09/image-218.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Although no extension is really required (for you hardcore minimalists) to debug containerzied .NET core applications, I'd still recommend that you install the <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker">Docker extension</a> by Microsoft. It will make it easy to create, manage, and debug containerized applications from right within VS Code. </p>
<p>Honestly, ever since I've started using the extension, I don't use the Docker Desktop anymore.</p>
<h1 id="heading-vs-code-launch-configurations">VS Code Launch Configurations</h1>
<p>Now, in order to debug dockerized .NET Core applications, we will need to create a VS code launch configuration. </p>
<p>In this section, I'll talk about two sorts of launch configurations: one for docker run and the other for docker compose. </p>
<p>Later on, we'll also look into the final launch configurations and understand them so that we know what we're doing.</p>
<h2 id="heading-docker-run-launch-configuration">Docker Run Launch Configuration</h2>
<p>If you installed the Docker extension by Microsoft, this should be easy.</p>
<p>First, press "Ctrl + P" in VS code and type in <code>&gt; Docker:</code></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/09/image-221.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Next, select "Docker: Initialize for Docker Debugging".</p>
<p>Then select ".NET: ASP.NET Core" as your application platform. Select "Linux" as your operating system.</p>
<p>And voilà! You should now have a "Docker .NET Core Launch" launch configuration.</p>
<p>Note that Docker extension will want to overwrite your existing dockerfile. If you don't let it, it won't create the launch configurations. I'd recommend that you backup your dockerfile, let the extension overwrite it, and then restore your original file.</p>
<h2 id="heading-docker-compose-launch-configurations">Docker Compose Launch Configurations</h2>
<p>Now we all know that real-life applications are never that simple! You would probably have a DB container, an app container, and a few other containers all connected together via a docker-compose configuration. </p>
<p>If that is the case, here is how you'll create your launch configurations.</p>
<p>First, open your workspace in VS Code. If you already have existing launch configurations, you can skip the next part.</p>
<p>Next, press "Ctrl + Shift + D" to switch to the "Run &amp; Debug Tab".</p>
<p>Click on "create a launch.json file" and choose ".NET 5+ and .NET Core" (This will create a basic launch configuration for running your application without Docker).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/09/image-222.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Now, while your launch.json file is open, click on Add Configuration button in the bottom right corner of the editor.</p>
<p>Select "Docker: .NET Core Attach (Preview)" from the opened dropdown.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/09/image-229.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>It should have added a new configuration called "Docker: .NET Core Attach (Preview)".</p>
<p>Voilà! Now you're ready to debug your dockerized .NET Core application in VS Code.</p>
<h2 id="heading-how-to-understand-launch-configurations">How to Understand Launch Configurations</h2>
<p>Before we start debugging our application, let's look into the launch configurations a bit closer to understand how they work. </p>
<p>There should be two files in the .vscode folder, in the root of your workspace. </p>
<pre><code class="lang-json">{
    <span class="hljs-attr">"version"</span>: <span class="hljs-string">"2.0.0"</span>,
    <span class="hljs-attr">"tasks"</span>: [
        {
            <span class="hljs-attr">"type"</span>: <span class="hljs-string">"docker-build"</span>,
            <span class="hljs-attr">"label"</span>: <span class="hljs-string">"docker-build: debug"</span>,
            <span class="hljs-attr">"dependsOn"</span>: [
                <span class="hljs-string">"build"</span>
            ],
            <span class="hljs-attr">"dockerBuild"</span>: {
                <span class="hljs-attr">"tag"</span>: <span class="hljs-string">"webapi:dev"</span>,
                <span class="hljs-attr">"target"</span>: <span class="hljs-string">"base"</span>,
                <span class="hljs-attr">"dockerfile"</span>: <span class="hljs-string">"${workspaceFolder}/src/Dockerfile"</span>,
                <span class="hljs-attr">"context"</span>: <span class="hljs-string">"${workspaceFolder}"</span>,
                <span class="hljs-attr">"pull"</span>: <span class="hljs-literal">true</span>
            },
            <span class="hljs-attr">"netCore"</span>: {
                <span class="hljs-attr">"appProject"</span>: <span class="hljs-string">"${workspaceFolder}/src/webapi.csproj"</span>
            }
        },
        {
            <span class="hljs-attr">"type"</span>: <span class="hljs-string">"docker-run"</span>,
            <span class="hljs-attr">"label"</span>: <span class="hljs-string">"docker-run: debug"</span>,
            <span class="hljs-attr">"dependsOn"</span>: [
                <span class="hljs-string">"docker-build: debug"</span>
            ],
            <span class="hljs-attr">"dockerRun"</span>: {},
            <span class="hljs-attr">"netCore"</span>: {
                <span class="hljs-attr">"appProject"</span>: <span class="hljs-string">"${workspaceFolder}/src/webapi.csproj"</span>,
                <span class="hljs-attr">"enableDebugging"</span>: <span class="hljs-literal">true</span>
            }
        }
    ]
}
</code></pre>
<p>First, let's take a look at the tasks.json file. This file has list of tasks that might be required by some of the launch configurations to launch the application properly.</p>
<p>The task we want to look at is "docker-run: debug". This is the task called when you launch using the "Docker .NET Core Launch" configuration (as we'll see later).</p>
<p>This task has three properties that we need to understand:</p>
<ul>
<li>netCore.appProject: This property is .NET Core app-specific and just points to the project file of your app.</li>
<li>netCore.enableDebugging: This is another .NET Core app-specific property which tells VS code to launch the app with debugging capabilities.</li>
<li>dependsOn: This is a generic property that defines if a task depends on other tasks for its execution.</li>
</ul>
<p>Secondly, we need to understand what the "docker-build: debug" task does. </p>
<p>In addition to the netCore and dependsOn properties, it has a dockerBuild object that controls the <code>docker build</code> command which is run by VS Code to launch a docker run app. </p>
<p>Properties of the dockerBuild object are quite similar to the arguments that you pass to the <code>docker build</code> command.</p>
<p>You can read about all the dockerBuild object properties <a target="_blank" href="https://code.visualstudio.com/docs/containers/reference#_dockerbuild-object-properties">here</a> and tasks in general <a target="_blank" href="https://code.visualstudio.com/docs/editor/tasks">here</a>.</p>
<pre><code class="lang-json">{
  <span class="hljs-attr">"version"</span>: <span class="hljs-string">"0.2.0"</span>,
  <span class="hljs-attr">"configurations"</span>: [
    {
      <span class="hljs-attr">"name"</span>: <span class="hljs-string">"Docker .NET Core Attach"</span>,
      <span class="hljs-attr">"type"</span>: <span class="hljs-string">"docker"</span>,
      <span class="hljs-attr">"request"</span>: <span class="hljs-string">"attach"</span>,
      <span class="hljs-attr">"platform"</span>: <span class="hljs-string">"netCore"</span>,
      <span class="hljs-attr">"sourceFileMap"</span>: {
        <span class="hljs-attr">"/src"</span>: <span class="hljs-string">"${workspaceFolder}/src"</span>
      }
    },
    {
      <span class="hljs-attr">"name"</span>: <span class="hljs-string">"Docker .NET Core Launch"</span>,
      <span class="hljs-attr">"type"</span>: <span class="hljs-string">"docker"</span>,
      <span class="hljs-attr">"request"</span>: <span class="hljs-string">"launch"</span>,
      <span class="hljs-attr">"preLaunchTask"</span>: <span class="hljs-string">"docker-run: debug"</span>,
      <span class="hljs-attr">"netCore"</span>: {
        <span class="hljs-attr">"appProject"</span>: <span class="hljs-string">"${workspaceFolder}/src/webapi.csproj"</span>
      }
    }
  ]
}
</code></pre>
<p>Now, let's take a look at the launch.json file where all the launch configurations live. </p>
<p>While most of these properties are standard, the one we care about is "sourceFileMap" in the "Docker .NET Core Attach" configuration. </p>
<p>In order to debug .NET Core applications that were built on a machine other than the VS Code machine (in this case a Docker), VS Code needs to understand how-to map your current workspace to the build machine hierarchy. </p>
<p>For example, if my project was built from the "/src" folder in Linux, this property will tell VS Code to replace "/src" with "${workspaceFolder}/src" in all the filepaths. In case this mapping is incorrect, VS Code will hit the breakpoint but will give an error that the file (being debugged) does not exist.</p>
<p>You can read more about launch.json properties in detail over <a target="_blank" href="https://code.visualstudio.com/docs/editor/debugging#_launchjson-attributes">here</a>.</p>
<h1 id="heading-how-to-debug-net-core-apps-on-your-local-docker">How to Debug .NET Core Apps on Your Local Docker</h1>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/09/image-230.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-docker-run">Docker Run</h2>
<p>Now that we have the launch configurations figured out, this should be easy! Just follow the steps below.</p>
<p>First, press "Ctrl + Shift + D" to switch to the "Run &amp; Debug Tab".</p>
<p>Then choose "Docker .NET Core Launch" and press the green play icon to debug.</p>
<h2 id="heading-docker-compose">Docker Compose</h2>
<p>Debugging a Docker Compose container is slightly different. You'll have to make sure that your Docker Compose containers are already running before you attach the VS Code debugger. </p>
<p>Once they are up, follow these steps:</p>
<p>First, press "Ctrl + Shift + D" to switch to the "Run &amp; Debug Tab".</p>
<p>Then choose "Docker: .NET Core Attach (Preview)" and press the green play icon to debug.</p>
<p>That is, it! I hope you found this helpful. If you have any questions or are confused about anything, you can reach out to me or you can check out the sample project on <a target="_blank" href="https://github.com/thehaseebahmed/vscode-dotnet-docker-debug">GitHub</a>.</p>
<p>Happy Coding!</p>
<p>This article is a part of my <a target="_blank" href="https://blog.thehaseebahmed.com/series/coding">coding series</a>. You may find other useful articles for your daily development there as well.</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[ Git Best Practices – How to Write Meaningful Commits, Effective Pull Requests, and Code Reviews ]]>
                </title>
                <description>
                    <![CDATA[ As developers we push regular code commits – and after a while, it's almost second nature to us.  But does this mean we're doing things right? Familiarity often leads to sloppiness and overlooking the basics. In this article, we will explore How to ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/git-best-practices-commits-and-code-reviews/</link>
                <guid isPermaLink="false">66bb888dc32849d18c5cdca5</guid>
                
                    <category>
                        <![CDATA[ best practices ]]>
                    </category>
                
                    <category>
                        <![CDATA[ code review ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                    <category>
                        <![CDATA[ version control ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Grant Riordan ]]>
                </dc:creator>
                <pubDate>Fri, 05 Aug 2022 15:45:03 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/08/resized-image-Promo--2-.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>As developers we push regular code commits – and after a while, it's almost second nature to us. </p>
<p>But does this mean we're doing things right? Familiarity often leads to sloppiness and overlooking the basics.</p>
<p>In this article, we will explore</p>
<ul>
<li>How to write meaningful Git commit messages</li>
<li>How to create efficient pull requests (PR)</li>
<li>How to get really good at the code review process and some best practices to follow</li>
</ul>
<h3 id="heading-pre-requisites">Pre-Requisites:</h3>
<p>I prefer to use VS Code as my code editor. I use this for my Git editor too. I find it easier to write commit messages within the same place as I code. It also gives me more space to write commit messages and descriptions.</p>
<p>If you haven't already done this, follow these steps to make VS Code your default git editor.</p>
<ol>
<li>Open VS Code and in the command palette search for </li>
</ol>
<blockquote>
<p>Shell Command: Install 'code' command to PATH</p>
</blockquote>
<ol start="2">
<li>Then run the following command in your terminal:</li>
</ol>
<p><code>git config --global core.editor "code --wait"</code></p>
<p>Now when you run <code>git commit</code> or <code>git -config --global -e</code> it will open the Git editor within a file in VS Code.</p>
<p><strong>Note:</strong> All given commands are to be run within the terminal (whether that be your terminal of choice, or the integrated terminal within VS Code).</p>
<h2 id="heading-how-to-write-meaningful-commit-messages">How to Write Meaningful Commit Messages</h2>
<p>When committing your code, it's helpful to write useful commit messages. Here are some tips and best practices to help you do so.</p>
<h3 id="heading-use-imperative-commands">Use Imperative Commands</h3>
<p>Prefix your commit messages with <a target="_blank" href="https://www.grammar-monster.com/glossary/imperative_mood.htm">imperative commands</a> such as: <code>fix</code>, <code>refactor</code>, <code>add</code>, and <code>remove</code></p>
<p>This is because you should be able to suffix a commit message to the phrase </p>
<blockquote>
<p>"If applied, this code will..." </p>
</blockquote>
<p>and inform other developers what it will do, for example:‌</p>
<blockquote>
<p>If applied, this code will fix issue with login button not showing</p>
</blockquote>
<h3 id="heading-keep-it-brief">Keep It Brief</h3>
<p>You're not writing a monologue, so keep it brief. As a general rule, a commit message should not exceed 50 characters.</p>
<p>Put yourself in the developer's or reviewer's shoes. Try and think about what you would want to know if you were looking at the Git log on this repo.</p>
<ul>
<li>What work did you complete?</li>
<li>Why did you do it?</li>
<li>What effect does it have on the code base?</li>
</ul>
<p>Here's an example of a concise yet informative commit message:</p>
<pre><code>fix issue <span class="hljs-keyword">with</span> login button not showing
</code></pre><h3 id="heading-how-to-keep-commit-messages-short-but-helpful">How to Keep Commit Messages Short but Helpful</h3>
<p>Within your commits, you can include a commit description, allowing us to add even more detail / context as to what you did.</p>
<p>Add an empty line underneath the commit message, and begin writing a description on line 3. It looks like this:</p>
<pre><code>fix issue <span class="hljs-keyword">with</span> login buttton not showing

- update login form validation
- update login styling <span class="hljs-keyword">for</span> showing the button
</code></pre><p>Now when other devs are reviewing Git logs, commits, or needing to revert code they have a better indication of what effect will take place, and whether it will cause any breaking changes.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/08/image-29.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-examples-of-unhelpful-commit-messages">Examples of Unhelpful Commit Messages</h3>
<p>On the other hand, here are some examples of ineffective commit messages:</p>
<ul>
<li><code>fixed bug</code> – There is no reference to what bug has been fixed exactly, so it adds no value to the git history / logs. It will make reviewing previous commits extremely difficult, and painstaking. As a developer you would have to open each commit like this to understand what it's actually doing.</li>
<li><code>refactored due to PR comments</code> – This message gives us no information about what was changed. We would have to hunt down the pull request to gather any context around the changes made, or again open up the commit.</li>
<li><code>fixing previous commit</code> – Lack of context again</li>
<li><code>made tests pass</code> – Which test file was updated? You should at least give the name or area of tests that have been fixed.</li>
</ul>
<p>All of these are poor examples of commit messages due to their ambiguity,  lack of information, and lack of context. They force team members to do more work in order to understand what's going on, which is not acceptable in any team.</p>
<h2 id="heading-how-to-develop-a-commit-strategy">How to Develop a Commit Strategy</h2>
<p>You may think committing code is as straightforward as just committing and pushing the code. But there's a little more to it than that.</p>
<p>Let's talk about how you can develop a useful commit strategy to stay consistent and make useful commits.</p>
<h3 id="heading-make-small-specific-commits">Make small, specific commits</h3>
<p>Smaller commits make it easier to revert code to a previous state if there's a problem. If your commit affects too many areas, reverting back could mean losing a lot of code. </p>
<p>It's also far easier for reviewers to understand what the code is doing if it's related to one purpose. </p>
<p>Let's see a real life example of how this would work. Firstly we need to add our related file changes. We can view which files have been changed within our branch by running <code>git status</code></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/08/Screenshot-2022-08-01-at-23.28.59.png" alt="Image" width="600" height="400" loading="lazy">
<em>Example of output from git status</em></p>
<p>As you can see there are various files that have been changed / added to the project. However, they're all for different areas of the project. Following the golden rule of keeping commits small and relatable, let's take a look at how we can put that into practice.</p>
<p>Using the <code>git add</code> followed by the file names we can commit only the files which are related. We do this by using the <code>git add</code> command , plus the names of the files we wish to add one after another like so:</p>
<pre><code>git add login.test.ts login.ts
</code></pre><p>If we check <code>git status</code> now, we'll see the two staged files:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/08/Screenshot-2022-08-01-at-23.34.35.png" alt="Image" width="600" height="400" loading="lazy">
<em>Example of Git status output after staging files</em></p>
<p>We have the files, now to create our commit. As always, we'll utilise <code>git commit</code> which will open the git editor within VS Code (as we set it up like this earlier). If you skipped this step, the commit will open in your preferred editor.</p>
<p>We'll add a commit message of the changes:</p>
<pre><code>Fix issue <span class="hljs-keyword">with</span> login buttton not showing
</code></pre><p>There you have it, a small related file commit. The commit message tells us exactly what we've done, where the issue resided, along with some small context of what the issue was.</p>
<h3 id="heading-bad-example-of-a-commit">Bad Example of a Commit</h3>
<p>Since we've done it successfully, lets take a look at a bad example:</p>
<p>So imagine we've done all this work, and the developer has staged all the files at once, using the <code>git add -A</code> command which stages <strong>all</strong> changed/added files.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/08/Screenshot-2022-08-01-at-23.45.26.png" alt="Image" width="600" height="400" loading="lazy">
<em>Example of multiple unrelated files staged for commit</em></p>
<p>They now create a commit message utilising the one liner Git command:</p>
<pre><code>git commit -m <span class="hljs-string">'Updated various areas such as validation, registration and products pages'</span>
</code></pre><h4 id="heading-why-is-this-so-bad">Why is this so bad?</h4>
<ol>
<li>Firstly there's too much happening within this commit. Too many files mean that if we need to revert the validation changes, only we can't. We'd have to revert the whole commit losing the products and registration changes.</li>
<li>The commit message is lengthy. We can remove unnecessary words like 'various areas such as'.  It adds no value to the commit message, and takes up characters that could be used for more context.</li>
<li>We're not using the imperative voice as mentioned earlier. We should change "Updated" to  'Update'. </li>
</ol>
<blockquote>
<p>If applied, this code will fix the submit button not showing on the login </p>
</blockquote>
<h3 id="heading-midway-recap">Midway Recap</h3>
<p>So at this point, we've learnt:</p>
<ul>
<li>How to formulate a useful commit message</li>
<li>How to formulate an effective commit strategy to allow us to easily keep track of related changes, and a more maintainable code base.</li>
<li>What makes a bad commit</li>
</ul>
<h2 id="heading-how-to-create-efficient-pull-requests">How to Create Efficient Pull Requests</h2>
<h3 id="heading-decide-when-to-push">Decide when to push</h3>
<p>Pushing is the act of getting your commits up to the server / remote origin ready to create a Pull Request (PR). I recommend pushing as soon as the current feature or bug is done. </p>
<p>Also, it's a good idea to keep your PR's small, containing only related commits. As an example if you had the following commits:</p>
<ul>
<li><code>Add new product search component</code></li>
<li><code>Add unit tests for product search component</code></li>
<li><code>Add documentation for product search component</code></li>
</ul>
<p>Because all these commits are related to the same component, it's recommended to pull them together into one PR.  </p>
<p>Whereas, something like:</p>
<ul>
<li><code>Fix bug within login screen</code></li>
<li><code>Refactor registration page for performance</code></li>
<li><code>Update validation tests for login form</code></li>
<li><code>Update login tests for forgotten password</code></li>
<li><code>Update unit tests for product search component</code></li>
</ul>
<p><strong>Should not</strong> go in the same PR, as there's far too much going on. These commits should have been grouped into several PR's containing relevant commits at the time.  </p>
<p>If this was the Git log for a branch, you would be unable to create a pull request with solely relatable files, due to the order in which the commits have been created, as you can't simply inform Git that you want commits 1,3 and 4 to go into this PR.</p>
<h3 id="heading-keep-it-small">Keep it small</h3>
<p>Remember – like your commits, keep your PR's small. Nobody wants to wade their way through a 50+ file pull request. All that'll happen then is that your review will suffer from the common "Looks good to me". </p>
<p>When you create a large PR, it translates to "<em>I</em> c<em>ouldn't be bothered to look through all these files, but skimming through them it looks ok</em>". With a smaller PR, on the other hand, it means exactly what it says.</p>
<p>Sometimes large pull requests are unavoidable, like when updating base functions and such. However, you should try to be aware of how you can limit the impact on other developers.</p>
<h2 id="heading-how-to-get-your-branch-ready-for-code-review">How to Get Your Branch Ready For Code Review</h2>
<p>The exact process of creating a Pull Request will differ depending on which version control hosting platform you are using, but the concepts are the same.</p>
<p>First, you should check out the <code>main</code> branch from your repo. Then run a <code>git pull</code>, which will get all the latest code from <code>main</code> onto your local dev system.</p>
<p>Once you've done that, you can go back to your own branch using <code>git checkout</code> and the name of your branch , for example <code>git checkout login-fixes</code>.</p>
<p>Now we need to get the <code>main</code> branch code into ours. We can do this utilising the <code>git merge</code> command.</p>
<pre><code>git merge main
</code></pre><p>If there were changes, that is there were files in the pull from main, you will need to create a "merge commit". That's just another commit to your own branch containing the merged changes. </p>
<p>Simply create another commit, with a message explaining you've merged from main like so:</p>
<p><code>git commit -m 'Merge main into login-fixes'</code></p>
<p>Push your changes back to the remote server using <code>git</code> </p>
<h2 id="heading-how-to-create-the-pull-request">How to Create the Pull Request</h2>
<p>The easiest way to do this is via the web interface on your preferred version control platform. In this example we'll be utilising GitHub.</p>
<p>Simply navigate to your repo, and then click the Pull Requests tab.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/08/image-21.png" alt="Image" width="600" height="400" loading="lazy">
<em>Pull Requests Tab - GitHub</em></p>
<p>Select "New pull request"</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/08/image-22.png" alt="Image" width="600" height="400" loading="lazy">
<em>New Pull Request - Github</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/08/image-24.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>When you're creating a pull request, use a title which describes the PR like you did with your commit. </p>
<p> <code>PR - Fix login button not showing</code>.</p>
<p>It can be useful to provide the reviewers with some context as to why this PR was necessary, or any additional info within the PR description. </p>
<p>As you can see above, I've chosen to include what the fix was, potentially making the review smoother. I've also included some important information regarding that this PR should not be merged until another PR is merged.</p>
<p>When working for some companies, they may require you to add a ticket reference to the PR title too, but I've already discussed why I think this is not needed.</p>
<h3 id="heading-pr-labels">PR Labels</h3>
<p>If you want to make it even clearer, you can utilise PR Labels. These are labels which can be applied to the PR to illustrate either the state of the PR, or simple information to others. You can find them on the right of the pull request page:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/08/image-26.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can select from pre-defined labels, or add your own. </p>
<ul>
<li>Click on Labels </li>
<li>Enter the label you wish to use. In our scenario we're going to add a label called <code>Do Not Merge</code>.</li>
<li>Press enter once you have typed in the value, and you can configure the label's colour and name. Once saved you can now type it in again and it will show within the list.</li>
<li>Select your new label and voilà!</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/08/image-27.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Click Create pull request</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/08/image-28.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>There you have it, you have created your first pull request.</p>
<h2 id="heading-how-to-review-a-pr-best-practices">How to Review a PR – Best practices</h2>
<h3 id="heading-what-to-look-for-when-reviewing-a-pr">What to look for when reviewing a PR</h3>
<p>Always take a step back and think about the key elements of a good code review. Here are some points to consider:</p>
<ul>
<li>Does the code follow your team's coding guidelines?</li>
<li>Does the code meet its objective / acceptance criteria?</li>
<li>Is the code legible and is it easy to understand what it's doing without the need for heavy comments / documentation? (This one for me is one of the most important, as I'm a huge fan of descriptive function and variable names.)</li>
<li>Does the code need any refactoring, considering security, performance or simply ease of reading?</li>
<li>Does the code follow simple design patterns / principles, like the single responsibility, abstraction, encapsulation, and so on? If not, you can make suggestions on how this can be achieved or perhaps teach those not familiar with it what it means and the benefits.</li>
<li>Are there any "magic numbers / strings" that would be better served as a constant or named variable?</li>
</ul>
<h3 id="heading-review-prs-in-a-timely-manner">Review PRs in a timely manner</h3>
<p>While you shouldn't necessarily feel obligated to look at a PR immediately, don't leave the author hanging, either. This PR could be blocking future work, or it could be important (if this is the case, the author should make this clear).</p>
<p>Try and keep discussions and PR comments flowing. If it makes it easier, you can jump on a call (if remote) or pull up a chair in the office and go through the PR together. This might speed up the process, and reduce the back and forth waiting around.</p>
<p>All this being said, don't rush the code review. Be meticulous, and read each file and change carefully. I advise you to pull down the branch the changes are made on, allowing yourself to look over the entire project, and not just the lines changed.</p>
<p>Many times, if you're looking at just one or two line code changes, you won't know exactly what the code is supposed to be doing. But if you look at the whole file you can follow the flow.</p>
<p>If you're using VS Code and GitHub, you can utilise their own <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github">extension</a> for viewing pull requests and viewing comments whilst checking out the PR branch all within VS Code itself.</p>
<h3 id="heading-were-all-human-here">We're all human here</h3>
<p>Remember that we're all human, and people often make mistakes when coding and can simply overlook things. </p>
<p>Not everyone codes the same way you do either, so don't simply request changes just because they've done it differently to how you would have. It doesn't mean that they've done it wrong, nor does it mean your way is the best.</p>
<h3 id="heading-describe-changes-clearly-and-word-your-comments-carefully">Describe changes clearly and word your comments carefully</h3>
<p>A pull request is not an exam, it is also not an opportunity for you to harshly criticise someone's work. It's a learning opportunity, and a chance to ensure the best code makes it into the main branch. It's about code quality and whether the code meets the acceptance criteria.</p>
<p>Think about the language you use when making suggestions. A PR comment is the opposite to a git commit message. No longer do we use the imperative voice. Do not command them to make changes, but instead make softer suggestions using the <a target="_blank" href="https://www.grammar-monster.com/glossary/subjunctive_mood.htm">subjunctive</a> mood instead. </p>
<p>As you're critiquing work that someone has most likely put a lot of effort into, use phrases like:</p>
<blockquote>
<p>It it were me, I'd change this if statement to a switch case statement as it's more readable.</p>
</blockquote>
<p>or </p>
<blockquote>
<p>Perhaps consider renaming this variable to a more intuitive name, such as {alternative} to make it more understandable from initial read what it's doing.</p>
</blockquote>
<p>As above, try and add your reasoning as to why you're making the change request. It will make the request more impactful, and allow the author to reflect on whether it would be best to make the change, or perhaps spark a discussion to come to a compromise.</p>
<h3 id="heading-offer-suggestions-for-improvement">Offer suggestions for improvement</h3>
<p>Most Git systems allow you to click on the line you wish to be changed and add a comment so it's much simpler to specify the exact line of code you want changed.</p>
<p>Hosting providers such as GitHub have a "suggestion" feature which allows you to add a code suggestion directly into the comment, which can instantly be accepted and committed from within the PR.</p>
<p>If this isn't available, be sure to make sure what you're requesting is clear and concise. Perhaps even rewrite, or write out your suggestion within the comment such as:</p>
<blockquote>
<p>Perhaps look at changing this if / else statement to a ternary statement like so:</p>
</blockquote>
<p><code>var backgroundColor = isError ? 'red' : 'blue'</code></p>
<p>This makes the suggestion clear, and even speeds up the process of re-writing (using copy and paste).</p>
<h3 id="heading-dont-be-afraid-to-defend-your-code">Don't be afraid to defend your code</h3>
<p>Remember a PR is a discussion. It's a two way process, giving you the opportunity to defend your code and explain with more context what you were thinking. </p>
<p>Just because the code may not look perfect, there may be a reason. There may have been matters out of your control which you had to contend with, forcing your hand to writing it in a certain way.</p>
<p>Don't be afraid to offer counter arguments, but be ready with valid reasoning, if you truly believe in your solution.</p>
<h3 id="heading-communicate-that-the-pr-is-approved">Communicate that the PR is approved</h3>
<p>Many people nowadays filter their GitHub or version control email notifications to a folder which rarely gets looked at due to the volume of updates on repos, commits, branches and such.</p>
<p>To speed up the process, and make it more fun for the author, simply drop them a message. Many companies now offer some form of instant messaging service, so why not use it?</p>
<p>Setup a specific channel on your IM platform for PR's. Post in the channel / chat room your PR link, and allow reviewers to update you on their progress by replying within threads. Add an emoji to make it more light hearted (as we all know PR's can be boring, so why not spruce them up a bit).</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>In this article we've learned:</p>
<ul>
<li>How to setup VS Code with Git integration</li>
<li>How to write useful Git commit messages</li>
<li>When to commit to make it easier for the team</li>
<li>How to effectively code review a PR</li>
<li>How to handle PRs in a manner that helps all your team.</li>
</ul>
<p>I hope you've learned something new, thanks for reading my article</p>
<p>Feel free to connect with me on Twitter <a target="_blank" href="https://twitter.com/gweaths">@gWeaths</a></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Set Up a Rasa Development Environment in Sagemaker Studiolab with VS Code ]]>
                </title>
                <description>
                    <![CDATA[ By Sijil Salim Last week, I was excited to dive into chatbot development with the open-source framework Rasa. With Rasa, you get a ton of flexibility, from designing the conversation to developing the NLU logic to deployment.  But the "Yay" soon tran... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/getting-started-with-rasa-with-studiolab-and-vscode/</link>
                <guid isPermaLink="false">66d460eeb3016bf139028d92</guid>
                
                    <category>
                        <![CDATA[ AWS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Machine Learning ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 21 Jun 2022 16:06:02 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/06/fcc_coverimage.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Sijil Salim</p>
<p>Last week, I was excited to dive into chatbot development with the open-source framework <a target="_blank" href="https://rasa.com/">Rasa</a>. With Rasa, you get a ton of flexibility, from designing the conversation to developing the NLU logic to deployment. </p>
<p>But the "<em>Yay</em>" soon transformed into banging my head against a brick wall. The initial Rasa bot itself started crashing on my not-so-bad laptop with 4 cores and 16GB RAM. </p>
<p>I had to find some other platform where I could do my development, but I didn't want to spend any money toying around with open-source frameworks. To be precise, what I really needed was a free Machine Learning experimentation platform with VS Code support.</p>
<p>I am going to take you through how I solved these challenges with completely free cloud-based platforms.</p>
<p>I found <a target="_blank" href="https://aws.amazon.com/sagemaker/studio-lab/">AWS Sagemaker Studiolab</a> to be a solid choice to run my Rasa machine learning workloads. It is free, has 15 GB persistent storage, and has 12-hour CPU sessions for complex algorithms or 4-hour GPU sessions for deep learning algorithms.  </p>
<p>Sagemaker also offers a Jupyterlab server, not a development IDE platform. I desperately needed my favourite VS Code interface, which is how I stumbled upon Github Codespaces. </p>
<p>Codespaces provides a cloud-based VS Code environment but it cannot run compute intensive jobs like ML training. So I needed a "best of both worlds" approach. I needed VScode in Studiolab. </p>
<p>Code-server to the rescue! Code-server is a python library which helps you set up a VS Code server on a machine. </p>
<h2 id="heading-tools-we-will-be-using">Tools we will be using</h2>
<ul>
<li>AWS Sagemaker Studiolab</li>
<li>Conda</li>
<li>Rasa</li>
<li>Code-server for VScode</li>
</ul>
<h2 id="heading-conda-environment-setup">Conda Environment Setup</h2>
<p>Let's see how we can connect all these together. We'll start off by creating an empty folder in Studiolab and running the below commands inside that folder:</p>
<pre><code>conda create --name rasa-env python==<span class="hljs-number">3.8</span>  
conda activate rasa-env  

python -m pip uninstall pip  
python -m ensurepip  
python -m pip install -U pip  

python -m pip install --upgrade setuptools  
python -m pip install rasa
</code></pre><p>These commands will create a new Conda environment in Studiolab named rasa-env and install Rasa in it.  You can also run <code>conda install openssh</code> if you want SSH access to Git. </p>
<p>To install the VS Code server in this Conda environment, execute the command <code>conda install -y -c conda-forge code-server</code>. Now, you have your own Conda environment with Rasa, code-server and OpenSSH installed. </p>
<p>Of course, we will be maintaining the Rasa code in a Git repository. If someone wishes to pull down the repo, we don't want that person to go through the same hassle of creating the environment, right?. </p>
<p>To make their life easier, we will generate an environment.yml file, which is the Conda equivalent of requirements.txt, using the command <code>conda env export --file environment.yml</code>. Using this file, you can recreate the environment by running <code>conda env create -n rasa-env -f environment.yml</code>.</p>
<h2 id="heading-vscode-setup">VScode Setup</h2>
<p>Now that we have the environment setup out of our way, we can launch the VS Code server in a new tab and kick off with our Rasa development. </p>
<p>To launch the VS Code server, open a new terminal in Studiolab and execute  <code>code-server --auth none</code>. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/image-91.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>The above image shows the logs generated after running the code-server command. You can start code-server with authentication as well, which will allow only those who have the password to access the VS Code server.</p>
<p>Copy the URL of your Studiolab environment, which will look something like <em>https://xxxxxxxxxxxxxxxxxx.studio.us-east-2.sagemaker.aws/studiolab/default/jupyter/lab</em> and replace the <em>/lab</em> in the end with <em>/proxy/8080/</em> to create the VS Code server URL. </p>
<p>Enter this new URL in a separate tab to navigate to the VS Code running in Studiolab. Wait for 3-5 mins for the server to come up. Once the server is up, we will see that the text in the terminal of VS Code is blurred. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/image-88.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>To rectify this, turn off gpu acceleration for VS Code terminal using the VS Code setting <code>terminal.integrated.gpuAcceleration</code>. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/image-89.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-rasa-development">Rasa Development</h2>
<p>Finally, activate the rasa-env Conda environment by running <code>conda activate rasa-env</code> to activate our Rasa environment for development.</p>
<p>Let's get our hands dirty with Rasa now. To initialize a sample Rasa project, run <code>rasa init</code> in the folder. Once the initialization is done, we will have the code for a basic bot in the folder. </p>
<p>Next, we have to generate the NLU model for the bot. <code>rasa train</code> will generate the model and dump it in the models subfolder in .tar.gz format. </p>
<p>Now, the moment of truth – run <code>rasa shell</code>. If everything goes well, we should have our bot up and running in the VS Code server, which in turn is running in the Studiolab runtime.</p>
<p>Do not forget to clean up everything after you are done by stopping the VS Code server in the Studiolab runtime and finally stopping the runtime itself.</p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>Thats it! You have your very own, completely free, cloud-based chatbot development environment where you can run compute intensive workloads via the VS Code interface. </p>
<p>If you learned something new or enjoyed reading this article, please share it so that others can see it. Until then, see you in the next post!</p>
<p>You can also find me on Twitter <a target="_blank" href="https://twitter.com/Live_ByThe_Code">@Live_ByThe_Code</a>.</p>
<p>And you can read more articles like this <a target="_blank" href="https://livebythecode.ml">here</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Best Colorful VSCode Extensions – How to Personalize Your Editor ]]>
                </title>
                <description>
                    <![CDATA[ Engineers spend a good portion of their day writing code in their integrated development environment, or IDE for short. And Visual Studio Code is one of the best free IDE's on the market.  I find that personalizing my IDE helps me enjoy the time I sp... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/best-colorful-vscode-extensions-for-productivity/</link>
                <guid isPermaLink="false">66bc4ca273c9920bb20c0dff</guid>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Integrated Development Environment   ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Natalie Pina ]]>
                </dc:creator>
                <pubDate>Tue, 12 Apr 2022 18:19:17 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/03/Cover.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Engineers spend a good portion of their day writing code in their integrated development environment, or IDE for short. And <a target="_blank" href="https://code.visualstudio.com/">Visual Studio Code</a> is one of the best free IDE's on the market. </p>
<p>I find that personalizing my IDE helps me enjoy the time I spend using it more. I want to share that same spark of joy with you all, and have been searching for and testing out the best extensions to download. And many of these will help you be more productive.</p>
<p>This article goes beyond theming extensions, so I suggest picking out a theme first. Or try out my current favorite theme, <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=mathcale.theme-dracula-refined">Dracula Refined</a>. </p>
<h2 id="heading-indent-rainbow">Indent Rainbow</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow">Indent Rainbow</a> is a great tool to add color and productivity to your setup. It can also help serve as an alignment check for your indentation. Each indentation is given an alternating rainbow color.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/Screen-Shot-2022-03-25-at-4.26.13-PM.png" alt="Image" width="600" height="400" loading="lazy">
<em>Indent Rainbow</em></p>
<h3 id="heading-bonus-indent-rainbow-palettes">Bonus: Indent Rainbow Palettes</h3>
<p>Want custom colors in your Indent Rainbow? Check out <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=evondev.indent-rainbow-palettes">Indent Rainbow Palettes</a> by Evondev.</p>
<p>After installing Indent Rainbow, install this extension and follow the outlined steps to select a new gradient palette.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/Screen-Shot-2022-03-25-at-4.32.34-PM.png" alt="Image" width="600" height="400" loading="lazy">
<em>Indent Palettes1</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/Screen-Shot-2022-03-25-at-4.34.17-PM.png" alt="Image" width="600" height="400" loading="lazy">
<em>Indent Palettes2</em></p>
<h2 id="heading-bracket-pair-colorizer">Bracket Pair Colorizer</h2>
<p>This will add rainbow colors to brackets, and matching brackets will have the same color. This extension has saved me a number of times when looking for a missing or extra bracket. </p>
<p>The <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer-2">Bracket Pair Colorizer</a> is another popular extension with over 4 million installs.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/Screen-Shot-2022-03-25-at-5.15.51-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h4 id="heading-depreciation-notice-for-2022">Depreciation Notice for 2022</h4>
<p>This extension has recently become depreciated. This is because of upgrades to VSCode allowing for a bracket pair colorization setting. This can be toggled on with <code>"editor.bracketPairColorization.enabled": true</code> in your user settings. </p>
<p>The improved performance of this feature makes it a better choice, but if you'd prefer to not edit your user settings, I'd suggest looking for extensions that handle this for you such as Bracket Pair Colorizer or <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight">Rainbow Brackets</a>.</p>
<h2 id="heading-colorize">Colorize</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=kamikillerto.vscode-colorize">Colorize</a> visualizes color variables by highlighting them with their color value. This is a handy timesaver for translating hex codes and variable names.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/demo_variables.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Photo Credit: Colorize</em></p>
<h2 id="heading-peacock">Peacock</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=johnpapa.vscode-peacock">Peacock</a> provides optional window colors. It is great for managing multiple workspaces. It can be easy to forget which workspace you are in when jumping between similar windows, but not with the bright colors provided by Peacock. You can even <a target="_blank" href="https://papapeacockstorage.z13.web.core.windows.net/guide/#favorite-colors">customize workspace colors</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/hero.png" alt="Image" width="600" height="400" loading="lazy">
<em>Photo Credit: Peacock</em></p>
<h2 id="heading-vscode-icons">VSCode Icons</h2>
<p>Adding icons can help when navigating through your folders. <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons">VSCode Icons</a> has an extensive library of icons matching a variety of file types. </p>
<p>For example, you can easily see if you are selecting a TypeScript file or a JavaScript file based on the icon. It also adds an extra touch of color and detail to folder structures.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/screenshot.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Photo Credit: vscode-icons</em></p>
<h2 id="heading-todo-highlight">TODO Highlight</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight">TODO Highlight</a> will customize your list of TODO comments and make them pop with color. It can be easy to overlook commented out code, but not with this extension, as it is difficult to overlook text that is bright orange. </p>
<p><code>TODO</code> and <code>FIXME</code> are built in keywords. You'll have the option to customize the color of these and add additional keywords.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/material-night-eighties.png" alt="Image" width="600" height="400" loading="lazy">
<em>Photo Credit: TODO Highlight</em></p>
<h2 id="heading-tldr">TL;DR</h2>
<p>Here is a condensed list of the extensions mentioned in this article.</p>
<ul>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow">Indent Rainbow</a></li>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer-2">Bracket Pair Colorizer</a></li>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=kamikillerto.vscode-colorize">Colorize</a></li>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=johnpapa.vscode-peacock">Peacock</a></li>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons">VSCode Icons</a></li>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight">TODO Highlight</a></li>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=mathcale.theme-dracula-refined">Dracula Refined Theme</a></li>
</ul>
<p>I hope these extensions will bring a rainbow of colors to your VSCode, too.</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
