<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Caelora</title>
    <description>The latest articles on DEV Community by Caelora (@caelora).</description>
    <link>https://dev.to/caelora</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4044992%2Fb784496e-0cf3-4f6b-9a0c-e9b88691f08d.jpg</url>
      <title>DEV Community: Caelora</title>
      <link>https://dev.to/caelora</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/caelora"/>
    <language>en</language>
    <item>
      <title>Why Every Developer Should Learn Docker (Even for Small Projects)</title>
      <dc:creator>Caelora</dc:creator>
      <pubDate>Fri, 24 Jul 2026 07:17:26 +0000</pubDate>
      <link>https://dev.to/caelora/why-every-developer-should-learn-docker-even-for-small-projects-29jg</link>
      <guid>https://dev.to/caelora/why-every-developer-should-learn-docker-even-for-small-projects-29jg</guid>
      <description>&lt;h1&gt;
  
  
  Why Every Developer Should Learn Docker (Even for Small Projects)
&lt;/h1&gt;

&lt;p&gt;If you've ever heard someone say, &lt;em&gt;"It works on my machine,"&lt;/em&gt; you've already encountered one of the biggest problems in software development.&lt;/p&gt;

&lt;p&gt;Different operating systems, dependency versions, and local configurations can make the same project behave differently across computers.&lt;/p&gt;

&lt;p&gt;That's exactly the problem Docker was built to solve.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Docker?
&lt;/h2&gt;

&lt;p&gt;Docker is a platform that packages your application together with everything it needs to run:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Programming language runtime&lt;/li&gt;
&lt;li&gt;Dependencies&lt;/li&gt;
&lt;li&gt;Libraries&lt;/li&gt;
&lt;li&gt;Environment variables&lt;/li&gt;
&lt;li&gt;System tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of telling someone how to set up your project, you simply share a Docker image or a Docker Compose file.&lt;/p&gt;

&lt;p&gt;If Docker runs, your application runs too.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Started Using Docker
&lt;/h2&gt;

&lt;p&gt;When I first learned web development, setting up a new project was frustrating.&lt;/p&gt;

&lt;p&gt;Sometimes I needed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js 18&lt;/li&gt;
&lt;li&gt;PostgreSQL 15&lt;/li&gt;
&lt;li&gt;Redis&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Installing everything manually often caused version conflicts.&lt;/p&gt;

&lt;p&gt;After switching to Docker, setting up a project became much easier.&lt;/p&gt;

&lt;p&gt;Instead of spending 30 minutes configuring my environment, I could start everything with one command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Simple Example
&lt;/h2&gt;

&lt;p&gt;Imagine you're building a Node.js API.&lt;/p&gt;

&lt;p&gt;Without Docker, every team member has to install:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;npm&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;Environment variables&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With Docker, everyone uses the same environment.&lt;/p&gt;

&lt;p&gt;A basic Dockerfile looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; node:20&lt;/span&gt;

&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /app&lt;/span&gt;

&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; package*.json ./&lt;/span&gt;

&lt;span class="k"&gt;RUN &lt;/span&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt;

&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; . .&lt;/span&gt;

&lt;span class="k"&gt;EXPOSE&lt;/span&gt;&lt;span class="s"&gt; 3000&lt;/span&gt;

&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["npm", "start"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now anyone can run the application without worrying about different Node.js versions.&lt;/p&gt;




&lt;h2&gt;
  
  
  Docker Compose Makes It Better
&lt;/h2&gt;

&lt;p&gt;Real applications usually need more than one service.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backend API&lt;/li&gt;
&lt;li&gt;Database&lt;/li&gt;
&lt;li&gt;Redis cache&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Docker Compose lets you start everything together.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.&lt;/span&gt;

  &lt;span class="na"&gt;database&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;postgres:16&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of opening multiple terminals and starting services manually, one command launches the entire stack.&lt;/p&gt;




&lt;h2&gt;
  
  
  Benefits I've Noticed
&lt;/h2&gt;

&lt;p&gt;After using Docker regularly, I noticed several improvements.&lt;/p&gt;

&lt;h3&gt;
  
  
  Faster onboarding
&lt;/h3&gt;

&lt;p&gt;New developers can run a project within minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fewer environment issues
&lt;/h3&gt;

&lt;p&gt;No more "works on my machine" conversations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cleaner computer
&lt;/h3&gt;

&lt;p&gt;I don't have dozens of database installations and conflicting versions anymore.&lt;/p&gt;

&lt;h3&gt;
  
  
  Easier deployment
&lt;/h3&gt;

&lt;p&gt;The same container used during development can often be deployed to production with minimal changes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Is Docker Difficult?
&lt;/h2&gt;

&lt;p&gt;At first, yes.&lt;/p&gt;

&lt;p&gt;The documentation introduces many concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;li&gt;Containers&lt;/li&gt;
&lt;li&gt;Volumes&lt;/li&gt;
&lt;li&gt;Networks&lt;/li&gt;
&lt;li&gt;Compose&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It can feel overwhelming.&lt;/p&gt;

&lt;p&gt;But once you understand the difference between an image and a container, everything starts to make sense.&lt;/p&gt;

&lt;p&gt;You don't need to master every Docker feature on day one.&lt;/p&gt;

&lt;p&gt;Learn the basics first.&lt;/p&gt;




&lt;h2&gt;
  
  
  Should Beginners Learn Docker?
&lt;/h2&gt;

&lt;p&gt;Absolutely—but not immediately.&lt;/p&gt;

&lt;p&gt;If you're just starting programming, focus on learning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Variables&lt;/li&gt;
&lt;li&gt;Functions&lt;/li&gt;
&lt;li&gt;Loops&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;Databases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you've built a few projects, Docker becomes much easier to appreciate because you'll understand the problems it solves.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;Docker isn't just for large companies or DevOps engineers.&lt;/p&gt;

&lt;p&gt;Even small personal projects benefit from having a consistent development environment.&lt;/p&gt;

&lt;p&gt;If you're tired of installation issues, dependency conflicts, or spending too much time configuring projects, Docker is worth learning.&lt;/p&gt;

&lt;p&gt;It may have a learning curve, but it's one of the best investments you can make as a developer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are you already using Docker in your projects, or are you planning to learn it? I'd love to hear your experience in the comments.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>docker</category>
    </item>
    <item>
      <title>5 Git Commands Every Developer Should Know</title>
      <dc:creator>Caelora</dc:creator>
      <pubDate>Fri, 24 Jul 2026 07:13:49 +0000</pubDate>
      <link>https://dev.to/caelora/5-git-commands-every-developer-should-know-2ifn</link>
      <guid>https://dev.to/caelora/5-git-commands-every-developer-should-know-2ifn</guid>
      <description>&lt;h1&gt;
  
  
  5 Git Commands Every Developer Should Know
&lt;/h1&gt;

&lt;p&gt;Git is one of the most important tools every developer uses, yet many people only know a few basic commands.&lt;/p&gt;

&lt;p&gt;Learning a handful of additional Git commands can save time, reduce mistakes, and make collaboration much easier.&lt;/p&gt;

&lt;p&gt;Here are five Git commands I use almost every day.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Check What Changed
&lt;/h2&gt;

&lt;p&gt;Before committing anything, always check your changes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modified files&lt;/li&gt;
&lt;li&gt;New files&lt;/li&gt;
&lt;li&gt;Deleted files&lt;/li&gt;
&lt;li&gt;Files ready to commit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Running &lt;code&gt;git status&lt;/code&gt; before every commit is a good habit.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. View Your Commit History
&lt;/h2&gt;

&lt;p&gt;Need to know what happened recently?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--oneline&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of showing long commit details, this command displays a clean, compact history.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;f82d4f1 Fix login bug
1ab8c72 Update README
8ce44f0 Add authentication
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's much easier to read than the default output.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Create a New Branch
&lt;/h2&gt;

&lt;p&gt;Never work directly on the main branch.&lt;/p&gt;

&lt;p&gt;Create a feature branch instead.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; feature/login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or, with newer Git versions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git switch &lt;span class="nt"&gt;-c&lt;/span&gt; feature/login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This keeps your work isolated until it's ready to merge.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Undo Staged Changes
&lt;/h2&gt;

&lt;p&gt;Accidentally added the wrong file?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git restore &lt;span class="nt"&gt;--staged&lt;/span&gt; filename.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This removes the file from the staging area without deleting your changes.&lt;/p&gt;

&lt;p&gt;It's much safer than trying to fix mistakes later.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Pull Before You Push
&lt;/h2&gt;

&lt;p&gt;Before pushing your code, make sure your local branch is up to date.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git pull origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This helps avoid unnecessary merge conflicts and ensures you're working with the latest code.&lt;/p&gt;




&lt;h1&gt;
  
  
  Bonus Tip
&lt;/h1&gt;

&lt;p&gt;If you forget a command, Git has built-in help.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git &lt;span class="nb"&gt;help&lt;/span&gt; &amp;lt;&lt;span class="nb"&gt;command&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;The documentation is surprisingly helpful.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;You don't need to memorize every Git command.&lt;/p&gt;

&lt;p&gt;Mastering a small set of frequently used commands will make your daily workflow smoother and reduce common mistakes.&lt;/p&gt;

&lt;p&gt;The five commands I recommend every beginner learns are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git log --oneline&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git switch -c&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git restore --staged&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git pull&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you're comfortable with these, learning more advanced Git features becomes much easier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which Git command do you use the most? Let me know in the comments!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Stop Using console.log Everywhere: Better Ways to Debug JavaScript</title>
      <dc:creator>Caelora</dc:creator>
      <pubDate>Fri, 24 Jul 2026 07:03:37 +0000</pubDate>
      <link>https://dev.to/caelora/stop-using-consolelog-everywhere-better-ways-to-debug-javascript-4kf4</link>
      <guid>https://dev.to/caelora/stop-using-consolelog-everywhere-better-ways-to-debug-javascript-4kf4</guid>
      <description>&lt;h1&gt;
  
  
  Stop Using &lt;code&gt;console.log()&lt;/code&gt; Everywhere: Better Ways to Debug JavaScript
&lt;/h1&gt;

&lt;p&gt;If you're learning JavaScript, you've probably written something like this hundreds of times:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There's absolutely nothing wrong with using &lt;code&gt;console.log()&lt;/code&gt;. Every developer starts there, and even experienced developers still use it.&lt;/p&gt;

&lt;p&gt;However, as your application grows, relying only on &lt;code&gt;console.log()&lt;/code&gt; can make debugging slower and your code harder to maintain.&lt;/p&gt;

&lt;p&gt;Here are several debugging techniques that can save you time and make your development workflow much more efficient.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Use the Browser Debugger
&lt;/h2&gt;

&lt;p&gt;Instead of printing every variable, use the built-in JavaScript debugger.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;calculateTotal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;debugger&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;price&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When execution reaches the &lt;code&gt;debugger&lt;/code&gt; statement, the browser pauses your application. You can inspect variables, check the call stack, and execute code step by step.&lt;/p&gt;

&lt;p&gt;This is much more powerful than printing dozens of log statements.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Display Objects with &lt;code&gt;console.table()&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Large arrays of objects quickly become difficult to read.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;table&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output becomes a clean table that's much easier to understand.&lt;/p&gt;

&lt;p&gt;This works especially well for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API responses&lt;/li&gt;
&lt;li&gt;Product lists&lt;/li&gt;
&lt;li&gt;User records&lt;/li&gt;
&lt;li&gt;Database results&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Organize Logs with &lt;code&gt;console.group()&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;If your application produces many log messages, grouping them makes the console much cleaner.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Login Process&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Checking credentials...&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Loading user...&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authentication successful&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;groupEnd&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now related messages stay together, making debugging much easier.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Measure Performance
&lt;/h2&gt;

&lt;p&gt;Need to know how long a function takes?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;time&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fetchUsers&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetchUsers&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;timeEnd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fetchUsers&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This instantly tells you how long an operation required without installing additional tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Take Advantage of Breakpoints
&lt;/h2&gt;

&lt;p&gt;Modern browsers include excellent debugging tools.&lt;/p&gt;

&lt;p&gt;Simply click beside a line number in Chrome or Firefox DevTools to create a breakpoint.&lt;/p&gt;

&lt;p&gt;When execution stops, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inspect variables&lt;/li&gt;
&lt;li&gt;View the call stack&lt;/li&gt;
&lt;li&gt;Execute code manually&lt;/li&gt;
&lt;li&gt;Step through your application line by line&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For complex bugs, breakpoints are often much faster than adding dozens of log statements.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Read Error Messages Carefully
&lt;/h2&gt;

&lt;p&gt;Many developers immediately search Google after seeing an error.&lt;/p&gt;

&lt;p&gt;Instead, spend a few seconds reading it.&lt;/p&gt;

&lt;p&gt;Most JavaScript errors already tell you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which file caused the problem&lt;/li&gt;
&lt;li&gt;The line number&lt;/li&gt;
&lt;li&gt;The type of error&lt;/li&gt;
&lt;li&gt;The function where it happened&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding error messages is a skill that will dramatically improve your debugging speed.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Clean Up Before Deploying
&lt;/h2&gt;

&lt;p&gt;We've all forgotten to remove debugging code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;HERE&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;TEST&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;WHY IS THIS UNDEFINED?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before pushing your code to production:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remove unnecessary &lt;code&gt;console.log()&lt;/code&gt; calls.&lt;/li&gt;
&lt;li&gt;Delete forgotten &lt;code&gt;debugger&lt;/code&gt; statements.&lt;/li&gt;
&lt;li&gt;Keep only meaningful error logging where appropriate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A clean codebase is much easier to maintain.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;console.log()&lt;/code&gt; isn't bad—it remains one of the simplest and fastest debugging tools available.&lt;/p&gt;

&lt;p&gt;But combining it with browser DevTools, breakpoints, &lt;code&gt;console.table()&lt;/code&gt;, and performance timers can significantly improve your workflow.&lt;/p&gt;

&lt;p&gt;As your projects become larger and more complex, learning these debugging techniques will save you hours of frustration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What debugging technique do you use most often? Share your favorite tips in the comments!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>debugging</category>
      <category>programming</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>7 VS Code Extensions I Install on Every New Computer</title>
      <dc:creator>Caelora</dc:creator>
      <pubDate>Fri, 24 Jul 2026 06:57:51 +0000</pubDate>
      <link>https://dev.to/caelora/7-vs-code-extensions-i-install-on-every-new-computer-2oe0</link>
      <guid>https://dev.to/caelora/7-vs-code-extensions-i-install-on-every-new-computer-2oe0</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnh9v38hk61g8begg4ou0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnh9v38hk61g8begg4ou0.jpg" alt=" " width="640" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  7 VS Code Extensions I Install on Every New Computer
&lt;/h1&gt;

&lt;p&gt;Every time I reinstall Windows or buy a new laptop, the first application I install is Visual Studio Code. But VS Code alone isn't enough. The real productivity boost comes from its extensions.&lt;/p&gt;

&lt;p&gt;After years of web development, I've narrowed my list down to seven extensions that I install immediately. These extensions save time, improve code quality, and make development much more enjoyable.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Prettier
&lt;/h2&gt;

&lt;p&gt;Nobody likes arguing about code formatting.&lt;/p&gt;

&lt;p&gt;Prettier automatically formats your code every time you save, keeping your project clean and consistent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why I use it&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Consistent formatting&lt;/li&gt;
&lt;li&gt;Works with almost every language&lt;/li&gt;
&lt;li&gt;Saves time during code reviews
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"editor.formatOnSave"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  2. ESLint
&lt;/h2&gt;

&lt;p&gt;ESLint catches mistakes before they become bugs.&lt;/p&gt;

&lt;p&gt;Instead of discovering issues after deployment, you'll see warnings directly in your editor.&lt;/p&gt;

&lt;p&gt;It also helps enforce coding standards across your team.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. GitLens
&lt;/h2&gt;

&lt;p&gt;GitLens makes Git much easier to understand.&lt;/p&gt;

&lt;p&gt;With one hover, you can instantly see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who changed a line&lt;/li&gt;
&lt;li&gt;When it was changed&lt;/li&gt;
&lt;li&gt;Why it was changed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is incredibly useful when working on large projects.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Error Lens
&lt;/h2&gt;

&lt;p&gt;Normally, VS Code shows errors at the bottom of the screen.&lt;/p&gt;

&lt;p&gt;Error Lens displays them directly beside your code, making debugging much faster.&lt;/p&gt;

&lt;p&gt;Small extension, huge productivity boost.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Auto Rename Tag
&lt;/h2&gt;

&lt;p&gt;If you're working with HTML, React, or Vue, this extension is a lifesaver.&lt;/p&gt;

&lt;p&gt;Rename an opening tag...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;...and the closing tag updates automatically.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No more broken markup.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Path Intellisense
&lt;/h2&gt;

&lt;p&gt;Import paths can become annoying in large projects.&lt;/p&gt;

&lt;p&gt;Instead of typing long file paths manually, this extension autocompletes them for you.&lt;/p&gt;

&lt;p&gt;It's simple but saves countless keystrokes every day.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Thunder Client
&lt;/h2&gt;

&lt;p&gt;Sometimes you don't want to open Postman just to test one API endpoint.&lt;/p&gt;

&lt;p&gt;Thunder Client lives inside VS Code and lets you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send HTTP requests&lt;/li&gt;
&lt;li&gt;Test REST APIs&lt;/li&gt;
&lt;li&gt;Organize collections&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Perfect for backend developers.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;VS Code is already a fantastic editor, but the right extensions can dramatically improve your workflow.&lt;/p&gt;

&lt;p&gt;If I had to choose only three, they would be:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Prettier&lt;/li&gt;
&lt;li&gt;ESLint&lt;/li&gt;
&lt;li&gt;GitLens&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Those three alone eliminate many common development headaches.&lt;/p&gt;

&lt;p&gt;What VS Code extension can't you live without? Let me know in the comments!&lt;/p&gt;

</description>
      <category>debugging</category>
      <category>programming</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
