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.
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>
<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>
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>
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>
</div>
</article>
<articleclass="post-list__item">
...
...
@@ -115,8 +114,7 @@
<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>
<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>
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>
</div>
</article>
<articleclass="post-list__item">
...
...
@@ -115,8 +114,7 @@
<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>
<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>
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>
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>
<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>
<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>
<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>
<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…">
<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.…">
<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…">
<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.…">
<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…">
<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.…">
<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
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...">
<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-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 public key has been saved in /Users/jwarren/testtt.pub.<br>
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>
</div>
</article>
<articleclass="post-list__item">
...
...
@@ -111,8 +110,7 @@
<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>
<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>
<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>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>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, and notes on development.</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는 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>
\ No newline at end of file
<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에 대한 제작 배경 및 미리보기에 대한 정보는 <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>
\ No newline at end of file
<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>
<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-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 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
<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>
<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>
...
...
@@ -332,8 +328,7 @@
<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
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>
<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"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>
<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"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>
<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>
<divclass="related-posts__item__overlay"></div><spanclass="related-posts__item__title">Table based design: Why I loathe it, and you should too!</span></a>
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>
<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>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.
What I’m specifically looking for is “SONOFF Micropython no REPL”. That lead me to this solution.</p>
<figureclass="highlight plain">
...
...
@@ -178,8 +176,7 @@
</table>
</figure>
</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
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="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
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
<abbr
title="Uniform Resource Locator">URL</abbr> of your post and they’ll provide a comments section that you can embed there.</p>
<abbrtitle="Uniform Resource Locator">URL</abbr> of your post and they’ll provide a comments section that you can embed there.</p>
</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>
<pclass="article__author__desc">Just a place to make stuff</p>
<metaproperty="og:description"content="When “pretty good” is good enough PGP stands for “Pretty Good Privacy”. It’s a set of algorithms for encrypting, compressing, and signing…">
<metaname="twitter:title"content="You down with PGP? Yeah you know me!">
<metaname="twitter:description"content="When “pretty good” is good enough PGP stands for “Pretty Good Privacy”. It’s a set of algorithms for encrypting, compressing, and signing…">
...
...
@@ -502,11 +502,22 @@
</p>
<p>In this method, Alice and Bob publicly agree on a shared set of numbers, they then use their private keys and use the public numbers in an algorithm to obtain a “mix” of numbers that they’ll send to one another. Alice and Bob then “mix” the
others mixed numbers to be left with a pair of numbers that no one else can know. Eve would need access to either Bob or Alices private numbers in order to arrive at the new secret from any of the numbers that were shared.</p>
<p>It’s a little hard to understand this way and often a good way of explaining this is with Colours. The image below shows a representation for this.<br><imgsrc="/images/gpg/dhkeyexchange.png"alt="Diffie–Hellman key exchange"></p>
<p>It’s a little hard to understand this way, often a good way of explaining this is with colours. The image below shows a representation for this.<br><imgsrc="/images/gpg/dhkeyexchange.png"alt="Diffie–Hellman key exchange"></p>
<p>Notice the final colour never goes into the public space. This is the number that would then be used to encrypt messages using a symmetric encryption (similar to our one time pad example). If you’d like to see a video on this, Khan Academy
presents a lesson by <ahref="https://britcruise.com/"rel="external nofollow noopener noreferrer"target="_blank">Brit Cruise</a> and does a good job at demonstrating it.</p>
<h2id="Putting-it-all-together"><ahref="#Putting-it-all-together"class="headerlink"title="Putting it all together"></a>Putting it all together</h2>
<p>Bob and Alice are agents for the super secret Puppy alliance (SSPA). They have never been on the same continent together, let alone met. They’ve both been deployed in the kitty cat capitol city and need to communicate to ensure the survival
of puppy dogs in a Feline controlled world. They both know the SSPA’s public key and trust that it belongs to them. Bob, gets a message from Alice that is signed with Alice’s Public key. He can not be sure that the message is in fact from
Alice because Eve could have easily made a Public and Private key and called herself Alice. However, the message also contained a signature on Alice’s public key signed by the SSPA. Because Bob trusts the SSPA he can believe that this key
in fact does belong to Alice as Eve would have no way of signing the public key with SSPA’s private key.</p>
<p>Using <abbrtitle="GNU Privacy Guard">GPG</abbr> Bob and Alice set up a shared secret and then can communicate in private while Eve is left on the outside not being able to read any of their messages. Puppies will rise again.</p>
<p>All of this just dips our toes into Cryptography, There is much more to know. There are several different parts of a crypto system and each have very specific uses. In later posts I will try to outline how to make some solid keys, the different
useful features of other systems, and more info on why it’s a good idea to not make crypto yourself and instead rely on the genius of others. Until then, try to come up with an explanation of <code>forward secrecy</code>. Think about how
you could change your key every message, Think about what would happen if you received a message out of order in that scenario. How would you protect earlier messages from being decrypted if your key was leaked?</p>
<p>As always, let me know if you have any questions or something you’d like me to add.</p>
</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>
<pclass="article__author__desc">Just a place to make stuff</p>
<metaitemprop="articleBody"content="When “pretty good” is good enough
PGP stands for “Pretty Good Privacy”. It’s a set of algorithms for encrypting, compressing, and signing data so that a specific person can open and read that...">