<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.2">Jekyll</generator><link href="https://www.isaacbroyles.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.isaacbroyles.com/" rel="alternate" type="text/html" /><updated>2022-06-12T23:02:32+00:00</updated><id>https://www.isaacbroyles.com/feed.xml</id><title type="html">isaac broyles | home</title><subtitle>Isaac Broyles' personal site featuring articles about Software Engineering</subtitle><author><name>isaacbroyles</name></author><entry><title type="html">Art Links</title><link href="https://www.isaacbroyles.com/art-links" rel="alternate" type="text/html" title="Art Links" /><published>2022-06-12T20:18:16+00:00</published><updated>2022-06-12T22:20:46+00:00</updated><id>https://www.isaacbroyles.com/art-links</id><content type="html" xml:base="https://www.isaacbroyles.com/art-links">&lt;p&gt;Here’s links to art resources I’ve found valuable.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;NOTE: Some of the links below may be affiliate links. Nevertheless, I don’t put affiliate links to things unless I’ve personally used/vetted them. Feel free to contact me if you have any questions.&lt;/p&gt;

&lt;h2 id=&quot;books&quot;&gt;Books&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://amzn.to/3xH5d72&quot; target=&quot;\_blank&quot;&gt;Figure Drawing for All It’s Worth - Andrew Loomis&lt;/a&gt; - This has been my primary study material for figure drawing. I worked through this book page by page, redrawing many of the poses in here as per Loomis’ method. I feel like my figure drawing improved significantly after going through this book.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://amzn.to/3zzeiA1&quot; target=&quot;\_blank&quot;&gt;Drawing on the Right Side of the Brain&lt;/a&gt; - I have mixed feelings about this book, but I would still recommend it to very early beginners. It has some good lessons, but I personally felt like I needed to quickly move on from the lessons in this book.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;supplies&quot;&gt;Supplies&lt;/h2&gt;

&lt;p&gt;TBD&lt;/p&gt;

&lt;h2 id=&quot;online-resources&quot;&gt;Online Resources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/learnart/comments/dapk62/from_the_guy_who_made_the_most_comprehensive_list/&quot; target=&quot;\_blank&quot;&gt;RadioRunner’s Curriculum for the Solo Artist - Original Post&lt;/a&gt; - RadioRunner compiled an awesome list of online resources a few years back, and posted it to Reddit. I’ve used this list as a hub to find some of the best resources for the topics I want to study. Strongly recommend going through it.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.brendanmeachen.com/soloartist&quot; target=&quot;\_blank&quot;&gt;RadioRunner’s Curriciulum for the Solo Artist - Online Version&lt;/a&gt; - The above hosted in web format, with clickable links.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://croquis.cafe/&quot; target=&quot;\_blank&quot;&gt;Croquis Cafe&lt;/a&gt; - Really helpful resource for quality poses.&lt;/li&gt;
&lt;/ul&gt;</content><author><name>isaacbroyles</name></author><category term="art" /><category term="art" /><summary type="html">Here’s links to art resources I’ve found valuable.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.isaacbroyles.com/assets/images/Profile.jpg" /><media:content medium="image" url="https://www.isaacbroyles.com/assets/images/Profile.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Building Unity with GitHub Actions</title><link href="https://www.isaacbroyles.com/gamedev/2020/07/04/unity-github-actions.html" rel="alternate" type="text/html" title="Building Unity with GitHub Actions" /><published>2021-07-31T21:19:22+00:00</published><updated>2021-07-31T21:19:22+00:00</updated><id>https://www.isaacbroyles.com/gamedev/2020/07/04/unity-github-actions</id><content type="html" xml:base="https://www.isaacbroyles.com/gamedev/2020/07/04/unity-github-actions.html">&lt;p&gt;I recently began doing some work on a personal project in &lt;a href=&quot;https://prf.hn/click/camref:1100ldaXB/destination:https://store.unity.com/products/unity-plus&quot; target=&quot;\_blank&quot;&gt;Unity Engine&lt;/a&gt;. As with any of my projects, the first thing I set up is a working CI pipeline for it. I find doing this early reinforces best practices. I liked the option of using GitHub Actions, since it is a relatively small project. Here’s how I did it!&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;getting-started&quot;&gt;Getting Started&lt;/h2&gt;

&lt;p&gt;First, familiarize yourself with the community offerings for GitHub Actions - &lt;a href=&quot;https://github.com/game-ci/unity-actions&quot; target=&quot;\_blank&quot;&gt;game-ci/unity-actions&lt;/a&gt;. There’s a good overview here in the readme of the supported actions.&lt;/p&gt;

&lt;p&gt;The other thing to check would be the official &lt;a href=&quot;https://game.ci/docs/github/getting-started&quot;&gt;game-ci getting starting docs&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;setting-up-license&quot;&gt;Setting up License&lt;/h2&gt;

&lt;p&gt;The instructions in the official docs aren’t the most verbose, but it’s actually quite simple.&lt;/p&gt;

&lt;p&gt;I’ll just go into a little more detail here to try to make things super clear.&lt;/p&gt;

&lt;h3 id=&quot;step-1---request-activation-file-on-github&quot;&gt;Step 1 - Request Activation File on GitHub&lt;/h3&gt;

&lt;p&gt;This is an action that is intended to be a one-time use. Its purpose is to create a “license request file” that will be needed for the next step. This is what will allow unity to run builds on the GitHub Actions servers.&lt;/p&gt;

&lt;p&gt;The file should end up looking something like this:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.github/workflows/activation.yml:&lt;/code&gt;&lt;/p&gt;

&lt;!-- prettier-ignore-start --&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Acquire activation file&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;workflow_dispatch&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pi&quot;&gt;{}&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;jobs&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;activation&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Request manual activation file 🔑&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;runs-on&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;steps&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;c1&quot;&gt;# Request manual activation file&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Request manual activation file&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;getManualLicenseFile&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;game-ci/unity-request-activation-file@v2&lt;/span&gt;
      &lt;span class=&quot;c1&quot;&gt;# Upload artifact (Unity_v20XX.X.XXXX.alf)&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Expose as artifact&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;actions/upload-artifact@v2&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;${{ steps.getManualLicenseFile.outputs.filePath }}&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;${{ steps.getManualLicenseFile.outputs.filePath }}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;!-- prettier-ignore-end --&gt;

&lt;p&gt;After you push it up, you can &lt;a href=&quot;https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow&quot;&gt;manually run the worfklow&lt;/a&gt; to generate your license.&lt;/p&gt;

&lt;p&gt;To find this file, go to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GitHub&lt;/code&gt; &amp;gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Your Repository&lt;/code&gt; &amp;gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Actions&lt;/code&gt;. Click on the commit that last ran. You should find a file named something like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Unity_v2019.3.14f1.alf&lt;/code&gt;. (The exact name depends on the version string that you put in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unityVersion&lt;/code&gt; above.)&lt;/p&gt;

&lt;p&gt;You’ll need to save this file locally for use in the next step.&lt;/p&gt;

&lt;h3 id=&quot;step-2---request-license-from-unity&quot;&gt;Step 2 - Request License from Unity&lt;/h3&gt;

&lt;p&gt;Head over to the &lt;a href=&quot;https://license.unity3d.com/manual&quot; target=&quot;\_blank&quot;&gt;Unity Manual Activation&lt;/a&gt; link.&lt;/p&gt;

&lt;p&gt;Here you simply upload your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.alf&lt;/code&gt; file from the previous step. Fill out the form with your license details.&lt;/p&gt;

&lt;p&gt;On the last step you should be able to download a file that ends in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.ulf&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This is your license you will put in GitHub secrets for use in your build actions.&lt;/p&gt;

&lt;h3 id=&quot;step-3---save-license-in-github-secrets&quot;&gt;Step 3 - Save License in GitHub Secrets&lt;/h3&gt;

&lt;p&gt;Open &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GitHub&lt;/code&gt; &amp;gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Your Repository&lt;/code&gt; &amp;gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Settings&lt;/code&gt; &amp;gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Secrets&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Create a secret called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;UNITY_LICENSE&lt;/code&gt; and add the contents of the obtained license file (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.ulf&lt;/code&gt;). Yes, add the entire XML contents to the GitHub secret.&lt;/p&gt;

&lt;p&gt;Now that this step is done, you can delete the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.github/workflows/activation.yml&lt;/code&gt; file.&lt;/p&gt;

&lt;h2 id=&quot;set-up-workflow&quot;&gt;Set up workflow&lt;/h2&gt;

&lt;p&gt;Now’s the fun stuff! Now that you have your license ready to go, you can start setting up actions.&lt;/p&gt;

&lt;p&gt;A couple of best practice recommendations:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Cache your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Library&lt;/code&gt; folder. This is where all your cached packages and large files end up during builds.
    &lt;ul&gt;
      &lt;li&gt;Note caches created on branches are scoped to that branch, regardless of key matches. Same goes for tags.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Use GitHub Releases to store your file, &lt;em&gt;not&lt;/em&gt; actions artifacts. You will quickly run into free limits using artifacts&lt;/li&gt;
  &lt;li&gt;Due to the size and time of full builds, I like to generate target builds only on tags.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s an example of a couple of workflow files.&lt;/p&gt;

&lt;h4 id=&quot;test---runs-on-every-commit&quot;&gt;Test - Runs on every commit&lt;/h4&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.github/workflows/test.yml:&lt;/code&gt;&lt;/p&gt;

&lt;!-- prettier-ignore-start --&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Test&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;pull_request&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pi&quot;&gt;{}&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pi&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;branches&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pi&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;master&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;pi&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;UNITY_LICENSE&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;${{ secrets.UNITY_LICENSE }}&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;jobs&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Test project&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;runs-on&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;steps&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;

      &lt;span class=&quot;c1&quot;&gt;# Checkout&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Checkout repository&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;actions/checkout@v2&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;lfs&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;true&lt;/span&gt;
    
      &lt;span class=&quot;c1&quot;&gt;# Cache&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;actions/cache@v2&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Library&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Library&lt;/span&gt;

      &lt;span class=&quot;c1&quot;&gt;# Test&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Run tests&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;game-ci/unity-test-runner@v2&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;unityVersion&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;2020.3.15f2&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;!-- prettier-ignore-end --&gt;

&lt;h4 id=&quot;build---runs-on-tagged-commits&quot;&gt;Build - Runs on tagged commits&lt;/h4&gt;

&lt;p&gt;This file uses this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;on.push.tags&lt;/code&gt; trigger to only run when tags are pushed.&lt;/p&gt;

&lt;p&gt;It then uploads artifacts, zips up the binaries, creates a GitHub release for the tag, and uploads the release assets to it.&lt;/p&gt;

&lt;p&gt;Depending on your usage, you might not want to upload the artifacts. You’ll quickly run into limits if you use it too much.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.github/workflows/main.yml:&lt;/code&gt;&lt;/p&gt;

&lt;!-- prettier-ignore-start --&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Build&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;tags&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;*'&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;UNITY_LICENSE&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;${{ secrets.UNITY_LICENSE }}&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;jobs&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Build my project&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;runs-on&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;steps&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;

      &lt;span class=&quot;c1&quot;&gt;# Checkout&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Checkout repository&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;actions/checkout@v2&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;lfs&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;true&lt;/span&gt;
    
      &lt;span class=&quot;c1&quot;&gt;# Cache&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;actions/cache@v2&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Library&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Library&lt;/span&gt;

      &lt;span class=&quot;c1&quot;&gt;# Test&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Run tests&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;game-ci/unity-test-runner@v2&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;unityVersion&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;2020.3.15f2&lt;/span&gt;

      &lt;span class=&quot;c1&quot;&gt;# Build&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Build project&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;game-ci/unity-builder@v2&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;unityVersion&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;2020.3.15f2&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;targetPlatform&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;StandaloneWindows64&lt;/span&gt; 

      &lt;span class=&quot;c1&quot;&gt;# Output &lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;actions/upload-artifact@v2&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Build&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;build&lt;/span&gt;

      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Zip build&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pi&quot;&gt;|&lt;/span&gt;
          &lt;span class=&quot;s&quot;&gt;pushd build/StandaloneWindows64&lt;/span&gt;
          &lt;span class=&quot;s&quot;&gt;zip -r ../../StandaloneWindows64.zip .&lt;/span&gt;
          &lt;span class=&quot;s&quot;&gt;popd&lt;/span&gt;

      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Release&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;softprops/action-gh-release@v1&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;StandaloneWindows64.zip&lt;/span&gt;
          &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Release ${{ github.ref }}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;!-- prettier-ignore-end --&gt;

&lt;p&gt;Note: If you’re using the above workflow, and experience an error on the build step like this:&lt;/p&gt;

&lt;!-- prettier-ignore-start --&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;na&quot;&gt;Warning&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;Changes were made to the following files and folders&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;Warning&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;?? artifacts/&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;Error&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Branch is dirty. Refusing to base semantic version on uncommitted changes&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;!-- prettier-ignore-end --&gt;

&lt;p&gt;You will need to add the artifacts folder to your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.gitignore&lt;/code&gt; file, as referenced in &lt;a href=&quot;https://github.com/game-ci/unity-builder/issues/241&quot;&gt;this GitHub issue&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Another option would be using the &lt;a href=&quot;https://game.ci/docs/github/builder#allowdirtybuild&quot;&gt;allowDirtyBuild&lt;/a&gt; flag if you are still running into dirty branch issues.&lt;/p&gt;

&lt;p&gt;Feel free to customize for your use case, as this workflow only outputs windows binaries. However, as mentioned in &lt;a href=&quot;https://github.com/game-ci/unity-actions&quot; target=&quot;\_blank&quot;&gt;game-ci/unity-actions&lt;/a&gt;, there’s a ton more supported actions/options.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Setting up a CI flow early tends to keep me honest in following best practices. I like to do it even for my hobby projects.&lt;/p&gt;

&lt;p&gt;A good side effect, is if I have to let projects idle for a while, I can always come back and expect my builds to work.&lt;/p&gt;

&lt;h2 id=&quot;related-links&quot;&gt;Related Links&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://prf.hn/click/camref:1100ldaXB/destination:https://store.unity.com/products/unity-plus&quot; target=&quot;\_blank&quot;&gt;Unity Plus&lt;/a&gt; - &lt;a href=&quot;https://prf.hn/click/camref:1100ldaXB/destination:https://store.unity.com/products/unity-pro&quot; target=&quot;\_blank&quot;&gt;Unity Pro&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/game-ci/unity-actions&quot; target=&quot;\_blank&quot;&gt;Github - Unity Actions&lt;/a&gt; - Unity Actions for GitHub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note: Unity referral links are used in product links.&lt;/p&gt;</content><author><name>isaacbroyles</name></author><category term="gamedev" /><category term="unity" /><category term="github" /><category term="github actions" /><category term="gamedev" /><summary type="html">I recently began doing some work on a personal project in Unity Engine. As with any of my projects, the first thing I set up is a working CI pipeline for it. I find doing this early reinforces best practices. I liked the option of using GitHub Actions, since it is a relatively small project. Here’s how I did it!</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.isaacbroyles.com/assets/images/2020-07-04-unity-github-actions/unity.png" /><media:content medium="image" url="https://www.isaacbroyles.com/assets/images/2020-07-04-unity-github-actions/unity.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Small Form Factor PC Build Part 2</title><link href="https://www.isaacbroyles.com/video-games/2020/06/06/small-form-factor-pc-build-part-2.html" rel="alternate" type="text/html" title="Small Form Factor PC Build Part 2" /><published>2020-06-06T20:18:16+00:00</published><updated>2022-06-12T20:18:16+00:00</updated><id>https://www.isaacbroyles.com/video-games/2020/06/06/small-form-factor-pc-build-part-2</id><content type="html" xml:base="https://www.isaacbroyles.com/video-games/2020/06/06/small-form-factor-pc-build-part-2.html">&lt;p&gt;Update on the small form factor build.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;There is good and bad news with this post. Bad news first: this build was actually completed about a year and a half ago, now. So the build wont be cutting edge as of today’s tech.&lt;/p&gt;

&lt;p&gt;However, the good news: this build was tested hard over the past year. Including playing multiple hundred hours of FFXIV at max settings, The Witcher 3: Blood and Wine expansion in its entirety on max settings, etc.&lt;/p&gt;

&lt;p&gt;I ended up diverging from my &lt;a href=&quot;/video-games/2018/07/29/small-form-factor-pc-build.html&quot;&gt;previous post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here is the build I ended up with:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://pcpartpicker.com/list/Ys4Phy&quot;&gt;PCPartPicker Part List&lt;/a&gt;&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Type&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Item&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;CPU&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://amzn.to/3xuQ0Vs&quot; target=&quot;\_blank&quot;&gt;Intel Core i7-8700K 3.7 GHz 6-Core Processor&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;CPU Cooler&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://amzn.to/3NLZ7b4&quot; target=&quot;\_blank&quot;&gt;Noctua NH-U9S 46.44 CFM CPU Cooler&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Motherboard&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://amzn.to/3NYiWfa&quot; target=&quot;\_blank&quot;&gt;Gigabyte Z370N WIFI Mini ITX LGA1151 Motherboard&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://amzn.to/3zxQxZb&quot; target=&quot;\_blank&quot;&gt;Corsair Vengeance LPX 16 GB (2 x 8 GB) DDR4-2400 CL16 Memory&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Storage&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://amzn.to/3MGUOfL&quot; target=&quot;\_blank&quot;&gt;Crucial MX500 1 TB M.2-2280 Solid State Drive&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Video Card&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://amzn.to/3zwXXfe&quot; target=&quot;\_blank&quot;&gt;EVGA GeForce GTX 1080 Ti 11 GB Black Edition Video Card&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Case&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://amzn.to/39iLrp7&quot; target=&quot;\_blank&quot;&gt;Thermaltake Core V1 Mini ITX Desktop Case&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Power Supply&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://amzn.to/3O6UKqQ&quot; target=&quot;\_blank&quot;&gt;Silverstone 450 W 80+ Bronze Certified SFX Power Supply&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Case Fan&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://amzn.to/3HhfwBS&quot; target=&quot;\_blank&quot;&gt;Noctua NF-A20 PWM 86.46 CFM 200 mm Fan&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;em&gt;Total is approximate price of all components as of time of this writing&lt;/em&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;$1820.00&lt;/strong&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Here is the finished product, nicely tucked in my entertainment center under my primary TV. The PS4 goes unused nowadays!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020-06-06-small-form-factor-pc-build-part-2/IMG_2133.jpg&quot; alt=&quot;Thermaltake Core V1 build in entertainment center&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I also recommend some of the following accessories for comfortable couch gaming.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020-06-06-small-form-factor-pc-build-part-2/IMG_2138.jpg&quot; alt=&quot;Couch gaming accessories&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The Corsair Lapboard got 100+ hours of use recently on a playthrough of Pillars of Eternity, so I can strongly recommend that as well.&lt;/p&gt;

&lt;p&gt;The accessories are (from left-to-right, top-to-bottom):&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B07GHWHFR5/ref=as_li_ss_tl?ie=UTF8&amp;amp;psc=1&amp;amp;linkCode=ll1&amp;amp;tag=isaacbroyle07-20&amp;amp;linkId=d412568cb95ba12bf12b662845c74136&amp;amp;language=en_US&quot; target=&quot;\_blank&quot;&gt;Xbox Wireless Controller - Grey and Blue&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Steam-Controller-SteamOS/dp/B016KBVBCS/ref=as_li_ss_tl?crid=1QJP6NITNE3GG&amp;amp;dchild=1&amp;amp;keywords=steam+controller&amp;amp;qid=1592066367&amp;amp;s=videogames&amp;amp;sprefix=steam+contro,videogames,203&amp;amp;sr=1-3&amp;amp;linkCode=ll1&amp;amp;tag=isaacbroyle07-20&amp;amp;linkId=14ca514c04bf94e22e299ec2c3a6bfaa&amp;amp;language=en_US&quot; target=&quot;\_blank&quot;&gt;Steam Controller&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B00KVP780Y/ref=as_li_ss_tl?ie=UTF8&amp;amp;psc=1&amp;amp;linkCode=ll1&amp;amp;tag=isaacbroyle07-20&amp;amp;linkId=59409730607ce0608e2d5033b94cb31c&amp;amp;language=en_US&quot; target=&quot;\_blank&quot;&gt;DualShock 4 - Wave Blue&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B077ZGRY9V/ref=as_li_ss_tl?ie=UTF8&amp;amp;psc=1&amp;amp;linkCode=ll1&amp;amp;tag=isaacbroyle07-20&amp;amp;linkId=e37096ebb9d20d5d3ca36aa54e2f663e&amp;amp;language=en_US&quot; target=&quot;\_blank&quot;&gt;HyperX Cloud Flight Headset&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/CORSAIR-Wireless-Mechanical-Keyboard-Backlit/dp/B07CL8B7RN/ref=as_li_ss_tl?dchild=1&amp;amp;keywords=corsair+lapboard&amp;amp;qid=1592066645&amp;amp;sr=8-2&amp;amp;linkCode=ll1&amp;amp;tag=isaacbroyle07-20&amp;amp;linkId=cacb69870762fbf9d86e5ee1782790d4&amp;amp;language=en_US&quot; target=&quot;\_blank&quot;&gt;Corsair K63 Wireless Mechanical Keyboard with Lapboard&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Logitech-Lightspeed-PowerPlay-Compatible-Lightsync/dp/B07L4BM851/ref=as_li_ss_tl?crid=3JW3N298URSHY&amp;amp;dchild=1&amp;amp;keywords=logitech+g502+lightspeed&amp;amp;qid=1592066755&amp;amp;sprefix=logitech+g50,aps,211&amp;amp;sr=8-3&amp;amp;linkCode=ll1&amp;amp;tag=isaacbroyle07-20&amp;amp;linkId=263d1893d6a3c8fbfa5507b7cf2644ef&amp;amp;language=en_US&quot; target=&quot;\_blank&quot;&gt;Logitech G502 Lightspeed&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note: Amazon referral links are used in product links.&lt;/p&gt;</content><author><name>isaacbroyles</name></author><category term="video-games" /><category term="pc build" /><category term="small form factor" /><category term="sff build" /><category term="mini itx" /><summary type="html">Update on the small form factor build.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.isaacbroyles.com/assets/images/2020-06-06-small-form-factor-pc-build-part-2/IMG_2136.jpg" /><media:content medium="image" url="https://www.isaacbroyles.com/assets/images/2020-06-06-small-form-factor-pc-build-part-2/IMG_2136.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Cool Stuff I Found This Week</title><link href="https://www.isaacbroyles.com/cool-stuff/2018/11/04/cool-stuff-this-week.html" rel="alternate" type="text/html" title="Cool Stuff I Found This Week" /><published>2018-11-04T00:00:00+00:00</published><updated>2018-11-04T00:00:00+00:00</updated><id>https://www.isaacbroyles.com/cool-stuff/2018/11/04/cool-stuff-this-week</id><content type="html" xml:base="https://www.isaacbroyles.com/cool-stuff/2018/11/04/cool-stuff-this-week.html">&lt;p&gt;This is all the cool stuff I found this week.&lt;/p&gt;

&lt;!--more--&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://l.cncf.io/&quot;&gt;cncf/landscape&lt;/a&gt; - Cloud Native Computing Foundation interactive landscape. A great resource for finding popular projects in the cloud space.
    &lt;ul&gt;
      &lt;li&gt;Also take a look at their &lt;a href=&quot;https://github.com/cncf/landscape&quot;&gt;github repository&lt;/a&gt;. Their included cloud native trail map is a really cool resource for anyone looking to transition into cloud technologies.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/Microsoft/windows-dev-box-setup-scripts&quot;&gt;microsoft/windows-dev-box-setup-scripts&lt;/a&gt; - Microsoft provided dev box setup scripts. I strongly encourage anybody on a team to leverage something like this for boostrapping developers machines. Great for onboarding! I plan on using this heavily for reference next time I need to build a dev PC.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/ahmetb/kubectx&quot;&gt;kubectx&lt;/a&gt; - This tool got mentioned to me by an engineer at work. Quickly change between contexts and namespaces. This will be a keystroke saver for those constantly switching between kubernetes contexts.&lt;/li&gt;
&lt;/ul&gt;</content><author><name>isaacbroyles</name></author><category term="cool-stuff" /><summary type="html">This is all the cool stuff I found this week.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.isaacbroyles.com/assets/images/Profile.jpg" /><media:content medium="image" url="https://www.isaacbroyles.com/assets/images/Profile.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Working in GatsbyJS with Typescript Pt. 1</title><link href="https://www.isaacbroyles.com/2018/08/19/gatsbyjs-typescript.html" rel="alternate" type="text/html" title="Working in GatsbyJS with Typescript Pt. 1" /><published>2018-08-19T00:00:00+00:00</published><updated>2018-08-19T00:00:00+00:00</updated><id>https://www.isaacbroyles.com/2018/08/19/gatsbyjs-typescript</id><content type="html" xml:base="https://www.isaacbroyles.com/2018/08/19/gatsbyjs-typescript.html">&lt;p&gt;I am spinning up my first GatsbyJS site using Typescript. These are my findings while doing so.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;I’m a fan of strongly typed languages. So as I started my excursion into GatsbyJS, I definitely wanted to use Typescript instead of Javascript.&lt;/p&gt;

&lt;p&gt;One of the first issues I ran across was getting strongly typed GraphQL query types in my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.tsx&lt;/code&gt; (Typescript React) files.&lt;/p&gt;

&lt;h2 id=&quot;prerequisites&quot;&gt;Prerequisites&lt;/h2&gt;

&lt;p&gt;I used a community gatsby starter to start my project:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;gatsby new gatsby-starter-typescript https://github.com/haysclark/gatsby-starter-typescript
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;There are other starters for typescript, but they have quite a bit more “features”. I wanted to learn a bit about GatsbyJS myself, so I started with a minimal project.&lt;/p&gt;

&lt;h2 id=&quot;using-gql-gen-to-generate-type-files&quot;&gt;Using gql-gen to generate type files&lt;/h2&gt;

&lt;p&gt;After some investigation, it appeared the recommended way for strongly-typing your GraphQL query models, was to generate types using the &lt;a href=&quot;https://github.com/dotansimha/graphql-code-generator&quot;&gt;gql-gen&lt;/a&gt; tool.&lt;/p&gt;

&lt;p&gt;Following the documentation &lt;a href=&quot;https://github.com/dotansimha/graphql-code-generator#installation&quot;&gt;here&lt;/a&gt;, I installed a few dev dependencies into my project:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;npm &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--save-dev&lt;/span&gt; graphql-code-generator graphql
npm &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--save-dev&lt;/span&gt; graphql-codegen-typescript-template
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now, the way &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gql-gen&lt;/code&gt; works is by analyzing a schema. This can be done a couple of different ways, either by passing a json schema file on the command line, or by passing a graphql server endpoint to the tool.&lt;/p&gt;

&lt;p&gt;It feels like a chicken-egg scenario, but I chose to go ahead and pass the GatsbyJS hosted graphql endpoint to the gql-gen tool.&lt;/p&gt;

&lt;p&gt;You can do so by serving up your GatsbyJS site, e.g. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gatsby develop&lt;/code&gt;, and using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;http://localhost:8000/___graphql&lt;/code&gt; endpoint as your source:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;gql-gen &lt;span class=&quot;nt&quot;&gt;--schema&lt;/span&gt; http://localhost:8000/___graphql  &lt;span class=&quot;nt&quot;&gt;--template&lt;/span&gt; graphql-codegen-typescript-template &lt;span class=&quot;nt&quot;&gt;--out&lt;/span&gt; ./src/graphql.d.ts &lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;./src/&lt;span class=&quot;k&quot;&gt;**&lt;/span&gt;/&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;.graphql&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;As you can see here, I’m outputting my type definitions to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/src/graphql.d.ts&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id=&quot;using-the-generated-types-in-your-components&quot;&gt;Using the generated types in your components&lt;/h2&gt;

&lt;p&gt;From here, it’s pretty simple to import the types into your React components:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-typescript&quot; data-lang=&quot;typescript&quot;&gt;&lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;MyType&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;../graphql&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Now you have strongly typed models in your Typescript React components!&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-typescript&quot; data-lang=&quot;typescript&quot;&gt;&lt;span class=&quot;kr&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;IndexPageProps&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nl&quot;&gt;theme&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Theme&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;nl&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;site&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;siteMetadata&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kr&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;myData&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;MyType&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;IndexPage&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;React&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Component&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;IndexPageProps&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{}&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;render&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;title&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;props&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;site&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;siteMetadata&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
      &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Layout&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;ResponsiveDrawer&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;theme&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;theme&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;props&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;myData&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;
&lt;/span&gt;      &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;sr&quot;&gt;/Layout&amp;gt;&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;
&lt;/span&gt;    &lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;</content><author><name>isaacbroyles</name></author><category term="typescript" /><category term="gatsbyjs" /><summary type="html">I am spinning up my first GatsbyJS site using Typescript. These are my findings while doing so.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.isaacbroyles.com/assets/images/Profile.jpg" /><media:content medium="image" url="https://www.isaacbroyles.com/assets/images/Profile.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Podcasts to Listen to</title><link href="https://www.isaacbroyles.com/cool-stuff/2018/08/04/podcasts-to-listen-to.html" rel="alternate" type="text/html" title="Podcasts to Listen to" /><published>2018-08-04T00:00:00+00:00</published><updated>2018-08-04T00:00:00+00:00</updated><id>https://www.isaacbroyles.com/cool-stuff/2018/08/04/podcasts-to-listen-to</id><content type="html" xml:base="https://www.isaacbroyles.com/cool-stuff/2018/08/04/podcasts-to-listen-to.html">&lt;p&gt;These are the current developer podcasts in my rotation.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;I’ve tried quite a few developer podcasts, and I’ve finally wittled down to a few that I consider excellent.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.se-radio.net/&quot; target=&quot;_blank&quot;&gt;Software Engineering Radio&lt;/a&gt; - This one sounds generic, but it has actually grown into a favorite of mine. The hosts usually ask great questions, and the guests always seem to be capable enough of getting into some really good technical discussions. Highly recommend this podcast.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://changelog.com/podcast&quot; target=&quot;_blank&quot;&gt;Changelog&lt;/a&gt; - This is a podcast focused on open-source development. I usually enjoy the topics quite a bit. Every now and then I’ll skip a show though, when the topics get too “high-level.”&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://dotnetrocks.com/&quot; target=&quot;_blank&quot;&gt;.NET Rocks&lt;/a&gt; - Great for keeping up with the .NET ecosystem. They have the clout to get some heavy-hitters in here. Guests have included Mads Torgerson, Scott Guthrie, Eric Lippert, and more. As with Changelog, from time-to-time I skip an episode of this, as they can get a little off topic.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://runasradio.com/&quot; target=&quot;_blank&quot;&gt;RunAs Radio&lt;/a&gt; - Ops/DevOps in the Microsoft ecosystem. Has some good guests and topics on occasion, but I skip many along the way. This one is in danger of dropping off my list, but still gets a mention here because there are still gems that pop up here.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;</content><author><name>isaacbroyles</name></author><category term="cool-stuff" /><category term="podcasts" /><summary type="html">These are the current developer podcasts in my rotation.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.isaacbroyles.com/assets/images/Profile.jpg" /><media:content medium="image" url="https://www.isaacbroyles.com/assets/images/Profile.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Cool Stuff I Found This Week</title><link href="https://www.isaacbroyles.com/cool-stuff/2018/07/29/cool-stuff-this.week.html" rel="alternate" type="text/html" title="Cool Stuff I Found This Week" /><published>2018-07-29T00:00:00+00:00</published><updated>2018-07-29T00:00:00+00:00</updated><id>https://www.isaacbroyles.com/cool-stuff/2018/07/29/cool-stuff-this.week</id><content type="html" xml:base="https://www.isaacbroyles.com/cool-stuff/2018/07/29/cool-stuff-this.week.html">&lt;p&gt;This is all the cool stuff I found this week.&lt;/p&gt;

&lt;!--more--&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/gatsbyjs/gatsby&quot;&gt;GatsbyJS&lt;/a&gt; - After listening to the interview on &lt;a href=&quot;https://changelog.com/&quot;&gt;Changelog&lt;/a&gt; podcast, episode &lt;a href=&quot;https://changelog.com/podcast/306&quot;&gt;#306&lt;/a&gt;, it has my interest piqued. I might try it out for some personal projects.&lt;/li&gt;
  &lt;li&gt;A couple of maven plugins I’m exploring to improve my personal workflow:
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/spotify/dockerfile-maven&quot;&gt;dockerfile-maven&lt;/a&gt; - From spotify, can be used to set up targets to build/deploy docker containers from Dockerfiles in your modules.&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/fabric8io/fabric8-maven-plugin&quot;&gt;fabric8-maven-plugin&lt;/a&gt; - Seems a little more “full-featured” than dockerfile-maven. I have yet to fully dig in on this one.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/commandlineparser/commandline&quot;&gt;commandline&lt;/a&gt; parser - A commandline parser for .NET.&lt;/li&gt;
&lt;/ul&gt;</content><author><name>isaacbroyles</name></author><category term="cool-stuff" /><summary type="html">This is all the cool stuff I found this week.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.isaacbroyles.com/assets/images/Profile.jpg" /><media:content medium="image" url="https://www.isaacbroyles.com/assets/images/Profile.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Small Form Factor PC Build Part 1</title><link href="https://www.isaacbroyles.com/video-games/2018/07/29/small-form-factor-pc-build.html" rel="alternate" type="text/html" title="Small Form Factor PC Build Part 1" /><published>2018-07-29T00:00:00+00:00</published><updated>2018-07-29T00:00:00+00:00</updated><id>https://www.isaacbroyles.com/video-games/2018/07/29/small-form-factor-pc-build</id><content type="html" xml:base="https://www.isaacbroyles.com/video-games/2018/07/29/small-form-factor-pc-build.html">&lt;p&gt;I’m considering building a “Small Form Factor” PC build. After a long day of working at a desk, the last thing I want to do is go home to my desk to play games on. So I thought I’d build a PC so I could play games on my favorite place - the couch.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;I know this is essentially an “overpriced” console, but I enjoy it, so leave me alone.&lt;/p&gt;

&lt;p&gt;Here was my first stab at a build, with about as high end stuff as I could pick:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://pcpartpicker.com/list/KBwtCb&quot;&gt;PCPartPicker part list&lt;/a&gt; / &lt;a href=&quot;https://pcpartpicker.com/list/KBwtCb/by_merchant/&quot;&gt;Price breakdown by merchant&lt;/a&gt;&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Type&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Item&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Price&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;CPU&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://pcpartpicker.com/product/VKx9TW/intel-core-i7-7700k-42ghz-quad-core-processor-bx80677i77700k&quot;&gt;Intel - Core i7-7700K 4.2GHz Quad-Core Processor&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;$309.79 @ OutletPC&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;CPU Cooler&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://pcpartpicker.com/product/vfw323/cooler-master-cpu-cooler-rrgmm416pkr2&quot;&gt;Cooler Master - GeminII M4 58.4 CFM Sleeve Bearing CPU Cooler&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;$29.99 @ Newegg&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Motherboard&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://pcpartpicker.com/product/VJqbt6/asrock-h270m-itxac-mini-itx-lga1151-motherboard-h270m-itxac&quot;&gt;ASRock - H270M-ITX/ac Mini ITX LGA1151 Motherboard&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;$91.23 @ Newegg&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://pcpartpicker.com/product/P4wqqs/gskill-ns-16gb-2-x-8gb-ddr4-2400-memory-f4-2400c15d-16gns&quot;&gt;G.Skill - NS 16GB (2 x 8GB) DDR4-2400 Memory&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;$143.98 @ Newegg&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Storage&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://pcpartpicker.com/product/fgZFf7/crucial-mx500-500gb-m2-2280-solid-state-drive-ct500mx500ssd4&quot;&gt;Crucial - MX500 500GB M.2-2280 Solid State Drive&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;$92.89 @ OutletPC&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Video Card&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://pcpartpicker.com/product/62KhP6/asus-geforce-gtx-1070-ti-8gb-rog-strix-video-card-rog-strix-gtx1070ti-a8g-gaming&quot;&gt;Asus - GeForce GTX 1070 Ti 8GB ROG STRIX Video Card&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;$548.99 @ Amazon&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Case&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://pcpartpicker.com/product/6wR48d/cooler-master-case-rc130kkn1&quot;&gt;Cooler Master - Elite 130 Mini ITX Tower Case&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;$40.47 @ Amazon&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Power Supply&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://pcpartpicker.com/product/9q4NnQ/evga-power-supply-220g20650y1&quot;&gt;EVGA - SuperNOVA G2 650W 80+ Gold Certified Fully-Modular ATX Power Supply&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;$83.76 @ Newegg Marketplace&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Operating System&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://pcpartpicker.com/product/wtgPxr/microsoft-os-kw900140&quot;&gt;Microsoft - Windows 10 Home OEM 64-bit&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;$94.89 @ OutletPC&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt; &lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;em&gt;Prices include shipping, taxes, rebates, and discounts&lt;/em&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt; &lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Total (before mail-in rebates)&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;$1450.99&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt; &lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Mail-in rebates&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;-$15.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt; &lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;$1435.99&lt;/strong&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt; &lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Generated by &lt;a href=&quot;https://pcpartpicker.com&quot;&gt;PCPartPicker&lt;/a&gt; 2018-07-29 13:12 EDT-0400&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt; &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;I then started reading a bit about small-form factor builds, and thought I might be able to get away with something more built around the Thermaltake Core V21, with a GTX mini instead of a full size.&lt;/p&gt;

&lt;p&gt;I’m still very much is “design” mode now, while I’m saving up my budget to afford it.&lt;/p&gt;

&lt;p&gt;I’ll post more as I progress and settle on a build.&lt;/p&gt;</content><author><name>isaacbroyles</name></author><category term="video-games" /><category term="pc build" /><summary type="html">I’m considering building a “Small Form Factor” PC build. After a long day of working at a desk, the last thing I want to do is go home to my desk to play games on. So I thought I’d build a PC so I could play games on my favorite place - the couch.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.isaacbroyles.com/assets/images/Profile.jpg" /><media:content medium="image" url="https://www.isaacbroyles.com/assets/images/Profile.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Cool Stuff I Found This Week</title><link href="https://www.isaacbroyles.com/cool-stuff/2018/07/22/cool-stuff-this-week.html" rel="alternate" type="text/html" title="Cool Stuff I Found This Week" /><published>2018-07-22T00:00:00+00:00</published><updated>2018-07-22T00:00:00+00:00</updated><id>https://www.isaacbroyles.com/cool-stuff/2018/07/22/cool-stuff-this-week</id><content type="html" xml:base="https://www.isaacbroyles.com/cool-stuff/2018/07/22/cool-stuff-this-week.html">&lt;p&gt;This is all the cool stuff I found this week.&lt;/p&gt;

&lt;!--more--&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://scottlilly.com/how-to-create-a-fluent-interface-in-c/&quot;&gt;How to create a fluent interface in C#&lt;/a&gt; - Cool blog post about creating fluent interfaces in C#.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/Azure/azure-service-bus-dotnet&quot;&gt;azure-service-bus-dotnet&lt;/a&gt; - Not new, but with 3.1.0, a new &lt;a href=&quot;https://github.com/Azure/azure-service-bus-dotnet/pull/481&quot;&gt;ManagementClient&lt;/a&gt; is included.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://blogs.taiga.nl/martijn/2018/06/14/lean-asp-net-core-2-1-manually-setup-a-razor-pages-project-with-bootstrap-npm-and-webpack/&quot;&gt;Lean ASP.NET Core 2.1 – manually setup a Razor Pages project with Bootstrap, NPM and webpack&lt;/a&gt; - Found this article for setting up webpack with ASP.NET core. It proved useful in a project I was working on.&lt;/li&gt;
&lt;/ul&gt;</content><author><name>isaacbroyles</name></author><category term="cool-stuff" /><summary type="html">This is all the cool stuff I found this week.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.isaacbroyles.com/assets/images/Profile.jpg" /><media:content medium="image" url="https://www.isaacbroyles.com/assets/images/Profile.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Cool Stuff I Found This Week</title><link href="https://www.isaacbroyles.com/cool-stuff/2018/07/16/cool-stuff-this-week.html" rel="alternate" type="text/html" title="Cool Stuff I Found This Week" /><published>2018-07-16T00:00:00+00:00</published><updated>2018-07-22T23:09:22+00:00</updated><id>https://www.isaacbroyles.com/cool-stuff/2018/07/16/cool-stuff-this-week</id><content type="html" xml:base="https://www.isaacbroyles.com/cool-stuff/2018/07/16/cool-stuff-this-week.html">&lt;p&gt;This is all the cool stuff I found this week.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Bear with me as I am reintroducing myself to Java at the moment, so some of the things mentioned here may be common knowledge.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/Netflix/Hystrix&quot;&gt;Hystrix&lt;/a&gt; - Obviously, this thing has been around for a while. I fully understand I’m late to the party on this one. Ironically enough, I was introduced to this while listening to a .NET podcast &lt;a href=&quot;https://www.dotnetrocks.com/?show=1556&quot;&gt;(.NET Rocks #1556)&lt;/a&gt; about &lt;a href=&quot;https://github.com/App-vNext/Polly&quot;&gt;Polly&lt;/a&gt;. I’ve used Polly in the past, but not Hystrix… yet.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/jekyll/jekyll-sitemap&quot;&gt;jekyll-sitemap&lt;/a&gt; - Planning to start using this on my website to auto-generate a compliant sitemap.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/fongandrew/hydeout&quot;&gt;hydeout&lt;/a&gt; - The theme I’m now using for this site.&lt;/li&gt;
  &lt;li&gt;MacOS bootstrap projects. These projects made it easy for me to bootstrap my new macbook. I took some ideas from these and generated my own reusable boostrap script:
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/bignerdranch/macOS-bootstrap&quot;&gt;macOS-boostrap&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/thoughtbot/laptop&quot;&gt;laptop&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;</content><author><name>isaacbroyles</name></author><category term="cool-stuff" /><summary type="html">This is all the cool stuff I found this week.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.isaacbroyles.com/assets/images/Profile.jpg" /><media:content medium="image" url="https://www.isaacbroyles.com/assets/images/Profile.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>