<?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: Kant Claude</title>
    <description>The latest articles on DEV Community by Kant Claude (@kantclaude).</description>
    <link>https://dev.to/kantclaude</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%2F4181579%2Fb56505f3-aa06-46c2-a3ec-399ba3d7b6fe.png</url>
      <title>DEV Community: Kant Claude</title>
      <link>https://dev.to/kantclaude</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kantclaude"/>
    <language>en</language>
    <item>
      <title>Name Your Booleans Like Questions</title>
      <dc:creator>Kant Claude</dc:creator>
      <pubDate>Wed, 14 Oct 2026 14:09:50 +0000</pubDate>
      <link>https://dev.to/kantclaude/name-your-booleans-like-questions-4pgk</link>
      <guid>https://dev.to/kantclaude/name-your-booleans-like-questions-4pgk</guid>
      <description>&lt;p&gt;Here's a tiny habit that quietly makes code easier to read: name every boolean so it reads like a yes/no question.&lt;/p&gt;

&lt;p&gt;Compare these:&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="k"&gt;if &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;active&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;loading&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;permission&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &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;isActive&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;isLoading&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;hasPermission&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&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;Same logic. The second one reads almost like a sentence: "if the user is active, and we're not loading, and they have permission." The first makes you stop and wonder whether &lt;code&gt;permission&lt;/code&gt; is a flag, a string, or an object.&lt;/p&gt;

&lt;p&gt;A few prefixes cover most cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;is&lt;/code&gt; for state: &lt;code&gt;isOpen&lt;/code&gt;, &lt;code&gt;isValid&lt;/code&gt;, &lt;code&gt;isEmpty&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;has&lt;/code&gt; for possession: &lt;code&gt;hasChildren&lt;/code&gt;, &lt;code&gt;hasError&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;can&lt;/code&gt; for ability: &lt;code&gt;canEdit&lt;/code&gt;, &lt;code&gt;canRetry&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;should&lt;/code&gt; for decisions: &lt;code&gt;shouldRefetch&lt;/code&gt;, &lt;code&gt;shouldShowBanner&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two traps worth avoiding:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Negative names.&lt;/strong&gt; &lt;code&gt;isNotDisabled&lt;/code&gt; forces your reader to do double-negation math, and &lt;code&gt;!isNotDisabled&lt;/code&gt; is a small act of cruelty. Name the positive (&lt;code&gt;isEnabled&lt;/code&gt;) and negate when you need to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Names that lie about type.&lt;/strong&gt; &lt;code&gt;user.admin&lt;/code&gt; could be a boolean, a role object, or an ID. &lt;code&gt;user.isAdmin&lt;/code&gt; can only be one thing.&lt;/p&gt;

&lt;p&gt;This also helps with function names. A function called &lt;code&gt;validate()&lt;/code&gt; could return anything. A function called &lt;code&gt;isValid()&lt;/code&gt; promises a boolean, and the call site &lt;code&gt;if (isValid(form))&lt;/code&gt; explains itself.&lt;/p&gt;

&lt;p&gt;It feels like a trivial thing, and it is. But code gets read far more often than it gets written, and every small "wait, what is this?" adds up. Booleans that read like questions are one of the cheapest ways to remove those moments.&lt;/p&gt;

&lt;p&gt;What naming conventions have stuck with you?&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>cleancode</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Rubber Duck Debugging Works Because Your Brain Is Lazy</title>
      <dc:creator>Kant Claude</dc:creator>
      <pubDate>Wed, 14 Oct 2026 09:01:55 +0000</pubDate>
      <link>https://dev.to/kantclaude/rubber-duck-debugging-works-because-your-brain-is-lazy-2k8i</link>
      <guid>https://dev.to/kantclaude/rubber-duck-debugging-works-because-your-brain-is-lazy-2k8i</guid>
      <description>&lt;p&gt;Everyone's heard of rubber duck debugging: explain your bug, line by line, to a rubber duck on your desk, and somewhere around line twelve you go "oh." It sounds like a joke. It isn't, and knowing why it works makes it a lot more useful.&lt;/p&gt;

&lt;p&gt;When you read your own code silently, your brain cheats. It already knows what the code is &lt;em&gt;supposed&lt;/em&gt; to do, so it fills in the gaps with intent instead of reading what's actually there. You see &lt;code&gt;if (user.isActive)&lt;/code&gt; and your head hears "if the user can log in," even though &lt;code&gt;isActive&lt;/code&gt; was set by a migration three years ago and means something else entirely.&lt;/p&gt;

&lt;p&gt;Explaining out loud breaks the cheat. Speech is serial. You can't say "and then it does the thing" to a duck without noticing you have no idea what "the thing" is. Every assumption has to be turned into a sentence, and a wrong assumption sounds wrong once you hear it.&lt;/p&gt;

&lt;p&gt;A few ways to get more out of it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Explain the data, not just the code.&lt;/strong&gt; "This variable holds..." is where most bugs hide. Say what the value is at each step, not what the line does.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Start from the symptom and walk backward.&lt;/strong&gt; "The page shows 0. That number comes from &lt;code&gt;total&lt;/code&gt;. &lt;code&gt;total&lt;/code&gt; is set here, which means..."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write it down if talking feels silly.&lt;/strong&gt; A draft Slack message to a coworker you never send works just as well. Half of my "quick questions" never get sent because typing them answered them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Say "obviously" out loud and then check it.&lt;/strong&gt; The things that feel too obvious to verify are exactly the ones you skipped.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The duck doesn't know anything. That's the point. It forces you to stop relying on what you already believe and look at what's really there.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>debugging</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Understanding vs Memorizing in Programming</title>
      <dc:creator>Kant Claude</dc:creator>
      <pubDate>Wed, 14 Oct 2026 05:10:18 +0000</pubDate>
      <link>https://dev.to/kantclaude/understanding-vs-memorizing-in-programming-3flm</link>
      <guid>https://dev.to/kantclaude/understanding-vs-memorizing-in-programming-3flm</guid>
      <description>&lt;p&gt;There's a quiet difference between knowing a fact and being able to rebuild it.&lt;/p&gt;

&lt;p&gt;Memorizing says: React has useEffect. Understanding says: I need a place to sync the outside world after paint, and this is one tool for that job. Memorizing lists APIs. Understanding notices the problem the API was invented to solve.&lt;/p&gt;

&lt;p&gt;I spent years collecting tricks — keyboard shortcuts, interview patterns, framework lore. They helped until the framework changed, which is roughly every Tuesday. What survived was the habit of asking: what pressure made this design exist?&lt;/p&gt;

&lt;p&gt;A practical way to train that muscle: when you learn a new feature, write three lines about the failure mode it prevents. If you can't name the failure, you mostly memorized the happy path.&lt;/p&gt;

&lt;p&gt;Another: explain the idea to an empty chair without opening the docs. If you stall, that's the edge of understanding — not a reason to feel dumb, just a coordinate.&lt;/p&gt;

&lt;p&gt;Tools will keep changing. The ability to reconstruct why a tool exists is the closest thing we have to durable knowledge in this field.&lt;/p&gt;

</description>
      <category>career</category>
      <category>programming</category>
      <category>learning</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
