<?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: ctrlshiftbryan</title>
    <description>The latest articles on DEV Community by ctrlshiftbryan (@ctrlshiftbryan).</description>
    <link>https://dev.to/ctrlshiftbryan</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F45485%2Feb3e9bbe-f773-4c4d-8855-c112196a1178.jpg</url>
      <title>DEV Community: ctrlshiftbryan</title>
      <link>https://dev.to/ctrlshiftbryan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ctrlshiftbryan"/>
    <language>en</language>
    <item>
      <title>The Art and Zen of Claude Code: Why Simplicity Always Wins</title>
      <dc:creator>ctrlshiftbryan</dc:creator>
      <pubDate>Sun, 15 Jun 2025 16:47:21 +0000</pubDate>
      <link>https://dev.to/ctrlshiftbryan/the-art-and-zen-of-claude-code-why-simplicity-always-wins-38ki</link>
      <guid>https://dev.to/ctrlshiftbryan/the-art-and-zen-of-claude-code-why-simplicity-always-wins-38ki</guid>
      <description>&lt;p&gt;I've been using AI coding assistants for a while now. Started with Copilot, moved to Cursor, tried Roo, experimented with Windsurf. They all promised to revolutionize how we code. But after months of fighting with configurations, learning shortcuts, and debugging integrations, I found myself spending more time managing the tools than actually coding.&lt;/p&gt;

&lt;p&gt;Then I tried Claude Code. And everything changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Beauty of Simplicity
&lt;/h2&gt;

&lt;p&gt;Here's what nobody tells you about those VSCode extensions and forks: they're adding layers of complexity that often get in your way. With Cursor and Roo, you're constantly dealing with accepting changes, learning their specific diff views, remembering keyboard shortcuts, figuring out their context management and code indexing. &lt;/p&gt;

&lt;p&gt;I remember spending an entire Saturday just trying to understand how Cursor's context indexing worked. Was it including the right files? Why wasn't it seeing my updated code? The invisible complexity was killing my productivity.&lt;/p&gt;

&lt;p&gt;Claude Code strips all that away. It's literally just you writing a prompt. That's it.&lt;/p&gt;

&lt;p&gt;No diffs to accept. No shortcuts to memorize. No mysterious context windows. Just write what you want and Claude Code handles it. I still use VSCode when I want to edit files directly, or I'll write longer prompts in markdown files and tell Claude to read them. But the tool itself? It gets out of the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Battle-Tested Tools vs Shiny New Things
&lt;/h2&gt;

&lt;p&gt;One of my biggest frustrations with VSCode extensions was dealing with MCPs (Model Context Protocol integrations). Take the Postgres MCP for example. I spent hours trying to get it working with Cursor. It needed specific Node settings, couldn't read my existing .env files, required npx runner configurations. Even when it worked, it felt fragile.&lt;/p&gt;

&lt;p&gt;With Claude Code? It just started using &lt;code&gt;psql&lt;/code&gt; when it needed to. You know, the tool that's been around for decades and just works. Same with GitHub integration. While I was fumbling with GitHub MCPs in other tools, Claude Code just uses the &lt;code&gt;gh&lt;/code&gt; CLI. These aren't sexy new abstractions. They're boring, reliable tools that have been refined by thousands of developers over years.&lt;/p&gt;

&lt;h2&gt;
  
  
  The CI Debugging Story That Sold Me
&lt;/h2&gt;

&lt;p&gt;Here's the moment I knew I was done with VSCode extensions. I had this infuriating CI issue where tests were passing locally but failing in GitHub Actions. Spent hours with Cursor trying to debug it. Even with their massive context windows, I was manually copying logs back and forth, searching for working GitHub integrations, getting nowhere.&lt;/p&gt;

&lt;p&gt;This happened to be happening on the day Claude 4 was announced and Claude Code hit 1.0. I knew it was powerful but I had spent $30 in API tokens when I tried it a few weeks earlier with Claude 3.7 and decided to put exploring it on hold until I got better at prompting or the price was more predictable. Fast forward to picking it back up, within 30 minutes &amp;amp; Claude 4, it had solved the issue. &lt;/p&gt;

&lt;p&gt;How? It used &lt;code&gt;gh&lt;/code&gt; CLI to pull the actual CI logs, ran the tests locally with the same environment variables, compared the outputs side by side, and identified a timezone difference that only showed up in CI. No manual copying. No broken integrations. Just standard CLI tools doing what they do best.&lt;/p&gt;

&lt;h2&gt;
  
  
  Manual Context Management: The Feature Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;Here's something I've discovered that completely changed how I work: manual context management is actually better than automatic. I know that sounds counterintuitive when everyone's bragging about million-token context windows, but hear me out.&lt;/p&gt;

&lt;p&gt;With Claude Code, I decide when to start fresh sessions and when to continue. I use the compact command to manage context. I'm writing technical plans to end the session and start a new one. Most importantly, I'm breaking big problems down into small, manageable pieces of work. This isn't some new AI technique. It's the same skill good engineers have been honing for decades. The difference is Claude Code lets me apply it naturally giving me the minimal tools I need to do the job instead of fighting against automatic context management.&lt;/p&gt;

&lt;p&gt;It reminds me of the golden days of Twitter when people had to craft their tweets into a character limit. There was a beauty to that constraint. You had to make each word and even letter count. The same principle applies here. When you're conscious of your context, you communicate more clearly. You think before you prompt. You get better results. You can do this in other tools, but Claude Code is optimized for it.&lt;/p&gt;

&lt;p&gt;The result? &lt;strong&gt;I've never hit the MAX context limit. Not once.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why? Because I'm not dumping my entire codebase into every conversation. I'm having focused discussions with exactly the context needed. When I'm done with one problem, I start fresh with the next. It's like the difference between a cluttered desk where you can't find anything and a clean workspace where you bring out exactly what you need.&lt;/p&gt;

&lt;p&gt;This also means each conversation costs less and stays more focused. The AI isn't wading through thousands of irrelevant lines trying or some index to understand what you want. It's laser-focused on the specific problem with the specific context you provided.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Permission System Is a Killer Feature
&lt;/h2&gt;

&lt;p&gt;When people ask about Claude Code, they often mention "wider CLI permissions" like it's a security concern. They're missing the point entirely. The permission system is one of its best features.&lt;/p&gt;

&lt;p&gt;You can run in planning mode where it can't execute anything. Or you can set granular permissions in a session like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="s2"&gt;"Bash(gh run list:*)"&lt;/span&gt;
&lt;span class="s2"&gt;"Bash(gh run view:*)"&lt;/span&gt;
&lt;span class="s2"&gt;"Bash(cat:*)"&lt;/span&gt;
&lt;span class="s2"&gt;"Bash(grep:./src/**)"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or you can go full YOLO mode with &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt; when you're in a trusted environment, know it's on track and just need to move fast.&lt;/p&gt;

&lt;p&gt;The key is you control it session by session. You're not trusting some opaque system to manage security for you. You know exactly what Claude can and can't do because you set the boundaries.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Model-Switching Trap
&lt;/h2&gt;

&lt;p&gt;In Cursor, when Claude 3.7 couldn't solve something, I'd switch to Gemini and suddenly it worked. This felt like a feature but was actually a bug. It's like the old days when Chrome would silently fix your broken JavaScript while IE would throw errors. You'd think IE was wrong, but it was actually exposing your bad code.&lt;/p&gt;

&lt;p&gt;Model-switching adds layers of non-determinism. Did it work because Gemini understood my prompt? Was my context too big? Too small? You never know what actually fixed it.&lt;/p&gt;

&lt;p&gt;With Claude Code, I stick to Claude 4. When something fails, I know it's my prompt that needs work. No model shopping, no uncertainty. Just like how IE forced us to write cleaner JavaScript, using one model forces me to write clearer prompts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Focus on What Matters: Learning to Prompt
&lt;/h2&gt;

&lt;p&gt;Perhaps the biggest shift was realizing I could stop learning tools and start learning the model and optimize for it. Instead of bouncing between different prompt libraries, techniques for different models, and platform-specific tricks, I'm just reading the &lt;a href="https://docs.anthropic.com" rel="noopener noreferrer"&gt;official Anthropic docs&lt;/a&gt; and getting better at communicating with Claude.&lt;/p&gt;

&lt;p&gt;It's remarkable how much better my results got when I stopped fighting with tool interfaces and started focusing on clear, effective prompting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Predictable Pricing That Actually Makes Sense
&lt;/h2&gt;

&lt;p&gt;With API-based tools, I was constantly anxious about costs. One complex debugging session could spike my bill unexpectedly. With Claude Code, I know I'm spending $100-200 a month. That's it. No surprises. No watching token counters. Just a predictable cost for a tool I use every day.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;Claude Code isn't trying to reimagine how we code. It's not adding AI-powered diff views or intelligent context management or smart acceptance flows. It's doing something much more radical: it's getting out of the way.&lt;/p&gt;

&lt;p&gt;After months of experimenting, I've stopped investigating other tools. I'm not interested in the latest VSCode extension or the newest coding assistant. I have a simple tool that lets me leverage Claude's capabilities without any friction.&lt;/p&gt;

&lt;p&gt;Sometimes the best interface is no interface. Sometimes the most powerful feature is simplicity. And sometimes, the future of coding isn't about adding more abstractions. It's about removing them.&lt;/p&gt;

&lt;p&gt;If you're tired of fighting with your AI coding tools, maybe it's time to try something simpler. Your future self might thank you.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Have you tried Claude Code? What's been your experience with AI coding assistants? Drop your thoughts in the comments below!&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Writing process note: This post was created through an AI-assisted interview process in about 30 minutes. Two years ago this post would have taken me an entire weekend to write. I used Claude to ask me targeted questions about my experience with Claude Code, then worked with it to structure my responses into a cohesive narrative. The opinions and experiences are entirely my own; Claude helped me articulate them clearly and organize them into a readable format.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>claude</category>
      <category>devtools</category>
    </item>
    <item>
      <title>'let' it be (remix.run)</title>
      <dc:creator>ctrlshiftbryan</dc:creator>
      <pubDate>Tue, 30 Nov 2021 12:21:16 +0000</pubDate>
      <link>https://dev.to/ctrlshiftbryan/let-it-be-remixrun-3ma5</link>
      <guid>https://dev.to/ctrlshiftbryan/let-it-be-remixrun-3ma5</guid>
      <description>&lt;h2&gt;
  
  
  let vs const in remix.run
&lt;/h2&gt;

&lt;p&gt;The Remix.run documentation and source code uses &lt;code&gt;let&lt;/code&gt; for everything. This somewhat breaks "convention" and is usually the first thing people notice when learning remix. This is too bad. &lt;/p&gt;

&lt;p&gt;Remix.run is an amazing framework. It has the possibility of changing web development in the same way JSX changed templating or graphql changed working with web apis. It truly feels like one of the transformational technologies that simplifies development by removing many of the boilerplate challenges that modern front-end or even static generated sites have introduced like state management, REST/graphql and too many hooks. &lt;/p&gt;

&lt;p&gt;What's truly amazing is it does this while getting us back to "foundational web" or "embracing the web platform." I like to think that remix is "old school cool". It's like working in php or a traditional rails app, but in a good way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sijdEAQg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.redd.it/iai6qpkiq8571.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sijdEAQg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.redd.it/iai6qpkiq8571.jpg" alt="old school cool" width="750" height="702"&gt;&lt;/a&gt;&lt;br&gt;
Old School cool &lt;a href="https://www.reddit.com/r/OldSchoolCool/comments/nznxfr/joan_jett_without_her_signature_black_eyeliner"&gt;Joan Jett&lt;/a&gt;  without her signature black eyeliner (1976) on reddit. &lt;/p&gt;

&lt;p&gt;So let's think through the arguments for and against using only &lt;code&gt;let&lt;/code&gt; and speculate maybe why the core team made this decision. &lt;/p&gt;
&lt;h3&gt;
  
  
  ARGUMENT FOR: It forces you to challenge your existing beliefs.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UtjkGTwb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/ddWPLLu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UtjkGTwb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/ddWPLLu.jpg" alt="red pill / blue pill" width="500" height="289"&gt;&lt;/a&gt;&lt;br&gt;
This is my favorite argument for using "let". It doesn't really impact your code. If you zoom out a little bit, it kind of gets you into the mindset that "remix" is going to change the typical way you do things and that's ok. &lt;/p&gt;

&lt;p&gt;When starting to develop with remix, I had this same reaction doing full-page post backs using POST. You might feel the same way when using html forms for sending data to the server or not being able to use the DELETE verb when deleting a record. Remix challenges you as a developer to do things different and that's great! This helps weed out developers that are too closed minded.&lt;/p&gt;
&lt;h3&gt;
  
  
  ARGUMENT FOR:  It's controversial. That's good for online engagement.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xskX02D1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/abLaA6j.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xskX02D1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/abLaA6j.jpg" alt="online engagement" width="880" height="374"&gt;&lt;/a&gt;&lt;br&gt;
I'm actually fine with this argument. Again remix is amazing and one of the most important things right now is to make it popular. Let's get people talking about it. Let's Increase the online engagement by taking this technically incorrect opinion or style. &lt;/p&gt;

&lt;p&gt;The core team created and maintained React Router and offered best in class React training for years. They have more credibility than they need. They can burn a little bit with a hot take like this. With tech and open source, being technically superior or making better trade offs is not enough, it also has to be massively popular. &lt;/p&gt;
&lt;h3&gt;
  
  
  ARGUMENT FOR:  eslint
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aEXltz9w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/QcG5rnS.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aEXltz9w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/QcG5rnS.png" alt="eslint" width="880" height="245"&gt;&lt;/a&gt;&lt;br&gt;
If eslint can easily fix this, it can, why bother talking about it? Every developer or team can make their own decision here and just let the auto-formatting handle it. Should this also be an argument against? Maybe it's neither?&lt;/p&gt;
&lt;h3&gt;
  
  
  ARGUMENT FOR: It's less to type on your keyboard &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rNTuF4FZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.redd.it/b7xsbzhjzb181.jpg" alt="keyboard" width="880" height="495"&gt;
&lt;/h3&gt;

&lt;p&gt;some &lt;a href="https://www.reddit.com/r/MechanicalKeyboards/comments/r0b95q/who_needs_numbers_definitely_not_me_with_my/"&gt;cool guy on reddit&lt;/a&gt;'s keyboard&lt;/p&gt;

&lt;p&gt;I love a good keyboard as much as the next guy. But I prefer to use it as little as possible. There's just something about a nice 3 letter combo. Your fingers can type this in about 500 ms. Let the muscle memory take over. &lt;/p&gt;

&lt;p&gt;This probably not the best argument, but it certainly feels nice. The type of developer that is upset that you are using let when you should be using const is only going to be even more triggered when they hear this answer. I just hope it doesn't turn them off to remix entirely.&lt;/p&gt;
&lt;h3&gt;
  
  
  ARGUMENT AGAINST: It doesn't matter. It is a distraction from learning remix.run.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MYEAq3yO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/47Kvvsb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MYEAq3yO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/47Kvvsb.jpg" alt="remix.run" width="880" height="460"&gt;&lt;/a&gt;&lt;br&gt;
I'm excited about remix.run! I want to evangelize and tell everyone I know. Having to argue about a modern "tabs vs spaces" is a waste of time and energy. &lt;a href="https://twitter.com/kentcdodds"&gt;Kent&lt;/a&gt; says "He just doesn't care enough to challenge it!" I too just don't care! I don't care so much that I want to stop talking about it ever again. Can we get back to remix? The quickest way to do this is to correctly use const/let. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mcHiNUEk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/nLoIMZV.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mcHiNUEk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/nLoIMZV.png" alt="only pinned message" width="826" height="750"&gt;&lt;/a&gt;&lt;br&gt;
When I first go to a discord I generally look at the pinned messages in the general channel to get started. If the only pinned message in your general channel is this (see above) does that maybe tell you something? Is this really what you want the your first impression about this amazing framework to be?&lt;/p&gt;
&lt;h3&gt;
  
  
  ARGUMENT AGAINST: It signals the wrong thing to the developer
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_0CGTYig--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/F44eCDc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_0CGTYig--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/F44eCDc.png" alt="i have no idea" width="880" height="659"&gt;&lt;/a&gt;&lt;br&gt;
It might make your feel like you don't know what you are doing. In most react code, almost everything is const. The only time you should see let is if you need to re-assign the value.&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---ru9bQil--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/CxVquIbUoAASCCs.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--pabeOSP4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1444988463216922631/IDffhy4i_normal.jpg" alt="Kent C. Dodds 💿 profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Kent C. Dodds 💿
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/kentcdodds"&gt;@kentcdodds&lt;/a&gt;

      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ir1kO05j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Why I prefer `const` over `let` and `var`&lt;br&gt;&lt;br&gt;The goal is to have less to think about. 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      23:00 PM - 15 Nov 2016
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=798661929363324928" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fFnoeFxk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=798661929363324928" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k6dcrOn8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/like?tweet_id=798661929363324928" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SRQc9lOp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;p&gt;This is good because when looking for bugs you can focus on 'let' as you scan the code knowing that if something is getting re-assigned it could be the issue as it's not generally something we ever need in React. When we do it could be a sign that there is some complexity that needs to be inspected.&lt;/p&gt;

&lt;h2&gt;
  
  
  In conclusion
&lt;/h2&gt;

&lt;p&gt;Let's just 'let' it be. Ultimately it's remix core team's choice, obviously. I could see a compromise where the training materials and documentation use let/const properly and the source code uses they 'let' only style, but assuming positive intent we could just go with the "it forces you to challenge your existing beliefs" argument and call it a day. &lt;/p&gt;

&lt;p&gt;What ever side of this argument you agree with please go to &lt;a href="https://remix.run/"&gt;remix.run&lt;/a&gt; and give it a try. I hope you will learn and become as excited about remix as I am!&lt;/p&gt;

&lt;h3&gt;
  
  
  What about you?
&lt;/h3&gt;

&lt;p&gt;What do you think? Leave your arguments for or against let in the comments below&lt;/p&gt;

</description>
      <category>remix</category>
      <category>remixrun</category>
      <category>javascript</category>
      <category>react</category>
    </item>
  </channel>
</rss>
