<?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: Joe Ivans</title>
    <description>The latest articles on DEV Community by Joe Ivans (@joeivansdev).</description>
    <link>https://dev.to/joeivansdev</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%2F350631%2Faffd835d-9825-4abf-9f18-2ceb708af945.jpg</url>
      <title>DEV Community: Joe Ivans</title>
      <link>https://dev.to/joeivansdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joeivansdev"/>
    <language>en</language>
    <item>
      <title>Not Committing Frequently Enough? Clone To RAM Disks!</title>
      <dc:creator>Joe Ivans</dc:creator>
      <pubDate>Mon, 15 Nov 2021 10:18:41 +0000</pubDate>
      <link>https://dev.to/joeivansdev/not-committing-frequently-enough-clone-to-ram-disks-1f2h</link>
      <guid>https://dev.to/joeivansdev/not-committing-frequently-enough-clone-to-ram-disks-1f2h</guid>
      <description>&lt;h2&gt;
  
  
  What are you nuts? RAM is volatile!
&lt;/h2&gt;

&lt;p&gt;You ever tell someone you're working with to save a document and they go, 'Oh ya, it has autosave... sooo.' Well, git doesn't do that. In fact, git doesn't care about how you choose to use it; it was designed that way by &lt;a href="https://web.archive.org/web/20211018214956/https://www.linuxfoundation.org/blog/10-years-of-git-an-interview-with-git-creator-linus-torvalds/"&gt;Linus himself for fundamentally good reasons&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Git also doesn't help you with your stale branch problem -- again, for good reasons.&lt;/p&gt;

&lt;p&gt;As an FYI, if you haven't experienced this yet, management will freak out if you don't push code at regular intervals -- I reaaaally want to say this is also for good reasons.&lt;/p&gt;

&lt;p&gt;So, in order to make the team happy, I've developed a workflow I use to ensure I'm always rebasing, adding, committing and pushing. I make the fear of losing the code a reality. I'd like to share that fear with you now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Like a good engineer, RAM doesn't hang around long, and neither should your feature branch
&lt;/h2&gt;

&lt;h3&gt;
  
  
  RAM actually disappears, unlike most hard drives, statistically
&lt;/h3&gt;

&lt;p&gt;So, if I know that every second is a huge risk for my branch, because it's sitting in a RAM-backed virtual disk and not on a drive, I'll fetch/rebase/ACP it more frequently (&lt;code&gt;FRACP&lt;/code&gt;??! - this is not a thing).&lt;/p&gt;

&lt;h3&gt;
  
  
  WARNING. What could possibly go wrong?
&lt;/h3&gt;

&lt;p&gt;Unlike the potential hard drive crash dilemma, you &lt;em&gt;actually will&lt;/em&gt; lose work on a RAM disk. Make sure you actually add/commit/push your work so it doesn't go to bit purgatory.&lt;/p&gt;

&lt;h3&gt;
  
  
  WARNING. What could possibly go right?
&lt;/h3&gt;

&lt;p&gt;Personally, I like getting a fresh clone when I go back to a repo to work on it after some time has passed. Whatever's deployed now certainly doesn't match that crusty old thing that's been hanging around for three month's worth of time machine backups... with a ton of &lt;code&gt;.gitignore&lt;/code&gt; excluded files that nobody else can see. Should I really spend time rebasing all my stale branches? And what about all those freaking &lt;code&gt;node_modules&lt;/code&gt;, just sitting there?&lt;/p&gt;

&lt;h2&gt;
  
  
  Cool story. Let's try it
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Try it on Mac
&lt;/h3&gt;

&lt;p&gt;Fire up your &lt;code&gt;terminal.app&lt;/code&gt; and type in the script below to mount an ~6 Gigabyte RAM disk called &lt;code&gt;git&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;diskutil erasevolume hfs+ git &lt;span class="sb"&gt;`&lt;/span&gt;hdiutil attach &lt;span class="nt"&gt;-nomount&lt;/span&gt; ram://&lt;span class="k"&gt;$((&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="m"&gt;512&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="m"&gt;4096&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you can clone something to it and start working. This example clones the amazing &lt;a href="https://web.archive.org/web/20211028042957/https://algs4.cs.princeton.edu/home/"&gt;Algorithms 4th Edition&lt;/a&gt; book source code:&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="nb"&gt;cd&lt;/span&gt; /Volumes/git &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; git clone https://github.com/kevin-wayne/algs4.git &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;algs4 &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; less README.md

&lt;span class="c"&gt;# if you're stuck in the readme, press q to quit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Try it on Windows (using WSL / Ubuntu)
&lt;/h3&gt;

&lt;p&gt;There's a way to do this using PowerShell but I think it's kind of clunky. There's tons of info on this out there, and there's also some paid utilities you can get. But my approach is to use WSL Ubuntu because that's what I'm mostly using on Windows anyway.&lt;/p&gt;

&lt;p&gt;My approach is adapted from &lt;a href="https://web.archive.org/web/20210808095238/https://linuxhint.com/ramdisk_ubuntu_1804/"&gt;linuxhint's great tutorial&lt;/a&gt;.&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="c"&gt;# make the mnt directory&lt;/span&gt;
&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; /mnt/git

&lt;span class="c"&gt;# mount 6 GB of RAM under the directory&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;mount &lt;span class="nt"&gt;-t&lt;/span&gt; tmpfs &lt;span class="nt"&gt;-o&lt;/span&gt; rw,size&lt;span class="o"&gt;=&lt;/span&gt;6G tmpfs /mnt/git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you can also clone the awesome &lt;a href="https://web.archive.org/web/20211028042957/https://algs4.cs.princeton.edu/home/"&gt;Algorithms 4th Edition&lt;/a&gt; book source code:&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="nb"&gt;cd&lt;/span&gt; /mnt/git &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; git clone https://github.com/kevin-wayne/algs4.git &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;algs4 &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; less README.md

&lt;span class="c"&gt;# if you're stuck in the readme, press q to quit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Windows Explorer, you can go to &lt;code&gt;\\wsl$\Ubuntu\mnt\git&lt;/code&gt; to access the RAM disk in the GUI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mac/PC/Linux, it's easier to stay in one environment
&lt;/h2&gt;

&lt;p&gt;I like Windows and I like OS X. But as an engineer I need to speed up my setup process. So I choose to use the OS X Terminal on OS X, and the WSL Ubuntu on Windows. Most of the terminal navigation is the same. Much better than jumping between PowerShell and z-shell.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other uses for RAM disks
&lt;/h2&gt;

&lt;p&gt;I do this workflow on the Mac all the time, not just for code things. Especially with filesystem stuff like zip/unzip or Chrome's temp files, which don't need to eat up my SSD lifespan. I'll fire up a RAM disk, get the final state of things I need, move them off the disk (or not), then unmount the drive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Until next time
&lt;/h2&gt;

&lt;p&gt;I hope this article helps you. It's actually the second one I've ever written. This workflow has helped me over the years and I wanted to share it with you in case you're struggling with finding a productive ACP workflow. Have fun out there, Joe.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>programming</category>
      <category>git</category>
      <category>tooling</category>
    </item>
    <item>
      <title>I Disregard Tedious Grammar Rules For The Same Reason Your MVP Sucks - On Purpose</title>
      <dc:creator>Joe Ivans</dc:creator>
      <pubDate>Fri, 12 Nov 2021 20:48:20 +0000</pubDate>
      <link>https://dev.to/joeivansdev/i-disregard-tedious-grammar-rules-for-the-same-reason-your-mvp-sucks-on-purpose-1d45</link>
      <guid>https://dev.to/joeivansdev/i-disregard-tedious-grammar-rules-for-the-same-reason-your-mvp-sucks-on-purpose-1d45</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Your MVP is not a finished product. If you spend too much time thinking about your product, you'll never have a product, because no-one will ever get to use it. Why don't you just deploy something small that somebody actually needs? You can just fix it after you find out it's wrong. But you need to fix it fast. - Joe, this guy, right here&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  I know what you're thinking
&lt;/h2&gt;

&lt;p&gt;Rules are for professionals. Smart people made the rules. Maybe I should follow the rules. You know, the same rules that everyone follows. If everyone follows them, maybe they're correct?&lt;/p&gt;

&lt;p&gt;Ya, maybe. But so what? Are we thinking about things at all or following rules? Are they simple rules? How serious are these rules? Can people get hurt? Will I fail? Will I be the cause of someone else's failure?&lt;/p&gt;

&lt;p&gt;Will these rules persist long after I'm gone? If not, will I have been wrong for following the wrong rules?&lt;/p&gt;

&lt;p&gt;Should I have therefore been thinking about the wrong rules and why they're wrong?&lt;/p&gt;

&lt;p&gt;Or do I just want to get to a &lt;em&gt;minimally viable product&lt;/em&gt;?&lt;/p&gt;

&lt;h2&gt;
  
  
  I had some great opportunities this week.
&lt;/h2&gt;

&lt;p&gt;One of them was the freedom to just write stuff down. I feel the same way when I code just for the sake of coding. I realized today, when trying to blog for the first time, that I forgot a bunch of grammar rules I learned back in my school days.&lt;/p&gt;

&lt;p&gt;And then I thought, should rules prevent me from doing something?&lt;/p&gt;

&lt;p&gt;Probably. But it depends.&lt;/p&gt;

&lt;h2&gt;
  
  
  It depends on everything!?
&lt;/h2&gt;

&lt;p&gt;There are so many things to think about. And man, I could go off. But, what's important? That's usually a good start.&lt;/p&gt;

&lt;p&gt;When I'm writing software, I usually think of how cool I can make my code. I say usually here because I still think of optimization at the wrong times, but at least I catch myself and go "Hey Joe, STOP IT". My customers have never cared about the cleanliness of my code. But they do care when I can't change it quickly. That's a personal rule I choose to follow because of experience writing code and having customers change their minds. This pretty much sums up the point of agile software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  But it doesn't quite sum up my problem with grammar rules. I'll tie that in now.
&lt;/h2&gt;

&lt;p&gt;If I cared so much about my code, more than delivering my product to a customer who is waiting anxiously for me to produce value for them, would that choice cause me to fail? Yes.&lt;/p&gt;

&lt;p&gt;If I cared so much about my grammar, more than --just starting my blog--, would that prevent me from --starting my blog--? Yes.&lt;/p&gt;

&lt;p&gt;So there it is. Rules in real life are just personal guidance usually preventing us from making mistakes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agile rules. Magic Bullets And All That
&lt;/h2&gt;

&lt;p&gt;I don't mean that like "Agile is the best".. I mean that like, "Agile is now like a thing and an action combined instead of a bunch of good ideas that you can cherry-pick as long as you actually know what the hell you are doing".&lt;/p&gt;

&lt;p&gt;I can take Agile's rules, write an Agile Rule Library and share it on NPM for JS consumption, and share it on NuGet for .NET consumption. Or you know what, maybe I'll create AAAS - Agile as a Service - feel free to pronounce that however you see fit. Then that should fix everything, right? We'll all be on the same rules, our work will get rejected when it doesn't fit the rules and we can all live happily in Agile bliss, analyzing our work against the rules, making up story points for making up story points, and staring at charts until we realize - we have no MVP to deliver.&lt;/p&gt;

&lt;h2&gt;
  
  
  OK, What Does This Have To Do With An MVP?
&lt;/h2&gt;

&lt;p&gt;Agile is a word. Neo from The Matrix is agile because he 'moves that fast' and Trinity 'never saw anybody move that fast'... 'how do you move that fast,' she asks him. He, due to a well-encapsulated system designed by 'the machines', doesn't know how to answer that question.&lt;/p&gt;

&lt;p&gt;If a customer asked me anything about my code, I would have the same Keanu Reeves look on my face. My reason though would be more like 'Did something go wrong? How are you seeing the code? Tell me what's wrong with the thing you're using so I can deliver a better thing.'&lt;/p&gt;

&lt;p&gt;The bottom line is this: You gotta deliver fast. You gotta get and respond to feedback fast, directly from your customer. But you gotta remember, your MVP will suck until it's not an MVP anymore. It's up to you to ask why it sucks and do something about it. And hopefully move as fast as Neo does.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>programming</category>
      <category>codequality</category>
      <category>writing</category>
    </item>
  </channel>
</rss>
