<?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: Devin Mork</title>
    <description>The latest articles on DEV Community by Devin Mork (@demo318).</description>
    <link>https://dev.to/demo318</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%2F1219185%2Fcdb48dc3-305b-45ac-81bb-674736160631.png</url>
      <title>DEV Community: Devin Mork</title>
      <link>https://dev.to/demo318</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/demo318"/>
    <language>en</language>
    <item>
      <title>"Fast is Slow, Slow is Smooth, and Smooth is Fast"</title>
      <dc:creator>Devin Mork</dc:creator>
      <pubDate>Fri, 25 Apr 2025 20:31:59 +0000</pubDate>
      <link>https://dev.to/demo318/fast-is-slow-slow-is-smooth-and-smooth-is-fast-5eic</link>
      <guid>https://dev.to/demo318/fast-is-slow-slow-is-smooth-and-smooth-is-fast-5eic</guid>
      <description>&lt;p&gt;The quote in the title was first related to me by a former marine, just shooting the breeze, talking about what it takes to do large-scale conference operations correctly.&lt;/p&gt;

&lt;p&gt;In basic training, he and his buddies were taught this mantra when reloading their weapons:&lt;/p&gt;

&lt;h3&gt;
  
  
  Fast is Slow ...
&lt;/h3&gt;

&lt;p&gt;In a combat situation, when a soldier finishes the last round in his magazine, it makes sense that he would want to reload his weapon as quickly as possible. Unfortunately, this often leads to rushed actions which results in mistakes. He might drop his new magazine or cause a jam among other misfortunes. In trying to move quickly he's actually made his reloading process take much longer, which can be a fatal mistake under live fire.&lt;/p&gt;

&lt;h3&gt;
  
  
  ... Slow is Smooth ...
&lt;/h3&gt;

&lt;p&gt;Moving at a &lt;em&gt;normal&lt;/em&gt; pace in an adrenaline-fueled environment &lt;em&gt;feels slow&lt;/em&gt;. However, this "slow" form of movement is exactly the pace one ought to move to avoid mistakes. By moving in a way that feels slow, you're actually just moving at the appropriate pace to reload your weapon without errors.&lt;/p&gt;

&lt;h3&gt;
  
  
  ... Smooth is Fast
&lt;/h3&gt;

&lt;p&gt;Of course, this rounds out the process that in moving in a pace that &lt;em&gt;feels slow&lt;/em&gt;, you will reload your weapon much more quickly than the soldier who's moving quickly but making mistakes. It feels like a sacrifice in the moment, but in the long run it keeps him alive.&lt;/p&gt;

&lt;h2&gt;
  
  
  On Learning to Code
&lt;/h2&gt;

&lt;p&gt;I have been trying on-again-off-again to begin a coding journey since 2017. It's difficult for me to name a programming language or web framework that I haven't tinkered with in some capacity.&lt;/p&gt;

&lt;p&gt;However, I feel like I have nothing to show for it. No apps in the app store, no SaaS platforms driving monthly recurring revenue. Just many unfinished plans living in my head and my GitHub archives.&lt;/p&gt;

&lt;p&gt;This year, I'm starting over. I've decided to embrace "&lt;a href="https://zenhabits.net/beginner/" rel="noopener noreferrer"&gt;beginner's mind&lt;/a&gt;" and start learning to code totally from scratch through &lt;a href="https://theodinproject.com" rel="noopener noreferrer"&gt;The Odin Project&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In the past, I moved too fast. I'm a fast reader and a quick study, so I have found I often have the capacity to "successfully" blow through coding training curriculum. Unfortunately, doing it this way has meant the material doesn't get drilled down very deeply into my subconscious. Coding lives in a very shallow level of my psyche, and so when projects get too difficult, I abandon ship for some other pursuit.&lt;/p&gt;

&lt;p&gt;Now, we're experimenting with exactly the opposite.&lt;/p&gt;

&lt;p&gt;No speed reading.&lt;/p&gt;

&lt;p&gt;No jumping ahead.&lt;/p&gt;

&lt;p&gt;No skipping lessons.&lt;/p&gt;

&lt;p&gt;No half-assed commit messages.&lt;/p&gt;

&lt;p&gt;Everything is being done slowly and consistently, aiming for four hours' worth of work per week (because, you know, I have a full time job and a family to take care of). We're allowing the material to sink down deep and for project ideas to slowly grow to conceptual maturity while I work through the curriculum.&lt;/p&gt;

&lt;p&gt;Wanna know something? I think it's working! If nothing else, I'm happier and much more focused, no longer frenetically pushing as quickly as possible through the current lesson to get to the next one.&lt;/p&gt;

&lt;p&gt;"Smooth is Fast." We're going to focus on Slow, allow it to be Smooth, and let "Fast" take care of itself.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>webdev</category>
      <category>theodinproject</category>
    </item>
    <item>
      <title>Add @Hotwire/Turbo to a Lucky Application</title>
      <dc:creator>Devin Mork</dc:creator>
      <pubDate>Mon, 11 Mar 2024 21:57:15 +0000</pubDate>
      <link>https://dev.to/demo318/add-hotwireturbo-to-a-lucky-application-4ph3</link>
      <guid>https://dev.to/demo318/add-hotwireturbo-to-a-lucky-application-4ph3</guid>
      <description>&lt;p&gt;Lucky is a web framework for the Crystal programming language, inspired by the best lessons learned from Ruby on Rails.&lt;/p&gt;

&lt;p&gt;The below steps outline how to enable Hotwire Turbo on a new Lucky Application.&lt;/p&gt;

&lt;p&gt;(This tutorial assumes you already have an application in a working development environment on your own machine that you can run with the &lt;code&gt;lucky run&lt;/code&gt; command.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Install Turbo
&lt;/h2&gt;

&lt;p&gt;Before editing anything in your crystal application, you'll need to install the Turbo JavaScript library.&lt;/p&gt;

&lt;p&gt;Navigate to your project's main directory (the same directory where &lt;code&gt;shard.yml&lt;/code&gt; is located), and run&lt;/p&gt;

&lt;p&gt;&lt;code&gt;yarn add @hotwired/turbo&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;or &lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install @hotwired/turbo&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;(depends on your preferred method for adding third-party JavaScript libraries).&lt;/p&gt;

&lt;h2&gt;
  
  
  Add Turbo to app.js
&lt;/h2&gt;

&lt;p&gt;Open up the file &lt;code&gt;/src/js/app.js&lt;/code&gt;. On a newline add:&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;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;Turbo&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;@hotwired/turbo&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;(Don't forget the semicolon! I know as a Crystal developer you're not used to that.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Test Installation
&lt;/h2&gt;

&lt;p&gt;Launch your development server by navigating to your main project directory and running &lt;code&gt;lucky dev&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Open up &lt;code&gt;localhost:3000&lt;/code&gt; to any page with links on it.&lt;/p&gt;

&lt;p&gt;With your browser open in one window and your terminal in the other, mouse over any hyperlink on your webpage. Each time your cursor touches a hyperlink to another page of your app, you should see your server receive a GET request.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7pwgif5ry2n2ywcwiry.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7pwgif5ry2n2ywcwiry.png" alt="Screenshot of terminal loading GET Requests" width="517" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Version Notes
&lt;/h3&gt;

&lt;p&gt;This tutorial was made with &lt;code&gt;Crystal 1.11.2&lt;/code&gt;, &lt;code&gt;Lucky 1.1.1&lt;/code&gt;, and &lt;code&gt;@hotwired/turbo 8.0.4&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>crystal</category>
      <category>hotwire</category>
      <category>lucky</category>
    </item>
  </channel>
</rss>
