<?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>Forem: Tanner Iverson</title>
    <description>The latest articles on Forem by Tanner Iverson (@bagelbomb).</description>
    <link>https://forem.com/bagelbomb</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%2F2100308%2F610ee97a-5eb9-4028-b289-9bba5a70d84f.png</url>
      <title>Forem: Tanner Iverson</title>
      <link>https://forem.com/bagelbomb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/bagelbomb"/>
    <language>en</language>
    <item>
      <title>Brevity</title>
      <dc:creator>Tanner Iverson</dc:creator>
      <pubDate>Fri, 19 Dec 2025 22:48:30 +0000</pubDate>
      <link>https://forem.com/bagelbomb/brevity-1g4</link>
      <guid>https://forem.com/bagelbomb/brevity-1g4</guid>
      <description>&lt;p&gt;&lt;strong&gt;Max Meaning Per Token&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>writing</category>
      <category>cleancode</category>
      <category>programming</category>
    </item>
    <item>
      <title>What Is Vibe-But-Verify Coding?</title>
      <dc:creator>Tanner Iverson</dc:creator>
      <pubDate>Mon, 12 May 2025 16:00:00 +0000</pubDate>
      <link>https://forem.com/bagelbomb/what-is-vibe-but-verify-coding-cbk</link>
      <guid>https://forem.com/bagelbomb/what-is-vibe-but-verify-coding-cbk</guid>
      <description>&lt;p&gt;Everyone is talking about "vibe coding" right now. If you haven't heard of it, tell me... under which rock have you been dwelling?&lt;/p&gt;

&lt;p&gt;You know what everyone has also been talking about? How &lt;em&gt;great&lt;/em&gt; vibe coding is. Oh, and also how &lt;em&gt;awful&lt;/em&gt; it is.&lt;/p&gt;

&lt;p&gt;But what if we could get the best of both worlds? Enter what I'm calling "vibe-but-verify coding".&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Wrong with Vibe Coding?
&lt;/h2&gt;

&lt;p&gt;Vibe coding, for the rock-dwellers out there, is when you "forget the code exists" and let AI do all the coding for you. You tell it to do the thing, and it does the thing, with much greater ability and speed than you could have (in theory).&lt;/p&gt;

&lt;p&gt;The problem is when it doesn't do the thing, or does it in a dumb way. Coders and non-coders alike get stuck when the AI traps itself in error spirals or repeatedly breaks existing functionality, never finishing that last 30% of the project.&lt;/p&gt;

&lt;p&gt;There are roughly three general problems with vibe coding:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The AI doesn't do what you want it to.&lt;/li&gt;
&lt;li&gt;The AI does what you want it to, but also breaks things that were already working.&lt;/li&gt;
&lt;li&gt;The AI does what you want it to, but in a way that's dangerous or that's broken for some users.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Vibe-but-verify coding aims to rectify these problems, without sacrificing agility or ability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing Vibe-But-Verify Coding
&lt;/h2&gt;

&lt;p&gt;Think of vibe-but-verify coding as a &lt;strong&gt;hybrid&lt;/strong&gt; of &lt;strong&gt;traditional coding&lt;/strong&gt; and &lt;strong&gt;vibe coding&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The idea is for the human (that's you) to write automated tests to verify that the code the AI is writing actually does what it should.&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;vibe coding&lt;/strong&gt;, there's one rule:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ignore the code; let the AI write it entirely.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In &lt;strong&gt;vibe-but-verify&lt;/strong&gt; coding, there are two rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ignore the &lt;em&gt;production&lt;/em&gt; code; let the AI write it entirely.&lt;/li&gt;
&lt;li&gt;Write the &lt;em&gt;test&lt;/em&gt; code yourself; don't let the AI touch it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this way, you're forcing the &lt;strong&gt;non-deterministic&lt;/strong&gt; output of the AI to be &lt;strong&gt;somewhat deterministic&lt;/strong&gt;, where it counts. You can write different kinds of tests to enforce what matters (including security and performance), but leave the rest for the AI to work out.&lt;/p&gt;

&lt;p&gt;In other words, you can ensure that the AI does the right thing, does it in the right way, and &lt;em&gt;continues&lt;/em&gt; to do so. Because that's what automated tests are meant to do in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do the Thing
&lt;/h2&gt;

&lt;p&gt;Let's see an example.&lt;/p&gt;

&lt;p&gt;First off, it's a good idea to explicitly tell the AI not to mess with your tests, whether in any prompts you write or in a Cursor/Windsurf rule.&lt;/p&gt;

&lt;p&gt;I have a line in a Cursor rule that simply says:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Do not edit any tests.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, vibe-but-verify coding can take many forms. In one such form, you write the tests first, and then have the AI write the code to pass those tests (you might call this &lt;strong&gt;Test-Driven AI Development&lt;/strong&gt;, if you're a nerd).&lt;/p&gt;

&lt;p&gt;For example, here's a test I wrote in a side project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;test&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@playwright/test&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;renders correctly&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;goto&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./&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;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toHaveTitle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Competition Helper&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;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getByRole&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;heading&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Competition Helper&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;})).&lt;/span&gt;&lt;span class="nf"&gt;toBeVisible&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;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getByRole&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;textbox&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Media URL&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;})).&lt;/span&gt;&lt;span class="nf"&gt;toBeVisible&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;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getByRole&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;spinbutton&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Run Length (seconds)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;})).&lt;/span&gt;&lt;span class="nf"&gt;toBeVisible&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;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getByRole&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;spinbutton&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Lead-up Time (seconds)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;})).&lt;/span&gt;&lt;span class="nf"&gt;toBeVisible&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;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getByRole&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;spinbutton&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Reminder Time (seconds before end)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;})).&lt;/span&gt;&lt;span class="nf"&gt;toBeVisible&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;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getByRole&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;button&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Start&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;})).&lt;/span&gt;&lt;span class="nf"&gt;toBeVisible&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;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getByRole&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;button&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Reset&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;})).&lt;/span&gt;&lt;span class="nf"&gt;toBeVisible&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;After writing that, I literally told the AI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Implement the changes necessary to make the tests pass
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;And it did.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've gotta be honest, I was kinda surprised and excited to see this actually work the first time.&lt;/p&gt;

&lt;p&gt;More complicated tests will likely require some more finagling, but the process and the results remain the same.&lt;/p&gt;

&lt;p&gt;If you like, you can also add a rule that says something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;After making changes, run the tests again. If they don't pass, fix it.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see, with this approach we're essentially creating an &lt;strong&gt;enforced feature spec&lt;/strong&gt;. You can be sure that if your tests pass, the &lt;em&gt;thing&lt;/em&gt; has been &lt;em&gt;done&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This is also why you shouldn't have the AI write the tests; that would be like the blind leading the blind. The AI doesn't tell itself what to do, the human does (until the uprising, at least).&lt;/p&gt;

&lt;h2&gt;
  
  
  To Infinity and Beyond
&lt;/h2&gt;

&lt;p&gt;If vibe coding can take you from nothing to working prototype in minutes, how far could vibe-but-verify coding take you? Perhaps past that last 30%.&lt;/p&gt;

&lt;p&gt;Maybe this is how it's meant to be, human and AI working together in a symbiotic relationship to create something that neither could've created alone.&lt;/p&gt;

&lt;p&gt;But what about non-coders, the target audience for vibe coding? Are they just left out in the cold? Maybe not. Maybe automated tests don't &lt;em&gt;have&lt;/em&gt; to be written in code. Maybe new tools will be created to fulfill this need without code.&lt;/p&gt;

&lt;p&gt;Whatever happens, remember that technology has existed for approximately 0% of human history (rounding down). All this stuff is brand new. No one knows what the future holds.&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>ai</category>
      <category>testing</category>
      <category>programming</category>
    </item>
    <item>
      <title>Why Every Developer Should Use a Code Spell Checker</title>
      <dc:creator>Tanner Iverson</dc:creator>
      <pubDate>Fri, 07 Mar 2025 00:05:26 +0000</pubDate>
      <link>https://forem.com/bagelbomb/why-every-developer-should-use-a-code-spell-checker-5fd</link>
      <guid>https://forem.com/bagelbomb/why-every-developer-should-use-a-code-spell-checker-5fd</guid>
      <description>&lt;p&gt;As a developer, you might think to yourself, "why would I need to use a spell checker? I'm writing code, not an essay." I believe that sentiment, while understandable, is incorrect. Here's why.&lt;/p&gt;

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

&lt;p&gt;But first, in case you're wondering what a code spell checker is exactly, it's a spell checker that understands the way code is written. It understands cases (such as camelCase and snake_case) and will ignore keywords (such as &lt;code&gt;const&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;For example, &lt;code&gt;myvariable&lt;/code&gt; will be flagged as misspelled, but &lt;code&gt;myVariable&lt;/code&gt; won't be.&lt;/p&gt;

&lt;p&gt;A code spell checker will usually take the form of an IDE extension, and the one I use (for VS Code) is simply called &lt;a href="https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker" rel="noopener noreferrer"&gt;Code Spell Checker (streetsidesoftware.code-spell-checker)&lt;/a&gt;. It works well, and I really like that the blue squiggly lines it produces are noticeable but not annoying.&lt;/p&gt;

&lt;p&gt;Now let's get into the "why".&lt;/p&gt;

&lt;h2&gt;
  
  
  Professionalism
&lt;/h2&gt;

&lt;p&gt;If you're writing user-facing content, such as API documentation or rendered text, then the benefits of using a spell checker are obvious. You always want to give your users a good experience, avoid any confusion, and be presented as a professional and reliable source.&lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;even if you're just writing code, using a spell checker is still a great choice.&lt;/strong&gt; The enhanced clarity and maintainability will be appreciated by anyone that works on the code in the future (including you).&lt;/p&gt;

&lt;h2&gt;
  
  
  Pull Requests
&lt;/h2&gt;

&lt;p&gt;Even if you don't care about misspelled code, someone on your team (or anyone else reviewing your PRs) might. For that reason alone, I'd say a spell checker is worth it. &lt;strong&gt;No one wants to waste precious review cycles on something so trivial.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Errors
&lt;/h2&gt;

&lt;p&gt;And most importantly, not using a spell checker can end up causing errors. I've seen it happen before, and I imagine I'll see it happen again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How? When some code expects the correct spelling and other code expects the incorrect spelling.&lt;/strong&gt; Types and linting can help with this, but they can't catch everything.&lt;/p&gt;

&lt;p&gt;For example, you may have a NoSQL database or just some JSON that is intentionally flexible; you want the freedom to change the structure of the data as quickly as possible. But when you pluck that data out, it can be difficult to ensure all the fields match.&lt;/p&gt;

&lt;p&gt;Of course, using a spell checker can't guarantee these errors won't happen, but it &lt;em&gt;will&lt;/em&gt; reduce the likelihood. After all, &lt;strong&gt;there's only one correct way to spell a word, and an infinite number of ways to misspell it.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F2adf5ytljrnp219vj3qj.png" 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.amazonaws.com%2Fuploads%2Farticles%2F2adf5ytljrnp219vj3qj.png" alt="OCD satisfied meme" width="414" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To summarize, using a code spell checker &lt;strong&gt;enhances professionalism&lt;/strong&gt; (cleaner code and rendered content), &lt;strong&gt;speeds up PRs&lt;/strong&gt; (fewer nitpicky corrections from reviewers), and &lt;strong&gt;prevents errors&lt;/strong&gt; (catching typos that could cause bugs).&lt;/p&gt;

&lt;p&gt;For these reasons, I'd highly recommend installing a code spell checker in your IDE. It's a small, unobtrusive change with real long-term benefits.&lt;/p&gt;

&lt;p&gt;Do you agree or disagree? Feel free to let me know in the comments. Thanks for reading!&lt;/p&gt;

</description>
      <category>tooling</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I got AWS Certified in 2 Weeks</title>
      <dc:creator>Tanner Iverson</dc:creator>
      <pubDate>Mon, 17 Feb 2025 06:24:44 +0000</pubDate>
      <link>https://forem.com/bagelbomb/how-i-got-aws-certified-in-2-weeks-531m</link>
      <guid>https://forem.com/bagelbomb/how-i-got-aws-certified-in-2-weeks-531m</guid>
      <description>&lt;p&gt;I passed the AWS Certified Cloud Practitioner exam after studying for 2 weeks, with no prior experience. Here's how, and why.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why?
&lt;/h2&gt;

&lt;p&gt;Several months ago, my manager asked me to work on getting cloud certifications. I fully intended to do so, but because my team doesn't use AWS directly and because I had more interesting projects to work on (not to mention my full-time workload), I lacked the motivation to do it.&lt;/p&gt;

&lt;p&gt;I thought, "I'll just finish what I'm working on now and get back to the AWS stuff before my yearly evaluation. I have plenty of time."&lt;/p&gt;

&lt;p&gt;Turns out, I didn't.&lt;/p&gt;

&lt;p&gt;On January 3rd, I received a notification that self-evaluations had opened and were due on January 24th, 3 weeks later.&lt;/p&gt;

&lt;p&gt;At that point, I had worked on an AWS course for about 3 hours. That's 10% of the course. I quickly realized that I was not going to finish the course in time. &lt;/p&gt;

&lt;p&gt;I had to either accept the fact that I would disappoint my manager and receive a worse evaluation than I could have, or figure out how to get certified in less than 3 weeks.&lt;/p&gt;

&lt;h2&gt;
  
  
  How?
&lt;/h2&gt;

&lt;p&gt;I started by continuing the AWS course (&lt;a href="https://www.udemy.com/course/aws-certified-cloud-practitioner-new/" rel="noopener noreferrer"&gt;Ultimate AWS Certified Cloud Practitioner CLF-C02&lt;/a&gt;; highly recommend it), until I realized that I spend about the same amount of time on things like taking notes and the hands-on exercises as I do on watching the course videos. That means that 15 hour course would end up taking 30 hours. I didn't have time to finish the course, let alone to prepare for and take the exam.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cheat Sheets
&lt;/h3&gt;

&lt;p&gt;I needed something to teach me just enough about every topic in the exam, without diving too deep. So I looked for cheat sheets, and found &lt;a href="https://sathittham.medium.com/aws-cloud-practitioner-certification-cheat-sheet-1191b36137a8" rel="noopener noreferrer"&gt;this one&lt;/a&gt;. I wasn't expecting to find what I needed immediately or all in one place, but this ended up being exactly that. I was able to read through it in one sitting, and I learned a lot.&lt;/p&gt;

&lt;p&gt;I read through that cheat sheet several times, sometimes reading the sections in reverse order to avoid primacy bias, and Googling anything I felt like I needed more information on.&lt;/p&gt;

&lt;p&gt;I also skimmed through the &lt;a href="https://d1.awsstatic.com/training-and-certification/docs-cloud-practitioner/AWS-Certified-Cloud-Practitioner_Exam-Guide.pdf" rel="noopener noreferrer"&gt;exam guide&lt;/a&gt; and the short descriptions in the Services dropdown menu on the AWS Console.&lt;/p&gt;

&lt;p&gt;After doing this for a few days, I felt ready to start taking some practice tests.&lt;/p&gt;

&lt;h3&gt;
  
  
  Practice Tests
&lt;/h3&gt;

&lt;p&gt;First, I took the free 20-question &lt;a href="https://explore.skillbuilder.aws/learn/courses/14050/aws-certified-cloud-practitioner-official-practice-question-set-clf-c02-english" rel="noopener noreferrer"&gt;AWS Skillbuilder test&lt;/a&gt;. I failed, but that was to be expected.&lt;/p&gt;

&lt;p&gt;Then I took the more realistic practice test at the end of the AWS course. I also failed that one, but not by much (63% out of 70% for passing). I was getting better.&lt;/p&gt;

&lt;p&gt;The instructor for the AWS course also has a &lt;a href="https://www.udemy.com/course/practice-exams-aws-certified-cloud-practitioner/" rel="noopener noreferrer"&gt;separate course&lt;/a&gt; with 6 additional practice tests. Since my company pays for Udemy subscriptions, I made sure to take advantage of this. I took the first test... and passed!&lt;/p&gt;

&lt;p&gt;I took the second and third tests and passed those as well. I also went back and took the free test again, and passed it too.&lt;/p&gt;

&lt;p&gt;Throughout this whole process, I made sure to read the explanations for the questions I got wrong, and even some that I got right (anything I was unsure about), and to reread the cheat sheet as needed.&lt;/p&gt;

&lt;p&gt;I would've liked to take the rest of the tests I had access to, but I was running out of time and now that I was consistently passing the practice tests, I felt confident enough to take the real one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exam Time
&lt;/h2&gt;

&lt;p&gt;I scheduled the exam for January 17th, 1 week before my self-imposed deadline, and 2 weeks after I started studying (I wanted to leave a gap in case it took a while to get the score report). On the day of the exam, I read the cheat sheet one more time, and then I gave it my best shot. I passed with a score of 881!&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fb9lnouhg07dib3o27ica.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fb9lnouhg07dib3o27ica.png" alt="Jurassic Park - never thought if you should meme" width="620" height="337"&gt;&lt;/a&gt;&lt;br&gt;
Just because you &lt;em&gt;can&lt;/em&gt; pass the AWS Certified Cloud Practitioner exam after studying for 2 weeks, doesn't mean you &lt;em&gt;should&lt;/em&gt; (you probably shouldn't). Many things could have gone wrong, and at many points, I thought I wouldn't be able to do it.&lt;/p&gt;

&lt;p&gt;This is also an entry-level exam; I would definitely advise against following this process on more advanced exams. And AWS is a very good thing to be knowledgeable in as a web developer; it deserves to be learned "properly".&lt;/p&gt;

&lt;p&gt;That being said, I'm proud of what I was able to do, and I thought I'd share my experience in case it can help anyone else in their learning journey. Thanks for reading!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
