<metaproperty="og:description"content="My name is John. I’m a Embedded Developer. Over the years I’ve dabbled in a lot of side projects. I have a deep interest in making IoT and…">
<metaproperty="og:description"content="My name is John. I’m a Embedded Developer. Over the years I’ve dabbled in a lot of side projects. I have a deep interest in making IoT and…">
<metaname="twitter:description"content="My name is John. I’m a Embedded Developer. Over the years I’ve dabbled in a lot of side projects. I have a deep interest in making IoT and…">
<metaname="twitter:description"content="My name is John. I’m a Embedded Developer. Over the years I’ve dabbled in a lot of side projects. I have a deep interest in making IoT and…">
...
@@ -82,7 +82,8 @@
...
@@ -82,7 +82,8 @@
that tracks where clicks came from, what posts they viewed, and for how long. This analytics both respects “Do Not Track” and anonymizes ip addresses. There is no way I can make this an opt-in however if you would like to opt-out click below.
that tracks where clicks came from, what posts they viewed, and for how long. This analytics both respects “Do Not Track” and anonymizes ip addresses. There is no way I can make this an opt-in however if you would like to opt-out click below.
<divclass="article__author"itemscope=""itemprop="author"itemtype="https://schema.org/Person"><imgclass="article__author__image"src="/images/avatar.jpg"alt="John Warren"><aclass="article__author__link"title="About John Warren"rel="author">John Warren</a>
<divclass="article__author"
itemscope=""itemprop="author"itemtype="https://schema.org/Person"><imgclass="article__author__image"src="/images/avatar.jpg"alt="John Warren"><aclass="article__author__link"title="About John Warren"rel="author">John Warren</a>
<pclass="article__author__desc">Just a place to make stuff</p>
<pclass="article__author__desc">Just a place to make stuff</p>
<metaitemprop="articleBody"content="My name is John. I’m a Embedded Developer. Over the years I’ve dabbled in a lot of side projects. I have a deep interest in making IoT and smart home systems, setting up offline backups of...">
<metaitemprop="articleBody"content="My name is John. I’m a Embedded Developer. Over the years I’ve dabbled in a lot of side projects. I have a deep interest in making IoT and smart home systems, setting up offline backups of...">
<h3class="post-list__item__title"><ahref="/posts/setting-up-hexo-auto-deploy-from-gitlab/"title="Setting up Hexo Auto-deploy from Gitlab">Setting up Hexo Auto-deploy from Gitlab</a></h3>
<h3class="post-list__item__title"><ahref="/posts/setting-up-hexo-auto-deploy-from-gitlab/"title="Setting up Hexo Auto-deploy from Gitlab">Setting up Hexo Auto-deploy from Gitlab</a></h3>
<pclass="post-list__item__description">In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I want to...</p>
<pclass="post-list__item__description">In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I want to...</p>
<pclass="post-list__item__description">Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few issues, but...</p>
<p
class="post-list__item__description">Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few issues, but...</p>
<pclass="post-list__item__description">Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few issues, but...</p>
<p
class="post-list__item__description">Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few issues, but...</p>
</div>
</div>
</article>
</article>
<articleclass="post-list__item">
<articleclass="post-list__item">
...
@@ -90,7 +91,8 @@
...
@@ -90,7 +91,8 @@
<divclass="post-list__item__col-2">
<divclass="post-list__item__col-2">
<h3class="post-list__item__title"><ahref="/posts/setting-up-hexo-auto-deploy-from-gitlab/"title="Setting up Hexo Auto-deploy from Gitlab">Setting up Hexo Auto-deploy from Gitlab</a></h3>
<h3class="post-list__item__title"><ahref="/posts/setting-up-hexo-auto-deploy-from-gitlab/"title="Setting up Hexo Auto-deploy from Gitlab">Setting up Hexo Auto-deploy from Gitlab</a></h3>
<pclass="post-list__item__description">In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I want to...</p>
<pclass="post-list__item__description">In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I want to...</p>
<pclass="post-list__item__description">Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few issues, but...</p>
<p
class="post-list__item__description">Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few issues, but...</p>
</div>
</div>
</article>
</article>
<articleclass="post-list__item">
<articleclass="post-list__item">
...
@@ -90,7 +91,8 @@
...
@@ -90,7 +91,8 @@
<divclass="post-list__item__col-2">
<divclass="post-list__item__col-2">
<h3class="post-list__item__title"><ahref="/posts/setting-up-hexo-auto-deploy-from-gitlab/"title="Setting up Hexo Auto-deploy from Gitlab">Setting up Hexo Auto-deploy from Gitlab</a></h3>
<h3class="post-list__item__title"><ahref="/posts/setting-up-hexo-auto-deploy-from-gitlab/"title="Setting up Hexo Auto-deploy from Gitlab">Setting up Hexo Auto-deploy from Gitlab</a></h3>
<pclass="post-list__item__description">In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I want to...</p>
<pclass="post-list__item__description">In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I want to...</p>
<pclass="post-list__item__description">Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few issues, but...</p>
<p
class="post-list__item__description">Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few issues, but...</p>
<pclass="post-list__item__description">Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few issues, but...</p>
<p
class="post-list__item__description">Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few issues, but...</p>
<h3class="post-list__item__title"><ahref="/posts/setting-up-hexo-auto-deploy-from-gitlab/"title="Setting up Hexo Auto-deploy from Gitlab">Setting up Hexo Auto-deploy from Gitlab</a></h3>
<h3class="post-list__item__title"><ahref="/posts/setting-up-hexo-auto-deploy-from-gitlab/"title="Setting up Hexo Auto-deploy from Gitlab">Setting up Hexo Auto-deploy from Gitlab</a></h3>
<pclass="post-list__item__description">In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I want to...</p>
<pclass="post-list__item__description">In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I want to...</p>
<h3class="post-list__item__title"><ahref="/posts/setting-up-hexo-auto-deploy-from-gitlab/"title="Setting up Hexo Auto-deploy from Gitlab">Setting up Hexo Auto-deploy from Gitlab</a></h3>
<h3class="post-list__item__title"><ahref="/posts/setting-up-hexo-auto-deploy-from-gitlab/"title="Setting up Hexo Auto-deploy from Gitlab">Setting up Hexo Auto-deploy from Gitlab</a></h3>
<pclass="post-list__item__description">In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I want to...</p>
<pclass="post-list__item__description">In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I want to...</p>
<h3class="post-list__item__title"><ahref="/posts/setting-up-hexo-auto-deploy-from-gitlab/"title="Setting up Hexo Auto-deploy from Gitlab">Setting up Hexo Auto-deploy from Gitlab</a></h3>
<h3class="post-list__item__title"><ahref="/posts/setting-up-hexo-auto-deploy-from-gitlab/"title="Setting up Hexo Auto-deploy from Gitlab">Setting up Hexo Auto-deploy from Gitlab</a></h3>
<pclass="post-list__item__description">In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I want to...</p>
<pclass="post-list__item__description">In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I want to...</p>
<metaname="description"content="Comic credit to xkcd! One of my favorites It’s understandable that a lot of the things I talk about on this site may go above your head.…">
<metaname="description"content="Comic credit to xkcd! One of my favorites It’s understandable that a lot of the things I talk about on this site may go above your…">
<metaproperty="og:description"content="Comic credit to xkcd! One of my favorites It’s understandable that a lot of the things I talk about on this site may go above your head.…">
<metaproperty="og:description"content="Comic credit to xkcd! One of my favorites It’s understandable that a lot of the things I talk about on this site may go above your…">
<metaname="twitter:description"content="Comic credit to xkcd! One of my favorites It’s understandable that a lot of the things I talk about on this site may go above your head.…">
<metaname="twitter:description"content="Comic credit to xkcd! One of my favorites It’s understandable that a lot of the things I talk about on this site may go above your…">
<h6id="Comic-credit-to-xkcd-One-of-my-favorites"><ahref="#Comic-credit-to-xkcd-One-of-my-favorites"class="headerlink"title="Comic credit to xkcd! One of my favorites"></a>Comic credit to <ahref="http://www.xkcd.com"rel="external nofollow noopener noreferrer"target="_blank">xkcd</a>!
<h6id="Comic-credit-to-xkcd-One-of-my-favorites"><ahref="#Comic-credit-to-xkcd-One-of-my-favorites"class="headerlink"title="Comic credit to xkcd! One of my favorites"></a>Comic credit to <ahref="http://www.xkcd.com"rel="external nofollow noopener noreferrer"target="_blank">xkcd</a>!
One of my favorites</h6>
One of my favorites
</h6>
<p>It’s understandable that a lot of the things I talk about on this site may go above your head. They went above my head when I wanted to learn too! I’m going to try to fill out this glossary with as many blurbs and succinct explanations as
<p>It’s understandable that a lot of the things I talk about on this site may go above your head. They went above my head when I wanted to learn too! I’m going to try to fill out this glossary with as many blurbs and succinct explanations as
I can about common embedded or programming concepts. There are some that may need more explanation. For those, I may write a “Fundamentals” post to explain more fully. If you’ve ever got a question, don’t hesitate to ask and I’ll see about
I can about common embedded or programming concepts. There are some that may need more explanation. For those, I may write a “Fundamentals” post to explain more fully. If you’ve ever got a question, don’t hesitate to ask and I’ll see about
It’s understandable that a lot of the things I talk about on this site may go above your head. They went above my head when I wanted to learn too! I’m...">
It’s understandable that a lot of the things I talk about on this site may go above your head. They went above my head when I wanted to learn too! I’m...">
<spandata-prompt="Enter a passphrase(empty for no passphrase):"data-strings=""data-action="prompt"data-delay="3000">Enter a passphrase(empty for no passphrase):</span>
<spandata-prompt="Enter a passphrase(empty for no passphrase):"data-strings=""data-action="prompt"data-delay="3000">Enter a passphrase(empty for no passphrase):</span>
<spandata-prompt="Enter same passphrase again:"data-strings=""data-action="prompt"data-delay="2000">Enter same passphrase again:</span>
<spandata-prompt="Enter same passphrase again:"data-strings=""data-action="prompt"data-delay="2000">Enter same passphrase again:</span>
<spandata-strings="Your identification has been saved in /Users/jwarren/testtt.<br>Your public key has been saved in /Users/jwarren/testtt.pub.<br>The key fingerprint is:<br>SHA256:wdsn98Q+L96juYXdPFHZ/UN3ucpfO7CqOqwornyNavI<br>The key's randomart image is:<br>+---[RSA 2048]----+<br>| |<br>| . =|<br>| o +*|<br>| + .. *|<br>| S o o o+.|<br>| +.=+.+|<br>| o . +*++|<br>|oo o.. o .=*+|<br>|*=E. ...o....=++=|<br>+----[SHA256]-----+"data-action="print"data-delay="0">
<spandata-strings="Your identification has been saved in /Users/jwarren/testtt.<br>Your public key has been saved in /Users/jwarren/testtt.pub.<br>The key fingerprint is:<br>SHA256:wdsn98Q+L96juYXdPFHZ/UN3ucpfO7CqOqwornyNavI<br>The key's randomart image is:<br>+---[RSA 2048]----+<br>| |<br>| . =|<br>| o +*|<br>| + .. *|<br>| S o o o+.|<br>| +.=+.+|<br>| o . +*++|<br>|oo o.. o .=*+|<br>|*=E. ...o....=++=|<br>+----[SHA256]-----+"
data-action="print"data-delay="0">
Your identification has been saved in /Users/jwarren/testtt.<br>
Your identification has been saved in /Users/jwarren/testtt.<br>
Your public key has been saved in /Users/jwarren/testtt.pub.<br>
Your public key has been saved in /Users/jwarren/testtt.pub.<br>
<pclass="post-list__item__description">Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few issues, but...</p>
<p
class="post-list__item__description">Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few issues, but...</p>
</div>
</div>
</article>
</article>
<articleclass="post-list__item">
<articleclass="post-list__item">
...
@@ -86,7 +87,8 @@
...
@@ -86,7 +87,8 @@
<divclass="post-list__item__col-2">
<divclass="post-list__item__col-2">
<h3class="post-list__item__title"><ahref="/posts/setting-up-hexo-auto-deploy-from-gitlab/"title="Setting up Hexo Auto-deploy from Gitlab">Setting up Hexo Auto-deploy from Gitlab</a></h3>
<h3class="post-list__item__title"><ahref="/posts/setting-up-hexo-auto-deploy-from-gitlab/"title="Setting up Hexo Auto-deploy from Gitlab">Setting up Hexo Auto-deploy from Gitlab</a></h3>
<pclass="post-list__item__description">In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I want to...</p>
<pclass="post-list__item__description">In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I want to...</p>
<h3id="The-iconic-font-and-CSS-framework"><ahref="#The-iconic-font-and-CSS-framework"class="headerlink"title="The iconic font and CSS framework"></a>The iconic font and CSS framework</h3>
<h3id="The-iconic-font-and-CSS-framework"><ahref="#The-iconic-font-and-CSS-framework"class="headerlink"title="The iconic font and CSS framework"></a>The iconic font and CSS framework</h3>
<p>Font Awesome is a full suite of 675 pictographic icons for easy scalable vector graphics on websites,<br>created and maintained by <ahref="https://twitter.com/davegandy"rel="external nofollow noopener noreferrer"target="_blank">Dave Gandy</a>.<br>Stay up to date with the latest release and announcements on
<p>Font Awesome is a full suite of 675 pictographic icons for easy scalable vector graphics on websites,<br>created and maintained by <ahref="https://twitter.com/davegandy"rel="external nofollow noopener noreferrer"target="_blank">Dave Gandy</a>.<br>Stay
up to date with the latest release and announcements on Twitter:<br><ahref="http://twitter.com/fontawesome"rel="external nofollow noopener noreferrer"target="_blank">@fontawesome</a>.</p>
<p>Get started at <ahref="http://fontawesome.io"rel="external nofollow noopener noreferrer"target="_blank">http://fontawesome.io</a>!</p>
<p>Get started at <ahref="http://fontawesome.io"rel="external nofollow noopener noreferrer"target="_blank">http://fontawesome.io</a>!</p>
<p>Please read through our <ahref="https://github.com/FortAwesome/Font-Awesome/blob/master/CONTRIBUTING.md"rel="external nofollow noopener noreferrer"target="_blank">contributing guidelines</a>.<br>Included are directions for opening issues, coding standards, and notes on development.</p>
<p>Please read through our <ahref="https://github.com/FortAwesome/Font-Awesome/blob/master/CONTRIBUTING.md"rel="external nofollow noopener noreferrer"target="_blank">contributing guidelines</a>.<br>Included are directions for opening issues, coding standards,
<p>Font Awesome will be maintained under the Semantic Versioning guidelines as much as possible. Releases will be numbered<br>with the following format:</p>
<p>Font Awesome will be maintained under the Semantic Versioning guidelines as much as possible. Releases will be numbered<br>with the following format:</p>
<p>Spoqa Han Sans에 대한 제작 배경 및 미리보기에 대한 정보는 <ahref="http://spoqa-han-sans.com/"rel="external nofollow noopener noreferrer"target="_blank">Spoqa Han Sans Introduction</a>에서 얻으실 수 있습니다.</p>
<p>Spoqa Han Sans에 대한 제작 배경 및 미리보기에 대한 정보는 <ahref="http://spoqa-han-sans.com/"rel="external nofollow noopener noreferrer"target="_blank">Spoqa Han Sans Introduction</a>에서 얻으실 수 있습니다.</p>
<p>Spoqa Han Sans는 Spoqa에서 관리하고 있는 오픈 소스 서체로, <ahref="http://scripts.sil.org/OFL"rel="external nofollow noopener noreferrer"target="_blank">SIL Open Font License</a>로 배포되고 있습니다. (<ahref="https://github.com/spoqa/spoqa-han-sans/graphs/contributors"rel="external nofollow noopener noreferrer"target="_blank">프로젝트에 기여한 분들의 목록</a> 참고.)</p>
<p>Spoqa Han Sans는 Spoqa에서 관리하고 있는 오픈 소스 서체로, <ahref="http://scripts.sil.org/OFL"rel="external nofollow noopener noreferrer"target="_blank">SIL Open Font License</a>로 배포되고 있습니다. (<ahref="https://github.com/spoqa/spoqa-han-sans/graphs/contributors"rel="external nofollow noopener noreferrer"
<p>Spoqa Han Sans에 대한 제작 배경 및 미리보기에 대한 정보는 <ahref="http://spoqa-han-sans.com/"rel="external nofollow noopener noreferrer"target="_blank">Spoqa Han Sans Introduction</a>에서 얻으실 수 있습니다.</p>
<p>Spoqa Han Sans에 대한 제작 배경 및 미리보기에 대한 정보는 <ahref="http://spoqa-han-sans.com/"rel="external nofollow noopener noreferrer"target="_blank">Spoqa Han Sans Introduction</a>에서 얻으실 수 있습니다.</p>
<p>Spoqa Han Sans는 Spoqa에서 관리하고 있는 오픈 소스 서체로, <ahref="http://scripts.sil.org/OFL"rel="external nofollow noopener noreferrer"target="_blank">SIL Open Font License</a>로 배포되고 있습니다. (<ahref="https://github.com/spoqa/spoqa-han-sans/graphs/contributors"rel="external nofollow noopener noreferrer"target="_blank">프로젝트에 기여한 분들의 목록</a> 참고.)</p>
<p>Spoqa Han Sans는 Spoqa에서 관리하고 있는 오픈 소스 서체로, <ahref="http://scripts.sil.org/OFL"rel="external nofollow noopener noreferrer"target="_blank">SIL Open Font License</a>로 배포되고 있습니다. (<ahref="https://github.com/spoqa/spoqa-han-sans/graphs/contributors"rel="external nofollow noopener noreferrer"
<metaproperty="og:description"content="So you want to create your own membrane keypad? Why? well making your own keypad can be useful for many reasons. It’s cheap and easy to…">
<metaproperty="og:description"content="So you want to create your own membrane keypad? Why? well making your own keypad can be useful for many reasons. It’s cheap and easy to…">
<metaname="twitter:title"content="Create Own Membrane Matrix Keypad (and Hooking It Up to the Arduino)">
<metaname="twitter:title"content="Create Own Membrane Matrix Keypad (and Hooking It Up to the Arduino)">
<metaname="twitter:description"content="So you want to create your own membrane keypad? Why? well making your own keypad can be useful for many reasons. It’s cheap and easy to…">
<metaname="twitter:description"content="So you want to create your own membrane keypad? Why? well making your own keypad can be useful for many reasons. It’s cheap and easy to…">
<metaitemprop="articleBody"content="So you want to create your own membrane keypad? Why? well making your own keypad can be useful for many reasons. It’s cheap and easy to do, it can be placed in situations where it may be...">
<metaitemprop="articleBody"content="So you want to create your own membrane keypad? Why? well making your own keypad can be useful for many reasons. It’s cheap and easy to do, it can be placed in situations where it may be...">
<metaproperty="og:description"content="In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I…">
<metaproperty="og:description"content="In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I…">
<metaname="twitter:title"content="Setting up Hexo Auto-deploy from Gitlab">
<metaname="twitter:title"content="Setting up Hexo Auto-deploy from Gitlab">
<metaname="twitter:description"content="In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I…">
<metaname="twitter:description"content="In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I…">
...
@@ -74,7 +74,8 @@
...
@@ -74,7 +74,8 @@
<h1class="article__title"itemprop="headline">Setting up Hexo Auto-deploy from Gitlab</h1>
<h1class="article__title"itemprop="headline">Setting up Hexo Auto-deploy from Gitlab</h1>
<spandata-prompt="Enter a passphrase(empty for no passphrase):"data-strings=""data-action="prompt"data-delay="3000">Enter a passphrase(empty for no passphrase):<br></span>
<spandata-prompt="Enter a passphrase(empty for no passphrase):"data-strings=""data-action="prompt"data-delay="3000">Enter a passphrase(empty for no passphrase):<br></span>
<spandata-prompt="Enter same passphrase again:"data-strings=""data-action="prompt"data-delay="2000">Enter same passphrase again:<br></span>
<spandata-prompt="Enter same passphrase again:"data-strings=""data-action="prompt"data-delay="2000">Enter same passphrase again:<br></span>
<spandata-strings="Your identification has been saved in /Users/john/testtt.<br>Your public key has been saved in /Users/john/testtt.pub.<br>The key fingerprint is:<br>SHA256:j+FL93E5e6btfzLZxkrWrZdrBkwqanJQtba1RZwROO8 runnerboi@gitlab<br/>The key's randomart image is:<br/>+---[RSA 2048]----+<br>| oo+ |<br>| . o + |<br>| . . + |<br>| . o . + |<br>| . S o B |<br>| . . * o E o.|<br>| . = + . B++|<br>| . = o . =+OO|<br>| + . . B%B|<br>+----[SHA256]-----+"data-action="print"data-delay="0">
<spandata-strings="Your identification has been saved in /Users/john/testtt.<br>Your public key has been saved in /Users/john/testtt.pub.<br>The key fingerprint is:<br>SHA256:j+FL93E5e6btfzLZxkrWrZdrBkwqanJQtba1RZwROO8 runnerboi@gitlab<br/>The key's randomart image is:<br/>+---[RSA 2048]----+<br>| oo+ |<br>| . o + |<br>| . . + |<br>| . o . + |<br>| . S o B |<br>| . . * o E o.|<br>| . = + . B++|<br>| . = o . =+OO|<br>| + . . B%B|<br>+----[SHA256]-----+"
data-action="print"data-delay="0">
Your identification has been saved in /Users/john/testtt.<br>
Your identification has been saved in /Users/john/testtt.<br>
Your public key has been saved in /Users/john/testtt.pub.<br>
Your public key has been saved in /Users/john/testtt.pub.<br>
the file that was generated along with <code>runnerboi.pub</code>, and move over to your <strong>blogsource</strong> repo’s CI/CD settings. Here we make a variable, name it <code>SSH_PRIVATE_KEY</code>, and paste the entire contents of that
the file that was generated along with <code>runnerboi.pub</code>, and move over to your <strong>blogsource</strong> repo’s CI/CD settings. Here we make a variable, name it <code>SSH_PRIVATE_KEY</code>, and paste the entire contents of that
<p>While we’re still on this page we want to add some ssh client config values. You can look more into setting up ssh configuration files in <ahref="https://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/"rel="external nofollow noopener noreferrer"target="_blank">this wonderful blog post</a>. For our purposes, we’ve set it up to ignore host key settings for every host, and set up our own gitlab server to use a specific port. If your server is visible to the internet, you’re definitely
<p>While we’re still on this page we want to add some ssh client config values. You can look more into setting up ssh configuration files in <ahref="https://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/"rel="external nofollow noopener noreferrer"
target="_blank">this wonderful blog post</a>. For our purposes, we’ve set it up to ignore host key settings for every host, and set up our own gitlab server to use a specific port. If your server is visible to the internet, you’re definitely
going to want to change the default port so, if you have, this is where you’d tell your runner about it.</p>
going to want to change the default port so, if you have, this is where you’d tell your runner about it.</p>
<p>This is what I put under the CI variable for <code>SSH_CONFIG</code>:<br><code>Host *\n\tStrictHostKeyChecking no\n\nHost gitlab.mysite.com\n\tport 2202</code><br><code>\n</code> is code for making a new line and <code>\t</code> is code for
<p>This is what I put under the CI variable for <code>SSH_CONFIG</code>:<br><code>Host *\n\tStrictHostKeyChecking no\n\nHost gitlab.mysite.com\n\tport 2202</code><br><code>\n</code> is code for making a new line and <code>\t</code> is code for
pressing tab. This will parse out to:<br>
pressing tab. This will parse out to:<br>
...
@@ -328,7 +332,8 @@
...
@@ -328,7 +332,8 @@
<p>The “only” part of this will make it only run the “public” scripts when we commit to master.</p>
<p>The “only” part of this will make it only run the “public” scripts when we commit to master.</p>
<p>Now we’re set up to run our build when we commit to blogsource. Commit these files and the CI should jump into action trying to build your site. Once it’s done, check your “blog” repo and you should have all your files nice and tidy. From
<p>Now we’re set up to run our build when we commit to blogsource. Commit these files and the CI should jump into action trying to build your site. Once it’s done, check your “blog” repo and you should have all your files nice and tidy. From
here you can do a git clone or git pull on your live server and your site will be updated. I’m working on making this part more automated for a future post but if you’re impatient you could try something like they did in <ahref="https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps"rel="external nofollow noopener noreferrer"target="_blank">this post on digital ocean</a>.</p>
here you can do a git clone or git pull on your live server and your site will be updated. I’m working on making this part more automated for a future post but if you’re impatient you could try something like they did in <ahref="https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps"
rel="external nofollow noopener noreferrer"target="_blank">this post on digital ocean</a>.</p>
<h2id="Back-to-Gitlab-one-final-time-1"><ahref="#Back-to-Gitlab-one-final-time-1"class="headerlink"title="Back to Gitlab one final time"></a>Back to Gitlab one final time</h2>
<h2id="Back-to-Gitlab-one-final-time-1"><ahref="#Back-to-Gitlab-one-final-time-1"class="headerlink"title="Back to Gitlab one final time"></a>Back to Gitlab one final time</h2>
<p>But really, I don’t want to have it build every commit… Sometimes I’m just editing drafts and literally nothing will change on the frontend. Well as of right now you need to add <code>[ci-skip]</code> to the commit message for that to happen.
<p>But really, I don’t want to have it build every commit… Sometimes I’m just editing drafts and literally nothing will change on the frontend. Well as of right now you need to add <code>[ci-skip]</code> to the commit message for that to happen.
Gitlab just recently started supporting push options. These allow you to pass options to your repo without fouling up your commit messages with a soup of tags and variables. There’s ongoing work in <ahref="https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15643/commits"rel="external nofollow noopener noreferrer"target="_blank">this merge request</a> to implement that with <code>git push -o ci-skip</code>. Pretty interesting!</p>
Gitlab just recently started supporting push options. These allow you to pass options to your repo without fouling up your commit messages with a soup of tags and variables. There’s ongoing work in <ahref="https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15643/commits"
<p>Really though, I don’t want to have it build every commit. Sometimes I’m just editing drafts and literally nothing will change on the frontend. Well as of right now you need to add <code>[ci-skip]</code> to the commit message for that to happen.
<p>Really though, I don’t want to have it build every commit. Sometimes I’m just editing drafts and literally nothing will change on the frontend. Well as of right now you need to add <code>[ci-skip]</code> to the commit message for that to happen.
Gitlab just recently started supporting push options. These allow you to pass options to your repo without fouling up your commit messages with a soup of tags and variables. There’s ongoing work in <ahref="https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15643/commits"rel="external nofollow noopener noreferrer"target="_blank">this merge request</a> to implement that with <code>git push -o ci-skip</code>. Pretty interesting!</p>
Gitlab just recently started supporting push options. These allow you to pass options to your repo without fouling up your commit messages with a soup of tags and variables. There’s ongoing work in <ahref="https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15643/commits"
<h2id="That’s-all-folks"><ahref="#That’s-all-folks"class="headerlink"title="That’s all folks!"></a>That’s all folks!</h2>
<h2id="That’s-all-folks"><ahref="#That’s-all-folks"class="headerlink"title="That’s all folks!"></a>That’s all folks!</h2>
<p>As always, if you have any questions, just drop me a line and I’ll do my best to get you some answers. Have fun, keep making cool stuff and I’ll see you on the next project!</p>
<p>As always, if you have any questions, just drop me a line and I’ll do my best to get you some answers. Have fun, keep making cool stuff and I’ll see you on the next project!</p>
<metaitemprop="articleBody"content="In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I want to share how I got mine set up to
<metaitemprop="articleBody"content="In a previous post I talked about why I like the idea of a static site generator, and the reasons for choosing to use one. In this post I want to share how I got mine set up to
<divclass="related-posts__item__overlay"></div><spanclass="related-posts__item__title">Table based design: Why I loathe it, and you should too!</span></a>
<divclass="related-posts__item__overlay"></div><spanclass="related-posts__item__title">Table based design: Why I loathe it, and you should too!</span></a>
<metaproperty="og:description"content="Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few…">
<metaproperty="og:description"content="Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few…">
<metaname="twitter:description"content="Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few…">
<metaname="twitter:description"content="Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few…">
...
@@ -89,7 +89,8 @@
...
@@ -89,7 +89,8 @@
it to the outlet to see if it still powered on. swapped Tx and Rx. Nothing!… All I have to say now is, make sure you are connecting ground to ground and not “DTR GRN” to ground. GRN looks a lot like GND at first glance. I did however ensure
it to the outlet to see if it still powered on. swapped Tx and Rx. Nothing!… All I have to say now is, make sure you are connecting ground to ground and not “DTR GRN” to ground. GRN looks a lot like GND at first glance. I did however ensure
my FTDI was in 3.3V mode. Make sure you do too!</p>
my FTDI was in 3.3V mode. Make sure you do too!</p>
<p><imgsrc="/images/sonoff/ftdi.jpg"alt="FTDI Basic, Annotations added by me"></p>
<p><imgsrc="/images/sonoff/ftdi.jpg"alt="FTDI Basic, Annotations added by me"></p>
<h6id="CC-BY-2-0-made-available-by-Sparkfun-Electronics"><ahref="#CC-BY-2-0-made-available-by-Sparkfun-Electronics"class="headerlink"title="CC BY 2.0 made available by Sparkfun Electronics."></a><ahref="https://creativecommons.org/licenses/by/2.0/"rel="external nofollow noopener noreferrer"target="_blank">CC BY 2.0</a> made available by Sparkfun Electronics.</h6>
<h6id="CC-BY-2-0-made-available-by-Sparkfun-Electronics"><ahref="#CC-BY-2-0-made-available-by-Sparkfun-Electronics"class="headerlink"title="CC BY 2.0 made available by Sparkfun Electronics."></a><ahref="https://creativecommons.org/licenses/by/2.0/"rel="external nofollow noopener noreferrer"
target="_blank">CC BY 2.0</a> made available by Sparkfun Electronics.</h6>
<p>Once that was sorted it was time to do a quick <code>flash_erase</code> and a <code>flash_write</code> of the new Micropython build for the 8266. Things should be smooth sailing from here. Let’s just do a quick <code>erase_flash</code></p>
<p>Once that was sorted it was time to do a quick <code>flash_erase</code> and a <code>flash_write</code> of the new Micropython build for the 8266. Things should be smooth sailing from here. Let’s just do a quick <code>erase_flash</code></p>
<p>I tried this time and time again on my windows box, swapped over to my more familiar OSX laptop and did it again, tried older pre-compiled bins from <ahref="https://micropython.org/download#esp8266"rel="external nofollow noopener noreferrer"target="_blank">micropython</a>. Nothing was getting me anywhere.</p>
<p>I tried this time and time again on my windows box, swapped over to my more familiar OSX laptop and did it again, tried older pre-compiled bins from <ahref="https://micropython.org/download#esp8266"rel="external nofollow noopener noreferrer"
target="_blank">micropython</a>. Nothing was getting me anywhere.</p>
<p>Off to the googler (well, the duck, duck, go-er) to figure out what the issue is here. Most of what I find is people flashing Micropython on the SONOFF with no problems. Technically, I did it with no problem according to the flash verification.
<p>Off to the googler (well, the duck, duck, go-er) to figure out what the issue is here. Most of what I find is people flashing Micropython on the SONOFF with no problems. Technically, I did it with no problem according to the flash verification.
What I’m specifically looking for is “SONOFF Micropython no REPL”. That lead me to this solution.</p>
What I’m specifically looking for is “SONOFF Micropython no REPL”. That lead me to this solution.</p>
<figureclass="highlight plain">
<figureclass="highlight plain">
...
@@ -176,7 +178,8 @@
...
@@ -176,7 +178,8 @@
</table>
</table>
</figure>
</figure>
</p>
</p>
<h5id="Props-go-to-pythoncoder-for-what-I’m-sure-was-a-very-frustrating-time-figuring-this-out"><ahref="#Props-go-to-pythoncoder-for-what-I’m-sure-was-a-very-frustrating-time-figuring-this-out"class="headerlink"title="Props go to pythoncoder for what I’m sure was a very frustrating time figuring this out."></a>Props go to <ahref="https://forum.micropython.org/viewtopic.php?f=16&t=3777"rel="external nofollow noopener noreferrer"target="_blank">pythoncoder</a> for what I’m sure was a very frustrating time figuring this out.</h5>
<h5id="Props-go-to-pythoncoder-for-what-I’m-sure-was-a-very-frustrating-time-figuring-this-out"><ahref="#Props-go-to-pythoncoder-for-what-I’m-sure-was-a-very-frustrating-time-figuring-this-out"class="headerlink"title="Props go to pythoncoder for what I’m sure was a very frustrating time figuring this out."></a>Props go to <ahref="https://forum.micropython.org/viewtopic.php?f=16&t=3777"
rel="external nofollow noopener noreferrer"target="_blank">pythoncoder</a> for what I’m sure was a very frustrating time figuring this out.</h5>
<p>He’s also posted a fairly detailed write up on why you shouldn’t waste your time with the SONOFF modules as they seem to all be unreliable both in runtime and connectivity. I won’t let that discourage me as I’m not using it for anything mission
<p>He’s also posted a fairly detailed write up on why you shouldn’t waste your time with the SONOFF modules as they seem to all be unreliable both in runtime and connectivity. I won’t let that discourage me as I’m not using it for anything mission
critical or non accessible right now.</p>
critical or non accessible right now.</p>
<h3id="Back-on-track"><ahref="#Back-on-track"class="headerlink"title="Back on track"></a>Back on track</h3>
<h3id="Back-on-track"><ahref="#Back-on-track"class="headerlink"title="Back on track"></a>Back on track</h3>
<metaitemprop="articleBody"content="Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few issues, but eventually got MicroPython running on it.
<metaitemprop="articleBody"content="Over the weekend I flashed off the default firmware on a cheap Sonoff basic Internet connected relay. Along the way I ran into a few issues, but eventually got MicroPython running on it.
<metaproperty="og:description"content="Recently I’ve become disillusioned with most CMS options. They’re a pain to keep updated, plugins are constantly being abandoned, and…">
<metaproperty="og:description"content="Recently I’ve become disillusioned with most CMS options. They’re a pain to keep updated, plugins are constantly being abandoned, and…">
<metaname="twitter:title"content="Static what Generator?!">
<metaname="twitter:title"content="Static what Generator?!">
<metaname="twitter:description"content="Recently I’ve become disillusioned with most CMS options. They’re a pain to keep updated, plugins are constantly being abandoned, and…">
<metaname="twitter:description"content="Recently I’ve become disillusioned with most CMS options. They’re a pain to keep updated, plugins are constantly being abandoned, and…">
...
@@ -126,7 +126,8 @@
...
@@ -126,7 +126,8 @@
<h3id="A-Word-on-interactivity"><ahref="#A-Word-on-interactivity"class="headerlink"title="A Word on interactivity"></a>A Word on interactivity</h3>
<h3id="A-Word-on-interactivity"><ahref="#A-Word-on-interactivity"class="headerlink"title="A Word on interactivity"></a>A Word on interactivity</h3>
<p>Static sites are very useful for serving your content. However, there are a few times where some interactivity is really useful. For instance, the comments section down below. Well in those cases, we can employ third party services with javascript
<p>Static sites are very useful for serving your content. However, there are a few times where some interactivity is really useful. For instance, the comments section down below. Well in those cases, we can employ third party services with javascript
to bridge that gap. Discus seems to be very vigilant when it comes to user identity and exploit elimination. They provide an <abbrtitle="Application Programming Interface">API</abbr> in which you can send them your “shortname” and the
to bridge that gap. Discus seems to be very vigilant when it comes to user identity and exploit elimination. They provide an <abbrtitle="Application Programming Interface">API</abbr> in which you can send them your “shortname” and the
<abbrtitle="Uniform Resource Locator">URL</abbr> of your post and they’ll provide a comments section that you can embed there.</p>
<abbr
title="Uniform Resource Locator">URL</abbr> of your post and they’ll provide a comments section that you can embed there.</p>
</div>
</div>
<divclass="article__author"itemscope=""itemprop="author"itemtype="https://schema.org/Person"><imgclass="article__author__image"src="/images/avatar.jpg"alt="John Warren"><aclass="article__author__link"title="About John Warren"rel="author">John Warren</a>
<divclass="article__author"itemscope=""itemprop="author"itemtype="https://schema.org/Person"><imgclass="article__author__image"src="/images/avatar.jpg"alt="John Warren"><aclass="article__author__link"title="About John Warren"rel="author">John Warren</a>
<pclass="article__author__desc">Just a place to make stuff</p>
<pclass="article__author__desc">Just a place to make stuff</p>
<metaitemprop="articleBody"content="Recently I’ve become disillusioned with most CMS options. They’re a pain to keep updated, plugins are constantly being abandoned, and they’re so prevalent in sites that they make a very attractive...">
<metaitemprop="articleBody"content="Recently I’ve become disillusioned with most CMS options. They’re a pain to keep updated, plugins are constantly being abandoned, and they’re so prevalent in sites that they make a very attractive...">
<metaproperty="og:description"content="If there is one thing that grinds my gears it’s table based design and the “web development” companies that continue to use it. Web…">
<metaproperty="og:description"content="If there is one thing that grinds my gears it’s table based design and the “web development” companies that continue to use it. Web…">
<metaname="twitter:title"content="Table based design: Why I loathe it, and you should too!">
<metaname="twitter:title"content="Table based design: Why I loathe it, and you should too!">
<metaname="twitter:description"content="If there is one thing that grinds my gears it’s table based design and the “web development” companies that continue to use it. Web…">
<metaname="twitter:description"content="If there is one thing that grinds my gears it’s table based design and the “web development” companies that continue to use it. Web…">
<metaitemprop="articleBody"content="If there is one thing that grinds my gears it’s table based design and the “web development” companies that continue to use it.
<metaitemprop="articleBody"content="If there is one thing that grinds my gears it’s table based design and the “web development” companies that continue to use it.
Web development is one heck of an industry. It changes, transforms,...">
Web development is one heck of an industry. It changes, transforms,...">
<metaproperty="og:description"content="Well today’s the day! On the eve of Canada day I have made a giant step towards a good version of the plasma speaker! After letting the…">
<metaproperty="og:description"content="Well today’s the day! On the eve of Canada day I have made a giant step towards a good version of the plasma speaker! After letting the…">
<metaname="twitter:description"content="Well today’s the day! On the eve of Canada day I have made a giant step towards a good version of the plasma speaker! After letting the…">
<metaname="twitter:description"content="Well today’s the day! On the eve of Canada day I have made a giant step towards a good version of the plasma speaker! After letting the…">
<metaitemprop="articleBody"content="Well today’s the day! On the eve of Canada day I have made a giant step towards a good version of the plasma speaker! After letting the magic smoke out of countless ICs and Diodes I have finally...">
<metaitemprop="articleBody"content="Well today’s the day! On the eve of Canada day I have made a giant step towards a good version of the plasma speaker! After letting the magic smoke out of countless ICs and Diodes I have finally...">