<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Little and Often]]></title><description><![CDATA[Professional Developer]]></description><link>https://gatsby-starter-blog-demo.netlify.com</link><generator>GatsbyJS</generator><lastBuildDate>Mon, 20 Jan 2020 20:45:24 GMT</lastBuildDate><item><title><![CDATA[Write. Tests. Now.]]></title><description><![CDATA[“I can’t add tests to this app. It’s not got a test suite yet. The code isn’t written in units. I can’t mock out the database”. These are…]]></description><link>https://gatsby-starter-blog-demo.netlify.com/write-tests-now/</link><guid isPermaLink="false">https://gatsby-starter-blog-demo.netlify.com/write-tests-now/</guid><pubDate>Mon, 20 Jan 2020 22:12:03 GMT</pubDate><content:encoded>&lt;p&gt;“I can’t add tests to this app. It’s not got a test suite yet. The code isn’t written in units. I can’t mock out the database”.&lt;/p&gt;
&lt;p&gt;These are several concerns I voiced in my head looking at a legacy PHP application. It was a minefield of functions and &lt;code class=&quot;language-text&quot;&gt;include&lt;/code&gt; statements. A variable would thread through several files. “I can’t possibly write tests for this” I told my self.&lt;/p&gt;
&lt;p&gt;I was wrong. And so are you.&lt;/p&gt;
&lt;h2&gt;Where to start?&lt;/h2&gt;
&lt;p&gt;In my case, I started with bugs. When a bug was reported I took the time to add a test then fix the bug. This has a few great benefits&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You’re forced to add some rudimentary testing harnesses&lt;/li&gt;
&lt;li&gt;You prove the bug actually exists&lt;/li&gt;
&lt;li&gt;The bug has already been understood before commencing work&lt;/li&gt;
&lt;li&gt;The bug is documented via a test. Future developers are thus forced to keep it fixed.&lt;/li&gt;
&lt;li&gt;You’ve added the first test to the application!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The guiding principle in any software project is the &lt;a href=&quot;https://97-things-every-x-should-know.gitbooks.io/97-things-every-programmer-should-know/content/en/thing_08/&quot; title=&quot;Boy Scouts Rule&quot;&gt;Boy Scouts rule&lt;/a&gt;. In short this rule dictates that the code should always be checked in &lt;em&gt;a little&lt;/em&gt; bit better than it was checked out. Not perfection. Just a little better.&lt;/p&gt;
&lt;p&gt;The key as with many things is to just get started. Having a test will move the codebase in a good direction.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Hosting a website (for free!) with Netlify]]></title><description><![CDATA[When I studied Web Development in college I had no idea how to host a website. When I started an apprenticeship in Web Development I assumed…]]></description><link>https://gatsby-starter-blog-demo.netlify.com/free-hosting-with-netlify/</link><guid isPermaLink="false">https://gatsby-starter-blog-demo.netlify.com/free-hosting-with-netlify/</guid><pubDate>Sun, 15 Dec 2019 22:12:03 GMT</pubDate><content:encoded>&lt;p&gt;When I studied Web Development in college I had no idea how to host a website. When I started an apprenticeship in Web Development I assumed the start-up costs were too high. And maybe at that time there was a relatively high cost to hosting a website. Wordpress was the leading solution for personal blogging and these services seemed pricy, especially for a developer who wondered why they couldn’t just host it themselves!&lt;/p&gt;
&lt;p&gt;Today the development landscape is very different. JS has evolved greatly from the days of JQuery. The emmergence of Markdown has provided an easy to digest writing format. More companies are supporting solo-developers. Is there any hope for us today?&lt;/p&gt;
&lt;p&gt;Fortunately, &lt;a href=&quot;https://netlify.com&quot;&gt;Netlify&lt;/a&gt; are awesome. &lt;a href=&quot;https://gatsbyjs.org&quot;&gt;Gatsby&lt;/a&gt; are too! In this post I’m going to breakdown how to get a free static website up and running (&lt;strong&gt;spoiler&lt;/strong&gt;: it’s dead simple!)&lt;/p&gt;
&lt;h2&gt;Requirements&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/join&quot;&gt;Github account&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://app.netlify.com/signup&quot;&gt;Netlify account&lt;/a&gt; linked to your Github account&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Setting up your first Netlify site&lt;/h2&gt;
&lt;p&gt;Once you’re logged into Netlify, find the “New Site from Git” button pictured below.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 590px;&quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/6bdf0636631a9158fd6c7b2c34681ebe/afec4/new-site-from-git.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 13.621262458471762%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAaElEQVQI12NgEpH6D8bCEJpRWBJCC0n+ZxGT+c8gKP6fgVf4PwOfCJDGgkHiAuL/2YD62YB6GabOmf+/d+qM/xNnzsHAk6B4Ik48Gyxf2937P6K6BowZ/lMBXHvx7H/hwV3/iw7v+Q8Ao1eap7S0E9gAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;New Site From Git button&quot;
        title=&quot;New Site From Git button&quot;
        src=&quot;/static/6bdf0636631a9158fd6c7b2c34681ebe/799d3/new-site-from-git.png&quot;
        srcset=&quot;/static/6bdf0636631a9158fd6c7b2c34681ebe/00d96/new-site-from-git.png 148w,
/static/6bdf0636631a9158fd6c7b2c34681ebe/0b23c/new-site-from-git.png 295w,
/static/6bdf0636631a9158fd6c7b2c34681ebe/799d3/new-site-from-git.png 590w,
/static/6bdf0636631a9158fd6c7b2c34681ebe/2a3d6/new-site-from-git.png 885w,
/static/6bdf0636631a9158fd6c7b2c34681ebe/ae92f/new-site-from-git.png 1180w,
/static/6bdf0636631a9158fd6c7b2c34681ebe/afec4/new-site-from-git.png 2408w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;A Wizard will appear for configuring continuous deployment. Choose your preferred Git provider and follow the instructions on-screen to connect to it. I’ll join you at step 2: Pick a repository!&lt;/p&gt;
&lt;h3&gt;2. Pick a repository&lt;/h3&gt;
&lt;p&gt;You will now be asked to pick a repository. Choose whichever repository homes source code for your static site.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 590px;&quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/21e57571730548281270307047be6091/47d85/choose-repository.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 74.10958904109589%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAABYlAAAWJQFJUiTwAAABlElEQVQ4y61Ti26DMAzk/z9wUt9QWhIKBAIlhFdvdqBbK7XVts7SyXkQ+3w2XqZyfCyWDuExwmbnY7neIAgPeGQXxuXyFN65OiOiQFEkkJwSSBnTXkAIiZruGKaundeFBsYRr8zT1mKXK+x1AX/2h6rEsdTYpAlWpxhr8kGRu/sj3dm+Rz+jIwzD8M3Qdh1SraGqyvmyMWjHAYbOT3mOKCHWSsHSI0vnduhhGovqTMxN43xH32KWwsM/GQdzJVs7ZTuzTsZAl6Xb17VxKPS0L0nD66NXQb2chF5ttlhvd/D3IZa0XlCX+Yy77gd7bP0Ai9WaklWuvCvadvJOT5LEMeTsPCIxdXg/e4aIY8j4hAMFFXJaK9K0JK25CiZScecpSUng6lzAgcZgvBkFXnO2YUY/d5H9T3T0sijE8RBSiTtXHmv66gHDti0xLJARY5UXlHAixfA6CsBBahoB0zR3M/UIbFyV03DWks/H6xzGpJVS2a/H4+mfIqRAlmV3Jf0FXxoKIZDeBHxnqF1AKSXSNH2b4RWf3daRTFy8P7sAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Pick Repository UI&quot;
        title=&quot;Pick Repository UI&quot;
        src=&quot;/static/21e57571730548281270307047be6091/799d3/choose-repository.png&quot;
        srcset=&quot;/static/21e57571730548281270307047be6091/00d96/choose-repository.png 148w,
/static/21e57571730548281270307047be6091/0b23c/choose-repository.png 295w,
/static/21e57571730548281270307047be6091/799d3/choose-repository.png 590w,
/static/21e57571730548281270307047be6091/2a3d6/choose-repository.png 885w,
/static/21e57571730548281270307047be6091/ae92f/choose-repository.png 1180w,
/static/21e57571730548281270307047be6091/47d85/choose-repository.png 1460w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;3. Build options, and deploy!&lt;/h3&gt;
&lt;p&gt;You’ll now be presented with a form to complete the deployment configuration.&lt;/p&gt;
&lt;h4&gt;Branch to deploy&lt;/h4&gt;
&lt;p&gt;This is the branch gatsby will watch and use to trigger rebuilds. &lt;code class=&quot;language-text&quot;&gt;master&lt;/code&gt; is fine for most projects, but you may choose to use another branch.&lt;/p&gt;
&lt;h4&gt;Build command&lt;/h4&gt;
&lt;p&gt;The command which will run everytime a build is triggered. For gatsby builds, this is done with &lt;code class=&quot;language-text&quot;&gt;gatsby build&lt;/code&gt;, but your project may use something different! (e.g. &lt;code class=&quot;language-text&quot;&gt;npm run build&lt;/code&gt;)&lt;/p&gt;
&lt;h4&gt;Public directory&lt;/h4&gt;
&lt;p&gt;This tells Netlify which folder your static assets build to. Usually this is &lt;code class=&quot;language-text&quot;&gt;public/&lt;/code&gt;. However your project may use something different!&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 590px;&quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/729046188ae161a920014fb3797c988a/b6af8/deploy.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 98.92966360856268%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAACEUlEQVQ4y51UyXLTQBScz+EIX8eZIleOVMGJqnwEx5BLbhTgYAc7srxSXiSNJGuxJWtp3ptIjiQkh/CqukbSjNtv6R4x0sb41vsJTZ9gMByh1x/gfqxjeK/h6/ce+r+GuO3fqXU8mWJEe7eDOximhTzPkaapWjl4FZ4fwHF3sB0H7o5XV71b0oa0HfXO4Hfe33lecZ7PuYo4DMNHwiiK0Ywsy9UmI8uyGsrvTZwIObPpfIGNYWBrmIiiqCCt/zgr1sPhoPaaUZKKOD6qtMsS4uPxlFkbYZIktYz+ypB7Ip2HXpUfm2VW0RxCM4QfBGp6nu8/TO2JPu0rJbedEWiJc1l2/dmJcL78DX02hz6d0TqDRtkmVNb/hnBIaxYNxSQYW0NBkuZ4UKw9HpRpyUKPjnpmfZpSYmuahUalOsuaFgtvB921MXEdaLbEUFrYBL5qfhuS6nNS3+OWCH+/h0cISX8J9SDmzRad/XvJVBL7eEI99EhCaig8gIr2sgoCUgUro2vSIiAflj1hSZQuyRpEJeJjfFaLgpvK1mPDnxN0VTbspqyLMI5j5eM0zR6zewIh9bxaco2QbbciwuV6jeVqjYi93OGCqmM6nRLSHWcSkdxsYZMGT1dYi0+bRK1T/mEZuFot8GW1xDXh82yMOWmzJM2fCfHq8iPEuzd4efkBLz69h7h4jbc314rQJwXw/fcc/AE++A8DhDkZvQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;The Netlify deployment configuration&quot;
        title=&quot;The Netlify deployment configuration&quot;
        src=&quot;/static/729046188ae161a920014fb3797c988a/799d3/deploy.png&quot;
        srcset=&quot;/static/729046188ae161a920014fb3797c988a/00d96/deploy.png 148w,
/static/729046188ae161a920014fb3797c988a/0b23c/deploy.png 295w,
/static/729046188ae161a920014fb3797c988a/799d3/deploy.png 590w,
/static/729046188ae161a920014fb3797c988a/2a3d6/deploy.png 885w,
/static/729046188ae161a920014fb3797c988a/ae92f/deploy.png 1180w,
/static/729046188ae161a920014fb3797c988a/b6af8/deploy.png 1308w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Deploy!&lt;/h4&gt;
&lt;p&gt;To finish off, hit deploy!&lt;/p&gt;
&lt;h2&gt;Where now?&lt;/h2&gt;
&lt;p&gt;If all has gone well then you’ll be assigned a custom Netlify domain (something like silly-cactus-a54cf.netlify.com). &lt;a href=&quot;https://docs.netlify.com/domains-https/custom-domains/&quot;&gt;You might now configure a custom domain&lt;/a&gt;. Or &lt;a href=&quot;https://docs.netlify.com/domains-https/https-ssl/&quot;&gt;maybe you’ll configure https&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You could also take a look at my &lt;a href=&quot;https://github.com/ingalless/little-and-often&quot;&gt;blog’s code&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Whatever you choose to do, your website is online and your ideas are being shared with the world.&lt;/p&gt;</content:encoded></item></channel></rss>