(3161,'2020-09-14','How I manage podcast listening',1192,'Another reply to MrX\'s episode on how he listens to podcasts','<h2 id=\"introduction\">Introduction</h2>\n<p>I have spoken in the past about the <a href=\"https://hackerpublicradio.org/eps/hpr2211\" title=\"My podcast workflow\">podcast management system</a> I have created, but have never gone into much detail about how I manage the playing of episodes.</p>\n<p>Prompted by <a href=\"https://hackerpublicradio.org/correspondents/0201.html\">MrX’s</a> <a href=\"https://hackerpublicradio.org/eps/hpr3132\" title=\"Keeping track of where I am\">HPR episode hpr3132, “Keeping track of where I am”</a> I will describe it now.</p>\n<h2 id=\"long-notes\">Long notes</h2>\n<p>Follow this link to <a href=\"hpr3161_full_shownotes.html\">read the detailed notes</a> associated with this episode.</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li><a href=\"https://www.rockbox.org/\">Rockbox - an alternative operating system for certain music players</a></li>\n<li><a href=\"https://www.figlet.org/\">figlet - a program for making large letters out of ordinary text</a></li>\n</ul>\n<ul>\n<li>HPR links:\n<ul>\n<li><a href=\"https://hackerpublicradio.org/eps/hpr1656\">hpr1656 :: My audio player collection</a></li>\n<li><a href=\"https://hackerpublicradio.org/eps/hpr1992\">hpr1992 :: How I’m handling my podcast-subscriptions and -listening</a></li>\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2211\">hpr2211 :: My podcast workflow</a></li>\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3132\">hpr3132 :: Keeping track of where I am</a></li>\n</ul></li>\n</ul>\n',225,0,1,'CC-BY-SA','podcast,software,mp3 player,database',0,0,1),
(3164,'2020-09-17','I\'m Learning Spanish',989,'How I am using a variety of tools to learn Spanish','<p>I decided to use my time spent in relative isolation to do something productive and learn another language. I picked Spanish because I am hoping to visit Mexico and other Latin American countries whenever the plague lifts. I decided to document this for anyone who wants to know what options I found and how they have worked for me so far.</p>\r\n<ul>\r\n<li><a href=\"https://www.babbel.com/\" class=\"uri\">https://www.babbel.com/</a></li>\r\n<li><a href=\"https://actualfluency.com/babbel-review/\" class=\"uri\">https://actualfluency.com/babbel-review/</a></li>\r\n<li><a href=\"https://www.trustpilot.com/review/babbel.com\" class=\"uri\">https://www.trustpilot.com/review/babbel.com</a></li>\r\n<li><a href=\"https://www.alllanguageresources.com/rosetta-stone-vs-babbel/\" class=\"uri\">https://www.alllanguageresources.com/rosetta-stone-vs-babbel/</a></li>\r\n<li><a href=\"https://my.babbel.com/en/prices\" class=\"uri\">https://my.babbel.com/en/prices</a></li>\r\n<li><a href=\"https://support.babbel.com/hc/en-us/articles/360037580132\" class=\"uri\">https://support.babbel.com/hc/en-us/articles/360037580132</a></li>\r\n<li><a href=\"https://www.duolingo.com/\" class=\"uri\">https://www.duolingo.com/</a></li>\r\n<li><a href=\"https://appleinsider.com/articles/13/12/17/apple-announces-best-of-2013-itunes-list-for-music-apps-more\" class=\"uri\">https://appleinsider.com/articles/13/12/17/apple-announces-best-of-2013-itunes-list-for-music-apps-more</a></li>\r\n<li><a href=\"https://www.cnet.com/news/best-language-learning-apps-of-2020-update/#listicle-a538cb59-e3e7-47b1-b029-f9ad8735bcbb\" class=\"uri\">https://www.cnet.com/news/best-language-learning-apps-of-2020-update/#listicle-a538cb59-e3e7-47b1-b029-f9ad8735bcbb</a></li>\r\n<li><a href=\"https://uk.pcmag.com/education/18817/duolingo\" class=\"uri\">https://uk.pcmag.com/education/18817/duolingo</a></li>\r\n<li><a href=\"https://www.influenster.com/reviews/duolingo\" class=\"uri\">https://www.influenster.com/reviews/duolingo</a></li>\r\n<li><a href=\"https://www.memrise.com/apps/\" class=\"uri\">https://www.memrise.com/apps/</a></li>\r\n<li><a href=\"https://www.pcmag.com/reviews/memrise\" class=\"uri\">https://www.pcmag.com/reviews/memrise</a></li>\r\n<li><a href=\"https://www.alllanguageresources.com/memrise-review-good-beginners-dont-overuse/\" class=\"uri\">https://www.alllanguageresources.com/memrise-review-good-beginners-dont-overuse/</a></li>\r\n<li><a href=\"https://www.lifewire.com/memrise-review-1357058\" class=\"uri\">https://www.lifewire.com/memrise-review-1357058</a></li>\r\n<li><a href=\"https://www.spanishpod101.com/\" class=\"uri\">https://www.spanishpod101.com/</a></li>\r\n<li><a href=\"https://www.fluentu.com/blog/spanish/spanishpod101-review/\" class=\"uri\">https://www.fluentu.com/blog/spanish/spanishpod101-review/</a></li>\r\n<li><a href=\"https://www.alllanguageresources.com/spanishpod101/\" class=\"uri\">https://www.alllanguageresources.com/spanishpod101/</a></li>\r\n<li><a href=\"https://actualfluency.com/spanishpod101-review/\" class=\"uri\">https://actualfluency.com/spanishpod101-review/</a></li>\r\n<li><a href=\"https://www.speaktribe.com/\" class=\"uri\">https://www.speaktribe.com/</a></li>\r\n<li><a href=\"https://www.androidguys.com/reviews/speaktribe-a-great-way-of-learning-the-beautiful-spanish-language-review/\" class=\"uri\">https://www.androidguys.com/reviews/speaktribe-a-great-way-of-learning-the-beautiful-spanish-language-review/</a></li>\r\n<li><a href=\"https://www.educationalappstore.com/app/learn-spanish-with-speaktribe\" class=\"uri\">https://www.educationalappstore.com/app/learn-spanish-with-speaktribe</a></li>\r\n<li><a href=\"https://appgrooves.com/app/learn-spanish-with-speaktribe-by-edushire-technologies-private-limited\" class=\"uri\">https://appgrooves.com/app/learn-spanish-with-speaktribe-by-edushire-technologies-private-limited</a></li>\r\n<li><a href=\"https://aaac.co/en-us/en-spa/best-spanish-learning-app-for-ios-android/2059/\" class=\"uri\">https://aaac.co/en-us/en-spa/best-spanish-learning-app-for-ios-android/2059/</a></li>\r\n<li><a href=\"https://appgrooves.com/android/com.ufo.learnspanish/learn-spanish-offline/ufostudio\" class=\"uri\">https://appgrooves.com/android/com.ufo.learnspanish/learn-spanish-offline/ufostudio</a></li>\r\n<li><a href=\"https://appfollow.io/android/learn-spanish-offline/com.ufo.learnspanish\" class=\"uri\">https://appfollow.io/android/learn-spanish-offline/com.ufo.learnspanish</a></li>\r\n<li><a href=\"https://spanishobsessed.com/\" class=\"uri\">https://spanishobsessed.com/</a></li>\r\n<li><a href=\"https://languagelearninglibrary.com/library/spanish-obsessed/\" class=\"uri\">https://languagelearninglibrary.com/library/spanish-obsessed/</a></li>\r\n<li><a href=\"https://www.fluentu.com/blog/spanish/spanish-podcasts/\" class=\"uri\">https://www.fluentu.com/blog/spanish/spanish-podcasts/</a></li>\r\n<li><a href=\"https://www.theguardian.com/education/2015/feb/09/top-podcasts-learning-language-german-japanese\" class=\"uri\">https://www.theguardian.com/education/2015/feb/09/top-podcasts-learning-language-german-japanese</a></li>\r\n<li><a href=\"https://www.palain.com/im-learning-spanish/\" class=\"uri\">https://www.palain.com/im-learning-spanish/</a></li>\r\n</ul>\r\n',198,116,0,'CC-BY-SA','Spanish, Language learning',0,0,1),
(3165,'2020-09-18','Spanish Tools Continued',830,'Part two of how I am using a variety of tools to learn Spanish','<p>I decided to use my time spent in relative isolation to do something productive and learn another language. I picked Spanish because I am hoping to visit Mexico and other Latin American countries whenever the plague lifts. I decided to document this for anyone who wants to know what options I found and how they have worked for me so far. This is the second part of my tools exploration.</p>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/channel/UC3iaeeUxWOgUXFK6kfIp_Ig\" class=\"uri\">https://www.youtube.com/channel/UC3iaeeUxWOgUXFK6kfIp_Ig</a></li>\r\n<li><a href=\"https://www.alllanguageresources.com/spanish/\" class=\"uri\">https://www.alllanguageresources.com/spanish/</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=hyLl_0d0EBw&amp;list=PLTpetkN815Qyuc2RbC1kxxMQvxjQ3RnYG\" class=\"uri\">https://www.youtube.com/watch?v=hyLl_0d0EBw&amp;list=PLTpetkN815Qyuc2RbC1kxxMQvxjQ3RnYG</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=QWEXFfqwh7w&amp;list=PL80Flen6gkH_9j4OxsDucs9mbKjl5ccvU\" class=\"uri\">https://www.youtube.com/watch?v=QWEXFfqwh7w&amp;list=PL80Flen6gkH_9j4OxsDucs9mbKjl5ccvU</a></li>\r\n<li><a href=\"https://radiolingua.com/category/coffee-break-spanish/\" class=\"uri\">https://radiolingua.com/category/coffee-break-spanish/</a></li>\r\n<li><a href=\"https://www.fluentu.com/blog/spanish/coffee-break-spanish-review/\" class=\"uri\">https://www.fluentu.com/blog/spanish/coffee-break-spanish-review/</a></li>\r\n<li><a href=\"https://www.alllanguageresources.com/coffee-break-spanish/\" class=\"uri\">https://www.alllanguageresources.com/coffee-break-spanish/</a></li>\r\n<li><a href=\"https://spanishlandschool.com/best-spanish-podcasts/\" class=\"uri\">https://spanishlandschool.com/best-spanish-podcasts/</a></li>\r\n<li><a href=\"https://podcast.duolingo.com/spanish\" class=\"uri\">https://podcast.duolingo.com/spanish</a></li>\r\n<li><a href=\"https://www.alllanguageresources.com/spanish-podcasts/\" class=\"uri\">https://www.alllanguageresources.com/spanish-podcasts/</a></li>\r\n<li><a href=\"https://mashable.com/2017/12/07/duolingo-launches-spanish-podcast/\" class=\"uri\">https://mashable.com/2017/12/07/duolingo-launches-spanish-podcast/</a></li>\r\n<li><a href=\"https://www.thoughtco.com/best-podcasts-for-learning-spanish-4705414\" class=\"uri\">https://www.thoughtco.com/best-podcasts-for-learning-spanish-4705414</a></li>\r\n<li><a href=\"https://www.babbel.com/en/magazine/babbels-spanish-podcasts\" class=\"uri\">https://www.babbel.com/en/magazine/babbels-spanish-podcasts</a></li>\r\n<li><a href=\"https://www.podparadise.com/Podcast/Reviews/1485542323\" class=\"uri\">https://www.podparadise.com/Podcast/Reviews/1485542323</a></li>\r\n<li><a href=\"https://chartable.com/podcasts/a-zero-to-a-hero-learn-spanish\" class=\"uri\">https://chartable.com/podcasts/a-zero-to-a-hero-learn-spanish</a></li>\r\n<li><a href=\"https://www.boulderspanish.com/top-10-podcasts-for-spanish-learners/\" class=\"uri\">https://www.boulderspanish.com/top-10-podcasts-for-spanish-learners/</a></li>\r\n<li><a href=\"https://www.spanishpod101.com/helpcenter/getstarted/itunesfeeds\" class=\"uri\">https://www.spanishpod101.com/helpcenter/getstarted/itunesfeeds</a></li>\r\n<li><a href=\"https://www.fluentin3months.com/spanishpod101-review/\" class=\"uri\">https://www.fluentin3months.com/spanishpod101-review/</a></li>\r\n<li><a href=\"https://www.alllanguageresources.com/spanishpod101/\" class=\"uri\">https://www.alllanguageresources.com/spanishpod101/</a></li>\r\n<li><a href=\"https://actualfluency.com/spanishpod101-review/\" class=\"uri\">https://actualfluency.com/spanishpod101-review/</a></li>\r\n<li><a href=\"https://www.notesinspanish.com/\" class=\"uri\">https://www.notesinspanish.com/</a></li>\r\n<li><a href=\"https://www.fluentu.com/blog/spanish/spanish-podcasts/\" class=\"uri\">https://www.fluentu.com/blog/spanish/spanish-podcasts/</a></li>\r\n<li><a href=\"https://coffeeshopspanish.com/blog/2016/09/23/top-7-spanish-podcasts-intermediateadvanced-learners/\" class=\"uri\">https://coffeeshopspanish.com/blog/2016/09/23/top-7-spanish-podcasts-intermediateadvanced-learners/</a></li>\r\n<li><a href=\"https://www.merlot.org/merlot/viewCompositeReview.htm?id=389501\" class=\"uri\">https://www.merlot.org/merlot/viewCompositeReview.htm?id=389501</a></li>\r\n<li><a href=\"https://www.newsinslowspanish.com/\" class=\"uri\">https://www.newsinslowspanish.com/</a></li>\r\n<li><a href=\"https://www.mosalingua.com/en/the-best-free-spanish-podcasts/\" class=\"uri\">https://www.mosalingua.com/en/the-best-free-spanish-podcasts/</a></li>\r\n<li><a href=\"https://spanishlandschool.com/best-spanish-podcasts/\" class=\"uri\">https://spanishlandschool.com/best-spanish-podcasts/</a></li>\r\n<li><a href=\"https://coffeeshopspanish.com/blog/2016/09/23/top-7-spanish-podcasts-intermediateadvanced-learners/\" class=\"uri\">https://coffeeshopspanish.com/blog/2016/09/23/top-7-spanish-podcasts-intermediateadvanced-learners/</a></li>\r\n<li><a href=\"https://www.palain.com/spanish-tools-continued/\" class=\"uri\">https://www.palain.com/spanish-tools-continued/</a></li>\r\n</ul>\r\n',198,116,0,'CC-BY-SA','Spanish, Language learning',0,0,1),
(3175,'2020-10-02','International Keyboard',681,'How I learned to implement a keyboard that lets me type in Spanish','<p>I decided to use my time spent in relative isolation to do something productive and learn another language. I picked Spanish because I am hoping to visit Mexico and other Latin American countries whenever the plague lifts. I decided to document this for anyone who wants to know what options I found and how they have worked for me so far. This is the third part where I explain how I implemented the US International Keyboard on a variety of platforms. This lets me type characters that Spanish uses which do not appear on a standard US English keyboard. And best of all, it a purely free software fix.</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/British_and_American_keyboards#/media/File:KB_US-International.svg\" class=\"uri\">https://en.wikipedia.org/wiki/British_and_American_keyboards#/media/File:KB_US-International.svg</a></li>\r\n<li><a href=\"https://www.palain.com/international-keyboard/\" class=\"uri\">https://www.palain.com/international-keyboard/</a></li>\r\n</ul>\r\n',198,116,0,'CC-BY-SA','Spanish, Language learning, typing foreign characters',0,0,1),
(3456,'2021-11-01','HPR Community News for October 2021',4849,'HPR Volunteers talk about shows released and comments posted in October 2021','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0397.html\" target=\"_blank\">hakerdefo</a>.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3435\" target=\"_blank\">3435</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-10-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3435\" target=\"_blank\">Hacking Stories with Reacted: part 5</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3436\" target=\"_blank\">3436</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-10-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3436\" target=\"_blank\">HPR Community News for September 2021</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3437\" target=\"_blank\">3437</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-10-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3437\" target=\"_blank\">The HTML document format</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0382.html\" target=\"_blank\">Daniel Persson</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3438\" target=\"_blank\">3438</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-10-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3438\" target=\"_blank\">Ten privacy friendly Google search alternatives.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0397.html\" target=\"_blank\">hakerdefo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3439\" target=\"_blank\">3439</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-10-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3439\" target=\"_blank\">Linux Inlaws S01E40: The One with the BSDs</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3440\" target=\"_blank\">3440</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-10-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3440\" target=\"_blank\">Lighten Layer Modes</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3441\" target=\"_blank\">3441</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-10-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3441\" target=\"_blank\">Murphy Work Bench</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3442\" target=\"_blank\">3442</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-10-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3442\" target=\"_blank\">What is this thing called science</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3443\" target=\"_blank\">3443</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-10-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3443\" target=\"_blank\">Neuton battery replacement</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3444\" target=\"_blank\">3444</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-10-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3444\" target=\"_blank\">The Psion series 5mx</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0381.html\" target=\"_blank\">Nihilazo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3445\" target=\"_blank\">3445</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-10-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3445\" target=\"_blank\">True critical thinking seems to be the key</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3446\" target=\"_blank\">3446</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-10-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3446\" target=\"_blank\">Speech To Text</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3447\" target=\"_blank\">3447</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-10-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3447\" target=\"_blank\">BlacKernel\'s Journey Into Technology: Episode 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3448\" target=\"_blank\">3448</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-10-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3448\" target=\"_blank\">Installing GuixSD</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3449\" target=\"_blank\">3449</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-10-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3449\" target=\"_blank\">Linux Inlaws S01E41: The Halloween Documents</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3450\" target=\"_blank\">3450</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-10-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3450\" target=\"_blank\">Internal Commands</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3451\" target=\"_blank\">3451</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-10-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3451\" target=\"_blank\">Bricklink</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3452\" target=\"_blank\">3452</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-10-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3452\" target=\"_blank\">Neuton battery test</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3453\" target=\"_blank\">3453</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-10-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3453\" target=\"_blank\">Rust 101: Episode 1 - Hello, World!</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3454\" target=\"_blank\">3454</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-10-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3454\" target=\"_blank\">Engineering Notation</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3455\" target=\"_blank\">3455</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-10-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3455\" target=\"_blank\">Podcast Recommendation: IBM and Quantum computing</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n</table>\n\n<h2>Comments this month</h2>\n\n<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 38 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 16 comments on\n7 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2793#comments\" target=\"_blank\">hpr2793</a></strong>\n(2019-04-17) \"<em>bash coproc: the future (2009) is here</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0311.html\" target=\"_blank\">clacke</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2793#5\" target=\"_blank\">Comment 5</a>:\nclacke on 2021-10-08:\n\"Real world use, thanks Dave!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3337#comments\" target=\"_blank\">hpr3337</a></strong>\n(2021-05-18) \"<em>I like that the boat is stuck</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0382.html\" target=\"_blank\">Daniel Persson</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3337#2\" target=\"_blank\">Comment 2</a>:\nWindigo on 2021-10-07:\n\"Amazing\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3414#comments\" target=\"_blank\">hpr3414</a></strong>\n(2021-09-02) \"<em>Critical Thinking may make You Critical of the Covid Crisis</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0395.html\" target=\"_blank\">CoGo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3414#5\" target=\"_blank\">Comment 5</a>:\ne8hffff on 2021-10-16:\n\"Common Sense\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3414#6\" target=\"_blank\">Comment 6</a>:\nDave Morriss on 2021-10-30:\n\"Response to e8hffff, comment #5\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3426#comments\" target=\"_blank\">hpr3426</a></strong>\n(2021-09-20) \"<em>Rust 101: Episode 0 - What in Tarnishing?</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3426#3\" target=\"_blank\">Comment 3</a>:\nHonkeymagoo on 2021-10-04:\n\"another fun way to learn rust\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3431#comments\" target=\"_blank\">hpr3431</a></strong>\n(2021-09-27) \"<em>Living in the Terminal</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3431#5\" target=\"_blank\">Comment 5</a>:\nGumnos on 2021-10-06:\n\"Using \"c\" to pause in cmus\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3433#comments\" target=\"_blank\">hpr3433</a></strong>\n(2021-09-29) \"<em>A Squirrels thoughts about RMS</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3433#1\" target=\"_blank\">Comment 1</a>:\nBen on 2021-10-02:\n\"Yikes!\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3433#2\" target=\"_blank\">Comment 2</a>:\narcher72 on 2021-10-03:\n\"Good call, Ken\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3433#3\" target=\"_blank\">Comment 3</a>:\nZen_floater2 on 2021-10-05:\n\"Reply to Ben\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3433#4\" target=\"_blank\">Comment 4</a>:\nZen_floater2 on 2021-10-05:\n\"Reply to archer72\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3433#5\" target=\"_blank\">Comment 5</a>:\nKen Fallon on 2021-10-05:\n\"Disapointed with this show\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3433#6\" target=\"_blank\">Comment 6</a>:\nBob on 2021-10-05:\n\"Deliberately misleading ?\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3433#7\" target=\"_blank\">Comment 7</a>:\nZen_floater2 on 2021-10-05:\n\"Reply to Ken Fallon\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3433#8\" target=\"_blank\">Comment 8</a>:\nBen on 2021-10-22:\n\"Reply to #4\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3434#comments\" target=\"_blank\">hpr3434</a></strong>\n(2021-09-30) \"<em>From 0 to K8s in 30 minutes</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3434#1\" target=\"_blank\">Comment 1</a>:\nMr. Young on 2021-10-01:\n\"What an amazing show\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3434#2\" target=\"_blank\">Comment 2</a>:\nMike Ray on 2021-10-01:\n\"Great show\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 22 comments on 7 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3436#comments\" target=\"_blank\">hpr3436</a></strong>\n(2021-10-04) \"<em>HPR Community News for September 2021</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3436#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2021-10-13:\n\"Clarification\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3438#comments\" target=\"_blank\">hpr3438</a></strong>\n(2021-10-06) \"<em>Ten privacy friendly Google search alternatives.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0397.html\" target=\"_blank\">hakerdefo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3438#1\" target=\"_blank\">Comment 1</a>:\nClaudioM on 2021-10-07:\n\"Mojeek\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3438#2\" target=\"_blank\">Comment 2</a>:\nLinux4security on 2021-10-19:\n\"browser\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3439#comments\" target=\"_blank\">hpr3439</a></strong>\n(2021-10-07) \"<em>Linux Inlaws S01E40: The One with the BSDs</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3439#1\" target=\"_blank\">Comment 1</a>:\nClaudioM on 2021-10-07:\n\"Best of BSD!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3439#2\" target=\"_blank\">Comment 2</a>:\nZen_floater2 on 2021-10-09:\n\"This show put me up a tree\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3442#comments\" target=\"_blank\">hpr3442</a></strong>\n(2021-10-12) \"<em>What is this thing called science</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3442#1\" target=\"_blank\">Comment 1</a>:\nBrian-in-ohio on 2021-10-13:\n\"science\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3442#2\" target=\"_blank\">Comment 2</a>:\ne8hffff on 2021-10-13:\n\"Re:[HPR3442] Klaatu, CoVID, and Science\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3442#3\" target=\"_blank\">Comment 3</a>:\nkingbeowulf on 2021-10-14:\n\"scientific method selectively apply based on \"feelings\"?\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3442#4\" target=\"_blank\">Comment 4</a>:\nMad Sweeney on 2021-10-15:\n\"Hats Off to You\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3442#5\" target=\"_blank\">Comment 5</a>:\ne8hffff on 2021-10-16:\n\"The Pharmacist\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3444#comments\" target=\"_blank\">hpr3444</a></strong>\n(2021-10-14) \"<em>The Psion series 5mx</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0381.html\" target=\"_blank\">Nihilazo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3444#1\" target=\"_blank\">Comment 1</a>:\nBrian-in-ohio on 2021-10-14:\n\"compliment\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3444#2\" target=\"_blank\">Comment 2</a>:\nGumnos on 2021-10-14:\n\"Looking forward to this one!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3444#3\" target=\"_blank\">Comment 3</a>:\nCometcycle on 2021-10-15:\n\"Trip down memory lane\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3444#4\" target=\"_blank\">Comment 4</a>:\nDave Morriss on 2021-10-16:\n\"Great show!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3445#comments\" target=\"_blank\">hpr3445</a></strong>\n(2021-10-15) \"<em>True critical thinking seems to be the key</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3445#1\" target=\"_blank\">Comment 1</a>:\nironhelixx on 2021-10-13:\n\"This is the way to handle misinformation\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3445#2\" target=\"_blank\">Comment 2</a>:\nAaronb on 2021-10-15:\n\"Reasoning\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3445#3\" target=\"_blank\">Comment 3</a>:\ne8hffff on 2021-10-16:\n\"Common Sense\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3445#4\" target=\"_blank\">Comment 4</a>:\nKevin O&#39;Brien on 2021-10-19:\n\"Bravo!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3445#5\" target=\"_blank\">Comment 5</a>:\nBrian-in-ohio on 2021-10-20:\n\"risk\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3445#6\" target=\"_blank\">Comment 6</a>:\nDave Morriss on 2021-10-30:\n\"Response to e8hffff, comment #3\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3445#7\" target=\"_blank\">Comment 7</a>:\nDave Morriss on 2021-10-30:\n\"Response to Brian-in-ohio, comment #5\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3446#comments\" target=\"_blank\">hpr3446</a></strong>\n(2021-10-18) \"<em>Speech To Text</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3446#1\" target=\"_blank\">Comment 1</a>:\noperat0r on 2021-09-27:\n\"Example script\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-October/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-October/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"older-hpr-shows-on-archive.org\">Older HPR shows on archive.org</h3>\n<p>This month 70 additional shows in the range 1-870 have been uploaded.</p>\n<h3 id=\"tags-and-summaries\">Tags and Summaries</h3>\n<p>Thanks to the following contributors for sending in updates in the past month:<br />\n<b><a href=\"https://hackerpublicradio.org/correspondents/0318.html\">Archer72</a>, <a href=\"https://hackerpublicradio.org/correspondents/0293.html\">Rho`n</a></b></p>\n<p>Over the period tags and/or summaries have been added to 38 shows which were without them.</p>\n<p>----------------------------------------<br />\n<b>Hooray!</b> There are now no more shows that need summaries or tags!</p>\n<p>Thanks to all of the contributors to this project. According to my records the people who have helped to get to this point are listed below. Apologies if I have omitted anyone from the list:<br />\n<a href=\"https://hackerpublicradio.org/correspondents/0198.html\">Ahuka</a><br/><a href=\"https://hackerpublicradio.org/correspondents/0318.html\">archer72</a><br/><a href=\"https://hackerpublicradio.org/correspondents/0357.html\">bjb</a><br/><a href=\"https://hackerpublicradio.org/correspondents/0152.html\">ClaudioM</a><br/><a href=\"https://hackerpublicradio.org/correspondents/0385.html\">crvs</a><br/><a href=\"https://hackerpublicradio.org/correspondents/0382.html\">Daniel Persson</a><br/><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a><br/><a href=\"https://hackerpublicradio.org/correspondents/0030.html\">Ken Fallon</a><br/><a href=\"Kirk%20Reiser\">Kirk Reiser</a><br/><a href=\"https://hackerpublicradio.org/correspondents/0235.html\">NYbill</a><br/><a href=\"https://hackerpublicradio.org/correspondents/0293.html\">Rho`n</a><br/><a href=\"https://hackerpublicradio.org/correspondents/0338.html\">Tony Hughes</a><br/><a href=\"https://hackerpublicradio.org/correspondents/0215.html\">Windigo</a></p>\n<p>----------------------------------------<br />\n</p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3481,'2021-12-06','HPR Community News for November 2021',5638,'HPR Volunteers talk about shows released and comments posted in November 2021','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0398.html\" target=\"_blank\">one_of_spoons</a>, \n    <a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a>.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3456\" target=\"_blank\">3456</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-11-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3456\" target=\"_blank\">HPR Community News for October 2021</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3457\" target=\"_blank\">3457</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-11-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3457\" target=\"_blank\">Tables</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3458\" target=\"_blank\">3458</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-11-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3458\" target=\"_blank\">Living in the Terminal 2: The Obligatory Sequel</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3459\" target=\"_blank\">3459</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-11-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3459\" target=\"_blank\">Linux Inlaws S01E42: The Open Source Initiative</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3460\" target=\"_blank\">3460</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-11-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3460\" target=\"_blank\">Dodge and Burn</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3461\" target=\"_blank\">3461</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-11-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3461\" target=\"_blank\">Changes to HPR Branding</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3462\" target=\"_blank\">3462</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-11-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3462\" target=\"_blank\">Metal marbles.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0398.html\" target=\"_blank\">one_of_spoons</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3463\" target=\"_blank\">3463</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-11-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3463\" target=\"_blank\">Clonezilla: A backup story</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3464\" target=\"_blank\">3464</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-11-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3464\" target=\"_blank\">Being irrational</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0268.html\" target=\"_blank\">Andrew Conway</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3465\" target=\"_blank\">3465</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-11-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3465\" target=\"_blank\">Walmart Onn 7 inch tablet gen 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3466\" target=\"_blank\">3466</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-11-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3466\" target=\"_blank\">Why HPR has less downloads</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3467\" target=\"_blank\">3467</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-11-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3467\" target=\"_blank\">Protonmail in the terminal</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3468\" target=\"_blank\">3468</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-11-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3468\" target=\"_blank\">Distro upgrade intervals on my Raspberry Pi</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0201.html\" target=\"_blank\">MrX</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3469\" target=\"_blank\">3469</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-11-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3469\" target=\"_blank\">Linux Inlaws S01E43: The Great Battle or not</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3470\" target=\"_blank\">3470</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-11-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3470\" target=\"_blank\">External Commands and Emergency Boot Disk</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3471\" target=\"_blank\">3471</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-11-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3471\" target=\"_blank\">The Sony Walkman WM-F41</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0238.html\" target=\"_blank\">Jon Kulp</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3472\" target=\"_blank\">3472</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-11-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3472\" target=\"_blank\">consuming an AQI API</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3473\" target=\"_blank\">3473</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-11-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3473\" target=\"_blank\">My journey into Amateur Radio</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0314.html\" target=\"_blank\">thelovebug</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3474\" target=\"_blank\">3474</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-11-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3474\" target=\"_blank\">H P R and Audio Fun</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3475\" target=\"_blank\">3475</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-11-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3475\" target=\"_blank\">How I Watch Everything Using Open Source Software</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0375.html\" target=\"_blank\">minnix</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3476\" target=\"_blank\">3476</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-11-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3476\" target=\"_blank\">My mutt email setup</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3477\" target=\"_blank\">3477</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-11-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3477\" target=\"_blank\">Picking a Forth</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0326.html\" target=\"_blank\">Brian in Ohio</a></td>\n</tr>\n</table>\n\n<h2>Comments this month</h2>\n\n<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 20 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 5 comments on\n4 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2169#comments\" target=\"_blank\">hpr2169</a></strong>\n(2016-11-24) \"<em>How I connect to the awesome #oggcastplanet on mobile</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0311.html\" target=\"_blank\">clacke</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2169#2\" target=\"_blank\">Comment 2</a>:\nclacke on 2021-11-06:\n\"NickServ authentication\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2672#comments\" target=\"_blank\">hpr2672</a></strong>\n(2018-10-30) \"<em>Porteus</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2672#4\" target=\"_blank\">Comment 4</a>:\nhhskladby on 2021-11-02:\n\"Porteus Modularity\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3034#comments\" target=\"_blank\">hpr3034</a></strong>\n(2020-03-19) \"<em>How to bridge Freenode IRC rooms to Matrix.org</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0270.html\" target=\"_blank\">Thaj Sara</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3034#3\" target=\"_blank\">Comment 3</a>:\nclacke on 2021-11-06:\n\"libera.chat\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3454#comments\" target=\"_blank\">hpr3454</a></strong>\n(2021-10-28) \"<em>Engineering Notation</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3454#2\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2021-11-02:\n\"suffixes\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3454#3\" target=\"_blank\">Comment 3</a>:\nTrey on 2021-11-04:\n\"Great reminder\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 15 comments on 11 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3457#comments\" target=\"_blank\">hpr3457</a></strong>\n(2021-11-02) \"<em>Tables</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3457#1\" target=\"_blank\">Comment 1</a>:\nJon Kulp on 2021-11-07:\n\"Tables and font sizes\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3457#2\" target=\"_blank\">Comment 2</a>:\nGumnos on 2021-11-17:\n\"Storing data in recsel format?\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3459#comments\" target=\"_blank\">hpr3459</a></strong>\n(2021-11-04) \"<em>Linux Inlaws S01E42: The Open Source Initiative</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3459#1\" target=\"_blank\">Comment 1</a>:\nOliver on 2021-11-29:\n\"TerminusDB Link\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3461#comments\" target=\"_blank\">hpr3461</a></strong>\n(2021-11-08) \"<em>Changes to HPR Branding</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3461#1\" target=\"_blank\">Comment 1</a>:\nMike eSpeak Ray on 2021-11-08:\n\"TTS\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3464#comments\" target=\"_blank\">hpr3464</a></strong>\n(2021-11-11) \"<em>Being irrational</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0268.html\" target=\"_blank\">Andrew Conway</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3464#1\" target=\"_blank\">Comment 1</a>:\nbrian-in-ohio on 2021-11-11:\n\"a serendipitous quote\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3465#comments\" target=\"_blank\">hpr3465</a></strong>\n(2021-11-12) \"<em>Walmart Onn 7 inch tablet gen 2</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3465#1\" target=\"_blank\">Comment 1</a>:\nPipeManMusic on 2021-11-12:\n\"Real numbers to an off hand comment.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3466#comments\" target=\"_blank\">hpr3466</a></strong>\n(2021-11-15) \"<em>Why HPR has less downloads</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3466#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2021-11-15:\n\"On the rise again\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3470#comments\" target=\"_blank\">hpr3470</a></strong>\n(2021-11-19) \"<em>External Commands and Emergency Boot Disk</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3470#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2021-11-19:\n\"Oh what happy memories\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3470#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2021-11-19:\n\"You are most welcome\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3471#comments\" target=\"_blank\">hpr3471</a></strong>\n(2021-11-22) \"<em>The Sony Walkman WM-F41</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0238.html\" target=\"_blank\">Jon Kulp</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3471#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2021-11-22:\n\"Capacitors\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3471#2\" target=\"_blank\">Comment 2</a>:\nKeith on 2021-11-23:\n\"They really are great devices\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3471#3\" target=\"_blank\">Comment 3</a>:\nJon Kulp on 2021-11-23:\n\"Recapping\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3472#comments\" target=\"_blank\">hpr3472</a></strong>\n(2021-11-23) \"<em>consuming an AQI API</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3472#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2021-11-27:\n\"I loved the show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3473#comments\" target=\"_blank\">hpr3473</a></strong>\n(2021-11-24) \"<em>My journey into Amateur Radio</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0314.html\" target=\"_blank\">thelovebug</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3473#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2021-11-24:\n\"Congrats\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3474#comments\" target=\"_blank\">hpr3474</a></strong>\n(2021-11-25) \"<em>H P R and Audio Fun</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3474#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2021-11-27:\n\"No please don\'t add silence to the audio\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-November/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-November/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"providing-a-valid-link-to-your-shows-audio\">Providing a valid link to your show\'s audio</h3>\n<p>In the upload form there is the option to provide shows via a URL. This must be a publicly available URL that is accessible without authentication via command line tools like wget or curl.</p>\n<h3 id=\"older-hpr-shows-on-archive.org\">Older HPR shows on archive.org</h3>\n<p>This month 115 additional shows in the range 1-870 have been uploaded.</p>\n<p>The number of shows left to upload in this range is now: 369.</p>\n<h3 id=\"tags-and-summaries\">Tags and Summaries</h3>\n<p><b>Hooray!</b> There are now no more shows that need summaries or tags!</p>\n<p>See the notes for episode <a href=\"https://hackerpublicradio.org/eps.php?id=3456\">3456</a> for a list of all the contributors to this project</p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3162,'2020-09-15','Introduction to Ansible',2674,'Klaatu demonstrates some Ansible tricks, and how Ansible can be a better choice than scripting.','<p>\r\nIntroduction to Ansible.\r\n</p>',78,0,0,'CC-BY-SA','ansible,sysadmin',0,0,1),
(3163,'2020-09-16','Linux Inlaws S01E13: The road to communism and freedom',3855,'Our old heroes discuss their legacy and how they arrived at open source software and communism','<ul>\r\n<li>brytlyt: <a href=https://www.brytlyt.com target=_blank>https://www.brytlyt.com</a></li>\r\n<li>OS/2: <a href=https://en.wikipedia.org/wiki/OS/2 target=_blank>https://en.wikipedia.org/wiki/OS/2</a></li>\r\n<li>CCP/M: <a href=https://en.wikipedia.org/wiki/Multiuser_DOS#CCP/M-86 target=_blank>https://en.wikipedia.org/wiki/Multiuser_DOS#CCP/M-86</a></li>\r\n<li>Communism and open source: <a href=https://medium.com/@diego.graziano/open-source-the-communism-of-knowledge-fe76334b9b10 target=_blank>https://medium.com/@diego.graziano/open-source-the-communism-of-knowledge-fe76334b9b10</a></li>\r\n<li>Why Emacs is better than vi (aka The Church of Emacs): <a href=https://www.gnu.org/fun/jokes/gospel.html target=_blank>https://www.gnu.org/fun/jokes/gospel.html</a></li>\r\n<li>(Open)VMS: <a href=https://en.wikipedia.org/wiki/OpenVMS target=_blank>https://en.wikipedia.org/wiki/OpenVMS</a></li>\r\n<li>Mach: <a href=\"https://en.wikipedia.org/wiki/Mach_(kernel)\" target=_blank>https://en.wikipedia.org/wiki/Mach_(kernel)</a></li>\r\n<li>Dave Cutler: <a href=\"https://en.wikipedia.org/wiki/Dave_Cutler\" target=_blank>https://en.wikipedia.org/wiki/Dave_Cutler</a></li>\r\n<li>The ultimate remedy for insomnia: <a href=https://www.routledge.com/Advances-in-Object-Oriented-Metalevel-Architectures-and-Reflection/Zimmermann/p/book/9780849326639 target=_blank>https://www.routledge.com/Advances-in-Object-Oriented-Metalevel-Architectures-and-Reflection/Zimmermann/p/book/9780849326639</a></li>\r\n<li>Randal\'s departure from FLOSS Weekly: <a href=https://twit.tv/posts/inside-twit/doc-searls-new-host-floss-weekly target=_blank>https://twit.tv/posts/inside-twit/doc-searls-new-host-floss-weekly</a></li>\r\n<li>The Rust Foundation: <a href=https://blog.rust-lang.org/2020/08/18/laying-the-foundation-for-rusts-future.html target=_blank>https://blog.rust-lang.org/2020/08/18/laying-the-foundation-for-rusts-future.html</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','open source, communism, escort services, freedom, Mach, VMS, accounts',0,0,1),
(3166,'2020-09-21','Using Ansible to mirror a Git repo',1580,'Klaatu uses Ansible to mirror a Git repo on two separate Git hosts','<p>\r\nI came up with a way to easily clone a repo living on Github and mirror it, with all the latest commits, on another Git host. You can schedule Ansible to run periodically to ensure your mirror stays updated.\r\n</p>\r\n\r\n<p>\r\nThis is <a href=\"https://github.com/dwayne-lee/mirrored_repos\" target=\"_blank\">Dwayne Lee&#39;s improved implementation based on my original script</a>.\r\n</p>',78,0,0,'CC-BY-SA','ansible,sysadmin,git',0,0,1),
(3169,'2020-09-24','Ludwig van Beethoven with a hint of Chopin',2518,'A fine treat to satisfy your earholes.','<p>All music in this episode is freely available from musopen.org.</p>\r\n\r\n<h3>Links</h3>\r\n\r\n<ul>\r\n<li><a href=\"https://musopen.org/music/2547-piano-sonata-no-14-in-c-sharp-minor-moonlight-sonata-op-27-no-2/\">Beethoven Piano Sonata no. 14 in C-sharp minor \'Moonlight Sonata\', Op. 27 no. 2</a></li>\r\n<li><a href=\"https://musopen.org/music/2567-symphony-no-5-in-c-minor-op-67/\">Beethoven Symphony no. 5 in C minor, Op. 67</a></li>\r\n<li><a href=\"https://musopen.org/music/612-fantaisie-impromptu-op-66/\">Chopin Fantaisie - Impromptu, Op. 66</a></li>\r\n<li><a href=\"https://musopen.org/music/33-piano-sonata-no-8-in-c-minor-pathetique-op-13/\">Beethoven Piano Sonata no. 8 in C minor \'Pathetique\', Op. 13</a></li>\r\n<li><a href=\"https://musopen.org/music/46-piano-sonata-no-21-in-c-major-waldstein-op-53/\">Beethoven Piano Sonata no. 21 in C major \'Waldstein\', Op. 53</a></li>\r\n</ul>\r\n',383,22,0,'CC-BY-SA','Ludwig Van Beethoven,Fredrick Chopin,classical,energetic,music,public domain',0,0,1),
(3167,'2020-09-22','A ramble with the Pentland Squires (part 1)',2547,'MrX and Dave Morriss chat from opposite sides of the Pentland Hills, Edinburgh','<h2 id=\"introduction\">Introduction</h2>\r\n<p>Once again the two HPR hosts based in Edinburgh got together over Mumble to have a chat during the COVID-19 pandemic.</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0201.html\">MrX</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></li>\r\n</ul>\r\n<p>We recorded this conversation in the evening of Sunday 23<sup>rd</sup> August 2020.</p>\r\n<p>The audio was quite long when we’d finished, so we decided to cut it into two similar-length pieces and the remainder is released as a second episode.</p>\r\n<h3 id=\"show-title\">Show title</h3>\r\n<p>Although a explaining a joke can often destroy it, it’s probably worth saying that the title of this show was derived from the name of a variety of potato, <em>Pentland Squire</em>, and the fact that the two participants were separated by the Pentland Hills in Edinburgh! <code>\"</code>Where was the joke?<code>\"</code> you ask…</p>\r\n<h2 id=\"notes\">Notes</h2>\r\n<p>Some of the topics we discussed:</p>\r\n<ul>\r\n<li>Our positions relative to the Pentland Hills: MrX is to the East and Dave is to the West of the area, which is to the south of Edinburgh, about 6 or 7 miles out.\r\n<ul>\r\n<li><a href=\"https://www.pentlandhills.org/\">Pentland Hills Regional Park</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>The state of COVID-19 and the lockdown in Scotland\r\n<ul>\r\n<li><a href=\"https://www.travellingtabby.com/scotland-coronavirus-tracker/\">Scotland Coronavirus Tracker</a></li>\r\n<li><a href=\"https://coronavirus.data.gov.uk/\">Coronavirus (COVID-19) in the UK</a> - no longer offering a simple CSV download as it originally did, but now has a detailed API.</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Processing HPR shownotes:\r\n<ul>\r\n<li>Experiences:\r\n<ul>\r\n<li>HTML, preferred but needs to be high quality</li>\r\n<li>Markdown, if well formatted this is the easiest to deal with</li>\r\n<li>Plain text, gets converted to Markdown by volunteers</li>\r\n</ul></li>\r\n<li><a href=\"https://github.com/retext-project/retext\">ReText, an editor for Markdown and reStructuredText markup languages</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Glasgow Podcrawl\r\n<ul>\r\n<li>A virtual meeting this year over Jitsi</li>\r\n<li>Some people joined from very far away such as <a href=\"https://hackerpublicradio.org/correspondents/0078.html\">Klaatu</a> in New Zealand</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Scripts written in recent times:\r\n<ul>\r\n<li>MrX: finding the duration of a video with <a href=\"https://ffmpeg.org/ffprobe-all.html\"><code>ffprobe</code></a>.</li>\r\n<li>Dave: choosing a meal from a list in a database to cook for the family</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Vegetarianism\r\n<ul>\r\n<li>MrX’s experiences</li>\r\n<li>Dave often makes a <a href=\"https://en.wikipedia.org/wiki/Nut_roast\"><em>Nut Roast</em></a> for Christmas dinner</li>\r\n</ul></li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','COVID-19,physical isolation,discussion',0,0,1),
(3168,'2020-09-23','FreeBSD Jails and iocage',531,'Use iocage to manage freebsd jails','<h2 id=\"freebsd-jails-with-iocage\">FreeBSD Jails with iocage</h2>\r\n<h3 id=\"introduction\">Introduction</h3>\r\n<p>FreeBSD jails allow users to run multiple, isolated instances of FreeBSD on a single server. Iocage simplifies the management of FreeBSD Jails.</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/OS-level_virtualization\">https://en.wikipedia.org/wiki/OS-level_virtualization</a></p>\r\n<p>The jails will be configured to bind to an IP address on the jail host\'s internal network. The host OS will pass traffic from the external network to the jail.</p>\r\n<p>The jails will be managed with Iocage. Iocage uses ZFS properties to store configuration data for each jail, so a ZFS file system is required.</p>\r\n<h3 id=\"network-setup\">Network setup</h3>\r\n<p>These steps will:</p>\r\n<ol>\r\n<li>Set up the internal network.</li>\r\n<li>Enable the <strong>pf</strong> packet filter</li>\r\n<li>Configure pf pass internet traffic to and from the jail.</li>\r\n</ol>\r\n<p>PF is full featured firewall, and can do more than just pass traffic to an internal network. Refer to the PF documentation for additional configuration options.</p>\r\n<h4 id=\"run-the-following-to-configure-the-internal-network-and-enable-pf\">Run the following to configure the internal network and enable pf.</h4>\r\n<pre><code>sysrc cloned_interfaces+=&quot;lo1&quot;\r\nsysrc ifconfig_lo1=&quot;inet 192.0.2.1/24&quot;\r\nsysrc pf_enable=&quot;YES&quot;\r\n</code></pre>\r\n<h4 id=\"put-the-following-in-etcpfconf\">Put the following in <code>/etc/pf.conf</code></h4>\r\n<pre><code># Variables\r\n# ext_if should be set to the hosts external NIC\r\next_if = &quot;vtnet0&quot;\r\njail_if = &quot;lo1&quot;\r\njail_net = $jail_if:network\r\n\r\n# NAT allows the jails to access the external network\r\nnat on $ext_if from $jail_net to any -&gt; ($ext_if)\r\n\r\n# Redirect traffic on port 80 to the web server jail\r\n# Add similar rules for additional jails\r\nrdr pass on $ext_if inet proto tcp to port 80 -&gt; 192.0.2.10\r\n</code></pre>\r\n<p><em>Reboot</em> to activate the network changes</p>\r\n<h3 id=\"zfs\">ZFS</h3>\r\n<p>The best way to use ZFS on a VPS is to attach block storage as a new disk.</p>\r\n<p>If block storage is not available, you can optionally use a file as the ZFS device.</p>\r\n<h4 id=\"enable-and-start-zfs\">Enable and start ZFS.</h4>\r\n<pre><code>sysrc zfs_enable=&quot;YES&quot;\r\nservice zfs start\r\n</code></pre>\r\n<h4 id=\"zfs-using-block-storage\">ZFS using Block storage</h4>\r\n<p>List the available disks. If you are using a VPS, the block store will probably be the second disk.</p>\r\n<pre><code>geom disk list\r\n</code></pre>\r\n<p>Create a ZFS pool named jailstore.</p>\r\n<pre><code>zpool create jailstore  /dev/vtbd1\r\n</code></pre>\r\n<h4 id=\"zfs-using-a-file\">ZFS using a file</h4>\r\n<p>Create the ZFS file.</p>\r\n<pre><code>dd if=/dev/zero of=/zfsfile bs=1M count=4096\r\n</code></pre>\r\n<p>Create a ZFS pool named jailstore.</p>\r\n<pre><code>zpool create jailstore /zfsfile\r\n</code></pre>\r\n<h3 id=\"install-iocage\">Install iocage</h3>\r\n<pre><code>pkg install py36-iocage\r\n</code></pre>\r\n<h3 id=\"using-iocage\">Using iocage</h3>\r\n<pre><code>iocage activate jailstore\r\niocage fetch\r\n\r\niocage create -n www ip4_addr=&quot;lo1|192.0.2.10/24&quot; -r 11.1-RELEASE\r\niocage start www\r\niocage console www\r\n</code></pre>\r\n<p>Once you have a shell <strong>inside the jail</strong>, install and start Apache.</p>\r\n<pre><code>pkg install apache24\r\nsysrc apache24_enable=&quot;yes&quot;\r\nservice apache24 start\r\n</code></pre>\r\n<p>Port 80 on the jail will now be accessible on the hosts IP address.</p>\r\n<h3 id=\"multiple-jails\">Multiple jails.</h3>\r\n<p>Additional jails can be installed using the example above.</p>\r\n<ol>\r\n<li>Install the new jail with the <code>iocage create</code> command , but use a different IP address</li>\r\n<li>Expose the new jail to the network by adding additional rules to pf.conf.</li>\r\n</ol>\r\n<h3>Book recommendation</h3>\r\n<ul>\r\n<li><a href=\"https://www.tiltedwindmillpress.com/product/fmjail\"><em>FreeBSD Mastery: Jails</em>, Michael W Lucas</a><br/>\r\nMichael W Lucas is great Technical book author.</li>\r\n</ul>\r\n',342,0,0,'CC-BY-SA','BSD',0,0,1),
(3172,'2020-09-29','A ramble with the Pentland Squires (part 2)',2983,'Second half of the chat between MrX and Dave Morriss','<p>The two HPR hosts based in Edinburgh got together over Mumble on the evening of Sunday 23<sup>rd</sup> August 2020 to have a chat during the COVID-19 pandemic.</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0201.html\">MrX</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></li>\r\n</ul>\r\n<p>This is the second half of the conversation. For the first part see <a href=\"https://hackerpublicradio.org/eps.php?id=3167\">HPR show 3167</a>.</p>\r\n<h2 id=\"notes\">Notes</h2>\r\n<p>Some of the topics we discussed:</p>\r\n<ul>\r\n<li>Listening to podcasts\r\n<ul>\r\n<li>MrX’s recent show <a href=\"https://hackerpublicradio.org/eps.php?id=3132\"><em>Keeping track of where I am</em></a></li>\r\n<li>Using phone-based apps like <a href=\"https://antennapod.org/\">Antennapod</a></li>\r\n<li><a href=\"https://www.rockbox.org/\">Rockbox (free music player firmware)</a> on Sansa Fuze, Sansa Clip, Clip+, Clip Zip, etc</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Mobile phones and tablets\r\n<ul>\r\n<li>MrX likes his <a href=\"https://www.nokia.com/phones/en_gb/nokia-5310\">Nokia 5310</a></li>\r\n<li>Dave is interested in the <a href=\"https://www.pine64.org/pinephone/\">PinePhone</a></li>\r\n<li>MrX has a Samsung Galaxy tablet (and did an HPR episode about it: <a href=\"https://hackerpublicradio.org/eps.php?id=3030\">hpr3030 :: My new Samsung tablet</a>)</li>\r\n<li><em>Smart</em> devices want to make you a <em>victim</em>!</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Digital data versus pieces of paper\r\n<ul>\r\n<li>Dave is using a Google spreadsheet shopping list which he can share with his kids who are shopping for him</li>\r\n<li>There’s still a desire to keep things on paper though</li>\r\n<li>The tendency to hoard bits of paper</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Using Windows\r\n<ul>\r\n<li>Multiple (virtual) desktops on Windows 10, a counter-intuitive design</li>\r\n<li>Outlook as a mail client (with Exchange) is very poor compared to open source options</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>3D printing\r\n<ul>\r\n<li><a href=\"https://www.openscad.org/\">OpenSCAD: <em>The Programmers Solid 3D CAD Modeller</em></a></li>\r\n<li>A <a href=\"https://en.wikipedia.org/wiki/Slicer_(3D_printing)\">Slicer</a>: software for converting a 3D model into instructions for a 3D printer in the form of <a href=\"https://en.wikipedia.org/wiki/G-code\">G-code</a>.</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>The current pandemic\r\n<ul>\r\n<li>Lockdown controls exposure to the virus and limits cases</li>\r\n<li>Fewer cases means the health service can cope better</li>\r\n<li><em>Sheltering</em> keeps vulnerable people safe until a vaccine is available</li>\r\n<li><em>Herd Immunity</em> is when the majority of people are immune to the virus and don’t transmit it to vulnerable people</li>\r\n<li>Long-term effects of COVID-19</li>\r\n<li>Asymptomatic carriers of the virus</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>HPR listening and contributing in the time of COVID\r\n<ul>\r\n<li>Current times tend to make it harder to keep up to date with shows</li>\r\n<li>It’s also harder to make time to make contributions at the moment</li>\r\n<li>Issues with motivation</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Miscellaneous\r\n<ul>\r\n<li>MrX’s car needing attention due to rust</li>\r\n<li>Dave’s anecdote of his neighbour losing power late one night</li>\r\n</ul></li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','COVID-19,physical isolation,discussion',0,0,1),
(3240,'2021-01-01','Linux Under Attack',978,'A look at how malware is now targeting Linux, especially servers','<p>At one time most malware targeted Windows because it was the most popular OS, but as Linux has risen in popularity, particularly in the data center, it has become a target. We look at some of the recent attacks on Linux, and note some common features of the attacks. This then suggests some ways we can protect ourselves</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://build5nines.com/linux-is-most-used-os-in-microsoft-azure-over-50-percent-fo-vm-cores/\" class=\"uri\">https://build5nines.com/linux-is-most-used-os-in-microsoft-azure-over-50-percent-fo-vm-cores/</a></li>\r\n<li><a href=\"https://w3techs.com/technologies/comparison/os-linux,os-windows\" class=\"uri\">https://w3techs.com/technologies/comparison/os-linux,os-windows</a></li>\r\n<li><a href=\"https://gs.statcounter.com/os-market-share\" class=\"uri\">https://gs.statcounter.com/os-market-share</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Chrome_OS\" class=\"uri\">https://en.wikipedia.org/wiki/Chrome_OS</a></li>\r\n<li><a href=\"https://www.zdnet.com/article/this-surprise-linux-malware-warning-shows-that-hackers-are-changing-their-targets/\" class=\"uri\">https://www.zdnet.com/article/this-surprise-linux-malware-warning-shows-that-hackers-are-changing-their-targets/</a></li>\r\n<li><a href=\"https://www.zwilnik.com/security-and-privacy/ssh-and-tunneling/ssh-introduction/\" class=\"uri\">https://www.zwilnik.com/security-and-privacy/ssh-and-tunneling/ssh-introduction/</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1850\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=1850</a></li>\r\n<li><a href=\"https://www.bleepingcomputer.com/news/security/russian-hacker-pleads-guilty-for-role-in-infamous-linux-ebury-malware/\" class=\"uri\">https://www.bleepingcomputer.com/news/security/russian-hacker-pleads-guilty-for-role-in-infamous-linux-ebury-malware/</a></li>\r\n<li><a href=\"https://www.theregister.com/2016/09/02/alleged_linux_hacker_arrested/\" class=\"uri\">https://www.theregister.com/2016/09/02/alleged_linux_hacker_arrested/</a></li>\r\n<li><a href=\"https://www.helpnetsecurity.com/2018/12/07/linux-backdoors-openssh/\" class=\"uri\">https://www.helpnetsecurity.com/2018/12/07/linux-backdoors-openssh/</a></li>\r\n<li><a href=\"https://www.welivesecurity.com/wp-content/uploads/2018/12/ESET-The_Dark_Side_of_the_ForSSHe.pdf\" class=\"uri\">https://www.welivesecurity.com/wp-content/uploads/2018/12/ESET-The_Dark_Side_of_the_ForSSHe.pdf</a></li>\r\n<li><a href=\"https://www.helpnetsecurity.com/2018/12/07/linux-backdoors-openssh/\" class=\"uri\">https://www.helpnetsecurity.com/2018/12/07/linux-backdoors-openssh/</a></li>\r\n<li><a href=\"https://www.nsa.gov/news-features/press-room/Article/2311407/nsa-and-fbi-expose-russian-previously-undisclosed-malware-drovorub-in-cybersecu/\" class=\"uri\">https://www.nsa.gov/news-features/press-room/Article/2311407/nsa-and-fbi-expose-russian-previously-undisclosed-malware-drovorub-in-cybersecu/</a></li>\r\n<li><a href=\"https://www.zdnet.com/article/fbi-and-nsa-expose-new-linux-malware-drovorub-used-by-russian-state-hackers/\" class=\"uri\">https://www.zdnet.com/article/fbi-and-nsa-expose-new-linux-malware-drovorub-used-by-russian-state-hackers/</a></li>\r\n<li><a href=\"https://www.bleepingcomputer.com/news/security/lucifer-cryptomining-ddos-malware-now-targets-linux-systems/\" class=\"uri\">https://www.bleepingcomputer.com/news/security/lucifer-cryptomining-ddos-malware-now-targets-linux-systems/</a></li>\r\n<li><a href=\"https://www.bleepingcomputer.com/news/security/lemon-duck-cryptominer-malware-now-targets-linux-devices/\" class=\"uri\">https://www.bleepingcomputer.com/news/security/lemon-duck-cryptominer-malware-now-targets-linux-devices/</a></li>\r\n<li><a href=\"https://www.bleepingcomputer.com/news/security/fritzfrog-malware-attacks-linux-servers-over-ssh-to-mine-monero/\" class=\"uri\">https://www.bleepingcomputer.com/news/security/fritzfrog-malware-attacks-linux-servers-over-ssh-to-mine-monero/</a></li>\r\n<li><a href=\"https://www.amazon.com/SSH-Mastery-OpenSSH-PuTTY-Tunnels/dp/1642350028\" class=\"uri\">https://www.amazon.com/SSH-Mastery-OpenSSH-PuTTY-Tunnels/dp/1642350028</a></li>\r\n<li><a href=\"https://www.zwilnik.com/security-and-privacy/linux-under-attack/\" class=\"uri\">https://www.zwilnik.com/security-and-privacy/linux-under-attack/</a></li>\r\n</ul>\r\n',198,74,0,'CC-BY-SA','Linux, malware, ssh',0,0,1),
(3174,'2020-10-01','Linux Inlaws S01E14: The big programming language panel',3174,'Our heroes host an eclectic panel of experts discussion C(++), Python and Rust. ','<br/>Shownotes:<br/>\r\n<ul>\r\n<li>Bottlerocket: <a href=\"https://aws.amazon.com/about-aws/whats-new/2020/08/announcing-general-availability-of-bottlerocket\" target=\"_blank\">https://aws.amazon.com/about-aws/whats-new/2020/08/announcing-general-availability-of-bottlerocket</a></li>\r\n<li>Windows as a rolling release: <a href=\"https://ubuntupodcast.org/2020/08/27/s13e23-horseshoe\" target=\"_blank\">https://ubuntupodcast.org/2020/08/27/s13e23-horseshoe</a></li>\r\n<li>LPC Rust in kernel: <a href=\"https://program.linuxplumbersconf.org/event/7/contributions/804/attachments/641/1168/barriers-to-in-tree-rust.pdf\" target=\"_blank\">https://program.linuxplumbersconf.org/event/7/contributions/804/attachments/641/1168/barriers-to-in-tree-rust.pdf</a></li>\r\n<li>Redox OS: <a href=\"https://www.redox-os.org\" target=\"_blank\">https://www.redox-os.org</a></li>\r\n<li>FC33: <a href=\"https://fedoramagazine.org/btrfs-coming-to-fedora-33\" target=\"_blank\">https://fedoramagazine.org/btrfs-coming-to-fedora-33</a></li>\r\n<li>Linux kernel history report: <a href=\"https://www.linuxfoundation.org/resources/publications/2020-kernel-history-report\" target=\"_blank\">https://www.linuxfoundation.org/resources/publications/2020-kernel-history-report</a></li>\r\n<li>Thunderbird 78 with OpenPGP: <a href=\"https://wiki.mozilla.org/Thunderbird:OpenPGP:2020\" target=\"_blank\">https://wiki.mozilla.org/Thunderbird:OpenPGP:2020</a></li>\r\n<li>Python Software Foundation: <a href=\"https://www.python.org/psf\" target=\"_blank\">https://www.python.org/psf</a></li>\r\n<li>Rust project website: <a href=\"https://www.rust-lang.org\" target=\"_blank\">https://www.rust-lang.org</a></li>\r\n<li>ISO C working group: <a href=\"https://www.open-std.org/jtc1/sc22/wg14\" target=\"_blank\">https://www.open-std.org/jtc1/sc22/wg14</a></li>\r\n<li>ISO C++ standard: <a href=\"https://isocpp.org\" target=\"_blank\">https://isocpp.org</a></li>\r\n<li>Rust @ Microsoft: <a href=\"https://www.youtube.com/watch?v=NQBVUjdkLAA\" target=\"_blank\">https://www.youtube.com/watch?v=NQBVUjdkLAA</a></li>\r\n<li>Rainbow escort: <a href=\"https://www.etsy.com/de/market/rainbow_escort_card\" target=\"_blank\">https://www.etsy.com/de/market/rainbow_escort_card</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','C++, Python, Rust, Rainbow Escorts, Halloween',0,0,1),
(3185,'2020-10-16','Pandemics In History',1062,'Infectious disease is one of the most important factors influencing human history','<p>This is a look at how infectious diseases have changed the course of human history. It is admittedly a bit Euro- or Western-centric since that is what I know best. But I think the point of its importance applies more broadly.</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Plague_of_Athens\" class=\"uri\">https://en.wikipedia.org/wiki/Plague_of_Athens</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Antonine_Plague\" class=\"uri\">https://en.wikipedia.org/wiki/Antonine_Plague</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Plague_of_Cyprian\" class=\"uri\">https://en.wikipedia.org/wiki/Plague_of_Cyprian</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Crisis_of_the_Third_Century\" class=\"uri\">https://en.wikipedia.org/wiki/Crisis_of_the_Third_Century</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Plague_of_Justinian\" class=\"uri\">https://en.wikipedia.org/wiki/Plague_of_Justinian</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Black_Death\" class=\"uri\">https://en.wikipedia.org/wiki/Black_Death</a></li>\r\n<li><a href=\"https://www.amazon.com/1491-Revelations-Americas-Before-Columbus/dp/1400032059\" class=\"uri\">https://www.amazon.com/1491-Revelations-Americas-Before-Columbus/dp/1400032059</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/0\" class=\"uri\">https://en.wikipedia.org/wiki/0</a></li>\r\n<li><a href=\"https://www.pri.org/stories/2019-01-31/european-colonization-americas-killed-10-percent-world-population-and-caused\" class=\"uri\">https://www.pri.org/stories/2019-01-31/european-colonization-americas-killed-10-percent-world-population-and-caused</a></li>\r\n<li><a href=\"https://www.amazon.com/Guns-Germs-Steel-Fates-Societies/dp/0393317552\" class=\"uri\">https://www.amazon.com/Guns-Germs-Steel-Fates-Societies/dp/0393317552</a></li>\r\n<li><a href=\"https://www.scientificamerican.com/article/mass-deaths-in-americas-start-new-co2-epoch/\" class=\"uri\">https://www.scientificamerican.com/article/mass-deaths-in-americas-start-new-co2-epoch/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Cocoliztli_epidemics\" class=\"uri\">https://en.wikipedia.org/wiki/Cocoliztli_epidemics</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Spanish_flu\" class=\"uri\">https://en.wikipedia.org/wiki/Spanish_flu</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Cytokine_storm\" class=\"uri\">https://en.wikipedia.org/wiki/Cytokine_storm</a></li>\r\n<li><a href=\"https://dc.gov/measles/downloads/MeaslesDataAndStatsSlideSet.pdf\" class=\"uri\">https://dc.gov/measles/downloads/MeaslesDataAndStatsSlideSet.pdf</a></li>\r\n<li><a href=\"https://www.palain.com/health-topics/pandemics-in-history/\" class=\"uri\">https://www.palain.com/health-topics/pandemics-in-history/</a></li>\r\n</ul>\r\n',198,100,0,'CC-BY-SA','Health, Infectious Disease, History, Pandemics',0,0,1),
(3171,'2020-09-28','A Week On Soylent',735,'Lostnbronx tries eating nothing but Soylent, so you don\'t have to.','<p>I bought - and ate - a jar of Soylent, which is a powdered food replacement product. These are my thoughts.</p>\r\n<ul>\r\n<li><p>Company Website:<br />\r\n<a href=\"https://soylent.com/\" class=\"uri\">https://soylent.com/</a></p></li>\r\n<li><p>Wikipedia Article:<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Soylent_(meal_replacement)\" class=\"uri\">https://en.wikipedia.org/wiki/Soylent_(meal_replacement)</a></p></li>\r\n</ul>',107,0,0,'CC-BY-SA','soylent, food, health, diet, lostnbronx',0,0,1),
(3173,'2020-09-30','Manage your Raspberry Pi fleet with Ansible',1209,'A solution to the problem of updating difficult-to-reach Raspberry Pis in the enterprise.','<p>\r\nThis is the final show in the miniseries on how to manage your RaspberryPis with ansible. The goal is to produce a common base Raspberry Pi OS image that doesn\'t change often but, once it\'s installed, can automatically be customized, maintained, and managed remotely.\r\n</p>\r\n<p>\r\nWe will create the base image using the <a href=\"https://github.com/kenfallon/fix-ssh-on-pi\">script fix-ssh-on-pi<a/> which is available on GitHub. \r\n</p>\r\n<p>\r\nThen we will identify the hosts on the network with tips from <a href=\"https://hackerpublicradio.org/correspondents/0036.html\">operat0r</a> in show <a href=\"https://hackerpublicradio.org/eps.php?id=3090\">hpr3090 :: Locating Computers on a Enterprise Network</a>, or for simpler networks from my own show <a href=\"https://hackerpublicradio.org/eps.php?id=3052\">hpr3052 :: Locating computers on a network</a>.\r\n</p>\r\n<p>\r\nFinally we will provision the devices using tips from <a href=\"https://hackerpublicradio.org/eps.php?id=3080\">hpr3080 :: Ansible ping</a>, and <a href=\"https://hackerpublicradio.org/eps.php?id=3162\">hpr3162 :: Introduction to Ansible </a>\r\n</p>\r\n<p>\r\nThis show has been been simultaneously published as an <a href=\"https://opensource.com/article/20/9/raspberry-pi-ansible\">article on opensource.com</a>.\r\n</p>\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0036.html\">https://hackerpublicradio.org/correspondents/0036.html</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0078.html\">https://hackerpublicradio.org/correspondents/0078.html</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2356\">https://hackerpublicradio.org/eps.php?id=2356</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3052\">https://hackerpublicradio.org/eps.php?id=3052</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3080\">https://hackerpublicradio.org/eps.php?id=3080</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3090\">https://hackerpublicradio.org/eps.php?id=3090</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3162\">https://hackerpublicradio.org/eps.php?id=3162</a></li>\r\n<li><a href=\"https://man7.org/linux/man-pages/man8/losetup.8.html\">https://man7.org/linux/man-pages/man8/losetup.8.html</a></li>\r\n<li><a href=\"https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html\">https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html</a></li>\r\n<li><a href=\"https://docs.ansible.com/ansible/latest/modules/apt_module.html\">https://docs.ansible.com/ansible/latest/modules/apt_module.html</a></li>\r\n<li><a href=\"https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html\">https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html</a></li>\r\n<li><a href=\"https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html\">https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html</a></li>\r\n<li><a href=\"https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html\">https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Ansible_%28software%29%23Design_goals\">https://en.wikipedia.org/wiki/Ansible_%28software%29%23Design_goals</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Comparison_of_open-source_configuration_management_software\">https://en.wikipedia.org/wiki/Comparison_of_open-source_configuration_management_software</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/DevOps\">https://en.wikipedia.org/wiki/DevOps</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Domain_Name_System\">https://en.wikipedia.org/wiki/Domain_Name_System</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol\">https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Enterprise_resource_planning\">https://en.wikipedia.org/wiki/Enterprise_resource_planning</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Hostname\">https://en.wikipedia.org/wiki/Hostname</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Idempotent\">https://en.wikipedia.org/wiki/Idempotent</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/ISO_9000\">https://en.wikipedia.org/wiki/ISO_9000</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/MAC_address\">https://en.wikipedia.org/wiki/MAC_address</a></li>\r\n<li><a href=\"https://github.com/kenfallon/fix-ssh-on-pi\">https://github.com/kenfallon/fix-ssh-on-pi</a></li>\r\n<li><a href=\"https://github.com/nmcclain/raspberian-firstboot\">https://github.com/nmcclain/raspberian-firstboot</a></li>\r\n<li><a href=\"https://wiki.debian.org/DebianReleases\">https://wiki.debian.org/DebianReleases</a></li>\r\n<li><a href=\"https://www.amazon.com/StarTech-com-4-Slot-USB-C-Card-Reader/dp/B07HVPNQRQ/\">https://www.amazon.com/StarTech-com-4-Slot-USB-C-Card-Reader/dp/B07HVPNQRQ/</a></li>\r\n<li><a href=\"https://www.ansible.com/\">https://www.ansible.com/</a></li>\r\n<li><a href=\"https://www.cyberciti.biz/faq/ansible-apt-update-all-packages-on-ubuntu-debian-linux/\">https://www.cyberciti.biz/faq/ansible-apt-update-all-packages-on-ubuntu-debian-linux/</a></li>\r\n<li><a href=\"https://www.raspberrypi.org/blog/raspberry-pi-4-on-sale-now-from-35/#comment-1510410\">https://www.raspberrypi.org/blog/raspberry-pi-4-on-sale-now-from-35/#comment-1510410</a></li>\r\n<li><a href=\"https://www.raspberrypi.org/documentation/configuration/raspi-config.md\">https://www.raspberrypi.org/documentation/configuration/raspi-config.md</a></li>\r\n<li><a href=\"https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/net_tutorial.md\">https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/net_tutorial.md</a></li>\r\n<li><a href=\"https://www.raspberrypi.org/documentation/raspbian/updating.md\">https://www.raspberrypi.org/documentation/raspbian/updating.md</a></li>\r\n<li><a href=\"https://www.raspberrypi.org/education/\">https://www.raspberrypi.org/education/</a></li>\r\n<li><a href=\"https://www.raspberrypi.org/products/raspberry-pi-1-model-b-plus/\">https://www.raspberrypi.org/products/raspberry-pi-1-model-b-plus/</a></li>\r\n<li><a href=\"https://www.raspberrypi.org/products/raspberry-pi-2-model-b/\">https://www.raspberrypi.org/products/raspberry-pi-2-model-b/</a></li>\r\n<li><a href=\"https://www.raspberrypi.org/products/raspberry-pi-3-model-a-plus/\">https://www.raspberrypi.org/products/raspberry-pi-3-model-a-plus/</a></li>\r\n<li><a href=\"https://www.raspberrypi.org/products/raspberry-pi-3-model-b/\">https://www.raspberrypi.org/products/raspberry-pi-3-model-b/</a></li>\r\n<li><a href=\"https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/\">https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/</a></li>\r\n<li><a href=\"https://www.raspbian.org/\">https://www.raspbian.org/</a></li>\r\n</ul>',30,0,0,'CC-BY-SA','raspberrypi, Raspbian, ansible, opensource.com',0,0,1),
(3250,'2021-01-15','GIMP: Getting Started With Layers',952,'Mastering the basic tools of Layers in GIMP','<p>Layers are the feature that does most of the heavy lifting in GIMP. After our previous introduction, we start to get hands-on with the controls that let us work with Layers</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/\" class=\"uri\">https://docs.gimp.org/2.10/en/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/getting-started-with-layers/\" class=\"uri\">https://www.ahuka.com/gimp/getting-started-with-layers/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, layers',0,0,1),
(3260,'2021-01-29','Free, Public Domain and Creative Commons Assets',1289,'Using images and fonts that are not restricted','<p>In preparation for doing some sample exercises I wanted to first explain about how you can use images and fonts that are not restricted or are available under license terms that are not too restrictive. Any image that is intended for public display or for commercial purposes could be liable for copyright infringement if care is not taken. Fortunately, there are many resources available that you can use, and we look at some of the better ones.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/\" class=\"uri\">https://docs.gimp.org/2.10/en/</a></li>\r\n<li><a href=\"https://creativecommons.org/\" class=\"uri\">https://creativecommons.org/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources\" class=\"uri\">https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources</a></li>\r\n<li><a href=\"https://ccsearch.creativecommons.org/\" class=\"uri\">https://ccsearch.creativecommons.org/</a></li>\r\n<li><a href=\"https://ccsearch.creativecommons.org/search-help\" class=\"uri\">https://ccsearch.creativecommons.org/search-help</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Category:Public_domain_typefaces\" class=\"uri\">https://en.wikipedia.org/wiki/Category:Public_domain_typefaces</a></li>\r\n<li><a href=\"https://www.booksofm.com/2008/08/public-domain-font.html\" class=\"uri\">https://www.booksofm.com/2008/08/public-domain-font.html</a></li>\r\n<li><a href=\"https://www.1001fonts.com/licenses/ffc.html\" class=\"uri\">https://www.1001fonts.com/licenses/ffc.html</a></li>\r\n<li><a href=\"https://www.dafont.com/\" class=\"uri\">https://www.dafont.com/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/SIL_Open_Font_License\" class=\"uri\">https://en.wikipedia.org/wiki/SIL_Open_Font_License</a></li>\r\n<li><a href=\"https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=OFL\" class=\"uri\">https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=OFL</a></li>\r\n<li><a href=\"https://linuxconfig.org/how-to-install-fonts-on-ubuntu-20-04-focal-fossa-linux\" class=\"uri\">https://linuxconfig.org/how-to-install-fonts-on-ubuntu-20-04-focal-fossa-linux</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/free-public-domain-and-cc-assets/\" class=\"uri\">https://www.ahuka.com/gimp/free-public-domain-and-cc-assets/</a></li>\r\n</ul>',198,113,0,'CC-BY-SA','Public Domain, Creative Commons, copyright, images, fonts',0,0,1),
(3177,'2020-10-06','Zero cost VPN',407,'OpenVPN on a Free Tier VPS for securing phone trafic ','<p>A basic overview of the VPN I use</p>\r\n<ul>\r\n<li>Linux on a free/low cost VPS</li>\r\n<li>Helper script install OpenVPN and generate client config file</li>\r\n<li>Transfer client config file to mobile device</li>\r\n<li>Install OpenVPN client on Mobile Device and import the config</li>\r\n</ul>\r\n<p>There are a few options for the Linux server. Free tier cloud providers</p>\r\n<ul>\r\n<li>AWS</li>\r\n<li>Google</li>\r\n<li>Azure</li>\r\n</ul>\r\n<p>VPS with Free credits ($20-$100) for new accounts I\'ve gotten discount codes from podcasts</p>\r\n<ul>\r\n<li>Digital Ocean</li>\r\n<li>Linode</li>\r\n</ul>\r\n<p>VPS requirements for running a OpenVPN server are pretty are basic</p>\r\n<ul>\r\n<li>Internet accessible IP address</li>\r\n<li>Average Network speed</li>\r\n<li>root shell access</li>\r\n</ul>\r\n<p>The openvpn installer is on GitHub. <a href=\"https://github.com/angristan/openvpn-install\">https://github.com/angristan/openvpn-install</a></p>\r\n<p>On the server as root, run</p>\r\n<pre><code>git clone https://github.com/angristan/openvpn-install.git\r\n/openvpn-install/openvpn-install.sh\r\n</code></pre>\r\n',342,0,0,'CC-BY-SA','VPN, OpenVPN',0,0,1),
(3270,'2021-02-12','An Example of Using Layers',900,'Creating a new header image for my WordPress site using Layers in GIMP','<p>There is a point where you need to stop being abstract and start demonstrating what you are talking about, so I thought this was a good opportunity to put some things into practice by creating an image. I chose to do a header image for my site Ahuka Communications that would more accurately reflect the content. This lets us use freely licensed images, an OFL-licensed font, layers, and various tools. Note that you can download all of this stuff from my site.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/\" class=\"uri\">https://docs.gimp.org/2.10/en/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources\" class=\"uri\">https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources</a></li>\r\n<li><a href=\"https://www.clker.com/\" class=\"uri\">https://www.clker.com/</a></li>\r\n<li><a href=\"https://www.clker.com/clipart-1895.html\" class=\"uri\">https://www.clker.com/clipart-1895.html</a></li>\r\n<li><a href=\"https://www.clker.com/clipart-29779.html\" class=\"uri\">https://www.clker.com/clipart-29779.html</a></li>\r\n<li><a href=\"https://www.clker.com/clipart-x-office-spreadsheet.html\" class=\"uri\">https://www.clker.com/clipart-x-office-spreadsheet.html</a></li>\r\n<li><a href=\"https://www.clipartspy.com/\" class=\"uri\">https://www.clipartspy.com/</a></li>\r\n<li><a href=\"https://www.needpix.com/\" class=\"uri\">https://www.needpix.com/</a></li>\r\n<li><a href=\"https://www.needpix.com/photo/96030/file-type-ods-spreadsheet-open-document-spreadsheet-file-open-office\" class=\"uri\">https://www.needpix.com/photo/96030/file-type-ods-spreadsheet-open-document-spreadsheet-file-open-office</a></li>\r\n<li><a href=\"https://www.needpix.com/photo/28685/presentation-people-meeting-office-corporate-seminar-training-professional-businesspeople\" class=\"uri\">https://www.needpix.com/photo/28685/presentation-people-meeting-office-corporate-seminar-training-professional-businesspeople</a></li>\r\n<li><a href=\"https://www.needpix.com/photo/1321215/abstract-background-business-cloud-concept-graphic-group-illustration-office\" class=\"uri\">https://www.needpix.com/photo/1321215/abstract-background-business-cloud-concept-graphic-group-illustration-office</a></li>\r\n<li><a href=\"https://fontlibrary.org/\" class=\"uri\">https://fontlibrary.org/</a></li>\r\n<li><a href=\"https://www.ahuka.com/wp-content/uploads/2020/09/Header.zip\" class=\"uri\">https://www.ahuka.com/wp-content/uploads/2020/09/Header.zip</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/an-example-of-using-layers/\" class=\"uri\">https://www.ahuka.com/gimp/an-example-of-using-layers/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layers, WordPress',0,0,1),
(3178,'2020-10-07','Finishing the Recumbent Bicycle',259,'While channeling Stephen Hawking, Brian in Ohio describes finishing and riding the bike','<h2 id=\"websites\">Websites:</h2>\r\n<ul>\r\n<li>recycled recumbent: <a href=\"https://sites.google.com/site/recycledrecumbents/home\" class=\"uri\">https://sites.google.com/site/recycledrecumbents/home</a></li>\r\n<li>cj hoyle milk crate tutorial: <a href=\"https://youtu.be/MvBx_74FzUk\" class=\"uri\">https://youtu.be/MvBx_74FzUk</a></li>\r\n</ul>\r\n<h2 id=\"gallery\">Gallery:</h2>\r\n<p><em>1 - Bending Tools</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_001.jpg\" alt=\"1 - Bending Tools\" /></p>\r\n<p>This is how I clamped up the conduit bending tool in the trusty workmate. In this configuration you can bend the tube to specific angles and make sure the bends stay in plane. The goal here is to create two side rails that are identical. The seat webbing is sewn on to these rails.</p>\r\n<p><em>2 - Needed weights</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_002.jpg\" alt=\"2 - Needed weights\" /></p>\r\n<p>This photo shows some more of how the bending jig was set up. Those are counter weights needed to keep the jig on the ground while the tube is being bent.</p>\r\n<p><em>3 - Seat rail plans</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_003.jpg\" alt=\"3 - Seat rail plans\" /></p>\r\n<p>Mr. Carson provides pdf files that you can print out to be used as templates to match your bends.</p>\r\n<p><em>4 - Marking tubes</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_004.jpg\" alt=\"4 - Marking tubes\" /></p>\r\n<p><em>5 - Sighting down tube</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_005.jpg\" alt=\"5 - Sighting down tube\" /></p>\r\n<p><em>6 - Using marks</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_006.jpg\" alt=\"6 - Using marks\" /></p>\r\n<p><em>7 - Help with angles</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_007.jpg\" alt=\"7 - Help with angles\" /></p>\r\n<p><em>8 - Matching to plans</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_008.jpg\" alt=\"8 - Matching to plans\" /></p>\r\n<p>Pictures 4-8 show the layout of the tubes and how the marks are used to ensure you make mirror image rails for the seat.</p>\r\n<p><em>9 - Matching sides</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_009.jpg\" alt=\"9 - Matching sides\" /></p>\r\n<p><em>10 - Seat backs</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_010.jpg\" alt=\"10 - Seat backs\" /></p>\r\n<p><em>11 - Drilling fish mouths</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_011.jpg\" alt=\"11 - Drilling fish mouths\" /></p>\r\n<p><em>12 - Seat backs ready for trimming</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_012.jpg\" alt=\"12 - Seat backs ready for trimming\" /></p>\r\n<p><em>13 - Finished seat backs</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_013.jpg\" alt=\"13 - Finished seat backs\" /></p>\r\n<p><em>14 - Jigging up</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_014.jpg\" alt=\"14 - Jigging up\" /></p>\r\n<p>Pictures 9-14 outline the steps in fabricating the seat backs. The seat backs tie the rails together and are where the clamps that connect the seat to the frame grab the seat. This part of the construction can be overwhelming if you don\'t take it one step at a time. I had to constantly remind myself that building the bike was not a race but a journey, take your time and enjoy each little milestone. The last picture is the seat frame jigged up and ready for brazing.</p>\r\n<p><em>15 - Seat stay one</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_015.jpg\" alt=\"15 - Seat stay one\" /></p>\r\n<p><em>16 - Seat stay two</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_016.jpg\" alt=\"16 - Seat stay two\" /></p>\r\n<p>The seat stay was at first glance very intimidating. This piece connects the back of the seat down to the frame, supporting the upper part of your body. Its made of many parts, but all they are is cut up pieces of steel rod and threaded rod that are brazed together. No bending is involved only cutting and brazing and in the end it wasn\'t to difficult to fabricate.</p>\r\n<p><em>17 - Seat stay three</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_017.jpg\" alt=\"17 - Seat stay three\" /></p>\r\n<p>The completed seat connected to the frame. The seat is clamped to the frame using hose clamps and clamping blocks made of conduit cut length wise and brazed together at right angles.</p>\r\n<p><em>18 - Seat webbing one</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_018.jpg\" alt=\"18 - Seat webbing one\" /></p>\r\n<p><em>19 - Seat webbing two</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_019.jpg\" alt=\"19 - Seat webbing two\" /></p>\r\n<p>The seat webbing is sewn on using fishing line as described on the website, the only challenge is getting it nice and tight. Needle, line and a few hpr episodes is all you need to get through the task.</p>\r\n<p><em>20 - Finished</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/hpr3178/img_020.jpg\" alt=\"20 - Finished\" /></p>\r\n<p>The last picture is the bike finished and ready for its maiden journey.</p>\r\n<h2 id=\"espeak-script\">Espeak script:</h2>\r\n<p>Hello Hacker Public Radio, Brian in Ohio here.</p>\r\n<p>I am out from under my rock, and doing the last of the recumbent bike build episodes. My wife and I are visiting the land of our youth, Colorado, so my recording stuff is at home, hence the espeak rendition of the show. I finished building the bike a while ago and have been riding it around town to do errands and get exercise. I love this bike! The comfort level is unparalleled. Its like sitting in a chase lounge. No more neck strain or pain in the derriere. You don\'t need any fancy bike clothes, like padded biking shorts, in order to feel comfortable. The bike is fast and has responsive handling. Somethings I have learned so far while riding the bike. First, a rear view mirror really helps when riding on the street. Unlike upright bikes turning your head to look back to clear for traffic is not as easy. Next, the handling takes some getting used to. The long lever arm of the steering tube makes the bike feel jerky when you first ride it. After a while you\'ll see that a light hand on the tiller goes a long way to smoothing out the ride. It took me a bit of practice to gracefully get the bike started after coming to a stop. Because you can\'t stand up and hammer on the peddles, coming to a stop requires a bit of work on the gears. Being in a easy gear then shifting up as you get moving is the way to go. If you build one of these bikes, and why wouldn\'t you, you will have to think about storage because throwing a back pack on is not really an option. I found a bike rack that attaches to the back of the bike, a grocery store plastic basket and an instructive video tutorial by C J Hoyle on you tube took care of my storage needs, a link is in the show notes. The last parts that need to be fabricated to complete the bike were the seat and the handle bars, and all of there associated bits and pieces that make up these assemblies. Instead of narrating through all the pictures, I leave you, dear hacker public radio listener, that\'s interested to look at the pictures and read the captions yourself. My general impressions of building the pieces are as follows. The handle bars are relatively easy to fabricate but the big problem for me was the metal on the handle bars you use to make the tiller did not braze well with the conduit. In the end I had to resort to pop rivets and a through bolt to get a safe, sturdy connection. The seat is a collection of many parts and at first glance can be a bit overwhelming. By examining the photos on the recycled recumbent website and studying the plans, focusing on each step the seat came out fine for me, yours will too. The side rails are bent using a conduit bender and the challenge is getting the two sides close to match. Take your time and get some extra conduit, you\'re probably going to need it. The seat back stay is pretty easy to make, but it is made up of quite a few parts, requiring simple cuts and brazing to fashion it. The rest of the seat parts, the various fittings used to clamp the seat to the frame are pretty easy to make and I can\'t compliment Mr. Carsen highly enough for his ingenious design. Fitting out the bike; getting wheels, brakes and drive train together are going to be unique to every bike and will depend on how much money you want to spend, what parts you have laying around and what fittings you might have to create to attach the parts. I opted to use used parts that were at hand so I could get the bike up and running. I plan on upgrading parts, making changes and improvements after I\'ve ridden the bike for a few months and gotten a good number of miles under my belt. I\'ll do an update show in the future to let you know what I\'ve done. Will I do this again? Yes definitely I will build another bike, maybe a mach two or three, the building is fun the bike rides great. Mr Carsen sells parts, kits and completed bikes on his website. When I do it again I may opt to buy the seat from him. I would recommend this project to anyone. You can, go out and build one yourself.</p>\r\n<p>This is Brian in Ohio signing off for now reminding every one to: go fast; take chances.</p>\r\n',326,115,0,'CC-BY-SA','bicycle, recumbent',0,0,1),
(3179,'2020-10-08','MakeMKV to back up media, and a Question',404,'Describing two ways to install MakeMKV DVD/Blu-ray backup program on Fedora 32','<p>Installed Fedora 32 on a spare laptop</p>\r\n<h5 id=\"quick-tip\">Quick tip</h5>\r\n<p>To ignore the handle switch on the laptop triggering a power off:</p>\r\n<p>Put <code>HandleLidSwitch=ignore</code> in <code>/etc/systemd/logind.conf</code></p>\r\n<h4 id=\"install-makemkv-from-source\">Install MakeMKV from source</h4>\r\n<pre><code>dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm\r\n\r\ndnf install zlib-devel openssl-devel expat-devel ffmpeg ffmpeg-devel qt5-qtbase-devel\r\nmkdir git/makemkv.source\r\n\r\ncd makemkv.source\r\nwget https://www.makemkv.com/download/makemkv-oss-1.15.2.tar.gz\r\nwget https://www.makemkv.com/download/makemkv-bin-1.15.2.tar.gz\r\n\r\ntar xpf makemkv-oss-1.15.2.tar.gz\r\ntar xpf makemkv-bin-1.15.2.tar.gz\r\n\r\ncd makemkv-oss-1.15.2/\r\n./configure\r\nmake\r\nsudo make install\r\n\r\ncd ../makemkv-bin-1.15.2/\r\nmake\r\nsudo make install</code></pre>\r\n<h4 id=\"install-makemkv-from-flathub\">Install MakeMKV from flathub</h4>\r\n<pre><code>flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo\r\nflatpak install flathub com.makemkv.MakeMKV</code></pre>\r\n<h4 id=\"install-ccextractor\">Install ccextractor</h4>\r\n<pre><code>dnf install libtesseract-dev autoconf sysconftool\r\n\r\ngit clone https://github.com/CCExtractor/ccextractor.git\r\ncd ccextractor/linux/\r\n./build</code></pre>\r\n<h4 id=\"enable-expert-mode\">Enable expert mode</h4>\r\n<p><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3179/hpr3179/img_001.png\" /></p>\r\n<h4 id=\"provide-path-to-the-ccextractor-binary\">Provide path to the ccextractor binary</h4>\r\n<p><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3179/hpr3179/img_002.png\" /></p>\r\n<h4 id=\"re-encoding-mkv-file\">Re-encoding MKV file</h4>\r\n<pre><code>ffmpeg -i $1 -b:a 128k -b:v 2000k -vcodec mpeg4 -acodec aac &quot;encoded&quot;/&quot;`basename -s .mkv $1`-_2000k_aac.mkv&quot;</code></pre>\r\n<h4 id=\"updated-registration-key-good-for-2-months\">Updated registration key (Good for 2 months?)</h4>\r\n<p><a href=\"https://www.makemkv.com/forum/viewtopic.php?t=1053\">Updated registration key for MakeMKV</a></p>\r\n<h4 id=\"makemkv-registration-code-update-script-untested\">MakeMKV registration code update script (Untested)</h4>\r\n<p><a href=\"https://github.com/AyrA/MakeMKV\">Github link to MakeMKV registration update script</a></p>\r\n<h4 id=\"other-links\">Other links</h4>\r\n<p><a href=\"https://linuxconfig.org/how-to-install-makemkv-on-fedora-linux\">How to install MakeMKV on Fedora Linux</a> <br> <a href=\"https://www.makemkv.com/forum/viewtopic.php?f=3&amp;t=224&amp;sid=4e978698972df3de5f4e055c39370e03\">Forum post for MakeMKV on Linux</a></p>\r\n<h4 id=\"how-to-playrip-blu-ray-discs-on-mplayer-command-line\">How to play/rip Blu-ray discs on Mplayer command line</h4>\r\n<p>For DVD\'s</p>\r\n<pre><code>mplayer dvd:///_/dvd/mount/dir_</code></pre>\r\n<p>For Blu-ray discs <br> Download keydb.cfg and place it in <code>~/.config/aacs/</code> <br> <a href=\"https://fvonline-db.bplaced.net/\">Link to keydb.cfg</a></p>\r\n<pre><code>mplayer br:///_/bluray/mount/dir_\r\nie. mplayer br:////dev/sr0 &lt;br&gt;</code></pre>\r\n<p>note the 3 forward slashes before the block device, as the disk will not be read otherwise</p>\r\n<p>Ripping:</p>\r\n<pre><code>mplayer br:////dev/sr0 -alang en -dumpstream -dumpfile $movie.mpg</code></pre>\r\n<p>Encoding:</p>\r\n<pre><code>mkdir encoded\r\nffmpeg -i $1 -map 0:0 -map 0:1 -b:a 128k -b:v 2000k -vcodec mpeg4 &quot;encoded&quot;/&quot;`basename -s .mpg $1`.mkv&quot;</code></pre>\r\n<h4 id=\"questions-for-the-community\">Questions for the Community:</h4>\r\n<p>Is it antiquated to want to rip Blu-ray/DVD disks to a server?</p>\r\n<p>Is there a better way to accomplish this, rather than using MakeMKV, which continues to be Beta software, and not Free and Open Source?</p>\r\n',318,0,0,'CC-BY-SA','dvd, blu-ray, backup',0,0,1),
(3182,'2020-10-13','Yo-ho-ho, and a bottle of Cholecalciferol',4763,'From Scotland, two HPR hosts chew the fat','<h2 id=\"introduction\">Introduction</h2>\r\n<p>Two HPR hosts from Scotland get together over Mumble one more time to chat about all manner of stuff.</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0268.html\">Andrew Conway</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></li>\r\n</ul>\r\n<p>We recorded on Saturday 19<sup>th</sup> September 2020, which was <a href=\"https://en.wikipedia.org/wiki/International_Talk_Like_a_Pirate_Day\"><em>International Talk Like A Pirate Day</em></a>, we but managed to avoid any utterances of <em>ARRRR!</em>, and the use of marlinspikes, fids or belaying pins. Also, no timbers were shivered and no mainbraces spliced (not while recording anyway).</p>\r\n<h2 id=\"notes\">Notes</h2>\r\n<p>Some of the topics we discussed:</p>\r\n<ul>\r\n<li>COVID-19:\r\n<ul>\r\n<li>The increase in COVID-19 cases in Scotland, particularly Glasgow\r\n<ul>\r\n<li>Movement in Glasgow is more restricted than in Edinburgh at time of recording</li>\r\n</ul></li>\r\n<li>The <a href=\"https://www.kcl.ac.uk/news/new-symptom-tracking-app-aims-to-slow-spread-of-coronavirus\">KCL COVID tracker</a>, described further in an <a href=\"https://www.kcl.ac.uk/news/spotlight/spotlight-on-covid-tracking-the-symptoms\">article with more details</a>\r\n<ul>\r\n<li>Andrew is using this</li>\r\n</ul></li>\r\n<li>Is Glasgow the most infected city in the UK?</li>\r\n<li><a href=\"https://www.microbe.tv/twiv/\">This week in Virology podcast</a> discussing easing of lock down and return of children to school, both likely to increase infections.</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Vitamin_D\">Vitamin D</a> (D<sub>3</sub> in particular<a href=\"#fn1\" class=\"footnote-ref\" id=\"fnref1\" role=\"doc-noteref\"><sup>1</sup></a>) seems to have a beneficial effect in COVID-19 cases. Having an optimal level of the vitamin seems to help ameliorate the COVID-19 effects, whereas being deficient can apparently result in more severe effects. See the study in the <a href=\"https://t.co/oXb0fr5NyE?amp=1\"><em>Journal of Steroid Biochemistry and Molecular Biology</em></a></li>\r\n<li>Long-term immunity and t-cells: <a href=\"https://www.nature.com/articles/s41586-020-2550-z\">see the Nature paper mentioned in the episode</a></li>\r\n<li>The virus is called <code>SARS-CoV-2</code><a href=\"#fn2\" class=\"footnote-ref\" id=\"fnref2\" role=\"doc-noteref\"><sup>2</sup></a> (as opposed to <code>SARS-CoV-1</code>, the previous <em>SARS</em> coronavirus). The disease is called <code>COVID-19</code><a href=\"#fn3\" class=\"footnote-ref\" id=\"fnref3\" role=\"doc-noteref\"><sup>3</sup></a>.</li>\r\n<li>Speculations heard:\r\n<ul>\r\n<li>Whether having had the <a href=\"https://en.wikipedia.org/wiki/BCG_vaccine\">BCG immunisation</a> against tuberculosis helps protect from COVID-19.</li>\r\n<li>Whether exposure to other (milder) corona viruses can provide immunity to <code>SARS-CoV-2</code>.</li>\r\n</ul></li>\r\n<li>The puzzling case of Sweden and COVID-19</li>\r\n<li>Have there been randomised controlled trials of the effectiveness of the masks in common use?<a href=\"#fn4\" class=\"footnote-ref\" id=\"fnref4\" role=\"doc-noteref\"><sup>4</sup></a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>What we’re doing in lockdown:\r\n<ul>\r\n<li>Dave: cooking for the family 2 nights a week; shopping “<em>by proxy</em>”; not going to the gym yet</li>\r\n<li>Andrew: exercising at home; tried the gym a couple of times but was put off by overcrowding; working on the BBC Micro (check HPR show <a href=\"https://hackerpublicradio.org/eps.php?id=2731\"><em>hpr2731 :: My 8 bit Christmas</em></a>)</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/BBC_Micro\">BBC Micro</a>:\r\n<ul>\r\n<li>A 32KiB 8-bit computer based around the 6502 CPU, made by <a href=\"https://en.wikipedia.org/wiki/Acorn_Computers\">Acorn Computers Ltd.</a></li>\r\n<li>Game: <a href=\"https://bbcmicro.co.uk/game.php?id=89\"><em>Twin Kingdom Valley</em></a> originally played by Andrew in 1982/3. He has been:\r\n<ul>\r\n<li>Disassembling the game (which is in machine code).\r\n<ul>\r\n<li>Disassembly is non-trivial when data is interleaved with the code.</li>\r\n</ul></li>\r\n<li>Rewriting the non-graphic code in C</li>\r\n</ul></li>\r\n<li>The BBC had a paged ROM area known as the <em>Sideways ROM</em> (see the <a href=\"https://mdfs.net/Docs/Comp/BBC/AllMem\">System Memory Map</a>)</li>\r\n<li>Andrew had the ROM game <em>Dr. Who and the Mines of Terror!</em>.</li>\r\n<li>The 65C02 processor is still being made!</li>\r\n<li><a href=\"https://www.youtube.com/c/BenEater\">Ben Eater on YouTube</a> is explaining the workings of the 6502, amongst other things.\r\n<ul>\r\n<li>Andrew has bought a <a href=\"https://eater.net/6502\">6502 kit from Ben Eater</a></li>\r\n</ul></li>\r\n<li>The 6502 could be seen as an early RISC (Reduced Instruction Set) machine (though not intentionally). Acorn created the Acorn RISC Machine (ARM) for the Archimedes and eventually spun off <em>ARM Ltd.</em></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Internet bandwidth in Scotland\r\n<ul>\r\n<li>Dave’s street has just had optical fibre installed. He has an ADSL link at present which is slow and not always reliable</li>\r\n<li>Andrew has cable, which is very reliable. Reliability is more important than very high speeds, as is low latency</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>HPR queue state:\r\n<ul>\r\n<li>OK for the next couple of weeks (at time of recording)</li>\r\n<li>A new show then arrived <b>at that point</b>!</li>\r\n<li>HPR always needs shows!</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Programming languages:\r\n<ul>\r\n<li>Dave hasn’t been too keen on using assembler since the late 1980’s</li>\r\n<li>Andrew has been a Java programmer but likes the slimness of C</li>\r\n<li>Dave tinkered with FORTH on the BBC Micro at one time, and wrote some stuff in PostScript as a programming language</li>\r\n<li>FORTH was used to control telescopes at one time</li>\r\n</ul></li>\r\n</ul>\r\n<section class=\"footnotes\" role=\"doc-endnotes\">\r\n<hr />\r\n<ol>\r\n<li id=\"fn1\" role=\"doc-endnote\"><p>Vitamin D<sub>3</sub> is also known as <em>cholecalciferol</em>.<a href=\"#fnref1\" class=\"footnote-back\" role=\"doc-backlink\">↩︎</a></p></li>\r\n<li id=\"fn2\" role=\"doc-endnote\"><p><code>SARS-CoV-2</code>: <code>SARS</code> stands for <em>Severe Acute Respiratory Syndrome</em>, <code>CoV</code> means <em>Corona Virus</em> and the 2 refers to the second SARS corona virus in recent times.<a href=\"#fnref2\" class=\"footnote-back\" role=\"doc-backlink\">↩︎</a></p></li>\r\n<li id=\"fn3\" role=\"doc-endnote\"><p><code>COVID-19</code>: simply means <em>coronavirus disease 19</em>, referring to its arrival in 2019.<a href=\"#fnref3\" class=\"footnote-back\" role=\"doc-backlink\">↩︎</a></p></li>\r\n<li id=\"fn4\" role=\"doc-endnote\"><p>Some clarification of the types of mask being used most commonly might be needed. Andrew was thinking of the fabric masks when speaking about this. Some research after the recording discovered a mask-related trial as follows: <a href=\"https://www.ijidonline.com/article/S1201-9712(20)30399-4/fulltext\">Human coronavirus data from four clinical trials of masks and respirators</a>.<a href=\"#fnref4\" class=\"footnote-back\" role=\"doc-backlink\">↩︎</a></p></li>\r\n</ol>\r\n</section>\r\n',225,0,1,'CC-BY-SA','COVID-19,SARS-Cov-2,Vitamin D,6502 microprocessor,BBC Micro',0,0,1),
(3181,'2020-10-12','RealVNC cloud offering',262,'JWP emails in a show about using VNC while out and about','<p>\r\nJust a short podcast about RealVNC cloud offering.\r\nAn interesting VNC option if you want to connect on the road or the at\r\nthe coffee shop to a server back home without putting holes in your router.\r\n</p>\r\n<p>\r\n<a href=\"https://www.realvnc.com/en/news/what-vnc-cloud/\">https://www.realvnc.com/en/news/what-vnc-cloud/</a>\r\n</p>',129,0,1,'CC-BY-SA','realvnc, remote computing',0,0,1),
(3184,'2020-10-15','Linux Inlaws S01E15: IT Security and stick insects',3368,'How to secure photos of your stick insect collection and more ','<p>In this episode Martin discovers that protecting pictures of stick insects (rated XXX or not)\r\non USB sticks (pun intended) can be an ardous endeavour indeed. Never mind eventually turning\r\nthis into a business including web servers, shared file spaces and password storage. Additional\r\nbonus: the lovely Emma from Rainbow Escorts makes another cameo apperance supported by some Irish, um, students.</p>\r\n<h3>Shownotes:</h3>\r\n<ul>\r\n<li>Linux Unified Key Setup (LUKS): <a href=\"https://gitlab.com/cryptsetup/cryptsetup/blob/master/README.md\" target=\"_blank\">https://gitlab.com/cryptsetup/cryptsetup/blob/master/README.md</a></li>\r\n<li>EncFS: <a href=\"https://vgough.github.io/encfs\" target=\"_blank\">https://vgough.github.io/encfs</a></li>\r\n<li>EcryptFS: <a href=\"https://www.ecryptfs.org\" target=\"_blank\">https://www.ecryptfs.org</a></li>\r\n<li>Keepass: <a href=\"https://keepass.info/\" target=\"_blank\">https://keepass.info/</a></li>\r\n<li>Snort: <a href=\"https://www.snort.org\" target=\"_blank\">https://www.snort.org</a></li>\r\n<li>Fail2ban: <a href=\"https://www.fail2ban.org/wiki/index.php/Main_Page\" target=\"_blank\">https://www.fail2ban.org/wiki/index.php/Main_Page</a></li>\r\n<li>PSAD: <a href=\"https://cipherdyne.org/psad\" target=\"_blank\">https://cipherdyne.org/psad</a></li>\r\n<li>Nextcloud: <a href=\"https://nextcloud.com\" target=\"_blank\">https://nextcloud.com</a></li>\r\n<li>Tor: <a href=\"https://torproject.org\" target=\"_blank\">https://torproject.org</a></li>\r\n<li>OPENVPN: <a href=\"https://openvpn.net\" target=\"_blank\">https://openvpn.net</a></li>\r\n<li>WireGuard: <a href=\"https://www.wireguard.com\" target=\"_blank\">https://www.wireguard.com</a></li>\r\n<li>boringtun: <a href=\"https://github.com/cloudflare/boringtun\" target=\"_blank\">https://github.com/cloudflare/boringtun</a></li>\r\n<li>DistroWatch: <a href=\"https://distrowatch.com\" target=\"_blank\">https://distrowatch.com</a></li>\r\n</ul>',384,111,0,'CC-BY-SA','IT Security, stick insects, Rainbow Escorts, Grumpy Old Coders',0,0,1),
(3183,'2020-10-14','Don\'t trust zipfiles',277,'Zipfiles can contain all kinds of evilness and unpacking them can lead to unexpected results','<p>This show explains the concept of injecting symbolic links into zipfiles and how those can be used to attack a web application.</p>',387,74,0,'CC-BY-SA','pentesting,security,hacking,zip',0,0,1),
(3186,'2020-10-19','A light bulb moment, part 2',450,'The history of lighting','<p><u><strong>A very brief history of lighting </strong></u></p>\r\n<p>Natural light first came from fire</p>\r\n<p>Then using oil and fat with a wick</p>\r\n<p>Early candles used animal fat this smelled awful and tended to spit</p>\r\n<p>Some parts of world used whole animals as candles</p>\r\n<p>These early candles gave so little light that people generally just went to bed at sunset</p>\r\n<p>Electric lighting started first by Humphry Davy in the early 1800’s using an arc, this was developed into commercial lighting in the 1840s</p>\r\n<p>Arc lighting needed a complex mechanism to gradually push the contacts together as they burnt away</p>\r\n<p>Gas lighting started around the 1850s this was improved in the 1870 with the advent of the Gas mantel.</p>\r\n<p>Thomas Edison develop the electric light bulb in 1879 using a carbon filament. It took a great deal of effort to convince people to use it because gas lighting was so well established and worked well.</p>\r\n<p>Many houses in Britain didn\'t install electric lighting until the 1930s</p>\r\n<p>Finally electricity won as it could be used for so many other things.</p>\r\n<p><u><strong>The tungsten filament bulb</strong></u></p>\r\n<p>The filament within the bulb is made up of a tungsten coiled coil wire. This is done because the more compactly a filament can be wound the less heat is lost to the surroundings and the brighter the bulb will glow.</p>\r\n<p><u><strong>The tungsten halogen bulb</strong></u></p>\r\n<p>The next progression was tungsten halogen bulb, these bulbs are more efficient and give out twice as much light as ordinary bulbs and usually last twice as long.</p>\r\n<p>All filament lights waste a lot of energy producing heat. An ordinary light bulb only gives out 10% of its energy as light, the rest is wasted as heat.</p>\r\n<p><u><strong>Fluorescent neon lights</strong></u></p>\r\n<p>Fluorescent neon lights were invented in 1905 by a French man called George Claude. These were used for advertising mainly in America.</p>\r\n<p><u><strong>Fluorescent strip light</strong></u></p>\r\n<p>The first fluorescent light was introduced in 1939 it uses the same principle as the neon light but incorporates a filament at both ends. It is filled with argon and mercury vapour. It mainly gives off ultra violet light the tube is coated on the inside with chemicals to convert the output to mostly visible light using a property called fluorescence.</p>\r\n<p>Fluorescent tubes are four times as efficient as normal incandescent light bulbs and run cool.</p>\r\n<p>The first energy efficient light bulbs were just fluorescent lights folded into a compact bulb shape.</p>\r\n<p><u><strong>Sodium lights</strong></u></p>\r\n<p>Sodium lights used mainly in street lighting are twice as efficient again as fluorescent bulbs they give off a rather horrible orange colour.</p>\r\n<p>The first commercial high-pressure sodium lamps were available in 1965 from companies in the United States, the United Kingdom, and the Netherlands; at introduction a 400 watt lamp would produce around 100 lumens per watt <a href=\"https://en.wikipedia.org/wiki/Sodium-vapor_lamp\" class=\"uri\">https://en.wikipedia.org/wiki/Sodium-vapor_lamp</a></p>\r\n<p>The next big development was LED lighting which I\'ll cover in my next episode.</p>\r\n',201,0,0,'CC-BY-SA','Hardware, electrical',0,0,1),
(3187,'2020-10-20','Ansible for Dynamic Host Configuration Protocol',518,'How I use ansible to configure my OpenBSD router','<h1 id=\"ansible-dhcpd-and-dns\">Ansible DHCPD and DNS</h1>\r\n<h2 id=\"using-ansible-to-configure-dhcpd-and-nds-on-openbsd\">Using Ansible to configure DHCPD and NDS on OpenBSD</h2>\r\n<ul>\r\n<li>Host data is stored in csv files</li>\r\n<li>Ansible templates to create config files</li>\r\n<li>Restart services</li>\r\n</ul>\r\n<h2 id=\"hostname-setup.yml\">hostname-setup.yml</h2>\r\n<pre><code>---\r\n- hosts: localhost\r\n  tasks:\r\n  - name: read subnet 10\r\n    read_csv:\r\n      path: 10.csv\r\n      fieldnames: mac,ip,hostname\r\n    register: subnet_10\r\n  - name: read subnet 11\r\n    read_csv:\r\n      path: 11.csv\r\n      fieldnames: mac,ip,hostname\r\n    register: subnet_11\r\n  - name: read static\r\n    read_csv:\r\n      path: static.csv\r\n      fieldnames: hostname,ip\r\n    register: static_ip\r\n\r\n  - name: write dhcp file\r\n    template:\r\n      src: dhcpd.conf.j2\r\n      dest: /etc/dhcpd.conf\r\n      validate: dhcpd -nc %s\r\n  - name: write local.lan zone file\r\n    template:\r\n      src: local.lan.zone.j2\r\n      dest: /var/nsd/zones/master/local.lan\r\n      owner: root\r\n      group: _nsd\r\n      validate: nsd-checkzone local.lan %s\r\n  - name: nsd_conf\r\n    copy:\r\n      src: nsd.conf\r\n      dest: /var/nsd/etc/nsd.conf\r\n      owner: root\r\n      group: _nsd\r\n      validate: nsd-checkconf %s\r\n  - name: restart nsd\r\n    service:\r\n      name: nsd\r\n      state: restarted\r\n  - name: restart dhcpd\r\n    service:\r\n      name: dhcpd\r\n      state: restarted\r\n  - name: restart unbound\r\n    service:\r\n      name: unbound\r\n      state: restarted</code></pre>\r\n<h2 id=\"csv\">10.csv</h2>\r\n<pre><code>b8:27:eb:8b:7a:6d,192.168.10.100,pi3a\r\nb8:27:eb:ef:f2:d4,192.168.10.101,pi3b\r\n28:10:7b:25:d5:60,192.168.10.79,ipcam3\r\n28:10:7b:0c:fa:7b,192.168.10.80,ipcam1\r\nf0:7d:68:0b:ca:56,192.168.10.81,ipcam2</code></pre>\r\n<h2 id=\"static.csv\">static.csv</h2>\r\n<pre><code>tplink,192.168.10.2\r\ngate,192.168.10.10\r\nwww,192.168.10.10\r\nfox,192.168.10.17</code></pre>\r\n<h2 id=\"dhcpd.conf.j2\">dhcpd.conf.j2</h2>\r\n<pre><code>option  domain-name &quot;local.lan&quot;;\r\noption  domain-name-servers 192.168.10.10;\r\n\r\nsubnet 192.168.10.0 netmask 255.255.255.0 {\r\n        option routers 192.168.10.10;\r\n        range 192.168.10.161 192.168.10.179;\r\n        {% for host in subnet_10.list %}\r\n        host static-client { hardware ethernet {{ host.mac }};fixed-address {{ host.ip }};} #{{ host.hostname }}\r\n        {% endfor %}\r\n}\r\n\r\nsubnet 192.168.11.0 netmask 255.255.255.0 {\r\n    option routers 192.168.11.10;\r\n    range 192.168.11.72 192.168.11.127;\r\n{% for host in subnet_11.list %}\r\nhost static-client { hardware ethernet {{ host.mac }};fixed-address {{ host.ip }};} #{{ host.hostname }}\r\n{% endfor %}\r\n}\r\n</code></pre>\r\n<h3 id=\"rendered-dhcp-entires\">Rendered DHCP entires</h3>\r\n<pre><code>host static-client { hardware ethernet b8:27:eb:de:2f:38;fixed-address 192.168.10.45;} #pi3a\r\nhost static-client { hardware ethernet 28:10:7b:25:d5:60;fixed-address 192.168.10.79;} #ipcam3\r\nhost static-client { hardware ethernet 28:10:7b:0c:fa:7b;fixed-address 192.168.10.80;} #ipcam1\r\n</code></pre>\r\n<h2 id=\"local.lan.zone.j2\">local.lan.zone.j2</h2>\r\n<pre><code>$TTL 3600\r\nlocal.lan. IN     SOA    a.root-servers.net. root. (\r\n                2016092901  ; Serial\r\n                3H          ; refresh after 3 hours\r\n                1H          ; retry after 1 hour\r\n                1W          ; expire after 1 week\r\n                1D)         ; minimum TTL of 1 day\r\n\r\nIN  NS  gate.\r\n\r\nIN  MX  50 gate.local.lan.\r\n\r\nlocal.lan.      IN A    192.168.10.10\r\n\r\n{% for host in static_ip.list%}\r\n{{ host.hostname }} IN A {{ host.ip }}\r\n{% endfor %}\r\n\r\n{% for host in subnet_10.list%}\r\n{{ host.hostname }} IN A {{ host.ip }}\r\n{% endfor %}\r\n\r\n{% for host in subnet_11.list%}\r\n{{ host.hostname }} IN A {{ host.ip }}\r\n{% endfor %}\r\n</code></pre>\r\n<h3 id=\"rendered-a-records\">Rendered A records</h3>\r\n<pre><code>pi3b IN A 192.168.10.101\r\npi3a IN A 192.168.10.45\r\nipcam3 IN A 192.168.10.79\r\nipcam1 IN A 192.168.10.80</code></pre>\r\n<h2 id=\"run-the-playbook\">Run the playbook</h2>\r\n<pre><code>ansible-playbook hostname-setup.yml</code></pre>\r\n',342,0,0,'CC-BY-SA','ansible, dhcp,  dns, openbsd',0,0,1),
(3191,'2020-10-26','Swedish Corona Experience',969,'I will cover my experience of the Corona virus','<p>Swedish Health Authority Recommendation</p>\r\n<ul>\r\n<li>If sick stay at home.</li>\r\n<li>If you have symptoms take a test.</li>\r\n<li>Wash at least 20 seconds use alcohol with atleast 60% alcohol content.</li>\r\n<li>Don\'t touch your face with unwashed hands.</li>\r\n<li>Keep distance arm length (or 2m).</li>\r\n<li>Don\'t gather in large companies.</li>\r\n<li>Avoid public transport, try walking or biking when possible.\r\n<ul>\r\n<li>If required go with public transport book a ticket or go when others don\'t.</li>\r\n</ul></li>\r\n<li>If possible work from home.</li>\r\n</ul>\r\n<p><a href=\"https://www.folkhalsomyndigheten.se/smittskydd-beredskap/utbrott/aktuella-utbrott/covid-19/\" class=\"uri\">https://www.folkhalsomyndigheten.se/smittskydd-beredskap/utbrott/aktuella-utbrott/covid-19/</a></p>\r\n',382,100,0,'CC-BY-SA','corona, sweden',0,0,1),
(3280,'2021-02-26','What We Need For the ActivityPub Network',1026,'This keynote address looks at where federated social media can go if we make it work. ','<p>Federated social media can open up some wonderful possibilities but we need to make it happen. In this opening keynote address Evan Prodromou, who arguably started it all off, shows that he has thought long and deeply about this, and gives us his vision for where we can take it. <a href=\"https://www.zwilnik.com/better-social-media/activitypub-conference-2020/activitypub-2020-evan-prodromou/\" class=\"uri\">https://www.zwilnik.com/better-social-media/activitypub-conference-2020/activitypub-2020-evan-prodromou/</a></p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Evan_Prodromou\" class=\"uri\">https://en.wikipedia.org/wiki/Evan_Prodromou</a></li>\r\n<li><a href=\"https://www.w3.org/community/fedsocweb/\" class=\"uri\">https://www.w3.org/community/fedsocweb/</a></li>\r\n<li><a href=\"https://www.w3.org/wiki/Socialwg\" class=\"uri\">https://www.w3.org/wiki/Socialwg</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/ActivityPub\" class=\"uri\">https://en.wikipedia.org/wiki/ActivityPub</a></li>\r\n<li><a href=\"https://conf.tube/videos/watch/c79457a9-aae5-47dd-8731-617e6b09fe06\" class=\"uri\">https://conf.tube/videos/watch/c79457a9-aae5-47dd-8731-617e6b09fe06</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Yo_(app)\" class=\"uri\">https://en.wikipedia.org/wiki/Yo_(app)</a></li>\r\n<li><a href=\"https://www.zwilnik.com/better-social-media/activitypub-conference-2020/activitypub-2020-evan-prodromou/\" class=\"uri\">https://www.zwilnik.com/better-social-media/activitypub-conference-2020/activitypub-2020-evan-prodromou/</a></li>\r\n</ul>',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub',0,0,1),
(3194,'2020-10-29','Linux Inlaws S01E16: The count and the questions',4061,'Linux Inlaws S01E16: This is Linux Inlaws, a series on free and open source software, black humour a','<ul>\r\n<li>Halloween: <a href=\"https://en.wikipedia.org/wiki/Halloween\" target=\"_blank\">https://en.wikipedia.org/wiki/Halloween</a></li>\r\n<li>Ancient vampire folklore: <a href=\"https://en.wikipedia.org/wiki/Vampire_folklore_by_region#Mesopotamia\" target=\"_blank\">https://en.wikipedia.org/wiki/Vampire_folklore_by_region#Mesopotamia</a></li>\r\n<li>Blade franchise: <a href=\"https://en.wikipedia.org/wiki/Blade_(franchise)\" target=\"_blank\">https://en.wikipedia.org/wiki/Blade_(franchise)</a></li>\r\n<li>Judas history: <a href=\"https://authorlyngibson.wordpress.com/2013/08/05/the-legend-of-judas-iscariot-vampire\" target=\"_blank\">https://authorlyngibson.wordpress.com/2013/08/05/the-legend-of-judas-iscariot-vampire</a></li>\r\n<li>Vulcans &amp; Romulans: <a href=\"https://memory-alpha.fandom.com/wiki/Vulcan-Romulan_history\" target=\"_blank\">https://memory-alpha.fandom.com/wiki/Vulcan-Romulan_history</a></li>\r\n<li>The Fly: <a href=\"https://www.imdb.com/title/tt0091064\" target=\"_blank\">https://www.imdb.com/title/tt0091064</a></li>\r\n<li>PETA: <a href=\"https://www.peta.org\" target=\"_blank\">https://www.peta.org</a></li>\r\n<li>Oracle vs. Google: <a href=\"https://techcrunch.com/2020/10/06/standing-by-developers-through-google-v-oracle\" target=\"_blank\">https://techcrunch.com/2020/10/06/standing-by-developers-through-google-v-oracle</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','Count, questions, vlad, legends, Halloween',0,0,1),
(3192,'2020-10-27','A light bulb moment, part 3',777,'The LED revolution','<p><strong><u>LED History</u></strong></p>\r\n<p>The history of the LED revolution is both long and complex but I\'ll do my best to cover it. Please forgive me if I mispronounce some of the materials and processes I\'m not a lighting expert as I stated right back at the beginning of this series.</p>\r\n<p>The following excerpts are from Wikipedia; the link will be in the show notes, <a href=\"https://en.wikipedia.org/wiki/Light-emitting_diode\">https://en.wikipedia.org/wiki/Light-emitting_diode</a></p>\r\n<p>The LED or Light Emitting Diode first appeared as a practical electronic component in 1962, the earliest LEDs emitted low-intensity infrared light.[7] Infrared LEDs are used in remote-control circuits, such as those used with a wide variety of consumer electronics. The first visible-light LEDs were of low intensity and limited to red. Modern LEDs are available across the visible, ultraviolet, and infrared wavelengths, with high light output. A great deal of development and refinement was required to get to this point.</p>\r\n<p>The first commercial visible-wavelength LEDs were commonly used as replacements for incandescent and neon indicator lamps, and in seven-segment displays,[31] first in expensive equipment such as laboratory and electronics test equipment, then later in such appliances as calculators, TVs, radios, telephones, as well as watches (see list of signal uses). Until 1968, visible and infrared LEDs were extremely costly, in the order of US$200 per unit, and so had little practical use.[32]</p>\r\n<p>In 1968 Monsanto was the first organization to mass-produce visible LEDs, these were red LEDs suitable for indicators.[32]</p>\r\n<p>In February 1969, Hewlett-Packard introduced the HP Model 5082-7000 Numeric Indicator, the first LED device to use integrated circuit (integrated LED circuit) technology.[33] It was the first intelligent LED display, and was a revolution in digital display technology, replacing the Nixie tube and becoming the basis for later LED displays.[36]</p>\r\n<p>The early red LEDs were bright enough only for use as indicators, as the light output was not enough to illuminate an area. Readouts in calculators were so small that plastic lenses were built over each digit to make them legible. Later, other colors became widely available and appeared in appliances and equipment.</p>\r\n<p>The first blue-violet LED using magnesium-doped gallium nitride was made at Stanford University in 1972 by Herb Maruska and Wally Rhines</p>\r\n<p>In 1973 Pankove and Ed Miller demonstrated the first blue electroluminescence from zinc-doped gallium nitride, though the subsequent device Pankove and Miller built, the first actual gallium nitride light-emitting diode, emitted green light.[49][50]</p>\r\n<p>Today, magnesium-doping of gallium nitride remains the basis for all commercial blue LEDs and laser diodes. In the early 1970s, these devices were too dim for practical use, and research into gallium nitride devices slowed.</p>\r\n<p>In 1993, high-brightness blue LEDs were demonstrated by Shuji Nakamura of Nichia Corporation using a gallium nitride growth process.[56][57][58] In parallel, Isamu Akasaki and Hiroshi Amano in Nagoya were working on developing the important GaN deposition on sapphire substrates and the demonstration of p-type doping of GaN. This new development revolutionized LED lighting, making high-power blue light sources practical, leading to the development of technologies like Blu-ray[citation needed].</p>\r\n<p>In 1995, Alberto Barbieri at the Cardiff University Laboratory (GB) investigated the efficiency and reliability of high-brightness LEDs and demonstrated a \"transparent contact\" LED using indium tin oxide (ITO) on (AlGaInP/GaAs).</p>\r\n<p>In 2001[62] and 2002,[63] processes for growing gallium nitride (GaN) LEDs on silicon were successfully demonstrated.</p>\r\n<p>In January 2012, Osram demonstrated high-power InGaN LEDs grown on silicon substrates commercially,[64] and GaN-on-silicon LEDs are in production at Plessey Semiconductors.</p>\r\n<p><strong><u>White LEDs and the illumination breakthrough</u></strong></p>\r\n<p>Even though white light can be created using individual red, green and blue LEDs, this results in poor color rendering, since only three narrow bands of wavelengths of light are being emitted. The attainment of high efficiency blue LEDs was quickly followed by the development of the first white LED. In this device a cerium doped phosphor coating produces yellow light through fluorescence. The combination of that yellow with remaining blue light appears white to the eye. Using different phosphors produces green and red light through fluorescence. The resulting mixture of red, green and blue is perceived as white light, with improved color rendering compared to wavelengths from the blue LED/YAG phosphor combination.</p>\r\n<p>The first white LEDs were expensive and inefficient. However, the light output of LEDs has increased exponentially. The latest research and development has been propagated by Japanese manufacturers such as Panasonic, and Nichia, and by Korean and Chinese manufacturers such as Samsung, Kingsun, and others. This trend in increased output has been called Haitz\'s law after Dr. Roland Haitz.[79]</p>\r\n<p><em>Figure 1</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3192/hpr3192/img_001.png\" alt=\"Figure 1\" /><br />\r\n<em>Illustration of Haitz\'s law, showing improvement in light output per LED over time, with a logarithmic scale on the vertical axis</em></p>\r\n<p>Light output and efficiency of blue and near-ultraviolet LEDs rose and the cost of reliable devices fell. This led to relatively high-power white-light LEDs for illumination, which are replacing incandescent and fluorescent lighting.[80][81]</p>\r\n<p>Experimental white LEDs have been demonstrated to produce 303 lumens per watt of electricity (lm/w); some can last up to 100,000 hours.[82][83] However, commercially available LEDs have an efficiency of up to 223 lm/w.[84][85][86]</p>\r\n<p>Below are some comparisons for incandescent bulbs</p>\r\n<p><u><strong>Some figures I found online from Wikipedia</strong></u></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Incandescent_light_bulb\">https://en.wikipedia.org/wiki/Incandescent_light_bulb</a></p>\r\n<p>(Example figure for Standard Incandescent bulb only 12.6 lm / W)</p>\r\n<p>(Example figures for Halogen bulb being 24 lm / W)</p>\r\n<p>With LEDs continuing to get cheaper and even though for now they cost more than traditional bulbs, having this huge increase in electrical efficiency means the overall cost is significantly cheaper than that of incandescent bulbs.[87]</p>\r\n<p>While indicator LEDs are known for their extremely long life, up to 100,000 hours, lighting LEDs are operated much less conservatively, and consequently have shorter lives. LED technology is useful for lighting designers, because of its low power consumption, low heat generation, instantaneous on/off control, and in the case of single color LEDs, continuity of color throughout the life of the diode and relatively low cost of manufacture. LED lifetime depends strongly on the temperature of the diode. Operating an LED lamp in conditions that increase the internal temperature can greatly shorten the lamp\'s life.</p>\r\n<p>I now use LED lighting in my own home particularly in the areas where lighting is on for extended periods such as in the living room.</p>\r\n<p>As you can see we have come an extremely long way in a relatively short space of time with advancements continuing to accelerate.</p>\r\n<p>It\'s hard to appreciate the massive impact electric lighting has had on the world.</p>\r\n<p>It\'s even harder to imagine living in a time not that long ago where an expensive candle producing a puny amount illumination was the only source of light, with the added not inconsiderable fire risk of having a naked flame sharing a room with combustible materials.</p>\r\n<p>With all these deterrents it\'s little wonder that people just went to bed when the sun went down.</p>\r\n',201,0,1,'CC-BY-SA','Electrical, Hacks',0,0,1),
(3188,'2020-10-21','Thrift store quick fix',67,'Fixing up a dog coat for the cool weather.','<h3 id=\"thrift-store-quick-fix-for-a-dog-coat.\">Thrift store quick fix for a dog coat.</h3>\r\n<ol type=\"1\">\r\n<li>Ripped out stitches on defective velcro.</li>\r\n</ol>\r\n<p><small><em>Picture 1</em></small><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3188/hpr3188/img_001.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3188/hpr3188/img_001_thumbnail.jpg\" alt=\"Picture 1\" /></a></p>\r\n<ol start=\"2\" type=\"1\">\r\n<li>Re-stitched with the flat surface facing up.</li>\r\n</ol>\r\n<p><small><em>Picture 2</em></small><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3188/hpr3188/img_002.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3188/hpr3188/img_002_thumbnail.jpg\" alt=\"Picture 2\" /></a></p>\r\n<p><small><em>Picture 3</em></small><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3188/hpr3188/img_003.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3188/hpr3188/img_003_thumbnail.jpg\" alt=\"Picture 3\" /></a></p>\r\n<ol start=\"3\" type=\"1\">\r\n<li>Hot-glued replacement velcro.</li>\r\n</ol>\r\n<p><small><em>Picture 4</em></small><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3188/hpr3188/img_004.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3188/hpr3188/img_004_thumbnail.jpg\" alt=\"Picture 4\" /></a></p>\r\n<ol start=\"4\" type=\"1\">\r\n<li>Profit</li>\r\n</ol>\r\n<p><small><em>Picture 5</em></small><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3188/hpr3188/img_005.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3188/hpr3188/img_005_thumbnail.jpg\" alt=\"Picture 5\" /></a></p>\r\n',318,0,0,'CC-BY-SA','sewing',0,0,1),
(3189,'2020-10-22','How the Dutch dig Graves',163,'Ken explains how they dig graves when the ground is essentially sand','<p>\r\nOn a lock down walk in the local grave yard, Ken and his Wife stumble upon a new grave. As the soil is mostly sand, the graves need to be shored up to prevent collapse.\r\n</p>\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3189/hpr3189/1.jpg\" />\r\n</p>\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3189/hpr3189/2.jpg\" />\r\n</p>\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3189/hpr3189/3.jpg\" />\r\n</p>\r\n',30,0,1,'CC-BY-SA','graves, sand, How Holland Works, Dutch, Netherlands',0,0,1),
(3193,'2020-10-28','Meet Antithesis',1946,'Meet my new computer, a Pinebook Pro, as I explain my rationale, unbox it, and set it up.','<p>In this episode Paul discusses his thoughts in ordering a Pinebook Pro. During the episode he does an unboxing, and then comes back after a week of use to let us know how it preforms in practice.<br />\r\n\r\nYou can get one yourself here: <a href=\"https://www.pine64.org/\" class=\"uri\">https://www.pine64.org/</a></p>\r\n',383,57,0,'CC-BY-SA','Pinebook,Pro,64,unboxing',0,0,1),
(3198,'2020-11-04','Income Life insurance and then Chopin',1381,'I talk about my thoughts on Income Life insurance, and then we listen to some Chopin','<p><code>@paul@cloud.pquirk.com</code></p>',383,0,0,'CC-BY-SA','Income,life,insurance,investment,investing,Chopin',0,0,1),
(3195,'2020-10-30','For your Consideration - the ideal Ham Radio setup',3470,'Introducing a new podcast to me, with a special guest with an interest in amateur radio.','<ol type=\"1\">\r\n<li><p>Host Noah Cheliah</p></li>\r\n<li><p>Plenty of Linux security and IP cameras talk</p></li>\r\n<li><p>Focus on Free Software and related news</p></li>\r\n<li><p>Noah brings on a guest, who describe his ideal Ham Radio setup, which includes use of Software Defined radio.</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Software-defined_radio\" class=\"uri\">https://en.wikipedia.org/wiki/Software-defined_radio</a></p></li>\r\n<li><p>Guest talking about Ham Radio starts at 00:25:42</p>\r\n<p><a href=\"https://podcast.asknoahshow.com/200\" class=\"uri\">https://podcast.asknoahshow.com/200</a></p></li>\r\n</ol>\r\n',318,75,0,'CC-BY-NC-ND','linux, security, amateur radio',0,0,1),
(3197,'2020-11-03','Pens, pencils, paper and ink - 3',1420,'Looking at another batch of writing equipment','<h2 id=\"introduction\">Introduction</h2>\n<p>This is the third in a short series about pens, pencils, writing paper and ink.</p>\n<p>In this episode I look at two Chinese fountain pens, a mechanical pencil, a gel pen, some inks and some paper.</p>\n<h2 id=\"long-notes\">Long notes</h2>\n<p>The <a href=\"hpr3197_full_shownotes.html\">main notes for this episode, including pictures, can be viewed here</a>.</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li>Pen &amp; Pencil Brands:\n<ul>\n<li>Jinhao\n<ul>\n<li><a href=\"https://qiangu.bjsx12.host.35.com/en/indexen.asp\">Website</a></li>\n<li><a href=\"https://stationery.wiki/Jinhao\">Stationery Wiki</a></li>\n</ul></li>\n<li>Pentel\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Pentel\">Wikipedia page</a></li>\n</ul></li>\n</ul></li>\n</ul>\n<ul>\n<li>Mechanical Pencil:\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Mechanical_pencil\">Wikipedia page</a></li>\n</ul></li>\n</ul>\n<ul>\n<li>Inks:\n<ul>\n<li><a href=\"https://www.jherbin.com/index.html\">J.Herbin</a></li>\n<li><a href=\"https://www.jetpens.com/J.-Herbin-Bleu-Pervenche-Ink-Periwinkle-Blue-30-ml-Bottle/pd/3768\">Jet Pens, Bleu Pervenche Ink, 30ml</a></li>\n<li><a href=\"https://www.diamineinks.co.uk/\">Diamine Inks</a></li>\n</ul></li>\n</ul>\n<ul>\n<li>Paper:\n<ul>\n<li><a href=\"https://www.clairefontaine.com/\">Clairefontaine</a></li>\n<li>Oxford:\n<ul>\n<li><a href=\"https://www.my-oxford.com/gb-en/oxford-campus-notebooks/oxford-campus-refill-pads\">Oxford Campus Refills</a></li>\n<li><a href=\"https://www.my-oxford.com/int-en/oxford-black-n-red\">Oxford Black N’ Red</a></li>\n</ul></li>\n</ul></li>\n</ul>\n<ul>\n<li>HPR links:\n<ul>\n<li><a href=\"https://hackerpublicradio.org/eps/hpr1941\">hpr1941 :: What’s in my case</a></li>\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2061\">hpr2061 :: Handwriting</a></li>\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2273\">hpr2273 :: Fountain Pens</a></li>\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3063\">hpr3063 :: Pens, pencils, paper and ink - 1</a></li>\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3092\">hpr3092 :: Pens, pencils, paper and ink - 2</a></li>\n</ul></li>\n</ul>\n',225,112,1,'CC-BY-SA','fountain pen,gel pen,mechanical pencil,ink,paper',0,0,1),
(3201,'2020-11-09','A small intro to 3D printing',688,'Everything a newbie needs to know to start 3D printing','<ul>\r\n<li>My Ender 3 printer from Creality</li>\r\n<li>Cura, open source from Ultimaker, <a href=\"https://ultimaker.com/nl/software/ultimaker-cura\" class=\"uri\">https://ultimaker.com/nl/software/ultimaker-cura</a></li>\r\n<li>Octoprint, <a href=\"https://octoprint.org/\" class=\"uri\">https://octoprint.org/</a></li>\r\n</ul>',369,0,0,'CC-BY-SA','3D printing',0,0,1),
(3203,'2020-11-11','The Paul Quirk show: Retro Computing',1838,'I discuss the hobby of retro computing in this episode.','<p>Some links of interest for the listener:</p>\r\n<ul>\r\n<li>Amiga emulation: <a href=\"https://fs-uae.net/\" class=\"uri\">https://fs-uae.net/</a></li>\r\n<li>Commodore 8 bit emulation: <a href=\"https://vice-emu.sourceforge.io/\" class=\"uri\">https://vice-emu.sourceforge.io/</a></li>\r\n<li>Atari emulation: <a href=\"https://hatari.tuxfamily.org/\" class=\"uri\">https://hatari.tuxfamily.org/</a></li>\r\n<li>Apple II emulation: <a href=\"https://apple2games.com/wiki/Apple_2_Emulators\" class=\"uri\">https://apple2games.com/wiki/Apple_2_Emulators</a></li>\r\n<li>A site for the Color Computer: <a href=\"https://cocoquest.com/\" class=\"uri\">https://cocoquest.com/</a></li>\r\n</ul>',383,0,0,'CC-BY-SA','retro,computing,Paul Quirk show,Commodore 64,Commodore 128,Vic 20,Apple II,coco,8-bit,PET,Atari',0,0,1),
(3199,'2020-11-05','Bad Audio Weed Eater Bugs Sprinkler and Bubbles !',1516,'Pushing the definition of \"Audible\" to the limit, join us for some home repair tips','<p>\r\nJoin us for some home repairs, picking up tips and tricks on the way. Sorry for the bad audio.\r\n</p>\r\n<ul>\r\n<li>Bad Audio</li>\r\n<li>Weedeater Bugs</li>\r\n<li>Sprinkler</li>\r\n<li>Bubbles</li>\r\n</ul>',36,0,1,'CC-BY-SA','home improvement,home repair,outdoors,outside ',0,0,1),
(3202,'2020-11-10','A big Question',1118,'In his first show, Padraig asks a big life question. Well ok more like an undead question.','<p>\r\nIn his first show - recorded on Halloween night, Padraig asks a big life question. Well ok more like an undead question. Which is better a Lich, or a Vampire.\r\n</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Lich_(Dungeons_%26_Dragons)\">https://en.wikipedia.org/wiki/Lich_(Dungeons_%26_Dragons)</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Vampire_(Dungeons_%26_Dragons)\">https://en.wikipedia.org/wiki/Vampire_(Dungeons_%26_Dragons)</a></li>\r\n</ul>',388,95,0,'CC-BY-SA','DND, Vampires, Lich, Undead, Halloween',0,0,1),
(3205,'2020-11-13','Backups of your Backups of Backups',3205,'Do you have backups of your backups? Well you better! Listen to this rant','This is a general discussion about backups and cloud storage. ',36,0,1,'CC-BY-SA','backups,cloud,spideroak,backup,cloud backup,cloud backups',0,0,1),
(3211,'2020-11-23','Chainsaws',1098,'Info about chainsaws and what I know so far!','In this episode operat0r shares his experiences with chainsaws.',36,0,1,'CC-BY-SA','outdoors,outdoor,outside,mechanic,small engine repair,repair,home,home repair,chainsaws',0,0,1),
(3214,'2020-11-26','Rant about websites',1880,'I go over history of websites and the complex nature of security in complex websites','<p>In this show I go over history of websites and the complex nature of security in complex websites</p>',36,0,1,'CC-BY-SA','internet,security,history,html',0,0,1),
(3225,'2020-12-11','Grill repair',1027,'I go over some grill tips/repair','<p>A few quick tips on how to extend the life of grills.</p>',36,0,1,'CC-BY-SA','outdoor,outdoors,repair,home repair,grills',0,0,1),
(3235,'2020-12-25','Soldering Tips',487,'What little I know about the topic you will learn','<p>\r\nA follow up show in the vein of <a href=\"https://hackerpublicradio.org/eps.php?id=3016\">hpr3016 :: Nixie tube clock and friends!</a>. Also be sure to remove batteries from electronics in storage.</p>',36,103,1,'CC-BY-SA','Solder,Soldering,Electronics',0,0,1),
(3245,'2021-01-08','ELECTRICITY',1843,'I talk about tips on ELECTRICITY','<p>An adhoc show in traffic, about how sockets and 3 way switches work.</p>',36,0,1,'CC-BY-SA','ELECTRICITY',0,0,1),
(3216,'2020-11-30','Buying a second home in France',952,'Steps I have taken up to now for buying a second home in another country','<p><a href=\"https://www.funda.nl/\">funda.nl</a></p>\r\n<ul>\r\n<li><p>Do geo query on <a href=\"https://overpass-turbo.eu/\">overpass-turbo.eu</a></p></li>\r\n<li><p>Find query to query villages here: <a href=\"https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_API_by_Example\" class=\"uri\">https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_API_by_Example</a></p></li>\r\n<li><p>The box on the right is the viewport that you will get data from.</p></li>\r\n<li><p>Used python to convert xml file to Postgres sql table</p></li>\r\n<li><p>Run query for all < my_max_inhabitants</p></li>\r\n<li><p>Run script to query and save to csv</p></li>\r\n<li><p>Import csv into LibreOffice spreadsheet.</p></li>\r\n<li><p>Use global search & replace to make cells with google maps url clickable.</p></li>\r\n<li><p>Nice podcast of French women about buying a house in France<br />\r\n<a href=\"https://joinusinfrance.com/episode/buying-a-house-in-france-episode-239/\" class=\"uri\">https://joinusinfrance.com/episode/buying-a-house-in-france-episode-239/</a></p></li>\r\n</ul>',369,0,0,'CC-BY-SA','second-house,france',0,0,1),
(3204,'2020-11-12','Getting Started in 3D Printing',960,'Thaj gives his opinions and recommendations on how to get started in 3D printing','<p>Getting started in 3D printing</p>\r\n<ul>\r\n<li><p><a href=\"https://top3dshop.com/blog/fff-vs-fdm-difference-and-best-printers\">The FFF vs. FDM Debate</a></p></li>\r\n<li><p><a href=\"https://www.creality.com/goods-detail/ender-3-3d-printer\">Creality Ender 3</a></p></li>\r\n<li><p><a href=\"https://www.reprap.org/wiki/RepRap\">Where to go once you decide you need another 3D printer</a></p></li>\r\n</ul>',270,0,1,'CC-BY-SA','3D Printing',0,0,1),
(3206,'2020-11-16','Dungeons and Dragons for the blind',3511,'I discuss some easy workarounds to make tabletop RPGs easy for both sighted and non-sighted players','<p>Dungeons and Dragons, and most tabletop roleplaying games, are ideal platforms for players with low or no vision. However, because most players are sighted, you have to work-around some assumptions made by the rulebooks.</p>\r\n\r\n<p>I &#91;currently&#93; have vision, but I have played with a blind player before, and I\'ve played as a Dungeon Master with no materials on hand. In this episode, I discuss some easy workarounds to make tabletop RPGs easy for both sighted and non-sighted players.\r\n</p>\r\n\r\n<p>There are audiobook versions of the rule books available at <a href=\"https://listenrpg.com\">https://listenrpg.com</a>.</p>\r\n\r\n<p>The official D&amp;D digital platform is <a href=\"https://www.dndbeyond.com/\" target=\"_blank\">dndbeyond.com</a>, and it is accessible to blind players using a screen reader.</p>\r\n\r\n<p>Wizards of the Coast publishes the basic rules under the <a href=\"https://www.opengamingfoundation.org/licenses.html\" target=\"_blank\">Open Game License (OGL)</a>. As a service to my players, I maintain <a href=\"https://notabug.org/notklaatu/5srdnd.git\">a version of this document in plain text, with third-party OGL additions</a>. It may or may not be useful for screen readers, depending on your workflow.</p>',78,95,0,'CC-BY-SA','dnd,blind,inclusive,5e,tabletop,rpg',0,0,1),
(3217,'2020-12-01','Sump Minion',1106,'My first Internet of Things device, without using python','\r\n<p>1 <b>introduction</b></p>\r\n<p>1.1 back in Ohio using my regular voice<br />\r\n1.2 espeak is no worse than operat0rs audio and we all love his shows.</p>\r\n<p>2 <b>the problem</b></p>\r\n<p>2.1 where i live the water table is high and basement flooding is a problem <a href=\"https://en.wikipedia.org/wiki/Great_Black_Swamp\" class=\"uri\">https://en.wikipedia.org/wiki/Great_Black_Swamp</a><br />\r\n2.2 to counteract the water table problem houses have sumps in the basement</p>\r\n<p><em>sump closet</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3217/hpr3217/img_001.jpg\" alt=\"sump closet\" /></p>\r\n<p><em>sump close up</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3217/hpr3217/img_002.jpg\" alt=\"sump close up\" /></p>\r\n<p>2.2.1 sumps consist of a basin where outside water is collected<br />\r\n2.2.2 a pump, usually electric, that drains the sump<br />\r\n2.2.3 also a good sump system will have some type of backup pump</p>\r\n<p>2.3 the \'real\' problem happens when the sump pump(s) fail<br />\r\n2.3.1 primary pumps fail in many ways, mechanical motor failures, floats sticking electrical outage<br />\r\n2.3.2 secondary pumps also fail battery problems, mechanical problems<br />\r\n2.3.3 i wanted a notification system that would let me know that the water level in my sump was rising. i wanted it set so that if the water level hits where the secondary system kicks in i would get some ind of notification. i wanted a system that would not use python or some kind of \'home spy\' system available from some friendly corporation.</p>\r\n<p>3 <b>the solution</b></p>\r\n<p>3.1 a raspberrry pi, a simple transistor circuit, a c library that allows access to the pi\'s gpio\'s, mutt mail client, some bash scripting and a cron job</p>\r\n<p>\r\nThe probe is meerly 2 wires on the end of a pvc pipe. one wire is higher up on the pipe than the other when both wires are submerged, the circuit is complete. the wires are just some old stuff from a stripped out ethernet cable. you could easily cascade anumber of these circuits and provide a water level meter something like this,<br />\r\n\r\n<img src=\"https://www.homemade-circuits.com/wp-content/uploads/2019/06/water-level.jpg\" alt=\"water level meter\" /><br />\r\n, instead of running leds, you\'d hook each end to a gpio pin on the pie.\r\n</p>\r\n<p>\r\nIn picture 2, the closeup you can see the probe its the small pvc pipe with the blue wires running along the side. I attached the end of the wires to the pipe by stripping the ends and wrapping them around a small 1/2\" self tapping screw. then I screwed one in towards the bottom and on higher up. the one higer up determines when the water alarm goes off. \r\n</p>\r\n\r\n\r\n<p>4 <b>implementation</b></p>\r\n<p>4.1 raspberry pi 3b+<br />\r\n4.1.1 install slackware<br />\r\n<a href=\"https://sarpi.fatdog.eu/\" class=\"uri\">https://sarpi.fatdog.eu/</a><br />\r\nslackware-arm<br />\r\n<a href=\"https://arm.slackware.com/\" class=\"uri\">https://arm.slackware.com/</a><br />\r\npodcast<br />\r\n<a href=\"https://shows.acast.com/slackchat\" class=\"uri\">https://shows.acast.com/slackchat</a><br />\r\n4.1.2 access to gpio\'s<br />\r\n4.1.2.1 initially sysfs, its deprecated<br />\r\n<a href=\"https://www.kernel.org/doc/Documentation/ABI/obsolete/sysfs-gpio\" class=\"uri\">https://www.kernel.org/doc/Documentation/ABI/obsolete/sysfs-gpio</a><br />\r\n4.1.2.2 i was unable to get libgpio to compile<br />\r\n4.1.2.3 other solutions python. wiringpi, project dead<br />\r\n4.1.2.4 a library pigpiod<br />\r\n<a href=\"https://abyz.me.uk/rpi/pigpio/pigpiod.html\" class=\"uri\">https://abyz.me.uk/rpi/pigpio/pigpiod.html</a><br />\r\n4.1.2.5 slackbuilds pigpiod<br />\r\n<a href=\"https://slackbuilds.org/\" class=\"uri\">https://slackbuilds.org/</a><br />\r\n4.1.3 the circuit<br />\r\n4.1.3.1 a rework of a forrest mims water alarm circuit<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Forrest_Mims\" class=\"uri\">https://en.wikipedia.org/wiki/Forrest_Mims</a></p>\r\n<p><em>circuit diagram</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3217/hpr3217/img_003.jpg\" alt=\"circuit diagram\" /></p>\r\n<p>4.1.4 mutt<br />\r\n<a href=\"https://smalldata.tech/blog/2016/09/10/gmail-with-mutt\" class=\"uri\">https://smalldata.tech/blog/2016/09/10/gmail-with-mutt</a><br />\r\n4.1.5 email to text<br />\r\n<a href=\"https://20somethingfinance.com/how-to-send-text-messages-sms-via-email-for-free/\" class=\"uri\">https://20somethingfinance.com/how-to-send-text-messages-sms-via-email-for-free/</a><br />\r\n4.1.6 the script<br />\r\n</p>\r\n<pre><code>#!/bin/bash\r\n\r\nSENSOR=4\r\nRELAY=17\r\nINPUT=0\r\nOUTPUT=1\r\nON=1\r\nOFF=0\r\n\r\nADDRESS1=&lt;your-phone-number&gt;@vtext.com\r\n\r\n#if its 6am send system running sanity text\r\nif [ $(date | cut -c 12-16) == &quot;06:00&quot; ]; then\r\n\r\n#check to make sure daemon is running\r\nif [ &quot;$(pidof pigpiod)&quot; == &quot;&quot; ]; then\r\n   echo &quot;Something is wrong, pigpiod is not running.&quot; | mutt -s &quot;mutt message&quot; $ADDRESS1\r\n   else\r\n   #make sure pin 4 is input, pin 17 output\r\n   if [ &quot;$(pigs modeg $SENSOR)&quot; = $OUTPUT ]; then\r\n      pigs modes $SENSOR R\r\n   fi\r\n   if [ &quot;$(pigs modeg $RELAY)&quot; = $INPUT ]; then\r\n      pigs modes $RELAY W\r\n   fi\r\n      echo &quot;System running.&quot; | mutt -s &quot;mutt message&quot; $ADDRESS1\r\n   fi\r\nfi\r\n\r\n#if its the first wednesday of the month, run a system test\r\nif [ $(date | cut -c 1-3) `= &quot;Wed&quot; ] &amp;&amp; [ $(date | cut -c 12-16) =&#39; &quot;12:00&quot; ] &amp;&amp; [ $(date | cut -c 9-10) -lt &quot;8&quot; ]; then\r\n   echo &quot;Monthly Test.&quot; | mutt -s &quot;mutt message&quot; $ADDRESS1\r\n   pigs w $RELAY $ON\r\n   sleep 1\r\n\r\n   if [ $(pigs r $SENSOR) = 0 ]; then\r\n     echo &quot;Test Passed!&quot; | mutt -s &quot;mutt message&quot; $ADDRESS1\r\n   else\r\n     echo &quot;Something is wrong!&quot; | mutt -s &quot;mutt message&quot; $ADDRESS1\r\n   fi\r\nfi\r\n\r\n#check to see if water is rising, has the reading on pin 4 been driven low?\r\nif [ $(pigs r $SENSOR) = 0 ]; then\r\n   echo &quot;Alert! The water is rising!&quot; | mutt -s &quot;mutt message&quot; $ADDRESS1\r\nfi</code></pre>\r\n<p><em>testing on breadboard</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3217/hpr3217/img_004.jpg\" alt=\"testing on breadboard\" /></p>\r\n<p><em>strip board</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3217/hpr3217/img_005.jpg\" alt=\"strip board\" /></p>\r\n<p><em>final installation</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3217/hpr3217/img_006.jpg\" alt=\"final installation\" /></p>\r\n<p>5 <b>conclusion</b></p>\r\n<p>5.1 fun project, shows the power of linux and floss and hope it inspires you</p>\r\n',326,103,0,'CC-BY-SA','raspberry pi, slackware',0,0,1),
(3226,'2020-12-14','Using taskwarrior to structurize your work',970,'How using taskwarrior can help you to structure your work','<ul>\r\n<li><a href=\"https://taskwarrior.org/\">taskwarrior.org</a>\r\n<ul>\r\n<li>Taskwarrior is Free and Open Source Software that manages your TODO list from the command line. It is flexible, fast, and unobtrusive. It does its job then gets out of your way.</li>\r\n</ul></li>\r\n</ul>\r\n<!-- x -->\r\n<ul>\r\n<li><a href=\"https://timewarrior.net/\">timewarrior.net</a>\r\n<ul>\r\n<li>Timewarrior is Free and Open Source Software that tracks time from the command line.</li>\r\n</ul></li>\r\n</ul>\r\n<!-- x -->\r\n<ul>\r\n<li><a href=\"https://medium.com/@jrisch/tracking-time-with-taskwarrior-and-timewarrior-6759f3542276\">Article on the Medium website</a>\r\n<ul>\r\n<li><em>Tracking time on the command line with Taskwarrior and Timewarrior</em></li>\r\n</ul></li>\r\n</ul>',369,0,0,'CC-BY-SA','command-line,taskwarrior,timewarrior,todo-list',0,0,1),
(3215,'2020-11-27','Why I Gave Away a 3-D Printer',442,'I briefly had a 3-D printer and gave it away. This is why.','<p>Ken Fallon asked for shows abut 3-D printers and I told him I had given mine away. So of course he asked for a show about why I had done that. This is that show.</p>\r\n<ul>\r\n<li><a href=\"https://olfconference.org/\" class=\"uri\">https://olfconference.org/</a></li>\r\n<li><a href=\"https://2021.penguicon.org/\" class=\"uri\">https://2021.penguicon.org/</a></li>\r\n<li><a href=\"https://canonical.com/\" class=\"uri\">https://canonical.com/</a></li>\r\n<li><a href=\"https://www.vmware.com/\" class=\"uri\">https://www.vmware.com/</a></li>\r\n<li><a href=\"https://www.redhat.com/en/authors/joe-brockmeier\" class=\"uri\">https://www.redhat.com/en/authors/joe-brockmeier</a></li>\r\n<li><a href=\"https://enablingthefuture.org/\" class=\"uri\">https://enablingthefuture.org/</a></li>\r\n<li><a href=\"https://www.zwilnik.com/why-i-gave-away-a-3-d-printer/\" class=\"uri\">https://www.zwilnik.com/why-i-gave-away-a-3-d-printer/</a></li>\r\n</ul>',198,0,0,'CC-BY-SA','3D Printers, prosthetics',0,0,1),
(3209,'2020-11-19','Linux Inlaws S01E17: Nextcloud',4189,'Chat with Frank Karlitschek about Nextcloud and forking your company','<ul>\r\n<li>Nextcloud: <a href=\"https://nextcloud.com\" target=\"_blank\">https://nextcloud.com</a></li>\r\n<li>PHP: <a href=\"https://www.php.net\" target=\"_blank\">https://www.php.net</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','Nextcloud, PHP, Golang, forking a company, technical debt',0,0,1),
(3207,'2020-11-17','Fireside chat with E Nigma',3799,'Ken talks to the original HPR and Today with a Techie Admin.','<p>In this rambling episode, we talk to <a href=\"https://hackerpublicradio.org/correspondents/0039.html\">Enigma</a> about the old days of HPR. He helped out with Today With A Techie and <a href=\"https://hackerpublicradio.org/correspondents/0001.html\">Droops</a> asked him if he would like lead the project. After 300 episodes he, <a href=\"https://www.urbandictionary.com/define.php?term=Dual_Parallel\">Dual Parallel</a>, <a href=\"https://hackerpublicradio.org/correspondents/0001.html\">Droops</a>, and  <a href=\"https://en.wikipedia.org/wiki/StankDawg\">StankDawg</a> decided to pivot and rebrand as Hacker Public Radio. A nod to <a href=\"https://en.wikipedia.org/wiki/NPR\">National Public Radio</a>.</p>\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"https://oldskoolphreak.com/radio.html\">https://oldskoolphreak.com/radio.html</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/twat.html\">https://hackerpublicradio.org/twat.html</a></li>\r\n<li><a href=\"https://www.binrev.com/forums/\">https://www.binrev.com/forums/</a></li>\r\n<li><a href=\"https://lottalinuxlinks.com/\">https://lottalinuxlinks.com/</a></li>\r\n<li><a href=\"https://archive.org/details/Linux_Reality_Podcast_Archive_DVD\">https://archive.org/details/Linux_Reality_Podcast_Archive_DVD</a></li>\r\n<li><a href=\"https://archive.org/details/BRRseason1\">https://archive.org/details/BRRseason1</a></li>\r\n<li><a href=\"https://archive.org/details/BRRseason2\">https://archive.org/details/BRRseason2</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0039.html\">Enigma https://hackerpublicradio.org/correspondents/0039.html</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Digital_DawgPound\">https://en.wikipedia.org/wiki/Digital_DawgPound</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Infonomicon\">https://en.wikipedia.org/wiki/Infonomicon</a></li>\r\n<li><a href=\"https://www.urbandictionary.com/define.php?term=Dual_Parallel\">https://www.urbandictionary.com/define.php?term=Dual_Parallel</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/StankDawg\">https://en.wikipedia.org/wiki/StankDawg</a></li>\r\n</ul>',30,0,1,'CC-BY-SA','HPR, TWAT, DDP, Infonomicon, Binrev, RFA',0,0,1),
(3208,'2020-11-18','The Paul Quirk show: Wacom with Pinebook, and thoughts on the DMCA takedown',1120,'I got a Wacom tablet to use with my Pinebook, and then share my thoughts on the recent DMCA takedown','<ul>\r\n<li><p>My fediverse address: <span class=\"citation\" data-cites=\"paul\">@paul</span><span class=\"citation\" data-cites=\"cloud.pquirk.com\">@cloud.pquirk.com</span></p></li>\r\n<li><p>See my first Wacom doodle here: <a href=\"https://cloud.pquirk.com/index.php/s/CAnAwwD6S6AczC6\" class=\"uri\">https://cloud.pquirk.com/index.php/s/CAnAwwD6S6AczC6</a></p></li>\r\n<li><p><a href=\"https://en.wikipedia.org/wiki/Citizens_United_v._Federal_Election_Commission\" class=\"uri\">https://en.wikipedia.org/wiki/Citizens_United_v._Federal_Election_Commission</a></p></li>\r\n<li><p><a href=\"https://www.canlii.org/en/ca/scc/doc/2000/2000scc57/2000scc57.html\" class=\"uri\">https://www.canlii.org/en/ca/scc/doc/2000/2000scc57/2000scc57.html</a></p></li>\r\n</ul>',383,0,0,'CC-BY-SA','Pinebook,Pro,Wacom,tablet,DMCA,takedown,Youtube,Canadian,Canada,Music',0,0,1),
(3212,'2020-11-24','A Pi Model 3B as your daily driver? You must be joking.',755,'Beeza\'s laptop is away being fixed. Can he manage for a few days using just his Raspberry Pi 3B?','<p>My Dell laptop had to go away to have a new cooling fan fitted. I\'ve got 3 other laptops to call upon, but instead I decided to conduct an experiment I\'ve theorised about for ages. Could a Raspberry Pi 3B serve as my daily driver?</p>\r\n<p>This idea goes back some way and since then, of course, the much more powerful model 4 has been released. However, there must be thousands of 3Bs out there doing nothing, so perhaps they could have a new lease of life providing basic browsing and internet capabilities to people who might otherwise not be in a position to buy a computer.</p>\r\n<p>Hardware: Raspberry Pi Model 3B<br />\r\nOS: Raspberry Pi OS (current version as of 31st October 2020)<br />\r\nMicroSD: SanDisk 16GB</p>\r\n<p>ADDITIONAL SOFTWARE INSTALLED</p>\r\n<ul>\r\n<li>Audio Editor: mhWaveEdit 1.4.23</li>\r\n<li>Audio Format Converter: SoundConverter 2.1.3</li>\r\n<li>Image Editor: GIMP 2.10</li>\r\n</ul>\r\n',246,0,0,'CC-BY-SA','Raspberry Pi, Software Review',0,0,1),
(3213,'2020-11-25','Electrical Safety',1835,'I discuss why and how I stay safe when working with electricity, with some ear candy at the end.','<ul>\r\n<li>Circuit breaker failures:\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/watch?v=0Xov-nXpBmM\" class=\"uri\">Breaker Panel Explosion</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=PN7qtQVJXXM\" class=\"uri\">DB-25 Circuit Breaker Blows Up</a></li>\r\n</ul></li>\r\n<li>Electrical socket failures:\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/watch?v=Kzv1Qn1pPpc\" class=\"uri\">Multiple socket outlet catching fire</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=nPhgQpRFe5A\" class=\"uri\">Loose wires cause fires.</a></li>\r\n</ul></li>\r\n</ul>\r\n<p>Please be safe!</p>',383,0,0,'CC-BY-SA','Electrical,safety,code,electricity,electrocution',0,0,1),
(3218,'2020-12-02','An introduction to Darktable',1574,'A brief introduction to RAW photography, the Darktable application, and then sheep may safely graze','<ul>\r\n<li><a href=\"https://darktable.org/\" class=\"uri\">https://darktable.org/</a></li>\r\n<li><a href=\"https://musopen.org/music/3446-the-lively-hunt-is-all-my-hearts-desire-bwv-208/\" class=\"uri\">https://musopen.org/music/3446-the-lively-hunt-is-all-my-hearts-desire-bwv-208/</a></li>\r\n</ul>\r\n<pre><code>@paul@cloud.pquirk.com\r\n@quirk@mastodon.social</code></pre>',383,0,0,'CC-BY-SA','darktable,RAW,photo,photography,editing',0,0,1),
(3219,'2020-12-03','Linux Inlaws S01E18: Voice Recognition and Text to Speech',4603,'How to place fake prank calls into podcasts and what does TTS have to do with this','<p>\r\nIn this episode, Chris is harassed by quite a few artificial nuisance callers, among\r\ndrug lords, Irish nurses and some random Linux Inlaws Chief Financial Officer. Based\r\non these examples, our two heroes discuss the history and current state of text-to-\r\nspeech (TTS) and voice recognition. We attempted to use voice recognition software in order\r\nto produce a <a href=\"https://linuxinlaws.eu/S01E18_trans.txt\" target=\"_blank\">transcript of the show</a>.\r\n</p>\r\n<br/>Shownotes:<br/>\r\n<ul>\r\n<li>Wavenet: <a href=\"https://deepmind.com/blog/article/wavenet-generative-model-raw-audio\" target=\"_blank\">https://deepmind.com/blog/article/wavenet-generative-model-raw-audio</a></li>\r\n<li>Tacotron: <a href=\"https://ai.googleblog.com/2017/12/tacotron-2-generating-human-like-speech.html\" target=\"_blank\">https://ai.googleblog.com/2017/12/tacotron-2-generating-human-like-speech.html</a></li>\r\n<li>DeepSpeech: <a href=\"https://github.com/mozilla/DeepSpeech\" target=\"_blank\">https://github.com/mozilla/DeepSpeech</a></li>\r\n<li>Lyrebird / Welcome.AI: <a href=\"https://www.welcome.ai/lyrebird\" target=\"_blank\">https://www.welcome.ai/lyrebird</a></li>\r\n<li>Nvidia Tacotron 2: <a href=\"https://github.com/NVIDIA/tacotron2\" target=\"_blank\">https://github.com/NVIDIA/tacotron2</a></li>\r\n<li>Tensorflow: <a href=\"https://www.tensorflow.org\" target=\"_blank\">https://www.tensorflow.org</a></li>\r\n<li>PyTorch: <a href=\"https://pytorch.org\" target=\"_blank\">https://pytorch.org</a></li>\r\n<li>Melspectrograms: <a href=\"https://medium.com/analytics-vidhya/understanding-the-mel-spectrogram-fca2afa2ce53\" target=\"_blank\">https://medium.com/analytics-vidhya/understanding-the-mel-spectrogram-fca2afa2ce53</a></li>\r\n<li>GRAPHCORE: <a href=\"https://www.graphcore.ai\" target=\"_blank\">https://www.graphcore.ai</a></li>\r\n<li>FGPA: <a href=\"https://en.wikipedia.org/wiki/Field-programmable_gate_array\" target=\"_blank\">https://en.wikipedia.org/wiki/Field-programmable_gate_array</a></li>\r\n<li>IBM ROMP: <a href=\"https://en.wikipedia.org/wiki/IBM_ROMP\" target=\"_blank\">https://en.wikipedia.org/wiki/IBM_ROMP</a></li>\r\n<li>Google\'s TTS: <a href=\"https://cloud.google.com/text-to-speech\" target=\"_blank\">https://cloud.google.com/text-to-speech</a></li>\r\n<li>Apple M1: <a href=\"https://www.gsmarena.com/the_apple_m1_is_the_first_armbased_chipset_for_macs_with_the_fastest_cpu_cores_and_top_igpu-news-46222.php\" target=\"_blank\">https://www.gsmarena.com/the_apple_m1_is_the_first_armbased_chipset_for_macs_with_the_fastest_cpu_cores_and_top_igpu-news-46222.php</a></li>\r\n<li>Secure Enclaves: <a href=\"https://support.apple.com/guide/security/secure-enclave-overview-sec59b0b31ff/web\" target=\"_blank\">https://support.apple.com/guide/security/secure-enclave-overview-sec59b0b31ff/web</a></li>\r\n<li>OSDU: <a href=\"https://www.opengroup.org/osdu/forum-homepage\" target=\"_blank\">https://www.opengroup.org/osdu/forum-homepage</a></li>\r\n<li>Jack Kerouac\'s On the Road: <a href=\"https://en.wikipedia.org/wiki/On_the_Road\" target=\"_blank\">https://en.wikipedia.org/wiki/On_the_Road</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','voice recognition, text to speech, wavenet, tacotron 2, DeepSpeech, Lyrebird',0,0,1),
(3222,'2020-12-08','Musings about writing a book about the Odoo software suite',1616,'How I started writing again after 20 years and this time about the Odoo software','<p>In this podcast I describe how I met another Dutch guy at the Ubucon 2018 conference in Spain. And how he asked me to write another book, this time about Odoo. How I learned how the Odoo ecosystem works, with the Odoo S.A. company and the Odoo Community Association (OCA).</p>\r\n<p>At the end I had a finished book.</p>\r\n<p>You can find the book here: <a href=\"https://www.lulu.com/en/en/shop/jeroen-baten/jumpstart-your-business-with-odoo-12-ennl/paperback/product-1wkzmj52.html\" class=\"uri\">https://www.lulu.com/en/en/shop/jeroen-baten/jumpstart-your-business-with-odoo-12-ennl/paperback/product-1wkzmj52.html</a></p>\r\n<p>If you have questions or comments, please leave a comment at the HPR site.</p>\r\n<p>Warm regards, Jeroen Baten</p>\r\n',369,126,0,'CC-BY-SA','odoo, writing, book',0,0,1),
(3223,'2020-12-09','My COVID year summary',1090,'I summarize what I\'ve been doing for the last year','<h1 id=\"links\">Links</h1>\r\n<ul>\r\n<li><a href=\"https://www.cdc.gov/coronavirus/2019-ncov/lab/reporting-lab-data.html\">https://www.cdc.gov/coronavirus/2019-ncov/lab/reporting-lab-data.html</a></li>\r\n<li><a href=\"https://coronavirus.jhu.edu/map.html\">https://coronavirus.jhu.edu/map.html</a></li>\r\n<li><a href=\"https://www.fda.gov/emergency-preparedness-and-response/mcm-legal-regulatory-and-policy-framework/emergency-use-authorization#covid19euas\">https://www.fda.gov/emergency-preparedness-and-response/mcm-legal-regulatory-and-policy-framework/emergency-use-authorization#covid19euas</a></li>\r\n</ul>',300,100,0,'CC-BY-SA','covid,healthcare,coronavirus,laboratory',0,0,1),
(3224,'2020-12-10','Adventures in Retrocomputing with the Mac Plus',1479,'I talk more about my hobby with retrocomputing, and then Greensleeves.','<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Macintosh_Plus\" class=\"uri\">https://en.wikipedia.org/wiki/Macintosh_Plus</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Zip_drive\" class=\"uri\">https://en.wikipedia.org/wiki/Zip_drive</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Steve_Jobs\" class=\"uri\">https://en.wikipedia.org/wiki/Steve_Jobs</a></li>\r\n<li><a href=\"https://www.applegazette.com/ipod/steve-jobs-and-minimalism/\" class=\"uri\">https://www.applegazette.com/ipod/steve-jobs-and-minimalism/</a></li>\r\n</ul>',383,71,0,'CC-BY-SA','Mac,Plus,Iomega,zip,drive,OS,7.5.5,6.0.8,retro,computing',0,0,1),
(3501,'2022-01-03','HPR Community News for December 2021',4324,'HPR Volunteers talk about shows released and comments posted in December 2021','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a>.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3478\" target=\"_blank\">3478</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-12-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3478\" target=\"_blank\">Audio Wiring Hack on a Classroom Podium</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0238.html\" target=\"_blank\">Jon Kulp</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3479\" target=\"_blank\">3479</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-12-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3479\" target=\"_blank\">Linux Inlaws S01E49: Version Control Systems and why bother</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3480\" target=\"_blank\">3480</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-12-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3480\" target=\"_blank\">Darken Layer Modes</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3481\" target=\"_blank\">3481</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-12-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3481\" target=\"_blank\">HPR Community News for November 2021</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3482\" target=\"_blank\">3482</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-12-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3482\" target=\"_blank\">Introduction to Post Apocalyptic Robotics Meta Technology</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3483\" target=\"_blank\">3483</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-12-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3483\" target=\"_blank\">Pinephone64 review</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0115.html\" target=\"_blank\">sigflup</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3484\" target=\"_blank\">3484</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-12-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3484\" target=\"_blank\">My vim setup with GnuPG</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3485\" target=\"_blank\">3485</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-12-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3485\" target=\"_blank\">50 years since the 1st Edition of Unix was published</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3486\" target=\"_blank\">3486</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-12-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3486\" target=\"_blank\">Unleash the true potential of GNU nano text editor</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0397.html\" target=\"_blank\">hakerdefo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3487\" target=\"_blank\">3487</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-12-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3487\" target=\"_blank\">Installing a cat door</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3488\" target=\"_blank\">3488</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-12-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3488\" target=\"_blank\">Binaural 3d audio recording, please listen at normal speed with good head phones.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0110.html\" target=\"_blank\">Quvmoh</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3489\" target=\"_blank\">3489</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-12-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3489\" target=\"_blank\">Equality of structured errors</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3490\" target=\"_blank\">3490</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-12-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3490\" target=\"_blank\">The Path</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3491\" target=\"_blank\">3491</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-12-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3491\" target=\"_blank\">My Github and flickmetrix</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3492\" target=\"_blank\">3492</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-12-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3492\" target=\"_blank\">Linux Inlaws S01E44: Pipewire Just another audio server Think again</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3493\" target=\"_blank\">3493</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-12-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3493\" target=\"_blank\">My First Spanish HPR Episode</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0152.html\" target=\"_blank\">Claudio Miranda</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3494\" target=\"_blank\">3494</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-12-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3494\" target=\"_blank\">Recent Generator Repairs and Maintenance</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0238.html\" target=\"_blank\">Jon Kulp</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3495\" target=\"_blank\">3495</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-12-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3495\" target=\"_blank\">Podcast Recommendation: The Retroist</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3496\" target=\"_blank\">3496</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-12-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3496\" target=\"_blank\">How I record HPR Episodes</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3497\" target=\"_blank\">3497</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-12-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3497\" target=\"_blank\">Jankilators.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0398.html\" target=\"_blank\">one_of_spoons</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3498\" target=\"_blank\">3498</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-12-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3498\" target=\"_blank\">Linux Inlaws S01E45: The Big Xmas New Year bash with the Grumpies</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3499\" target=\"_blank\">3499</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-12-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3499\" target=\"_blank\">Fixing a noisy blower motor</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3500\" target=\"_blank\">3500</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-12-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3500\" target=\"_blank\">Contrast Layer Modes</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n</table>\n\n<h2>Comments this month</h2>\n\n<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 14 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 6 comments on\n4 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3292#comments\" target=\"_blank\">hpr3292</a></strong>\n(2021-03-16) \"<em>Squirrel FSF blog</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3292#5\" target=\"_blank\">Comment 5</a>:\ndodddummy on 2021-12-18:\n\"Where\'s the thumbs down button?\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3394#comments\" target=\"_blank\">hpr3394</a></strong>\n(2021-08-05) \"<em>Be an XML star with xmlstarlet</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3394#2\" target=\"_blank\">Comment 2</a>:\ndnt on 2021-12-22:\n\"I consulted this episode this week\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3473#comments\" target=\"_blank\">hpr3473</a></strong>\n(2021-11-24) \"<em>My journey into Amateur Radio</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0314.html\" target=\"_blank\">thelovebug</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3473#2\" target=\"_blank\">Comment 2</a>:\nTrey on 2021-12-02:\n\"UGH!  Correction.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3474#comments\" target=\"_blank\">hpr3474</a></strong>\n(2021-11-25) \"<em>H P R and Audio Fun</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3474#2\" target=\"_blank\">Comment 2</a>:\nOperat0r on 2021-12-06:\n\"replace Ken Fallon with a script\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3474#3\" target=\"_blank\">Comment 3</a>:\nKen Fallon on 2021-12-07:\n\"Thanks for Volunteering\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3474#4\" target=\"_blank\">Comment 4</a>:\nOperat0r on 2021-12-10:\n\"fun\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 8 comments on 7 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3478#comments\" target=\"_blank\">hpr3478</a></strong>\n(2021-12-01) \"<em>Audio Wiring Hack on a Classroom Podium</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0238.html\" target=\"_blank\">Jon Kulp</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3478#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2021-12-01:\n\"I am sure the Audio/Video department loves you\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3479#comments\" target=\"_blank\">hpr3479</a></strong>\n(2021-12-02) \"<em>Linux Inlaws S01E49: Version Control Systems and why bother</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3479#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2021-12-02:\n\"Thanks for sharing.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3482#comments\" target=\"_blank\">hpr3482</a></strong>\n(2021-12-07) \"<em>Introduction to Post Apocalyptic Robotics Meta Technology</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3482#1\" target=\"_blank\">Comment 1</a>:\nWindigo on 2021-12-30:\n\"Fascinating subject\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3485#comments\" target=\"_blank\">hpr3485</a></strong>\n(2021-12-10) \"<em>50 years since the 1st Edition of Unix was published</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3485#1\" target=\"_blank\">Comment 1</a>:\nmonochromec on 2021-11-24:\n\"The show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3493#comments\" target=\"_blank\">hpr3493</a></strong>\n(2021-12-22) \"<em>My First Spanish HPR Episode</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0152.html\" target=\"_blank\">Claudio Miranda</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3493#1\" target=\"_blank\">Comment 1</a>:\nDNT on 2021-12-04:\n\"Great episode\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3493#2\" target=\"_blank\">Comment 2</a>:\nOyente#1 on 2021-12-25:\n\"Gracias\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3495#comments\" target=\"_blank\">hpr3495</a></strong>\n(2021-12-24) \"<em>Podcast Recommendation: The Retroist</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3495#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2021-12-24:\n\"Great recommendation\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3496#comments\" target=\"_blank\">hpr3496</a></strong>\n(2021-12-27) \"<em>How I record HPR Episodes</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3496#1\" target=\"_blank\">Comment 1</a>:\nDave Morriss on 2021-12-30:\n\"Great show\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-December/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-December/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"older-hpr-shows-on-archive.org\">Older HPR shows on archive.org</h3>\n<p>This month 125 additional shows in the range 1-870 have been uploaded.</p>\n<p>The number of shows left to upload in this range is now: 244.</p>\n<h3>\nThanks to all HPR contributors in 2021!\n</h3>\n<p>\n<a href=\"https://hackerpublicradio.org/correspondents/0285.html\">2BFrank</a>, <a href=\"https://hackerpublicradio.org/correspondents/0198.html\">Ahuka</a>, <a href=\"https://hackerpublicradio.org/correspondents/0268.html\">Andrew Conway</a>, <a href=\"https://hackerpublicradio.org/correspondents/0393.html\">Anonymous Host</a>, <a href=\"https://hackerpublicradio.org/correspondents/0318.html\">Archer72</a>, <a href=\"https://hackerpublicradio.org/correspondents/0138.html\">arfab</a>, <a href=\"https://hackerpublicradio.org/correspondents/0300.html\">Mr. Young</a>, <a href=\"https://hackerpublicradio.org/correspondents/0246.html\">Beeza</a>, <a href=\"https://hackerpublicradio.org/correspondents/0396.html\">BlacKernel</a>, <a href=\"https://hackerpublicradio.org/correspondents/0326.html\">Brian in Ohio</a>, <a href=\"https://hackerpublicradio.org/correspondents/0311.html\">clacke</a>, <a href=\"https://hackerpublicradio.org/correspondents/0152.html\">Claudio Miranda</a>, <a href=\"https://hackerpublicradio.org/correspondents/0315.html\">Clinton Roy</a>, <a href=\"https://hackerpublicradio.org/correspondents/0395.html\">CoGo</a>, <a href=\"https://hackerpublicradio.org/correspondents/0385.html\">crvs</a>, <a href=\"https://hackerpublicradio.org/correspondents/0382.html\">Daniel Persson</a>, <a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a>, <a href=\"https://hackerpublicradio.org/correspondents/0073.html\">deepgeek</a>, <a href=\"https://hackerpublicradio.org/correspondents/0399.html\">dnt</a>, <a href=\"https://hackerpublicradio.org/correspondents/0039.html\">Enigma</a>, <a href=\"https://hackerpublicradio.org/correspondents/0397.html\">hakerdefo</a>, <a href=\"https://hackerpublicradio.org/correspondents/0269.html\">Honkeymagoo</a>, <a href=\"https://hackerpublicradio.org/correspondents/0159.html\">HPR Volunteers</a>, <a href=\"https://hackerpublicradio.org/correspondents/0243.html\">Jezra</a>, <a href=\"https://hackerpublicradio.org/correspondents/0238.html\">Jon Kulp</a>, <a href=\"https://hackerpublicradio.org/correspondents/0129.html\">JWP</a>, <a href=\"https://hackerpublicradio.org/correspondents/0030.html\">Ken Fallon</a>, <a href=\"https://hackerpublicradio.org/correspondents/0078.html\">klaatu</a>, <a href=\"https://hackerpublicradio.org/correspondents/0401.html\">Mechatroniac</a>, <a href=\"https://hackerpublicradio.org/correspondents/0375.html\">minnix</a>, <a href=\"https://hackerpublicradio.org/correspondents/0384.html\">monochromec</a>, <a href=\"https://hackerpublicradio.org/correspondents/0201.html\">MrX</a>, <a href=\"https://hackerpublicradio.org/correspondents/0381.html\">Nihilazo</a>, <a href=\"https://hackerpublicradio.org/correspondents/0342.html\">norrist</a>, <a href=\"https://hackerpublicradio.org/correspondents/0390.html\">o9l</a>, <a href=\"https://hackerpublicradio.org/correspondents/0398.html\">one_of_spoons</a>, <a href=\"https://hackerpublicradio.org/correspondents/0036.html\">operat0r</a>, <a href=\"https://hackerpublicradio.org/correspondents/0383.html\">Paul Quirk</a>, <a href=\"https://hackerpublicradio.org/correspondents/0110.html\">Quvmoh</a>, <a href=\"https://hackerpublicradio.org/correspondents/0293.html\">Rho`n</a>, <a href=\"https://hackerpublicradio.org/correspondents/0115.html\">sigflup</a>, <a href=\"https://hackerpublicradio.org/correspondents/0391.html\">Some Guy On The Internet</a>, <a href=\"https://hackerpublicradio.org/correspondents/0297.html\">swift110</a>, <a href=\"https://hackerpublicradio.org/correspondents/0270.html\">Thaj Sara</a>, <a href=\"https://hackerpublicradio.org/correspondents/0314.html\">thelovebug</a>, <a href=\"https://hackerpublicradio.org/correspondents/0392.html\">timttmy</a>, <a href=\"https://hackerpublicradio.org/correspondents/0273.html\">ToeJet</a>, <a href=\"https://hackerpublicradio.org/correspondents/0394.html\">Trey</a>, <a href=\"https://hackerpublicradio.org/correspondents/0389.html\">TrumpetJohn</a>, <a href=\"https://hackerpublicradio.org/correspondents/0364.html\">Tuula</a>, <a href=\"https://hackerpublicradio.org/correspondents/0215.html\">Windigo</a>, <a href=\"https://hackerpublicradio.org/correspondents/0377.html\">Zen_Floater2</a>.\n</p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3526,'2022-02-07','HPR Community News for January 2022',2626,'HPR Volunteers talk about shows released and comments posted in January 2022','<style>\ntable td.shrink {\n    white-space:nowrap\n}\np#ignore, li#ignore {\n    background-color: lightgreen;\n    color:maroon;\n}\ndiv#highlight {\n  border-style: solid;\n  border-color: red;\n  padding-right: 20px;\n  padding-left: 20px;\n}\nhr.thin {\n    border: 0;\n    height: 0;\n    border-top: 1px solid rgba(0, 0, 0, 0.1);\n    border-bottom: 1px solid rgba(255, 255, 255, 0.3);\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3501\" target=\"_blank\">3501</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-01-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3501\" target=\"_blank\">HPR Community News for December 2021</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3502\" target=\"_blank\">3502</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-01-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3502\" target=\"_blank\">New year Greetings and a short review of my new Juno PC</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0338.html\" target=\"_blank\">Tony Hughes AKA TonyH1212</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3503\" target=\"_blank\">3503</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-01-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3503\" target=\"_blank\">Configuring Mumble</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3504\" target=\"_blank\">3504</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-01-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3504\" target=\"_blank\">James Webb Space Telescope</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3505\" target=\"_blank\">3505</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-01-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3505\" target=\"_blank\">A DX with Hotel Bravo 9 Hotel November Tango</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0288.html\" target=\"_blank\">beni</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3506\" target=\"_blank\">3506</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-01-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3506\" target=\"_blank\">HPR CONTEST 2022 01</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3507\" target=\"_blank\">3507</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-01-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3507\" target=\"_blank\">USB Turntable fix and sound journey</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3508\" target=\"_blank\">3508</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-01-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3508\" target=\"_blank\">Differences between C# and Haskell</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3509\" target=\"_blank\">3509</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-01-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3509\" target=\"_blank\">Linux Inlaws S01E46: The Matrix Project (Without Neo)</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3510\" target=\"_blank\">3510</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-01-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3510\" target=\"_blank\">Syntax, Switches, and Help</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3511\" target=\"_blank\">3511</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-01-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3511\" target=\"_blank\">Podman like Vagrant</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3512\" target=\"_blank\">3512</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-01-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3512\" target=\"_blank\">Auld Acquaintance</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3513\" target=\"_blank\">3513</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-01-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3513\" target=\"_blank\">HB9HNT and PA7KEN on SOTA, Summits on the Air</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0288.html\" target=\"_blank\">beni</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3514\" target=\"_blank\">3514</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-01-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3514\" target=\"_blank\">Hacking Stories: Soft Drink</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3515\" target=\"_blank\">3515</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-01-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3515\" target=\"_blank\">ADB and scrcpy</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3516\" target=\"_blank\">3516</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-01-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3516\" target=\"_blank\">Rant about RX</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3517\" target=\"_blank\">3517</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-01-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3517\" target=\"_blank\">Hp stream laptop with Lubuntu 20.04</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3518\" target=\"_blank\">3518</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-01-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3518\" target=\"_blank\">Linux Inlaws S01E47: BigBlueButton and NAT</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3519\" target=\"_blank\">3519</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-01-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3519\" target=\"_blank\">Rust 101: Episode 2 - Rolling With the Errors</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3520\" target=\"_blank\">3520</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-01-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3520\" target=\"_blank\">Inversion Layer Modes</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3521\" target=\"_blank\">3521</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-01-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3521\" target=\"_blank\">Upgrades to Acer Aspire 5 Slim</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n</table>\n\n<h2>Comments this month</h2>\n\n<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 9 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 4 comments on\n4 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3322#comments\" target=\"_blank\">hpr3322</a></strong>\n(2021-04-27) \"<em>Tune system performance with tuned</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3322#1\" target=\"_blank\">Comment 1</a>:\nWindigo on 2022-01-21:\n\"Lost udev episode\"\n<br/><hr class=\"thin\">I was surprised to hear you say you\'ve never done an episode on udev, because I distinctly remember that episode! You were discussing creating your own udev rules to automatically run tasks upon inserting a USB drive.<br />\n<br />\nIt may be that you\'ve never done an episode on HPR about it; I can\'t find it for the life of me.<br />\n<br />\nEither way, thank you - as always - for the excellent episode. :)\n</li><br/></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3485#comments\" target=\"_blank\">hpr3485</a></strong>\n(2021-12-10) \"<em>50 years since the 1st Edition of Unix was published</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3485#2\" target=\"_blank\">Comment 2</a>:\nwynaut on 2022-01-07:\n\"thanks great show\"\n<br/><hr class=\"thin\">agree with prev comment, listener who just turned 51 :)\n</li><br/></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3496#comments\" target=\"_blank\">hpr3496</a></strong>\n(2021-12-27) \"<em>How I record HPR Episodes</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3496#2\" target=\"_blank\">Comment 2</a>:\nReto on 2022-01-09:\n\"a good idea\"\n<br/><hr class=\"thin\">Hi,<br />\nThank you for this program and the introduction as a podcast.<br />\n<br />\nI just downloaded the .zip from GitLab and while trying the commands, I realize a section with dependencies is missing. I think pip is too large, so, I usually do run it in an virtualenv.<br />\nIn other Phython projects like here: https://github.com/jonaswinkler/paperless-ng/blob/master/requirements.txt you find a requirements.txt. I was wondering if you add one too?<br />\n<br />\nBr,<br />\nReto\n</li><br/></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3498#comments\" target=\"_blank\">hpr3498</a></strong>\n(2021-12-29) \"<em>Linux Inlaws S01E45: The Big Xmas New Year bash with the Grumpies</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3498#1\" target=\"_blank\">Comment 1</a>:\noperat0r on 2022-01-09:\n\"Love this show\"\n<br/><hr class=\"thin\">reminds me a little bit of udev random  podcast. this one had a lot of laughs! You guys are my friends for now. Mine won\'t do anything.. Holidays  are hard for some/most people. Shooting the shit and ranting are my fav podcast eps!<br />\n<br />\nTake care of yourselves! your the only U you have!\n</li><br/></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 5 comments on 5 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3504#comments\" target=\"_blank\">hpr3504</a></strong>\n(2022-01-06) \"<em>James Webb Space Telescope</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3504#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2022-01-06:\n\"Mission control\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3505#comments\" target=\"_blank\">hpr3505</a></strong>\n(2022-01-07) \"<em>A DX with Hotel Bravo 9 Hotel November Tango</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0288.html\" target=\"_blank\">beni</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3505#1\" target=\"_blank\">Comment 1</a>:\nbaffled on 2022-01-11:\n\"Nice show!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3510#comments\" target=\"_blank\">hpr3510</a></strong>\n(2022-01-14) \"<em>Syntax, Switches, and Help</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3510#1\" target=\"_blank\">Comment 1</a>:\nTuula on 2022-01-17:\n\"This brought some memories\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3516#comments\" target=\"_blank\">hpr3516</a></strong>\n(2022-01-24) \"<em>Rant about RX</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3516#1\" target=\"_blank\">Comment 1</a>:\nJanedoc on 2022-01-26:\n\"empathize with you\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3517#comments\" target=\"_blank\">hpr3517</a></strong>\n(2022-01-25) \"<em>Hp stream laptop with Lubuntu 20.04</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3517#1\" target=\"_blank\">Comment 1</a>:\nJesse on 2022-01-25:\n\"Monty Mint phone\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-January/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-January/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"older-hpr-shows-on-archive.org\">Older HPR shows on archive.org</h3>\n<p>This month 120 additional shows in the range 1-870 have been uploaded.</p>\n<p>The number of shows left to upload in this range is now: 124.</p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3227,'2020-12-15','Fresh water Aquarium Basics',1589,'Enigma discusses the high level basics of getting into the aquarium hobby','<p>Enigma discusses the high level basics of getting into the aquarium hobby and what to consider when purchasing your first aquarium.</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.amazon.com/API-FRESHWATER-800-Test-Freshwater-Aquarium/dp/B000255NCI/ref=asc_df_B000255NCI/?tag=hyprod-20&linkCode=df0&hvadid=198072615033&hvpos=&hvnetw=g&hvrand=14659243461056273975&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9012091&hvtargid=pla-348697791053&psc=1\"> API Test kit </a></li>\r\n<li><a href=https://www.walmart.com/ip/Aqua-Culture-10-Gallon-Aquarium-Starter-Kit-With-LED-Lighting/35326017?wmlspartner=wlpa&selectedSellerId=0&wl13=941&&adid=22222222253447309554&wl0=&wl1=g&wl2=c&wl3=469838565059&wl4=aud-1025747331336:pla-319527574754&wl5=9012091&wl6=&wl7=&wl8=&wl9=pla&wl10=8175035&wl11=local&wl12=35326017&wl13=941&veh=sem&wl18=showcase&gclid=Cj0KCQiAkuP9BRCkARIsAKGLE8WOkLhoN56nLuuG29VXdC1NFBMNnhKdRM8lJs-vvP0qnrJYUDVuLNYaAja9EALw_wcB\"> 10 Gallon (38 liter) starter kit </a></li>\r\n</ul>',39,0,1,'CC-BY-SA','Aquariums',0,0,1),
(3229,'2020-12-17','Linux Inlaws S01E19: Redis',4418,'Our two chaps interview Itamar Haber of Redis fame','<p>In this episode our two heroes interview Itamar Haber, community liaison for Redis, a popular open-source\r\nin-memory NoSQL database. Technology prevails in this episode; communism, free love and drugs\r\ntake a backseat (but only for the moment! :-). The trio discuss the legacy of redis, bemoan their old age\r\nand reveal why Itamar initially wanted to be a mermaid. Listen to the episode\r\nfor more shocking epiphanies!</p>\r\n<br/>Shownotes:<br/>\r\n<ul>\r\n<li>Kaypro: <a href=\"https://en.wikipedia.org/wiki/Kaypro\" target=\"_blank\">https://en.wikipedia.org/wiki/Kaypro</a></li>\r\n<li>Salvatore Sanfilippo: <a href=\"https://github.com/antirez\" target=\"_blank\">https://github.com/antirez</a></li>\r\n<li>redis: <a href=\"https://github.com/redis/redis\" target=\"_blank\">https://github.com/redis/redis</a></li>\r\n<li>Redis Labs: <a href=\"https://redislabs.com\" target=\"_blank\">https://redislabs.com</a></li>\r\n<li>Redis Streams: <a href=\"https://redis.io/topics/streams-intro\" target=\"_blank\">https://redis.io/topics/streams-intro</a></li>\r\n<li>Redis Modules: <a href=\"https://redis.io/modules\" target=\"_blank\">https://redis.io/modules</a></li>\r\n<li>Windows: <a href=\"https://bugs.launchpad.net/ubuntu/+bug/1\" target=\"_blank\">https://bugs.launchpad.net/ubuntu/+bug/1</a></li>\r\n<li>WSL 2: <a href=\"https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux#WSL_2\" target=\"_blank\">https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux#WSL_2</a></li>\r\n<li>On the Bro\'d: <a href=\"https://www.mikelacher.com/work/on-the-brod\" target=\"_blank\">https://www.mikelacher.com/work/on-the-brod</a></li>\r\n</ul>\r\n\r\n\r\n',384,111,1,'CC-BY-SA','Redis, mermaids, communism, Israel',0,0,1),
(3239,'2020-12-31','New Community Project Proposal',516,'Enigma discusses a project proposal called Hacker exchange','<p>Enigma discusses a project proposal called Hacker exchange, a proposed content sharing site that would aggregate audio/video and text based tutorials.</p>\r\n<p>Come chat about this project on <code>irc.freenode.net #hackerexchange</code></p>',39,0,1,'CC-BY-SA','hpr, community_projects, ddp, binrev',0,0,1),
(3228,'2020-12-16','YAML basics',2027,'Learn about sequence and mapping in YAML','<p>YAML has two data elements that serve as building blocks for complex data structures: sequences and mappings.</p>\r\n\r\n<h2>Sequence</h2>\r\n\r\n<p>This is a sequence:</p>\r\n\r\n<pre><code>\r\n---\r\n- Emperor\r\n- Gentoo\r\n- Little Blue\r\n</code></pre>\r\n\r\n<h2>Mapping</h2>\r\n\r\n<p>\r\nThis is a mapping:\r\n</p>\r\n\r\n<pre><code>\r\n---\r\nPenguin: Emperor\r\n</code></pre>\r\n\r\n<p>\r\nIn this case, <strong>Penguin</strong> is a <em>key</em> and <strong>Emperor</strong> is a <em>value</em>. This is often called a &#34;key and value pair&#34;, but in YAML it&#39;s just called a mapping.\r\n</p>\r\n\r\n<h2>Combining data blocks</h2>\r\n\r\n<p>\r\nYou can embed these data types into one another. Here is a mapping that has a sequence as its value:\r\n</p>\r\n\r\n<pre><code>\r\n---\r\nPenguin:\r\n  - Emperor\r\n  - Gentoo\r\n  - Little Blue\r\n</code></pre>\r\n\r\n<p>\r\nHere is a sequence of mappings:\r\n</p>\r\n\r\n<pre><code>\r\n---\r\n- Penguin: Emperor\r\n- Penguin: Gentoo\r\n- Penguin: Little Blue\r\n</code></pre>\r\n\r\n<h2>yamllint</h2>\r\n\r\n<p>Use yamllint to detect errors in your YAML. To install:\r\n</p>\r\n\r\n<pre>\r\n<code>\r\n$ pip install yamllint\r\n</code></pre>\r\n\r\n<p>Run it:\r\n</p>\r\n\r\n<pre>\r\n<code>\r\n$ yamllint good.yaml\r\n$ yamllint bad.yaml\r\nbad.yaml\r\n  1:1       warning  missing document start \"---\"  (document-start)\r\n  4:14      error    no new line character at the end of file  (new-line-at-end-of-file)\r\n</code></pre>\r\n\r\n<h2>yaml2json</h2>\r\n\r\n<p>\r\nSometimes it&#39;s useful to convert your YAML to JSON so you can view the data structure in a different way. There are probably dozens of YAML-to-JSON converters out there, but here&#39;s the one I use: <a href=\"https://gitlab.com/slackermedia/yaml2json.git\" target=\"_blank\">https://gitlab.com/slackermedia/yaml2json.git</a>\r\n</p>\r\n\r\n<p>\r\nRun it:\r\n</p>\r\n\r\n<pre><code>\r\n$ cat example.yaml\r\n---\r\npenguins:\r\n  - Gentoo\r\n  - Little Blue\r\n  - Rockhopper\r\ndragons:\r\n  - black\r\n  - white\r\n  - red\r\n$ ~/bin/yaml2json.py example.yaml\r\n{\"penguins\": [\"Gentoo\", \"Little Blue\", \"Rockhopper\"], \"dragons\": [\"black\", \"white\", \"red\"]}\r\n</code></pre>\r\n\r\n<h2>YAML police</h2>\r\n\r\n<p>There are no YAML police. As long as yamllint finds no errors, your YAML is valid and can be parsed by any one of the dozens of YAML libraries out there. However, these YAML libraries aren&#39;t magical, so you must understand the internal logic of your own YAML data. Keep that in mind when devising a scheme for the data you\'re recording.\r\n</p>\r\n\r\n<p>YAML is a great method for creating configuration files, or storing simple data structures, and it\'s essential for Ansible playbooks.</p>\r\n\r\n<p>\r\nEnjoy!\r\n</p>\r\n\r\n',78,25,0,'CC-BY-SA','yaml,data,parse,lint,json',0,0,1),
(3231,'2020-12-21','USB Key',120,'Turn a Thumb drive into a Key to lock/unlock your linux machine.','<p>Script and instruction at<br />\r\n<a href=\"https://james.toebesacademy.com/USBKey.html\" class=\"uri\">https://james.toebesacademy.com/USBKey.html</a></p>\r\n<ul>\r\n<li>Combo of\r\n<ul>\r\n<li>Perl for Installation,</li>\r\n<li><code>ssh-keygen</code> for key exchange.</li>\r\n<li><code>udev</code> for actions</li>\r\n<li><code>bash</code> for locking/unlocking/key checking.</li>\r\n</ul></li>\r\n</ul>\r\n<!-- . -->\r\n<ul>\r\n<li><code>udev</code> add/remove/change events\r\n<ul>\r\n<li>add event does not allow access to drive</li>\r\n<li>change event was not allowing unlock.</li>\r\n</ul></li>\r\n</ul>\r\n<p>Compromise was <em>unlock</em>, then <em>lock</em> if key check fails.</p>\r\n',273,74,0,'CC-BY-SA','security, usb',0,0,1),
(3232,'2020-12-22','Nextcloud',1279,'Nextcloud is easy. You should try it.','<p>I&#39;ve been running NextCloud since it was OwnCloud. In this episode, I encourage other people to install and run NextCloud. It\'s a great way to get out of the Google ecosystem, and it doesn\'t require much to set up or maintain.</p>\r\n\r\n<p>\r\nHere\'s the script I use to update one of the Nextcloud instances I maintain, running on a dirt-cheap VPS slice from Blue Host er something:</p>\r\n\r\n<pre><code>\r\n#/test/before/using/bash\r\n# GNU All-Permissive License\r\n# Copying and distribution of this file, with or without modification,\r\n# are permitted in any medium without royalty provided the copyright\r\n# notice and this notice are preserved.  This file is offered as-is,\r\n# without any warranty.\r\n\r\nif [ \"${1}\" == \"--help\" ]; then\r\n    echo \"usage:\"\r\n    echo \"$0 https://path-to-nextcloud.bz2\"\r\n    echo \"WARNING: You MUST put your Nextcloud instance into maintenance mode first\"\r\n    exit\r\nfi\r\n\r\nset -e\r\n\r\n# get rid of the old Nextcloud tarball from the last time you upgraded\r\ntrash nextcloud*bz2 || true\r\n\r\n# get rid of old backups as long as they are empty of actual data\r\n[[ -e cloud/data ]] &amp;&amp; trash cloud-deleteme\r\n\r\n#download the source tarball\r\nwget \"${1}\"\r\n\r\n#rename old cloud\r\nmv nextcloud cloud-deleteme\r\n\r\n# untar source\r\n# grab your data from old cloud\r\ntar xvf nextcloud*bz2 &amp;&amp; mv cloud-deleteme/data/ nextcloud/\r\n\r\n# copy your config\r\ncp cloud-deleteme/config/config.php nextcloud/config/\r\n\r\n# enter the cloud\r\npushd nextcloud\r\n\r\n# perform upgrade\r\nphp ./occ upgrade\r\n\r\n# leave the cloud\r\npopd\r\n</code></pre>\r\n\r\n<p>\r\nDon\'t use my upgrade script blindly, and please do test first. It works for my setup, but has been tested ONLY on my setup. Also, it doesn\'t put your Nextcloud instance into maintenance mode (probably because I wrote it before I knew Awk...), so you must do that manually.\r\n</p>\r\n\r\n<p>\r\nHappy hacking!\r\n</p>\r\n',78,74,0,'CC-BY-SA','cloud,nextcloud,owncloud,server',0,0,1),
(3233,'2020-12-23','HPR RPG Club reviews Shadowrun 5e',3245,'Cyberpunk + Magic and a fistful of D6','<p>Beni, McNalu, Klaatu, and Philip review the Fifth Edition of the Shadowrun roleplaying game.\r\n</p>\r\n\r\n<p>For more information about Shadowrun, go to <a href=\"https://www.shadowruntabletop.com/\" target=\"_blank\">ShadowrunTabletop.com</a>.\r\n</p>\r\n\r\n<p>\r\nQuickstart rules are <a href=\"https://www.drivethrurpg.com/product/116662/Shadowrun-Fifth-Edition-QuickStart-Rules?affiliate_id=845571\" target=\"_blank\">available for $0 from drivethrurpg.com</a> &#40;this is Klaatu&#39;s affiliate link, granting him some n&#37; of the $0 sale&#41;\r\n</p>\r\n\r\n<p>Finally, you can find lots of great Shadowrun fiction on <a href=\"https://www.drivethrurpg.com/browse.php?affiliate_id=845571?filters=0_0_1700_44501_0\" target=\"_blank\">drivethrurpg.com</a> in EPUB format.\r\n</p>\r\n\r\n',78,95,0,'CC-BY-SA','rpg,cyberpunk,HPR RPG Club',0,0,1),
(3243,'2021-01-06','Pictor - free and open radio astronomy',2854,'Discussion with the people that created the Pictor radio telescope.','<p>In this show I talk with Apostolos and Vasilis who I met at FOSDEM 2020 about the <a href=\"https://pictortelescope.com/\">Pictor radio telescope</a> which they created and now maintain. Using free and open source software and hardware they have made a radio telescope that anyone can operate via a simple web page and which can return results to you within a minute or two. In fact you\'ll hear me get excited during the show when I realise this and submit an observation request, the results of which came back immediately and which you can see below.</p>\r\n<p>To date Pictor has performed 3,500 observations from over 700 users from all around the world. Additionally, the PICTOR web platform is now equipped with a 3.2m antenna, which is about 4 times more sensitive than the previous 1.5m antenna, so users can observe the radio sky for free with an even more sensitive instrument.</p>\r\n<p>On top of that, after 204 hours of integration time and over 3 TB of data, they have produced a Northern Sky Hydrogen (HI) Survey produced with the PICTOR Radio Telescope. This effort actually marks the very first radio-image obtained in Greece, shown here:</p>\r\n<p><em>Pictor all sky images of hydrogen in our galaxy</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3243/hpr3243/img_001.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3243/hpr3243/img_001_thumbnail.png\" alt=\"Pictor all sky images of hydrogen in our galaxy\" /></a></p>\r\n<p>Here are the results of the observation I performed during the show. The body of the email pictor sent back to me confirms the observation I requested:</p>\r\n<pre><code>Your observation has been carried out by PICTOR successfully!\r\nObservation name: mcnalu first try\r\nObservation datetime: 2020-12-08 12:40:09 (UTC+2)\r\nCenter frequency: 1420000000.0 Hz\r\nBandwidth: 2400000 Hz\r\nSample rate: 2400000 samples/sec\r\nNumber of channels: 2048\r\nNumber of bins: 100\r\nObservation duration: 10 sec\r\nObservation ID: 82937104\r\nYour observation&#39;s averaged spectrum, dynamic spectrum (waterfall) and Power vs Time plot are attached in this email as an image.\r\n</code></pre>\r\n<p>And this is the plot attached to that email:</p>\r\n<p><em>Graphs showing raw and corrected radio spectra for mcnalu\'s observation request</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3243/hpr3243/img_002.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3243/hpr3243/img_002_thumbnail.png\" alt=\"Graphs showing raw and corrected radio spectra for mcnalu&#39;s observation request\" /></a></p>\r\n<p>Please do have a go at using Pictor and let us know how you got on by recording an HPR show.</p>\r\n',268,0,0,'CC-BY-SA','science,astronomy,hardware,radio,data',0,0,1),
(3546,'2022-03-07','HPR Community News for February 2022',3665,'Dave, Roan and Ken talk about shows released and comments posted in February 2022','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0402.html\" target=\"_blank\">takov751</a>.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3522\" target=\"_blank\">3522</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-02-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3522\" target=\"_blank\">Set up your Robot Building Lab and build a $0 Robot Platform</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3523\" target=\"_blank\">3523</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-02-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3523\" target=\"_blank\">The Compose key</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3524\" target=\"_blank\">3524</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-02-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3524\" target=\"_blank\">Wheels Addendum - How to Reliably Attach Wheels to PAR Robot Platform</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3525\" target=\"_blank\">3525</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-02-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3525\" target=\"_blank\">Battling with English - part 4</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3526\" target=\"_blank\">3526</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-02-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3526\" target=\"_blank\">HPR Community News for January 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3527\" target=\"_blank\">3527</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-02-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3527\" target=\"_blank\">My gEeeky Experiment - Part 3</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0152.html\" target=\"_blank\">Claudio Miranda</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3528\" target=\"_blank\">3528</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-02-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3528\" target=\"_blank\">Slackware on a netbook</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3529\" target=\"_blank\">3529</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-02-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3529\" target=\"_blank\">Linux Inlaws S01E48: Year Two of the Five Year Plan</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3530\" target=\"_blank\">3530</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-02-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3530\" target=\"_blank\">Filenames and ASCII</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3531\" target=\"_blank\">3531</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-02-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3531\" target=\"_blank\">Barrier: Software KVM</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0215.html\" target=\"_blank\">Windigo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3532\" target=\"_blank\">3532</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-02-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3532\" target=\"_blank\">Self-hosting in small scale E0: Disclaimer and general idea</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0402.html\" target=\"_blank\">takov751</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3533\" target=\"_blank\">3533</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-02-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3533\" target=\"_blank\">Porridge</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3534\" target=\"_blank\">3534</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-02-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3534\" target=\"_blank\">Vernier caliper</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3535\" target=\"_blank\">3535</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-02-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3535\" target=\"_blank\">template Haskell</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3536\" target=\"_blank\">3536</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-02-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3536\" target=\"_blank\">Laptop power problems</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0268.html\" target=\"_blank\">Andrew Conway</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3537\" target=\"_blank\">3537</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-02-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3537\" target=\"_blank\">getting to blinky with flashforth</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0326.html\" target=\"_blank\">Brian in Ohio</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3538\" target=\"_blank\">3538</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-02-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3538\" target=\"_blank\">Installing the Tenacity audio editor</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3539\" target=\"_blank\">3539</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-02-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3539\" target=\"_blank\">Linux Inlaws S01E50: The OpenSUSE Project</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3540\" target=\"_blank\">3540</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-02-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3540\" target=\"_blank\">HSV Components Layer Modes</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3541\" target=\"_blank\">3541</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-02-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3541\" target=\"_blank\">The case of missing ideas.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0398.html\" target=\"_blank\">one_of_spoons</a></td>\n</tr>\n</table>\n\n<h2>Comments this month</h2>\n\n<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 29 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 9 comments on\n7 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2881#comments\" target=\"_blank\">hpr2881</a></strong>\n(2019-08-19) \"<em>Automatically split album into tracks in Audacity</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2881#4\" target=\"_blank\">Comment 4</a>:\nKen Fallon on 2022-02-08:\n\"I knew I heard how to do this somewhere\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3228#comments\" target=\"_blank\">hpr3228</a></strong>\n(2020-12-16) \"<em>YAML basics</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3228#1\" target=\"_blank\">Comment 1</a>:\nWindigo on 2022-02-21:\n\"Exactly what I needed\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3286#comments\" target=\"_blank\">hpr3286</a></strong>\n(2021-03-08) \"<em>Wireguard How To</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0392.html\" target=\"_blank\">timttmy</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3286#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-02-05:\n\"Thanks again\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3286#2\" target=\"_blank\">Comment 2</a>:\ntimttmy on 2022-02-13:\n\"Me too!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3289#comments\" target=\"_blank\">hpr3289</a></strong>\n(2021-03-11) \"<em>NextCloud the hard way</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3289#2\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2022-02-05:\n\"Wasting shows\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3315#comments\" target=\"_blank\">hpr3315</a></strong>\n(2021-04-16) \"<em>tesseract optical character recognition</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3315#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-02-13:\n\"Yet another one\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3472#comments\" target=\"_blank\">hpr3472</a></strong>\n(2021-11-23) \"<em>consuming an AQI API</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3472#2\" target=\"_blank\">Comment 2</a>:\nStache_AF on 2022-02-17:\n\"Thank you\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3504#comments\" target=\"_blank\">hpr3504</a></strong>\n(2022-01-06) \"<em>James Webb Space Telescope</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3504#2\" target=\"_blank\">Comment 2</a>:\nclacke on 2022-02-03:\n\"How L2 works\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3504#3\" target=\"_blank\">Comment 3</a>:\nclacke on 2022-02-03:\n\"Re: centrifugal force\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 20 comments on 10 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3523#comments\" target=\"_blank\">hpr3523</a></strong>\n(2022-02-02) \"<em>The Compose key</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3523#1\" target=\"_blank\">Comment 1</a>:\nLinuxMintXFCE on 2022-02-21:\n\"Compose\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3525#comments\" target=\"_blank\">hpr3525</a></strong>\n(2022-02-04) \"<em>Battling with English - part 4</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3525#1\" target=\"_blank\">Comment 1</a>:\nXoke on 2022-02-04:\n\"Multiple words in a row\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3525#2\" target=\"_blank\">Comment 2</a>:\nDave Morriss on 2022-02-08:\n\"Where Jones had had \"had\" ...\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3525#3\" target=\"_blank\">Comment 3</a>:\ndnt on 2022-02-10:\n\"processes\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3525#4\" target=\"_blank\">Comment 4</a>:\nwynaut on 2022-02-10:\n\"thanks!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3525#5\" target=\"_blank\">Comment 5</a>:\nDave Morriss on 2022-02-11:\n\"Re: processes\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3525#6\" target=\"_blank\">Comment 6</a>:\nDave Morriss on 2022-02-11:\n\"Hope you find the episodes useful, wynaut\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3526#comments\" target=\"_blank\">hpr3526</a></strong>\n(2022-02-07) \"<em>HPR Community News for January 2022</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3526#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2022-02-16:\n\"Comments\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3527#comments\" target=\"_blank\">hpr3527</a></strong>\n(2022-02-08) \"<em>My gEeeky Experiment - Part 3</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0152.html\" target=\"_blank\">Claudio Miranda</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3527#1\" target=\"_blank\">Comment 1</a>:\nWindigo on 2022-02-15:\n\"PATA and Netbooks\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3527#2\" target=\"_blank\">Comment 2</a>:\nClaudioM on 2022-02-21:\n\"Re; PATA and Netbooks\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3531#comments\" target=\"_blank\">hpr3531</a></strong>\n(2022-02-14) \"<em>Barrier: Software KVM</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0215.html\" target=\"_blank\">Windigo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3531#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2022-02-16:\n\"Old school KVMs\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3533#comments\" target=\"_blank\">hpr3533</a></strong>\n(2022-02-16) \"<em>Porridge</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3533#1\" target=\"_blank\">Comment 1</a>:\nTuula on 2022-02-16:\n\"interesting\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3533#2\" target=\"_blank\">Comment 2</a>:\nTrey on 2022-02-16:\n\"Steel Cut Oats\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3533#3\" target=\"_blank\">Comment 3</a>:\nDave Morriss on 2022-02-16:\n\"Great show topic, excellent show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3534#comments\" target=\"_blank\">hpr3534</a></strong>\n(2022-02-17) \"<em>Vernier caliper</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3534#1\" target=\"_blank\">Comment 1</a>:\nAaronb on 2022-02-18:\n\"At 66 Years old. . . .\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3534#2\" target=\"_blank\">Comment 2</a>:\nAaronb on 2022-02-18:\n\"sorry forgot the Link\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3536#comments\" target=\"_blank\">hpr3536</a></strong>\n(2022-02-21) \"<em>Laptop power problems</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0268.html\" target=\"_blank\">Andrew Conway</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3536#1\" target=\"_blank\">Comment 1</a>:\nZen_floater2 on 2022-02-22:\n\"I have the Google GO pro chromebook, had the same problems\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3538#comments\" target=\"_blank\">hpr3538</a></strong>\n(2022-02-23) \"<em>Installing the Tenacity audio editor</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3538#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-02-08:\n\"How to run it\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3538#2\" target=\"_blank\">Comment 2</a>:\nRandom_Linux_User on 2022-02-27:\n\"Re hpr3538 :: Installing the Tenacity audio editor\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3541#comments\" target=\"_blank\">hpr3541</a></strong>\n(2022-02-28) \"<em>The case of missing ideas.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0398.html\" target=\"_blank\">one_of_spoons</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3541#1\" target=\"_blank\">Comment 1</a>:\npublius on 2022-02-28:\n\"\"Have\" constructions\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-February/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-February/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"older-hpr-shows-on-archive.org\">Older HPR shows on archive.org</h3>\n<p>This month 120 additional shows in the range 1-870 have been uploaded.</p>\n<p>The number of shows left to upload in this range is now: 4.</p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3234,'2020-12-24','Apple products I have owned',1397,'I talk about Apple products that I have owned over the years','<ul>\r\n<li>30\" Apple Cinema Display 2560x1600</li>\r\n<li>160 GB iPod Classic</li>\r\n<li>IPad 3</li>\r\n<li>Mac Pro 1.1</li>\r\n<li>iPhone 4s</li>\r\n</ul>',297,0,0,'CC-BY-SA','apple, technology, Mac, OS X,iOS',0,0,1),
(3242,'2021-01-05','The eternal battle over how to run your chromebook is about to begin',8865,'Squirrel VS ALIEN Chromebook discussions','<p>As usual, I have botched up the show notes where they make absolutely no sense and I fully expect the ENTIRE HUMAN COMMUNITY from HPR to attack me endlessly over my incompetence. They just keep forgetting that I\'m a squirrel who lives in a magical forrest and not a human being and therefore does terrible show notes,</p>\r\n<p>There were so many issues brought up about chromebooks and chromiumOS that I could not prepare a detailed list of them all.</p>\r\n<p>This ENTIRE conversation was derived from the work found on GNU WORLD ORDER episode 383 for which you will find his show notes AS::: <a href=\"https://gnuworldorder.info/\" class=\"uri\">https://gnuworldorder.info/</a> \"Linux, Flatpaks, Android apps, and ChromiumOS on a Lenovo Chromebook.\"</p>\r\n<p>Now, if you don\'t like my show notes and you do like this aliens show notes, then may I suggest your anti-squirrel and you need to be sent to a de-programming camp for rehabilitation.</p>\r\n<p>Remember, squirrels represent planet earth.</p>\r\n',377,0,1,'CC-BY-SA','chromebooks,chromiumOS,Opensource,Freesoftware,cloud computing',0,0,1),
(3236,'2020-12-28','The State of Linux Audio Apps in 2020',3101,'Patrick Davila and Claudio Miranda discuss the current state of Linux Audio Application in 2020','<p>Pat and Claudio discuss the current state of Linux audio applications in 2020. The primary focus is applications to create music. We discuss Linux sound servers (Pulse, ALSA and Jack). Software synthesizers available in Linux. Midi, sequencers and drum machines. Digital Audio Workstation applications. Impulse Responses for guitar and bass speaker emulation. Commercial vendors that support the Linux platform. Music equipment vendors that use Linux as the basis of their products.</p>\r\n\r\n<p>\r\n<br>\r\nThis page has been around for years.  Some links might be stale or dead.<br>\r\n<a href=\"https://linux-sound.org/\" target=\"_blank\">https://linux-sound.org/</a><br>\r\n<br>\r\nSome of the sound fonts I\'ve used:<br>\r\n<a href=\"https://midkar.com/soundfonts/\" target=\"_blank\">https://midkar.com/soundfonts/</a><br>\r\n<a href=\"https://www.pvv.org/~hammer\" target=\"_blank\">https://www.pvv.org/~hammer</a><br>\r\n<a href=\"https://www.michaelpichermusic.com/sample-libraries\" target=\"_blank\">https://www.michaelpichermusic.com/sample-libraries</a><br>\r\n<br>\r\nMIDI/Music software discussed:<br>\r\nJACK (JACK Audio Connection Kit)<br>\r\n<a href=\"https://jackaudio.org/\" target=\"_blank\">https://jackaudio.org/</a><br>\r\nQtractor<br>\r\n<a href=\"https://qtractor.sourceforge.io/\" target=\"_blank\">https://qtractor.sourceforge.io/</a><br>\r\nArdour<br>\r\n<a href=\"https://ardour.org/\" target=\"_blank\">https://ardour.org/</a><br>\r\nReaper<br>\r\n<a href=\"https://www.reaper.fm/index.php\" target=\"_blank\">https://www.reaper.fm/index.php</a><br>\r\nCarla<br>\r\n<a href=\"https://kx.studio/Applications:Carla\" target=\"_blank\">https://kx.studio/Applications:Carla</a><br>\r\nDuality Bass <br>\r\n<a href=\"https://audio-assault.com/duality.php\" target=\"_blank\">https://audio-assault.com/duality.php</a><br>\r\n<br>\r\nMy Soundcloud page.<br>\r\n<a href=\"https://www.soundcloud.com/claudiom72\" target=\"_blank\">https://www.soundcloud.com/claudiom72</a><br>\r\n<br>\r\nOpen source synthesizers:<br>\r\n<a href=\"https://www.moddevices.com/\" target=\"_blank\">https://www.moddevices.com/</a><br>\r\n<a href=\"https://www.linuxsynths.com/\" target=\"_blank\">https://www.linuxsynths.com/</a><br>\r\n<a href=\"https://en.wikipedia.org/wiki/Korg_OASYS\" target=\"_blank\">https://en.wikipedia.org/wiki/Korg_OASYS</a> (Finally found that hardware Linux-based synth.)<br>\r\n<a href=\"https://synthesia.sourceforge.net/\" target=\"_blank\">https://synthesia.sourceforge.net/</a><br>\r\n<a href=\"https://zynthian.org/\" target=\"_blank\">https://zynthian.org/</a> (Don\'t remember if this was mentioned, but here it is. :-p)<br>\r\n<br>\r\nPipewire<br>\r\n<a href=\"https://pipewire.org/\" target=\"_blank\">https://pipewire.org/</a><br>\r\n<br>\r\nunfa<br>\r\n<a href=\"https://www.youtube.com/channel/UCAYKj_peyESIMDp5LtHlH2A\" target=\"_blank\">https://www.youtube.com/channel/UCAYKj_peyESIMDp5LtHlH2A</a>\r\n</p>',11,0,0,'CC-BY-SA','Audio, music, recording, DAW, Ardour, Jack, Pulse, ALSA, Hydrogen, Odin2, Qtractor, Carla, VST',0,0,1),
(3238,'2020-12-30','Linux Inlaws S01E20: The Xmas and New Year Special',5978,'An episode on the past, present and future not just on FOSS - all will be explained','<ul>\r\n<li>LinuxOne: <a href=\"https://developer.ibm.com/components/ibm-linuxone/gettingstarted\" target=\"_blank\">https://developer.ibm.com/components/ibm-linuxone/gettingstarted</a></li>\r\n<li>IBM quantum computing: <a href=\"https://www.ibm.com/quantum-computing\" target=\"_blank\">https://www.ibm.com/quantum-computing</a></li>\r\n<li>redis on LinuxOne(in German): <a href=\"https://chemnitzer.linux-tage.de/2019/en/programm/beitrag/206\" target=\"_blank\">https://chemnitzer.linux-tage.de/2019/en/programm/beitrag/206</a></li>\r\n<li>Ask IBM: <a href=\"https://www.ibm.com/blogs/cloud-computing/2015/01/13/hello-watson-ask-anything\" target=\"_blank\">https://www.ibm.com/blogs/cloud-computing/2015/01/13/hello-watson-ask-anything</a></li>\r\n<li>Jeff Bezo\'s real name: <a href=\"https://en.wikipedia.org/wiki/Jeff_Bezos\" target=\"_blank\">https://en.wikipedia.org/wiki/Jeff_Bezos</a></li>\r\n<li>Jeff Bezo\'s divorce: <a href=\"https://www.bloomberg.com/news/articles/2019-07-05/bezos-split-finalizes-as-38-billion-amazon-stake-transfer-looms\" target=\"_blank\">https://www.bloomberg.com/news/articles/2019-07-05/bezos-split-finalizes-as-38-billion-amazon-stake-transfer-looms</a></li>\r\n<li>French protests: <a href=\"https://www.politico.eu/article/spotlight-falls-on-amazon-as-french-businesses-are-restricted-by-lockdown-rules/\" target=\"_blank\">https://www.politico.eu/article/spotlight-falls-on-amazon-as-french-businesses-are-restricted-by-lockdown-rules/</a></li>\r\n<li>2001: A Space Odyssee: <a href=\"https://www.imdb.com/title/tt0062622\" target=\"_blank\">https://www.imdb.com/title/tt0062622</a></li>\r\n<li>OpenAI: <a href=\"https://openai.com\" target=\"_blank\">https://openai.com</a></li>\r\n<li>GPT3: <a href=\"https://en.wikipedia.org/wiki/GPT-3\" target=\"_blank\">https://en.wikipedia.org/wiki/GPT-3</a></li>\r\n<li>ARM Jazelle: <a href=\"https://en.wikipedia.org/wiki/Jazelle\" target=\"_blank\">https://en.wikipedia.org/wiki/Jazelle</a></li>\r\n<li>ARM ThumbEE: <a href=\"https://en.wikipedia.org/wiki/ARM_architecture#Thumb_Execution_Environment_(ThumbEE)\" target=\"_blank\">https://en.wikipedia.org/wiki/ARM_architecture#Thumb_Execution_Environment_(ThumbEE)</a></li>\r\n<li>TIOBE programming language index: <a href=\"https://www.tiobe.com/tiobe-index\" target=\"_blank\">https://www.tiobe.com/tiobe-index</a></li>\r\n<li>Commons Clause and Redis Source Available License: <a href=\"https://redislabs.com/blog/redis-labs-modules-license-changes\" target=\"_blank\">https://redislabs.com/blog/redis-labs-modules-license-changes</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','past, present, future, artificial intelligence, b-sides, ibm, microsoft, you fill in the rest',0,0,1),
(3237,'2020-12-29','Cloning a Hard Drive with Clonezilla',1057,'I had some hard drive failures recently and am getting back to the habit of cloning for backups.','<p>I sneak back into the HPR community with an episode about cloning the hard drive on my laptop for a backup after some recent catastrophic drive failures.</p>\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n	<li><a href=\"https://clonezilla.org/\">Clonezilla</a>: The Free and Open Source Software for Disk Imaging and Cloning</li>\r\n	<li><a href=\"https://smile.amazon.com/s?k=hard+drive+adapter+cable+to+usb&crid=3MFREZT2Q9UY9&sprefix=hard+drive+ada%2Caps%2C198&ref=nb_sb_ss_ts-a-p_2_14\">Hard drive adapters at Amazon</a></li>\r\n</ul>\r\n\r\n<h2>Credits</h2>\r\n\r\n<ul>\r\n	<li>Music bumpers are from Kimiko Ishizaka\'s <em>Libre Art of Fugue</em>: <a href=\"https://www.opengoldbergvariations.org/\">https://music.kimiko-piano.com/album/j-s-bach-the-art-of-the-fugue-kunst-der-fuge-bwv-1080</a>, used by permission of their <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0 1.0 Universal (CC0 1.0) Public Domain Dedication license</a>.</li>\r\n</ul>\r\n',238,0,0,'CC-BY-SA','clonezilla, backups, hard drives, cloning',0,0,1),
(3244,'2021-01-07','Interview with Anco Scholte ter Horst CEO of Freedom Internet',4223,'Could there be an ISP that wants free and open internet, for privacy, security and quality ?','<p>\r\nIn this interview with Anco Scholte ter Horst, CEO Freedom Internet, we discuss the history of Internet in the Netherlands. How inspired by the work as XS4All, a new ISP was founded with privacy, security and quality at its core.\r\n</p>\r\n<p>\r\nFrom: <a href=\"https://en.wikipedia.org/wiki/XS4ALL\">https://en.wikipedia.org/wiki/XS4ALL</a>\r\n</p>\r\n<p>\r\nXS4ALL was sold to KPN in December 1998, but remained an independent subsidiary. In January 2019, KPN announced that it would eventually phase out the XS4ALL brand and continue operations under the KPN brand. A petition and a special action commission was started to try to revert this decision, the petition has been signed over 50,000 times, signatories include ex-board members and founders of XS4ALL. In November 2019 the committee launched a new company named Freedom Internet, meant to serve as an ideological successor to XS4ALL, and supported by a crowdfunding action that raised 2.5 million euro. Freedom Internet initially offers e-mail hosting, and is meant to roll out its first DSL connections in early 2020.\r\n</p>\r\n<ul>\r\n<li><a href=\"https://www.linkedin.com/in/anco-scholte-ter-horst-5309171/\">https://www.linkedin.com/in/anco-scholte-ter-horst-5309171/</a></li>\r\n<li><a href=\"https://opennebula.io/\">https://opennebula.io/</a></li>\r\n<li><a href=\"https://internet.nl/\">https://internet.nl/</a></li>\r\n<li><a href=\"https://nl.wikipedia.org/wiki/Freedom_Internet\">https://nl.wikipedia.org/wiki/Freedom_Internet</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/XS4ALL\">https://en.wikipedia.org/wiki/XS4ALL</a></li>\r\n<li><a href=\"https://www.bit.nl/\">https://www.bit.nl/</a></li>\r\n</ul>\r\n',30,78,0,'CC-BY-SA','Freedom.nl,xs4all,ISP,crowdfunding',0,0,1),
(3275,'2021-02-19','D1 Mini Close Lid to Scan',430,'Use a Wemos to monitor if the lid is open or closed on a network scanner.','<h1 id=\"wemos-close-to-scan\">wemos-close-to-scan</h1>\r\n<p>Use a Wemos to monitor if the lid is open or closed on a network scanner.</p>\r\n<ul>\r\n<li><a href=\"https://github.com/kenfallon/wemos-close-to-scan\">https://github.com/kenfallon/wemos-close-to-scan</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3275\">https://hackerpublicradio.org/eps.php?id=3275</a></li>\r\n</ul>\r\n<h2 id=\"history\">History</h2>\r\n<p>In episode <a href=\"https://hackerpublicradio.org/eps.php?id=2430\">hpr2430 :: Scanning books</a>, I had a bash file trigger a network scan. This required two steps, one to close the lid and the next to press a key for <a href=\"scantoimage.bash\">scantoimage.bash</a> to trigger the next page of the scan.</p>\r\n<p>In the intervening time I looked at several solutions to improve this situation.</p>\r\n<p>The most obvious step was to put a magnetic switch on the scanner lid so that a device could detect the lid been closed.</p>\r\n<p>I tried a Raspberry PI but my scanner drivers are only available for Intel and not Arm. Then then accessing the pi using Remote GPIO, but it got very complex to setup and run.</p>\r\n<p>Inspired by <a href=\"https://hackerpublicradio.org/eps.php?id=3077\">hpr3077 :: Video conference Push to Talk</a> Hosted by DanNixon on 2020-05-19, I tried using an arduino talking over serial to a Intel Compute Stick. But that was very flakey.</p>\r\n<h2 id=\"hardware\">Hardware</h2>\r\n<p>Finally I settled on using a <a href=\"https://www.wemos.cc/en/latest/d1/d1_mini.html\">Clone of LOLIN D1 mini</a>, and some Reed Contacts.</p>\r\n<ul>\r\n<li><a href=\"https://www.amazon.co.uk/gp/product/B071S8MWTY\">Makerfire D1 Mini NodeMcu 4M Bytes Lua WIFI Development Board Base on ESP8266 ESP-12F N Compatible NodeMcu Arduino</a></li>\r\n<li><a href=\"https://www.digikey.com/en/products/detail/zf-electronics/MP201801/361987\">https://www.digikey.com/en/products/detail/zf-electronics/MP201801/361987</a></li>\r\n<li><a href=\"https://switches-sensors.zf.com/us/product/magnetic-position-sensor-mp2018/\">https://switches-sensors.zf.com/us/product/magnetic-position-sensor-mp2018/</a></li>\r\n<li><a href=\"https://www.conrad.nl/p/zf-mp201801-reedcontact-1x-no-175-vdc-175-vac-500-ma-10-w-276124\">ZF MP201801 Reedcontact 1x NO 175 V/DC, 175 V/AC 500 mA 10 W</a></li>\r\n<li><a href=\"https://www.conrad.nl/p/zf-as201801-bedienmagneet-voor-reedcontact-276116\">ZF AS201801 Bedienmagneet voor reedcontact</a><br /></li>\r\n</ul>\r\n<h2 id=\"wiring\">Wiring</h2>\r\n<p>Wire one end of the reed contact to 3.3v, and the other end to ground via a 10K resistor.</p>\r\n<p>Have a sensor wire go from the 10K resistor to pin D5 on the D1 Mini.</p>\r\n<p><img src=\"eps/hpr3275/circuitdiagram.png\" title=\"Circuit Diagram\" alt=\"circuitdiagram\" /></p>\r\n<p><img src=\"eps/hpr3275/breadboard.png\" title=\"Breadboard\" alt=\"breadboard\" /></p>\r\n<p><img src=\"eps/hpr3275/photo.png\" title=\"Photo\" alt=\"photo\" /></p>\r\n<h2 id=\"code\">Code</h2>\r\n<h3 id=\"d1-mini\">D1 Mini</h3>\r\n<p>See <a href=\"eps/hpr3275/wemos-close-to-scan.ino\">wemos-close-to-scan.ino</a></p>\r\n<h3 id=\"laptop\">Laptop</h3>\r\n<p>See <a href=\"eps/hpr3275/wemos-scantoimage.bash\">wemos-scantoimage.bash</a></p>\r\n<h1 id=\"operation\">Operation</h1>\r\n<ol>\r\n<li>Plug in D1 Mini and monitor the serial port to get its IP Address.</li>\r\n<li>Change the <code>server=\"YOUR-WEMOS-IP-ADDRESS\"</code> in <a href=\"eps/hpr3275/wemos-scantoimage.bash\">wemos-scantoimage.bash</a> to the ip address.</li>\r\n<li>Change the <code>image_path=\"/PATH/TO/YOUR/SCANS/\"</code> in <a href=\"eps/hpr3275/wemos-scantoimage.bash\">wemos-scantoimage.bash</a> to where your want the files saved.</li>\r\n<li>Close scanner and scan.</li>\r\n</ol>\r\n',30,57,0,'CC-BY-SA','Wemos, D1 Mini, network scan',0,0,1),
(3289,'2021-03-11','NextCloud the hard way',1933,'A private NextCloud instance on a Pi 4x8, with lets encrypt and wireguard vpn access','<h1 id=\"nextcloud\">NextCloud</h1>\r\n<p>I want to install NextCloud for my family, but <strong>only</strong> for my family. This means making things hard for myself by installing it behind my firewall with a private nat ipaddress. That presented problems with getting a valid <a href=\"https://letsencrypt.org/\">Let\'s encrypt</a> cert.</p>\r\n<p>It all now works, and thanks to timttmy I was able to get the WireGuard VPN installed and working.</p>\r\n<h2 id=\"pi-4\">Pi 4</h2>\r\n<p>Get a Pi, and a SSD, enable it. You should review <a href=\"https://jamesachambers.com/raspberry-pi-4-usb-boot-config-guide-for-ssd-flash-drives/\">Raspberry Pi 4 USB Boot Config Guide for SSD / Flash Drives</a>, for issues with SSD drives and the Raspberry Pi.</p>\r\n<p>You can install Raspbian as normal. I already covered this in <a href=\"https://hackerpublicradio.org/eps.php?id=2356\">hpr2356 :: Safely enabling ssh in the default Raspbian Image</a>, and <a href=\"https://github.com/kenfallon/fix-ssh-on-pi\">Safely enabling ssh in the default Raspberry Pi OS (previously called Raspbian) Image</a>.</p>\r\n<p>And then follow the instructions in <a href=\"https://www.tomshardware.com/how-to/boot-raspberry-pi-4-usb\">How to Boot Raspberry Pi 4 From a USB SSD or Flash Drive</a>.</p>\r\n<h2 id=\"next-cloud\">Next Cloud</h2>\r\n<p>Install Apache, MariaDB, and PHP</p>\r\n<ul>\r\n<li><a href=\"https://www.techrepublic.com/article/how-to-install-nextcloud-20-on-ubuntu-server-20-04/\">How to install Nextcloud 20 on Ubuntu Server 20.04</a></li>\r\n<li><a href=\"https://docs.nextcloud.com/server/20/admin_manual/installation/source_installation.html\">NextCloud - Installation and server configuration - Installation on Linux</a></li>\r\n<li><a href=\"https://nextcloud.com/install/#instructions-server\">Download NextCloud</a></li>\r\n</ul>\r\n<pre><code># diff /etc/apache2/apache2.conf /etc/apache2/apache2.conf.orig\r\n171,172c171,172\r\n&lt;       Options FollowSymLinks\r\n&lt;       AllowOverride All\r\n---\r\n&gt;       Options Indexes FollowSymLinks\r\n&gt;       AllowOverride None</code></pre>\r\n<h3 id=\"install-phpmyadmin\">Install PHPMyAdmin</h3>\r\n<ul>\r\n<li><a href=\"https://pimylifeup.com/raspberry-pi-phpmyadmin/\">How to Install PHPMyAdmin on the Raspberry Pi</a></li>\r\n</ul>\r\n<h3 id=\"required-changes-to-nextcloud-config.\">Required Changes to nextcloud config.</h3>\r\n<pre><code>root@nextcloud:~# diff /root/nextcloud-config.php.orig /var/www/html/nextcloud/config/config.php \r\n&gt;     1 =&gt; &#39;nextcloud&#39;,\r\n&gt;     2 =&gt; &#39;192.168.123.123&#39;,\r\n&gt;     3 =&gt; &#39;nextcloud.example.com&#39;,\r\n&gt;   &#39;memcache.local&#39; =&gt; &#39;\\OC\\Memcache\\APCu&#39;,</code></pre>\r\n<pre><code># diff /etc/apache2/sites-available/000-default.conf.orig /etc/apache2/sites-enabled/000-default.conf\r\n28a29,32\r\n&gt;         RewriteEngine On\r\n&gt;         RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]\r\n&gt;       Redirect 301 /.well-known/carddav /var/www/html/nextcloud/remote.php/dav\r\n&gt;       Redirect 301 /.well-known/caldav /var/www/html/nextcloud/remote.php/dav</code></pre>\r\n<h3 id=\"required-changes-to-php.ini-config.\">Required Changes to <code>php.ini</code> config.</h3>\r\n<pre><code>root@nextcloud:~# diff /etc/php/7.3/apache2/php.ini.orig /etc/php/7.3/apache2/php.ini\r\n401c401\r\n&lt; memory_limit = 128M\r\n---\r\n&gt; memory_limit = 2000M\r\n689c689\r\n&lt; post_max_size = 8M\r\n---\r\n&gt; post_max_size = 2048M\r\n841c841\r\n&lt; upload_max_filesize = 2M\r\n---\r\n&gt; upload_max_filesize = 2048M</code></pre>\r\n<h3 id=\"upgrade\">Upgrade</h3>\r\n<p>You can upgrade using the procedure described by <a href=\"https://hackerpublicradio.org/correspondents/0078.html\">klaatu</a> in <a href=\"https://hackerpublicradio.org/eps.php?id=3232\">hpr3232 :: Nextcloud</a>, or as admin via the UI <code>https://nextcloud.example.com/nextcloud/index.php/settings/user</code>, Administration, Overview.</p>\r\n<p>You will see a lot of <a href=\"https://docs.nextcloud.com/server/12/admin_manual/configuration_server/security_setup_warnings.html\">Warnings on Admin Page</a>, but don\'t panic. The server is not accessible on the Internet after all.</p>\r\n<p>The errors have links to how you can fix them and some are very easy to do.</p>\r\n<p>I got an error \"Error occurred while checking server setup\". I used this <a href=\"https://help.nextcloud.com/t/solved-12-0-2-to-12-0-3-update-failes-at-create-backup/21490\">tip</a> to move root owned files out of next cloud dir.</p>\r\n<p>For me it was mostly about enabling caching via <a href=\"https://docs.nextcloud.com/server/12/admin_manual/configuration_server/caching_configuration.html#id1\">APCU</a>, and enabling <a href=\"https://docs.nextcloud.com/server/12/admin_manual/configuration_server/security_setup_warnings.html#you-are-accessing-this-site-via-http\">You are accessing this site via HTTP</a>.</p>\r\n<p>The first is fixed in the <code>nextcloud/config/config.php</code> page, the next is fixed by installing a valid SSL cert from Let\'s Encrypt.</p>\r\n<h2 id=\"ssl-lets-encrypt\">SSL Let\'s Encrypt</h2>\r\n<p>Based on the following article I installed it manually.</p>\r\n<p><a href=\"https://code.luasoftware.com/tutorials/lets-encrypt/obtain-lets-encrypt-ssl-using-manual-dns-verification/\">Obtain Let\'s Encrypt SSL Certificate Using Manual DNS Verification</a></p>\r\n<h3 id=\"install-certbot\">Install certbot</h3>\r\n<pre><code># apt install certbot</code></pre>\r\n<p>Then run the script manually specifying that the challenge should be over dns.</p>\r\n<pre><code># certbot certonly --manual --preferred-challenges dns \r\nSaving debug log to /var/log/letsencrypt/letsencrypt.log\r\nPlugins selected: Authenticator manual, Installer None\r\nEnter email address (used for urgent renewal and security notices) (Enter &#39;c&#39; to\r\ncancel): letsencrypt@example.com\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nPlease read the Terms of Service at\r\nhttps://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must\r\nagree in order to register with the ACME server at\r\nhttps://acme-v02.api.letsencrypt.org/directory\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n(A)gree/(C)ancel: A\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nWould you be willing to share your email address with the Electronic Frontier\r\nFoundation, a founding partner of the Let&#39;s Encrypt project and the non-profit\r\norganization that develops Certbot? We&#39;d like to send you email about our work\r\nencrypting the web, EFF news, campaigns, and ways to support digital freedom.\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n(Y)es/(N)o: n\r\nPlease enter in your domain name(s) (comma and/or space separated)  (Enter &#39;c&#39;\r\nto cancel): nextcloud.example.com\r\nObtaining a new certificate\r\nPerforming the following challenges:\r\ndns-01 challenge for nextcloud.example.com\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nNOTE: The IP of this machine will be publicly logged as having requested this\r\ncertificate. If you&#39;re running certbot in manual mode on a machine that is not\r\nyour server, please ensure you&#39;re okay with that.\r\n\r\nAre you OK with your IP being logged?\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n(Y)es/(N)o: y\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nPlease deploy a DNS TXT record under the name\r\n_acme-challenge.nextcloud.example.com with the following value:\r\n\r\n0c5dbJpS5t0VKzglhdfFhZ6CGmZlLHNaNnAQe2VeJyKi\r\n\r\nBefore continuing, verify the record is deployed.\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nPress Enter to Continue</code></pre>\r\n<p>It was at this point I went to my hosting companys page and created a subdomain called <code>nextcloud</code>. Then I added a <code>TXT</code> record called <code>_acme-challenge</code> with the text <code>0c5dbJpS5t0VKzglhdfFhZ6CGmZlLHNaNnAQe2VeJyKi</code>.</p>\r\n<p>In order to verify that we use the command:</p>\r\n<pre><code># apt-get install -y dnsutils\r\n\r\n$ dig -t TXT _acme-challenge.nextcloud.example.com\r\n\r\n; &lt;&lt;&gt;&gt; DiG 9.11.5-P4-5.1+deb10u2-Debian &lt;&lt;&gt;&gt; -t TXT _acme-challenge.nextcloud.example.com\r\n;; global options: +cmd\r\n;; Got answer:\r\n;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 39298\r\n;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1\r\n\r\n;; OPT PSEUDOSECTION:\r\n; EDNS: version: 0, flags:; udp: 4096\r\n;; QUESTION SECTION:\r\n;_acme-challenge.nextcloud.example.com. IN TXT\r\n\r\n;; ANSWER SECTION:\r\n_acme-challenge.nextcloud.example.com. 3600 IN TXT &quot;0c5dbJpS5t0VKzglhdfFhZ6CGmZlLHNaNnAQe2VeJyKi&quot;\r\n\r\n;; Query time: 7 msec\r\n;; SERVER: 178.21.112.12#53(178.21.112.12)\r\n;; WHEN: Thu Dec 10 16:27:53 CET 2020\r\n;; MSG SIZE  rcvd: 121\r\n</code></pre>\r\n<p>Now that the answer section is correct we can continue with the <code>certbot</code> script.</p>\r\n<pre><code>Waiting for verification...\r\nCleaning up challenges\r\n\r\nIMPORTANT NOTES:\r\n - Congratulations! Your certificate and chain have been saved at:\r\n   /etc/letsencrypt/live/nextcloud.example.com/fullchain.pem\r\n   Your key file has been saved at:\r\n   /etc/letsencrypt/live/nextcloud.example.com/privkey.pem\r\n   Your cert will expire on 2021-03-10. To obtain a new or tweaked\r\n   version of this certificate in the future, simply run certbot\r\n   again. To non-interactively renew *all* of your certificates, run\r\n   &quot;certbot renew&quot;\r\n - If you like Certbot, please consider supporting our work by:\r\n\r\n   Donating to ISRG / Let&#39;s Encrypt:   https://letsencrypt.org/donate\r\n   Donating to EFF:                    https://eff.org/donate-le</code></pre>\r\n<h3 id=\"renew\">Renew</h3>\r\n<p>Unfortunately the renew is not automatic. <a href=\"https://webmasters.stackexchange.com/questions/116316/could-not-renew-letsencrypt-certificate-error-the-manual-plugin-is-not-working\">\"You don\'t have to renew Certificate with\"renew\" option. You have to run the same command you ran for Certificate creation.\"</a></p>\r\n<p>So I just set up a 3 monthly recurring reminder in NextCloud to do this.</p>\r\n<h3 id=\"delete\">Delete</h3>\r\n<p>If you need to delete the cert you can do it as follows.</p>\r\n<pre><code>root@nextcloud:~# certbot certificates\r\nSaving debug log to /var/log/letsencrypt/letsencrypt.log\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nFound the following certs:\r\n  Certificate Name: nextcloud.example.com\r\n    Domains: nextcloud.example.com\r\n    Expiry Date: 2021-03-10 14:28:07+00:00 (VALID: 89 days)\r\n    Certificate Path: /etc/letsencrypt/live/nextcloud.example.com/fullchain.pem\r\n    Private Key Path: /etc/letsencrypt/live/nextcloud.example.com/privkey.pem\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nroot@nextcloud:~# certbot delete\r\nSaving debug log to /var/log/letsencrypt/letsencrypt.log\r\n\r\nWhich certificate(s) would you like to delete?\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n1: nextcloud.example.com\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nSelect the appropriate numbers separated by commas and/or spaces, or leave input\r\nblank to select all options shown (Enter &#39;c&#39; to cancel): 1\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nDeleted all files relating to certificate nextcloud.example.com.\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</code></pre>\r\n<h2 id=\"apache-setup\">Apache setup</h2>\r\n<p>Setting up Apache is not well explained anywhere I could find.</p>\r\n<p>The good news is that <a href=\"https://ssl-config.mozilla.org/#server=apache&amp;version=2.4.41&amp;config=intermediate&amp;openssl=1.1.1d&amp;guideline=5.6\">moz://a SSL Configuration Generator</a> page takes the misery out of making tea. I mean, it will help you with your configuration. If you do like misery you can of course read the <a href=\"https://wiki.mozilla.org/Talk:Security/Server_Side_TLS\">Talk:Security/Server Side TLS</a> page.</p>\r\n<p>The most helpful articles were:</p>\r\n<ul>\r\n<li><a href=\"https://linuxize.com/post/secure-apache-with-let-s-encrypt-on-debian-10/\">Secure Apache with Let\'s Encrypt on Debian 10</a></li>\r\n<li><a href=\"https://develike.com/en/articles/adding-a-trusted-self-signed-ssl-certificate-to-apache-on-debian-ubuntu\">Adding a trusted self-signed SSL certificate to Apache on Debian/Ubuntu</a></li>\r\n<li><a href=\"https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-debian-10\">How To Create a Self-Signed SSL Certificate for Apache in Debian 10</a></li>\r\n</ul>\r\n<p>I made the following changes:</p>\r\n<pre><code>root@nextcloud:/etc/apache2/sites-available# diff 000-default.conf.orig 000-default.conf\r\n28a29,30\r\n&gt;         RewriteEngine On\r\n&gt;         RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]\r\n\r\nroot@nextcloud:/etc/apache2/sites-available# diff default-ssl.conf.orig default-ssl.conf\r\n32,33c32,33\r\n&lt;               SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem\r\n&lt;               SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key\r\n---\r\n&gt;               SSLCertificateFile      /etc/letsencrypt/live/nextcloud.example.com/fullchain.pem\r\n&gt;               SSLCertificateKeyFile   /etc/letsencrypt/live/nextcloud.example.com/privkey.pem\r\n129a130,131\r\n&gt;               # enable HTTP/2, if available\r\n&gt;               Protocols h2 http/1.1\r\n130a133,134\r\n&gt;               # HTTP Strict Transport Security (mod_headers is required) (63072000 seconds)\r\n&gt;               Header always set Strict-Transport-Security &quot;max-age=63072000&quot;</code></pre>\r\n<h2 id=\"testing\">Testing</h2>\r\n<p>To test the cert you can connect to the localhost on the server.</p>\r\n<pre><code>root@nextcloud:/etc/apache2/sites-available# openssl s_client -crlf -debug -connect localhost:443 -status -servername nextcloud.example.com\r\nCONNECTED(00000003)\r\nwrite to 0x643cf8 [0x652568] (321 bytes =&gt; 321 (0x141))\r\n[snip...]\r\nread from 0x643cf8 [0x6492b3] (5 bytes =&gt; 5 (0x5))\r\n0000 - 48 54 54 50 2f                                    HTTP/\r\n3069898768:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../ssl/record/ssl3_record.c:332:\r\n---\r\nno peer certificate available\r\n---\r\nNo client certificate CA names sent\r\n---\r\nSSL handshake has read 5 bytes and written 321 bytes\r\nVerification: OK\r\n---\r\nNew, (NONE), Cipher is (NONE)\r\nSecure Renegotiation IS NOT supported\r\nCompression: NONE\r\nExpansion: NONE\r\nNo ALPN negotiated\r\nEarly data was not sent\r\nVerify return code: 0 (ok)\r\n---\r\n[snip...]</code></pre>\r\n<p>I had been using <code>systemctl restart apache2.service</code> to restart apache, but the recommended way is to use <code>apache2ctl</code>.</p>\r\n<pre><code>root@nextcloud:/etc/apache2/sites-available# apache2ctl \r\nUsage: /usr/sbin/apache2ctl start|stop|restart|graceful|graceful-stop|configtest|status|fullstatus|help\r\n       /usr/sbin/apache2ctl &lt;apache2 args&gt;\r\n       /usr/sbin/apache2ctl -h            (for help on &lt;apache2 args&gt;)\r\n\r\nroot@nextcloud:/etc/apache2/sites-available# apache2ctl restart\r\nAH00558: apache2: Could not reliably determine the server&#39;s fully qualified domain name, using 127.0.1.1. Set the &#39;ServerName&#39; directive globally to suppress this message\r\n\r\nroot@nextcloud:/etc/apache2/sites-available# apache2 -t\r\n[Thu Dec 10 18:18:49.187628 2020] [core:warn] [pid 4108] AH00111: Config variable ${APACHE_RUN_DIR} is not defined\r\napache2: Syntax error on line 80 of /etc/apache2/apache2.conf: DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot</code></pre>\r\n<p>For some reason that fixed it.</p>\r\n<pre><code># openssl s_client -crlf -debug -connect localhost:443 -status -servername nextcloud.example.com\r\nCONNECTED(00000003)\r\nwrite to 0xe4918 [0xf3188] (324 bytes =&gt; 324 (0x144))\r\n[snip...]\r\nOCSP response: \r\n======================================\r\nOCSP Response Data:\r\n    OCSP Response Status: successful (0x0)\r\n    Response Type: Basic OCSP Response\r\n    Version: 1 (0x0)\r\n    Responder Id: C = US, O = Let&#39;s Encrypt, CN = R3\r\n    Produced At: Dec 22 16:04:00 2020 GMT\r\n[snip...]\r\n---\r\nCertificate chain\r\n 0 s:CN = nextcloud.example.com\r\n   i:C = US, O = Let&#39;s Encrypt, CN = R3\r\n 1 s:C = US, O = Let&#39;s Encrypt, CN = R3\r\n   i:O = Digital Signature Trust Co., CN = DST Root CA X3\r\n---\r\nServer certificate\r\n-----BEGIN CERTIFICATE-----\r\n[snip...]</code></pre>\r\n<h2 id=\"dns-rebind-protection\">DNS Rebind Protection</h2>\r\n<p>Now that everything is up and running we just need to create a new <code>A</code> record pointing to our internal IP Address. Unfortunately while <code>nextcloud.example.com</code> resolves to <code>192.168.123.123</code> externally, it fails to return an answer internally.</p>\r\n<p>A little investigation lead to the fact that my <a href=\"https://en.avm.de/service/fritzbox/fritzbox-7390/knowledge-base/publication/show/663_No-DNS-resolution-of-private-IP-addresses/\">firewall</a>, was seeing this as a <a href=\"https://en.wikipedia.org/wiki/DNS_rebinding\">DNS Rebinding</a> attack. It correctly blocks these DNS entires. I was able to add an exception under <code>Network &gt; DHCP &gt; Rebind protection &gt; Discard upstream RFC1918 responses</code>.</p>\r\n<p>On your router you should check under DHCP/DNS entries for <code>RFC1918</code> or <code>DNS Rebinding</code>.</p>\r\n<p>You can verify your install as follows:</p>\r\n<pre><code># apt-get install -y dnsutils\r\n\r\n$ dig nextcloud.example.com\r\n\r\n; &lt;&lt;&gt;&gt; DiG 9.16.8-Debian &lt;&lt;&gt;&gt; nextcloud.example.com\r\n;; global options: +cmd\r\n;; Got answer:\r\n;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 29350\r\n;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1\r\n\r\n;; OPT PSEUDOSECTION:\r\n; EDNS: version: 0, flags:; udp: 4096\r\n;; QUESTION SECTION:\r\n;nextcloud.example.com.          IN      A\r\n\r\n;; ANSWER SECTION:\r\nnextcloud.example.com.   3600    IN      A       192.168.123.123\r\n\r\n;; Query time: 40 msec\r\n;; SERVER: 192.168.0.71#53(192.168.0.71)\r\n;; WHEN: Thu Dec 10 16:53:39 GMT 2020\r\n;; MSG SIZE  rcvd: 65</code></pre>\r\n<h2 id=\"completing\">Completing</h2>\r\n<p>Back in the admin console you should keep upgrading, and fixing errors until it says <code>Your version is up to date.</code> and <code>All checks passed.</code></p>\r\n<p>At this point you are ready to open the server up to your users while they are outside the home, in work or school.</p>\r\n<h1 id=\"firewall-setup\">Firewall setup</h1>\r\n<p>timttmy has already done an episode on WireGuard where he goes into the details of how to install it manually.</p>\r\n<p>I cheated and used the <a href=\"https://www.pivpn.io/\">PIVPN</a> which now supports wireguard.</p>\r\n<p>This is a good walkthrough with screenshots in the article <a href=\"https://pimylifeup.com/raspberry-pi-wireguard/\">Setting up a WireGuard VPN on the Raspberry Pi</a>.</p>\r\n<p>Once that\'s done you should have the following commands available.</p>\r\n<pre><code># pivpn\r\n::: Control all PiVPN specific functions!\r\n:::\r\n::: Usage: pivpn &lt;command&gt; [option]\r\n:::\r\n::: Commands:\r\n:::  -a,  add              Create a client conf profile\r\n:::  -c,  clients          List any connected clients to the server\r\n:::  -d,  debug            Start a debugging session if having trouble\r\n:::  -l,  list             List all clients\r\n:::  -qr, qrcode           Show the qrcode of a client for use with the mobile app\r\n:::  -r,  remove           Remove a client\r\n:::  -h,  help             Show this help dialog\r\n:::  -u,  uninstall        Uninstall pivpn from your system!\r\n:::  -up, update           Updates PiVPN Scripts\r\n:::  -bk, backup           Backup VPN configs and user profiles\r\n</code></pre>\r\n<p>During the install process you will select a port to use. This port needs to be allowed in from the Internet to your internal server. Where this will be done is different for every router, but have a look around for <code>port forwarding</code> or <code>permit access</code> to do this.</p>\r\n<h1 id=\"setting-up-client-on-lineageos\">Setting up Client on LineageOS</h1>\r\n<p>It is at this point that you will need to have accounts created in NextCloud.</p>\r\n<ul>\r\n<li><a href=\"https://nextcloud.example.com/nextcloud/\">https://nextcloud.example.com/nextcloud/</a></li>\r\n</ul>\r\n<p>You can do this under your profile &gt; users in an admin account.</p>\r\n<p>I created an account for each of the family members, a generic one for the house, and a readonly one for the <a href=\"https://hackerpublicradio.org/eps.php?id=3039\">MagicMirror</a>.</p>\r\n<p>The house account houses (pun intended) the shared calendar, files, and contacts. All the family accounts have read and write access to these, except for the MagicMirror one which only needs to read the calendar and contacts.</p>\r\n<h2 id=\"fdroid\">Fdroid</h2>\r\n<p>Now you can install the software you will need on your phones.</p>\r\n<ul>\r\n<li><a href=\"https://f-droid.org/en/packages/com.nextcloud.client/\">NextCloud</a> Synchronization client</li>\r\n<li><a href=\"https://f-droid.org/en/packages/at.bitfire.davdroid/\">DAVx</a> DAVx⁵ CalDAV/CardDAV Synchronization and Client</li>\r\n<li><a href=\"https://f-droid.org/en/packages/org.dmfs.tasks/\">OpenTasks</a> Keep track of your list of goals</li>\r\n<li><a href=\"https://f-droid.org/en/packages/com.wireguard.android/\">WireGuard</a> Next generation secure VPN network tunnel</li>\r\n</ul>\r\n<p>You will need to setup the NextCloud client using the url <code>https://nextcloud.example.com/nextcloud/</code>, username and password.</p>\r\n<p>Then you set up DAVx using another url <code>https://nextcloud.example.com/nextcloud/remote.php/dav</code>, but the same , username and password.</p>\r\n<p>By the way if you want to access files you can do so via <code>davs://nextcloud.example.com/nextcloud/remote.php/dav/files/house/</code></p>\r\n<p>I set up the NextCloud client to automatically upload photos, and videos to the server.</p>\r\n<p>To set up WireGuard you need to create a connection for each device connecting</p>\r\n<pre><code>root@nextcloud:~# pivpn add\r\nEnter a Name for the Client: Mobile_Worker\r\n::: Client Keys generated\r\n::: Client config generated\r\n::: Updated server config\r\n::: WireGuard reloaded\r\n======================================================================\r\n::: Done! Mobile_Worker.conf successfully created!\r\n::: Mobile_Worker.conf was copied to /home/ken/configs for easy transfer.\r\n::: Please use this profile only on one device and create additional\r\n::: profiles for other devices. You can also use pivpn -qr\r\n::: to generate a QR Code you can scan with the mobile app.\r\n======================================================================</code></pre>\r\n<p>Then open display the qrcode as follows:</p>\r\n<pre><code>root@nextcloud:~# pivpn qrcode\r\n::  Client list  ::\r\n1) Mobile_Worker\r\nPlease enter the Index/Name of the Client to show: </code></pre>\r\n<p>Pressing <code>1</code> in my case will display the QRCode.</p>\r\n<p>Open the WireGuard app on the phone and press <code>+</code> to add an account, and select <em>scan from qr code</em>.</p>\r\n<p>Point it to QRCode and that\'s it.</p>\r\n<p>If you want to remove a client, you can just use <code>pivpn remove</code></p>\r\n<pre><code>root@nextcloud:~# pivpn remove\r\n::  Client list  ::\r\n1) Mobile_Worker\r\nPlease enter the Index/Name of the Client to be removed from the list above: 6\r\nDo you really want to delete Mobile_Worker? [Y/n] y\r\n::: Updated server config\r\n::: Client config for Mobile_Worker removed\r\n::: Client Keys for Mobile_Worker removed\r\n::: Successfully deleted Mobile_Worker\r\n::: WireGuard reloaded</code></pre>\r\n<h2 id=\"magicmirror\">MagicMirror</h2>\r\n<p>The final step is to have the <a href=\"https://hackerpublicradio.org/eps.php?id=3039\">MagicMirror</a> in the living room display the shared calendar.</p>\r\n<p>To display your calendar there, you need to have an <a href=\"https://en.wikipedia.org/wiki/ICalendar\">ics iCalendar</a> file.</p>\r\n<p>You can get that by login into NextCloud as the MagicMirror user via the web, going to the calendar you desire to export. Click the <code>...</code> menu and select \"Copy Private Link\".</p>\r\n<p>You can then add the <code>?export</code> at the end of the url to get an ical export.</p>\r\n<p><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave</a> gave me a tip on how to have MagicMirror serve this file, by using its own local webserver. You point it to a local directory eg: <code>https://localhost:8080/modules/.calendars/</code>. Don\'t forget to create it.</p>\r\n<pre><code>mkdir -p ~/MagicMirror/modules/.calendars/</code></pre>\r\n<p>I wrote a script that would first get a new version of the ical file, and if it is downloaded correctly would immediately overwrite the previous one.</p>\r\n<pre><code>[magicmirror@magicmirror ~]$ cat /home/pi/bin/cal.bash\r\n#!/bin/bash\r\nwget --quiet --output-document /home/pi/MagicMirror/modules/.calendars/home_calendar.ics.tmp --auth-no-challenge --http-user=magicmirror --http-password=&quot;PASSWORD&quot; &quot;https://nextcloud.example.com/nextcloud/remote.php/dav/calendars/magicmirror/personal_shared_by_House/?export&quot; &gt; /dev/null 2&gt;&amp;1\r\nif [ -s /home/pi/MagicMirror/modules/.calendars/home_calendar.ics.tmp ]\r\nthen\r\n  mv /home/pi/MagicMirror/modules/.calendars/home_calendar.ics.tmp /home/pi/MagicMirror/modules/.calendars/home_calendar.ics\r\nfi\r\n[snip...]</code></pre>\r\n<p>I then scheduled this to run every 15 minutes.</p>\r\n<pre><code>[magicmirror@magicmirror ~]$ crontab -l\r\n*/15 * * * * /home/pi/bin/cal.bash &gt;/dev/null 2&gt;&amp;1</code></pre>\r\n<p>The final step was to update my Calendar entry in the <code>~/MagicMirror/config/config.js</code> config file.</p>\r\n<pre><code>        // Calendar\r\n        {\r\n            module: &quot;calendar&quot;,\r\n            header: &quot;Calendar&quot;,\r\n            position: &quot;top_center&quot;,\r\n            config: {\r\n                colored: true,\r\n                maxTitleLength: 30,\r\n                fade: false,\r\n                calendars: [\r\n                    {\r\n                        name: &quot;Family Calendar&quot;,\r\n                        url: &quot;https://localhost:8080/modules/.calendars/home_calendar.ics&quot;,\r\n                        symbol: &quot;calendar-check&quot;,\r\n                        color: &quot;#825BFF&quot; // violet-ish\r\n                    },\r\n                    {\r\n                        name: &quot;Birthday Calendar&quot;,\r\n                        url: &quot;https://localhost:8080/modules/.calendars/birthday_calendar.ics&quot;,\r\n                        symbol: &quot;calendar-check&quot;,\r\n                        color: &quot;#FFCC00&quot; // violet-ish\r\n                    },\r\n                    {\r\n                        // Calendar uses repeated &#39;RDATE&#39; entries, which this iCal parser\r\n                        // doesn&#39;t seem to recognise. Only the next event is visible, and\r\n                        // the calendar has to be refreshed *after* the event has passed.\r\n                        name: &quot;HPR Community News recordings&quot;,\r\n                        url: &quot;https://hackerpublicradio.org/HPR_Community_News_schedule.ics&quot;,\r\n                        symbol: &quot;calendar-check&quot;,\r\n                        color: &quot;#C465A7&quot; // purple\r\n                    },\r\n                    {\r\n                        // https://inzamelkalender.gad.nl/ical-info\r\n                        name: &quot;GAD Calendar&quot;,\r\n                        url: &quot;https://inzamelkalender.gad.nl/ical/0381200000107654&quot;,\r\n                        symbol: &quot;calendar-check&quot;,\r\n                        color: &quot;#00CC00&quot; // Green\r\n                    },\r\n                ]\r\n            }\r\n        },</code></pre>\r\n<p>The contacts birthday wasn\'t available to the MagicMirror user immediately after I created it, so I was able to force an update as follows:</p>\r\n<pre><code>root@nextcloud:/var/www/html/nextcloud# sudo -u www-data php occ dav:sync-birthday-calendar\r\nStart birthday calendar sync for all users ...\r\n    7 [============================]</code></pre>\r\n<h1 id=\"conclusion\">Conclusion</h1>\r\n<p>With that we have a family sharing solution just like other normal house holds. Yet with the security of knowing that the data doesn\'t leave the house, and is not being used without your approval.</p>\r\n<p>You can tell it\'s a hit, because now people are scheduling tech support tasks via the app.</p>\r\n<p>Ah well.</p>\r\n\r\n',30,0,1,'CC-BY-SA','NextCloud, Raspbian, Apache, mariadb, PHP, myphpadmin, wireguard, DNS Rebind, magicmirror2',0,0,1),
(3246,'2021-01-11','LXCast: freeing the Fairphone 3 (and many other phones) ',1744,'We look at how to get a free smartphone operating system on the Fairphone 3 (and many other phones),','<ul>\r\n<li><p>My review on the FP3 when it came out<br />\r\n<a href=\"https://lxcast.net/lxcast-2-fairphone-3-fair-but-not-free-yet/\" class=\"uri\">https://lxcast.net/lxcast-2-fairphone-3-fair-but-not-free-yet/</a></p></li>\r\n<li><p>Two solutions for a free OS:</p>\r\n<ol type=\"1\">\r\n<li><p>lineage OS - free android with the Gapps removed<br />\r\n<a href=\"https://download.lineageos.org/FP3\" class=\"uri\">https://download.lineageos.org/FP3</a></p></li>\r\n<li><p>the /e/ project !! A \"de-googled\" operating system - actually a fork of lineage OS - this is what I\'m going to talk about here.<br />\r\n<a href=\"https://e.foundation/about-e/\" class=\"uri\">https://e.foundation/about-e/</a></p></li>\r\n</ol></li>\r\n<li><p>The research paper on Google Data Collection by Professor Douglas C. Schmidt, Vanderbilt University (2018) - learn how and how often normal Android phones send your data to Google servers.<br />\r\n<a href=\"https://digitalcontentnext.org/blog/2018/08/21/google-data-collection-research/\" class=\"uri\">https://digitalcontentnext.org/blog/2018/08/21/google-data-collection-research/</a></p></li>\r\n<li><p>Another background article on tracking (in German) based on research from a Norwegian journalist:<br />\r\n<a href=\"https://www.golem.de/news/datenschutz-wie-ich-die-ueberwacher-in-meinem-smartphone-aufspuerte-2012-152829-2.html\" class=\"uri\">https://www.golem.de/news/datenschutz-wie-ich-die-ueberwacher-in-meinem-smartphone-aufspuerte-2012-152829-2.html</a></p></li>\r\n<li><p>MicroG services, a replacement for Google\'s libraries on /e/ with purely open-source implementations.</p></li>\r\n<li><p>The man behind the /e/ project: Gael Duval, pioneer of Open Source, Mandrake, Ulteo...<br />\r\n<a href=\"https://www.indidea.org/gael/blog/about-gael-duval/\" class=\"uri\">https://www.indidea.org/gael/blog/about-gael-duval/</a></p></li>\r\n<li><p>His article outlining his vision for /e/ : <a href=\"https://gael-duval.medium.com/e-os-redefines-the-mobile-operating-system-paradigm-for-a-more-sustainable-world-4e929b1010c\" class=\"uri\">https://gael-duval.medium.com/e-os-redefines-the-mobile-operating-system-paradigm-for-a-more-sustainable-world-4e929b1010c</a></p></li>\r\n<li><p>You can buy a FP3 and an FP3 + with /e/ pre-installed here !!<br />\r\n<a href=\"https://esolutions.shop/de/\" class=\"uri\">https://esolutions.shop/de/</a></p></li>\r\n<li><p>Installing on your phone: over 110 devices supported: from Asus to Google, to Oneplus and Xiaomi<br />\r\n<a href=\"https://doc.e.foundation/devices/\" class=\"uri\">https://doc.e.foundation/devices/</a></p></li>\r\n</ul>\r\n<h3 id=\"how-to-install-it-on-the-fp3\">How to install it on the FP3</h3>\r\n<ul>\r\n<li><p>Install /e/ on FairPhone FP3 - FP3 | /e/ documentation</p></li>\r\n<li><p>Privacy ratings of apps: <a href=\"https://exodus-privacy.eu\" class=\"uri\">https://exodus-privacy.eu</a></p></li>\r\n<li><p>Alternative launchers:</p>\r\n<ul>\r\n<li>KISS launcher</li>\r\n<li>Simple launcher</li>\r\n</ul></li>\r\n<li><p>I recommended you add these apps:</p>\r\n<ul>\r\n<li>Antennapod - podcast client</li>\r\n<li>FairEmail or simple email</li>\r\n<li>Fennec (Firefox)</li>\r\n<li>Signal</li>\r\n<li>newpipe for watching youtube without being tracked</li>\r\n</ul></li>\r\n<li><p>Backup via adb is apparently broken | Not the fault of /e/!!</p></li>\r\n<li><p>You cannot simply flash a new recovery, such as TWRP, to flash images or backup, instead, you can use this method<br />\r\n<a href=\"https://twrp.me/fairphone/fairphone3.html\" class=\"uri\">https://twrp.me/fairphone/fairphone3.html</a></p></li>\r\n<li><p>Donate or become a member to keep the project going:<br />\r\n<a href=\"https://e.foundation/donate-2/\" class=\"uri\">https://e.foundation/donate-2/</a></p></li>\r\n</ul>\r\n<p>Feel free to add any comments below!</p>\r\n<p>Theme Music: Jazzhar, \"Room with a View\" CC-BY-SA, check him out on Jamendo and on Free Music Archive</p>\r\n',285,75,0,'CC-BY-SA','LXCast, Smartphone, Android, Fairphone, FOSS',0,0,1),
(3247,'2021-01-12','Saturday Morning Automotive Routine',1110,'I have developed a relaxing 10-step routine for keeping your car in running condition.','<p>The top ten are:</p>\r\n<ol type=\"1\">\r\n<li>Gas</li>\r\n<li>Tires</li>\r\n<li>Battery</li>\r\n<li>Hoses/Belts</li>\r\n<li>Fluids</li>\r\n<li>External</li>\r\n<li>Review dates</li>\r\n<li>Schedule replacement parts</li>\r\n<li>Clean up</li>\r\n<li>Choose for car wash</li>\r\n</ol>\r\n<!-- . -->\r\n<ol start=\"11\" type=\"1\">\r\n<li>A treat!</li>\r\n</ol>\r\n<p>Blog site: <a href=\"https://biblicaltrumpets.org\" class=\"uri\">https://biblicaltrumpets.org</a></p>\r\n',389,0,0,'CC-BY-SA','system,lifehack,automotive,routine maintenance',0,0,1),
(3255,'2021-01-22','garage door part 2',574,'tis teh season COUGH COUGH','<p>garage door part 2<br />\r\ntis teh season COUGH COUGH</p>',36,0,1,'CC-BY-SA','garage door,diy,home,repair',0,0,1),
(3290,'2021-03-12','GIMP: More on Layer Tools and Techniques',887,'Using some additional tools for for working with Layers in GIMP','<p>When working with layers you often need to use additional tools and techniques to get the results you want. We cover several of the most often used ones in this tutorial, including Transparency, Opacity, Layer Groups, and Linking Layers. You will use these frequently in working with Layers.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/\" class=\"uri\">https://docs.gimp.org/2.10/en/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources\" class=\"uri\">https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources</a></li>\r\n<li><a href=\"https://imageric.com/\" class=\"uri\">https://imageric.com/</a></li>\r\n<li><a href=\"https://imageric.com/photos/free/detail/13392-daughter-happy-together-family-mother-smiling-child-people-group-love\" class=\"uri\">https://imageric.com/photos/free/detail/13392-daughter-happy-together-family-mother-smiling-child-people-group-love</a></li>\r\n<li><a href=\"https://imageric.com/photos/free/detail/13400-flower-arrangement-bouquet-arrangement-rose-decoration-flower-roses\" class=\"uri\">https://imageric.com/photos/free/detail/13400-flower-arrangement-bouquet-arrangement-rose-decoration-flower-roses</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/more-on-layer-tools-and-techniques/\" class=\"uri\">https://www.ahuka.com/gimp/more-on-layer-tools-and-techniques/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layers',0,0,1),
(3300,'2021-03-26','YouTube Channels for Learning Spanish, Part 1',984,'My reviews of some YouTube channels offering free Spanish language lessons.','<p>As I have been learning Spanish I have been making use of a variety of tools and aids. One of the best is YouTube, where there is a wealth of free stuff. Of course, Spanish is not the only language with good resources here, but it is the one I am studying right now. But if you are interested in learning another language, or improving your knowledge of one, you should take a look.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/channel/UC_GFwrcNlXh92xA8iKFT2WA\" class=\"uri\">https://www.youtube.com/channel/UC_GFwrcNlXh92xA8iKFT2WA</a></li>\r\n<li><a href=\"https://thelanguagetutor.co/\" class=\"uri\">https://thelanguagetutor.co/</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=hyLl_0d0EBw&amp;list=PLTpetkN815Qyuc2RbC1kxxMQvxjQ3RnYG\" class=\"uri\">https://www.youtube.com/watch?v=hyLl_0d0EBw&amp;list=PLTpetkN815Qyuc2RbC1kxxMQvxjQ3RnYG</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=I8hFdZEPqdM\" class=\"uri\">https://www.youtube.com/watch?v=I8hFdZEPqdM</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Common_European_Framework_of_Reference_for_Languages\" class=\"uri\">https://en.wikipedia.org/wiki/Common_European_Framework_of_Reference_for_Languages</a></li>\r\n<li><a href=\"https://www.youtube.com/c/Professorjason/featured\" class=\"uri\">https://www.youtube.com/c/Professorjason/featured</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UC67BDv__7er_ZaYKqhOSOFQ\" class=\"uri\">https://www.youtube.com/channel/UC67BDv__7er_ZaYKqhOSOFQ</a></li>\r\n<li><a href=\"https://www.youtube.com/user/culturealley\" class=\"uri\">https://www.youtube.com/user/culturealley</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UC9yudInUYzMh9H4gJs4DrHg\" class=\"uri\">https://www.youtube.com/channel/UC9yudInUYzMh9H4gJs4DrHg</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCozZrWPuoNRLl5ArOyJ57sQ\" class=\"uri\">https://www.youtube.com/channel/UCozZrWPuoNRLl5ArOyJ57sQ</a></li>\r\n<li><a href=\"https://www.palain.com/spanish/youtube-channels-for-learning-spanish/\" class=\"uri\">https://www.palain.com/spanish/youtube-channels-for-learning-spanish/</a></li>\r\n</ul>\r\n',198,116,0,'CC-BY-SA','Spanish, Language learning, YouTube',0,0,1),
(3310,'2021-04-09','Layer Masks',970,'We begin our look at a key tool in GIMP, Layer Masks','<p>One of the key tools in GIMP is Layer Masks, which allow you to make selected parts of a layer transparent, so that lower layers can come through. This is a way to get the same kinds of effects you would get with physical transparency sheets or animation gels.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/\" class=\"uri\">https://docs.gimp.org/2.10/en/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources\" class=\"uri\">https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources</a></li>\r\n<li><a href=\"https://snappygoat.com/\" class=\"uri\">https://snappygoat.com/</a></li>\r\n<li><a href=\"https://snappygoat.com/s/?q=flowerscloseup#eda72d0e7eedc238eed8f7acffc515dba94ce64c,1,342\" class=\"uri\">https://snappygoat.com/s/?q=flowerscloseup#eda72d0e7eedc238eed8f7acffc515dba94ce64c,1,342</a></li>\r\n<li><a href=\"https://www.gimp.org/docs/userfaq.html#when-will-gimp-support-any-kind-of-non-destructive-editing-like-adjustment-layers-layer-filters-andor-full-blown-node-based-editing\" class=\"uri\">https://www.gimp.org/docs/userfaq.html#when-will-gimp-support-any-kind-of-non-destructive-editing-like-adjustment-layers-layer-filters-andor-full-blown-node-based-editing</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/layer-masks/\" class=\"uri\">https://www.ahuka.com/gimp/layer-masks/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layers, Layer Masks',0,0,1),
(3320,'2021-04-23','YouTube Channels for Learning Spanish, Part 2',873,'My reviews of some YouTube channels offering free Spanish language lessons.','<p>As I have been learning Spanish I have been making use of a variety of tools and aids. One of the best is YouTube, where there is a wealth of free stuff. Of course, Spanish is not the only language with good resources here, but it is the one I am studying right now. But if you are interested in learning another language, or improving your knowledge of one, you should take a look. This is the second part covering some additional channels</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/channel/UCmSElpplqOqmAHi1N0z42AQ\" class=\"uri\">https://www.youtube.com/channel/UCmSElpplqOqmAHi1N0z42AQ</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCydVvh3Wg4VPvllLHFoe5_A\" class=\"uri\">https://www.youtube.com/channel/UCydVvh3Wg4VPvllLHFoe5_A</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCouyFdE9-Lrjo3M_2idKq1A\" class=\"uri\">https://www.youtube.com/channel/UCouyFdE9-Lrjo3M_2idKq1A</a></li>\r\n<li><a href=\"https://algworld.com/\" class=\"uri\">https://algworld.com/</a></li>\r\n<li><a href=\"https://www.teachingenglish.org.uk/article/comprehensible-input\" class=\"uri\">https://www.teachingenglish.org.uk/article/comprehensible-input</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCIdFcLCIJQ_YMrormG_nU8w\" class=\"uri\">https://www.youtube.com/channel/UCIdFcLCIJQ_YMrormG_nU8w</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCfG2VhlQgy5bHGmkpeKcjVA\" class=\"uri\">https://www.youtube.com/channel/UCfG2VhlQgy5bHGmkpeKcjVA</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCrMqdq1osi5ECCBkia2jsNw\" class=\"uri\">https://www.youtube.com/channel/UCrMqdq1osi5ECCBkia2jsNw</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCAg2CRWxgDZPFricsDv6EOA\" class=\"uri\">https://www.youtube.com/channel/UCAg2CRWxgDZPFricsDv6EOA</a></li>\r\n<li><a href=\"https://www.palain.com/spanish/youtube-channels-for-learning-spanish-part-2/\" class=\"uri\">https://www.palain.com/spanish/youtube-channels-for-learning-spanish-part-2/</a></li>\r\n</ul>\r\n',198,116,0,'CC-BY-SA','Spanish, Language learning, YouTube',0,0,1),
(3330,'2021-05-07','A Layer Mask Project',934,'We apply our knowledge of Layer Masks to create a project.','<p>This tutorial has us applying our knowledge of Layer Masks in combination with some other tools to make an image. We start with a photograph, and transform it into something very different, as a way to practice our GIMP skills.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/\" class=\"uri\">https://docs.gimp.org/2.10/en/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources\" class=\"uri\">https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCnSAUHBwdAEPWeeIs8LTViA\" class=\"uri\">https://www.youtube.com/channel/UCnSAUHBwdAEPWeeIs8LTViA</a></li>\r\n<li><a href=\"https://digitalmedia.fws.gov/\" class=\"uri\">https://digitalmedia.fws.gov/</a></li>\r\n<li><a href=\"https://digitalmedia.fws.gov/digital/collection/natdiglib/id/14486/rec/210\" class=\"uri\">https://digitalmedia.fws.gov/digital/collection/natdiglib/id/14486/rec/210</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/a-layer-mask-project/\" class=\"uri\">https://www.ahuka.com/gimp/a-layer-mask-project/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layers, Layer Masks',0,0,1),
(3340,'2021-05-21','Hacked?',603,'People commonly say that their own, or someone else\'s, Facebook has been hacked.','<p>As someone who has reasons to be on Facebook, I have gotten used to seeing people warn that their account was hacked, and we should not accept friend requests from them. It is so common that you would wonder if Facebook had no security at all. But the truth is something different, and worth knowing about.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://www.ricksdailytips.com/beware-duplicate-friend-requests/\" class=\"uri\">https://www.ricksdailytips.com/beware-duplicate-friend-requests/</a></li>\r\n<li><a href=\"https://www.zwilnik.com/hacked/\" class=\"uri\">https://www.zwilnik.com/hacked/</a></li>\r\n</ul>\r\n',198,74,0,'CC-BY-SA','Facebook, scams',0,0,1),
(3249,'2021-01-14','Linux Inlaws S01E21: The Big Linux Inlaws Peep Show',3165,'The two chaps go the full monty and reveal it all','<ul>\r\n<li>Rust for the Linux kernel: <a href=\"https://github.com/Rust-for-Linux/linux\" target=\"_blank\">https://github.com/Rust-for-Linux/linux</a></li>\r\n<li>Linus opinion on C++ in the Linux kernel: <a href=\"https://lkml.org/lkml/2004/1/20/20\" target=\"_blank\">https://lkml.org/lkml/2004/1/20/20</a></li>\r\n<li>gdb: <a href=\"https://www.gnu.org/software/gdb\" target=\"_blank\">https://www.gnu.org/software/gdb</a></li>\r\n<li>lldb: <a href=\"https://lldb.llvm.org\" target=\"_blank\">https://lldb.llvm.org</a></li>\r\n<li>Novell\'s Netware: <a href=\"https://en.wikipedia.org/wiki/NetWare\" target=\"_blank\">https://en.wikipedia.org/wiki/NetWare</a></li>\r\n<li>strace: <a href=\"https://strace.io\" target=\"_blank\">https://strace.io</a></li>\r\n<li>ltrace: <a href=\"https://www.ltrace.org\" target=\"_blank\">https://www.ltrace.org</a></li>\r\n<li>DTrace: <a href=\"https://dtrace.org/blogs/about\" target=\"_blank\">https://dtrace.org/blogs/about</a></li>\r\n<li>ptrace: <a href=\"https://en.wikipedia.org/wiki/Ptrace#Linux\" target=\"_blank\">https://en.wikipedia.org/wiki/Ptrace#Linux</a></li>\r\n<li>Capabilities: <a href=\"https://wiki.archlinux.org/index.php/capabilities\" target=\"_blank\">https://wiki.archlinux.org/index.php/capabilities</a></li>\r\n<li>Extended attributes: <a href=\"https://en.wikipedia.org/wiki/Extended_file_attributes#Linux\" target=\"_blank\">https://en.wikipedia.org/wiki/Extended_file_attributes#L\r\ninux</a></li>\r\n<li>eBPF: <a href=\"https://ebpf.io\" target=\"_blank\">https://ebpf.io</a></li>\r\n<li>BCC: <a href=\"https://github.com/iovisor/bcc\" target=\"_blank\">https://github.com/iovisor/bcc</a></li>\r\n<li>BCC toolchain: <a href=\"https://iovisor.github.io/bcc\" target=\"_blank\">https://iovisor.github.io/bcc</a></li>\r\n<li>Linux kernel tracing: <a href=\"https://www.kernel.org/doc/html/latest/trace/index.html\" target=\"_blank\">https://www.kernel.org/doc/html/latest/trace/index.html</a></li>\r\n<li>Cathy O\'Neil\'s Weapons of Math Destruction: <a href=\"https://en.wikipedia.org/wiki/Weapons_of_Math_Destruction\" target=\"_blank\">https://en.wikipedia.org/wiki/Weapon\r\ns_of_Math_Destruction</a></li>\r\n<li>Audacity: <a href=\"https://manual.audacityteam.org\" target=\"_blank\">https://manual.audacityteam.org</a></li>\r\n<li>Jitsi (Meet): <a href=\"https://github.com/jitsi/jitsi-meet\" target=\"_blank\">https://github.com/jitsi/jitsi-meet</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Nudity, tracing, debugging, extended berkeley packet filter, weapons of math destruction',0,0,1),
(3251,'2021-01-18','Opposing Views on Alcohol',1840,'Windigo and Mrs. Honeyhume discuss their views on alcohol','<p>I discuss the subject of alcohol with my partner of sixteen years, Mrs. Honeyhume. While we agree on many subjects, alcohol is not one of them.</p>\r\n<p>She believes alcohol is an important experience, one to be shared with friends, and I dislike nearly everything about it.</p>\r\n<p>We discuss what we like/dislike about alcohol, our histories with it, and present our personal anecdotal evidence.</p>',196,0,1,'CC-BY-SA','alcohol',0,0,1),
(3350,'2021-06-04','Blending Layers',1321,'GIMP has a number of ways you can blend layers together','<p>This tutorial begins our discussion of how you can blend entire layers in GIMP, starting with changing the opacity of layers, then moving into Layer Modes, which use mathematical functions to allow more complex combinations to achieve certain effects. We discuss the mathematics as a background to more discussion in subsequent tutorials of the specific Layer Modes.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/\" class=\"uri\">https://docs.gimp.org/2.10/en/</a></li>\r\n<li><a href=\"https://www.thefamousartists.com/\" class=\"uri\">https://www.thefamousartists.com/</a></li>\r\n<li><a href=\"https://www.thefamousartists.com/jeong-seon/geumgang-jeondo\" class=\"uri\">https://www.thefamousartists.com/jeong-seon/geumgang-jeondo</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=17Iivi0tmug\" class=\"uri\">https://www.youtube.com/watch?v=17Iivi0tmug</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=J9YyQpJa-ns\" class=\"uri\">https://www.youtube.com/watch?v=J9YyQpJa-ns</a></li>\r\n<li><a href=\"https://ninedegreesbelow.com/photography/gimp-lch-blend-modes.html\" class=\"uri\">https://ninedegreesbelow.com/photography/gimp-lch-blend-modes.html</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Blend_modes\" class=\"uri\">https://en.wikipedia.org/wiki/Blend_modes</a></li>\r\n<li><a href=\"https://search.creativecommons.org/\" class=\"uri\">https://search.creativecommons.org/</a></li>\r\n<li><a href=\"https://search.creativecommons.org/photos/d3067227-9d89-46e6-b5ba-3910432e2a9f\" class=\"uri\">https://search.creativecommons.org/photos/d3067227-9d89-46e6-b5ba-3910432e2a9f</a></li>\r\n<li><a href=\"https://search.creativecommons.org/photos/84314932-0a0a-4824-a1a9-fbb3196bfc4c\" class=\"uri\">https://search.creativecommons.org/photos/84314932-0a0a-4824-a1a9-fbb3196bfc4c</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/blending-layers/\" class=\"uri\">https://www.ahuka.com/gimp/blending-layers/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layers, Layer Modes, Opacity',0,0,1),
(3360,'2021-06-18','Android Malware Alert',665,'A look at some security issues in Android','<p>A type of malware nicknamed Joker has been infecting Android devices. In this episode we dig a little deeper into what this is and how it works.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://stackoverflow.com/questions/7750448/what-are-dex-files-in-android#7750547\" class=\"uri\">https://stackoverflow.com/questions/7750448/what-are-dex-files-in-android#7750547</a></li>\r\n<li><a href=\"https://www.zscaler.com/blogs/security-research/joker-playing-hide-and-seek-google-play\" class=\"uri\">https://www.zscaler.com/blogs/security-research/joker-playing-hide-and-seek-google-play</a></li>\r\n<li><a href=\"https://blog.sucuri.net/2020/08/string-concatenation-obfuscation-techniques.html\" class=\"uri\">https://blog.sucuri.net/2020/08/string-concatenation-obfuscation-techniques.html</a></li>\r\n<li><a href=\"https://www.anquanke.com/post/id/211978\" class=\"uri\">https://www.anquanke.com/post/id/211978</a></li>\r\n<li><a href=\"https://www.zscaler.com/blogs/security-research/joker-playing-hide-and-seek-google-play\" class=\"uri\">https://www.zscaler.com/blogs/security-research/joker-playing-hide-and-seek-google-play</a></li>\r\n<li><a href=\"https://www.techrepublic.com/article/how-to-manage-app-permissions-in-android-11\" class=\"uri\">https://www.techrepublic.com/article/how-to-manage-app-permissions-in-android-11</a></li>\r\n<li><a href=\"https://arstechnica.com/information-technology/2020/09/joker-the-malware-that-signs-you-up-for-pricey-services-floods-android-markets/\" class=\"uri\">https://arstechnica.com/information-technology/2020/09/joker-the-malware-that-signs-you-up-for-pricey-services-floods-android-markets/</a></li>\r\n<li><a href=\"https://www.zwilnik.com/android-malware-alert\" class=\"uri\">https://www.zwilnik.com/android-malware-alert</a></li>\r\n</ul>\r\n',198,74,0,'CC-BY-SA','Android, malware',0,0,1),
(3370,'2021-07-02','More Free Images?',869,'We look at some more free photo sites to see if they are really free','<p>This tutorial adds to our discussion of freely usable photos by looking at a list compiled on the blog of a marketing site Twenty Over Ten. They gave us their top 15 sites, but can I recommend them unreservedly? Not necessarily, you have to dig into each one of them to get to the truth.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://blog.twentyoverten.com/10-best-sites-for-free-stock-photos/\" class=\"uri\">https://blog.twentyoverten.com/10-best-sites-for-free-stock-photos/</a></li>\r\n<li><a href=\"https://unsplash.com/\" class=\"uri\">https://unsplash.com/</a></li>\r\n<li><a href=\"https://unsplash.com/license\" class=\"uri\">https://unsplash.com/license</a></li>\r\n<li><a href=\"https://pixabay.com/\" class=\"uri\">https://pixabay.com/</a></li>\r\n<li><a href=\"https://www.pexels.com/\" class=\"uri\">https://www.pexels.com/</a></li>\r\n<li><a href=\"https://kaboompics.com/\" class=\"uri\">https://kaboompics.com/</a></li>\r\n<li><a href=\"https://shutteroo.com/\" class=\"uri\">https://shutteroo.com/</a></li>\r\n<li><a href=\"https://negativespace.co/\" class=\"uri\">https://negativespace.co/</a></li>\r\n<li><a href=\"https://fancycrave.com/\" class=\"uri\">https://fancycrave.com/</a></li>\r\n<li><a href=\"https://burst.shopify.com/\" class=\"uri\">https://burst.shopify.com/</a></li>\r\n<li><a href=\"https://burst.shopify.com/licenses/shopify-some-rights-reserved\" class=\"uri\">https://burst.shopify.com/licenses/shopify-some-rights-reserved</a></li>\r\n<li><a href=\"https://picjumbo.com/\" class=\"uri\">https://picjumbo.com/</a></li>\r\n<li><a href=\"https://freerangestock.com/#\" class=\"uri\">https://freerangestock.com/#</a></li>\r\n<li><a href=\"https://www.equalicense.com\" class=\"uri\">https://www.equalicense.com</a></li>\r\n<li><a href=\"https://libreshot.com/\" class=\"uri\">https://libreshot.com/</a></li>\r\n<li><a href=\"https://libreshot.com/license-information/\" class=\"uri\">https://libreshot.com/license-information/</a></li>\r\n<li><a href=\"https://www.nappy.co/\" class=\"uri\">https://www.nappy.co/</a></li>\r\n<li><a href=\"https://www.nappy.co/license\" class=\"uri\">https://www.nappy.co/license</a></li>\r\n<li><a href=\"https://stocksnap.io/\" class=\"uri\">https://stocksnap.io/</a></li>\r\n<li><a href=\"https://stocksnap.io/license\" class=\"uri\">https://stocksnap.io/license</a></li>\r\n<li><a href=\"https://www.splitshire.com/\" class=\"uri\">https://www.splitshire.com/</a></li>\r\n<li><a href=\"https://www.lifeofpix.com/\" class=\"uri\">https://www.lifeofpix.com/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/more-free-image-sites/\" class=\"uri\">https://www.ahuka.com/gimp/more-free-image-sites/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','Stock Photos, Creative Commons, Free Photos',0,0,1),
(3380,'2021-07-16','Building a Better Goodreads with ActivityPub',698,'This episode looks at the popular application Goodreads to see if it can be done better.','<p>Federated social media can open up some wonderful possibilities to reimagine some of the social apps we already use and find ways to do them better. In this episode I want to highlight a talk that aimed at such a reimagining involving an app I already use, Goodreads. My main use of it is to manage my book library, but it also involves a social aspect where you can be friends with people and share book reviews, recommendations, and so on. So seeing how this can be done differently with ActivityPub was very interesting to me.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://conf.tube/videos/watch/c42604a8-d71d-4bd0-8081-d2c77210f206\" class=\"uri\">https://conf.tube/videos/watch/c42604a8-d71d-4bd0-8081-d2c77210f206</a></li>\r\n<li><a href=\"https://www.goodreads.com/\" class=\"uri\">https://www.goodreads.com/</a></li>\r\n<li><a href=\"https://www.palain.com/im-learning-spanish/\" class=\"uri\">https://www.palain.com/im-learning-spanish/</a></li>\r\n<li><a href=\"https://learnawesome.org/\" class=\"uri\">https://learnawesome.org/</a></li>\r\n<li><a href=\"https://github.com/learn-awesome\" class=\"uri\">https://github.com/learn-awesome</a></li>\r\n<li><a href=\"https://www.zwilnik.com/better-social-media/activitypub-conference-2020/activitypub-conference-2020-nilesh-trivedi/\" class=\"uri\">https://www.zwilnik.com/better-social-media/activitypub-conference-2020/activitypub-conference-2020-nilesh-trivedi/</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, Goodreads, library',0,0,1),
(3248,'2021-01-13','SARS-CoV-2 detection by PCR explanation',1464,'This episode summarizes the process to detect the virus that causes COVID-19 by PCR','<h2 id=\"basic-process\">Basic Process</h2>\r\n<ol>\r\n<li>Sample Collection</li>\r\n<li>Sample Transportation</li>\r\n<li>Nucleic Acid extraction and Purification</li>\r\n<li>Amplification and Detection</li>\r\n</ol>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Polymerase_chain_reaction\">https://en.wikipedia.org/wiki/Polymerase_chain_reaction</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Coronavirus\">https://en.wikipedia.org/wiki/Coronavirus</a></li>\r\n<li><a href=\"https://www.k-state.edu/hermanlab/protocols/StandardPCRConditions.html\">https://www.k-state.edu/hermanlab/protocols/StandardPCRConditions.html</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/RNA\">https://en.wikipedia.org/wiki/RNA</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/DNA\">https://en.wikipedia.org/wiki/DNA</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Thermus_aquaticus\">https://en.wikipedia.org/wiki/Thermus_aquaticus</a></li>\r\n</ul>\r\n',300,100,0,'CC-BY-SA','PCR,COVID019',0,0,1),
(3252,'2021-01-19','Simple JSON querying tool (also YAML, and to a lesser extent XML)',1137,'crvs talks about jq, yq and xq','<h1 id=\"json\">JSON</h1>\r\n<p>Json is a cool little data serialization language, that allows you to easily and clearly demarcate blocks of data by nesting data structures such as lists (enclosed by square brackets) and key-value pairs or \"dictionaries\" (enclosed by curly braces). So that in the end you get something that looks like this</p>\r\n<pre><code>{\r\n&quot;first list&quot; : [ &quot;element1&quot;, &quot;element2&quot;, {&quot;element3&quot; : &quot;is another k-v pair&quot;, &quot;but contains&quot; : [&quot;a&quot; , &quot;list&quot;, &quot;of&quot;, &quot;words&quot;]}] ,\r\n&quot;this value is a string&quot; : &quot;1&quot; ,\r\n&quot;and this is a number&quot; : 23 ,\r\n&quot;and floating point&quot; :  1.413\r\n}</code></pre>\r\n<p>Aside from:</p>\r\n<ul>\r\n<li>Lists are enclosed in [] and each element is separated by ,</li>\r\n<li>Key-value pair lists are enclosed in {} and have the key and value separated by : and each pair is separated by ,</li>\r\n<li>Keys have to strings quoted with double quotes</li>\r\n<li>Numbers may be left unquoted (but just in value fields)</li>\r\n</ul>\r\n<p>There are no restrictions to what you can do with JSON. Given how explicit the syntax is then, it makes for very easy parsing, and there are plenty of good parser out there. <a href=\"https://stedolan.github.io/jq/\">My favourite JSON parser is jq(1)</a>.</p>\r\n<p>A canonical representation of the JSON example above can easily be obtained with jq by simply calling <code>jq \'\' file.json</code> (or piping the file through stdin, or even putting the contents properly quoted as the second argument).</p>\r\n<pre><code>{\r\n  &quot;first list&quot;: [\r\n    &quot;element1&quot;,\r\n    &quot;element2&quot;,\r\n    {\r\n      &quot;element3&quot;: &quot;is another k-v pair&quot;,\r\n      &quot;but contains&quot;: [\r\n        &quot;a&quot;,\r\n        &quot;list&quot;,\r\n        &quot;of&quot;,\r\n        &quot;words&quot;\r\n      ]\r\n    }\r\n  ],\r\n  &quot;this value is a string&quot;: &quot;1&quot;,\r\n  &quot;and this is a number&quot;: 23,\r\n  &quot;and floating point&quot;: 1.413\r\n}</code></pre>\r\n<p>You can also use jq in a shell script to obtain, for example the second element of the first list:</p>\r\n<pre><code>$ jq &#39;.&quot;first list&quot;[1]&#39; example.json\r\n&quot;element2&quot;</code></pre>\r\n<p>So to get the value associated to a key you use the notation <code>.key</code> and to get the k-th element you use the notation <code>[k-1]</code>. To remove the quotes on the string you can use the <code>-r</code> flag which stands for raw output.</p>\r\n<p><code>jq(1)</code> also gives you a few more functionalities that can be useful like getting the number of elements in a list with the length function.</p>\r\n<pre><code>$ jq &#39;length&#39;  example.json\r\n3\r\n$ jq &#39;.&quot;first list&quot;[2].&quot;but contains&quot; | length&#39;\r\n4</code></pre>\r\n<p>Another useful feature is getting the list of keys from a key-value pair list which can be done with the function <code>keys</code></p>\r\n<pre><code>$ jq &#39;.&quot;first list&quot;[2] | keys[]&#39; example.json\r\n&quot;but contains&quot;,\r\n&quot;element3&quot;</code></pre>\r\n<p>The query language is much much more flexible than this, but for most cases this should be enough for simple configuration querying.</p>\r\n<h1 id=\"yaml-and-xml\">YAML and XML??</h1>\r\n<p><a href=\"https://pypi.org/project/yq/\">The yq project</a> allows one to use the exact same syntax as jq to query, and emit (and therefore also transcode) yaml and XML, extending the usefulness of the query language.</p>\r\n<p>So for example looking at the previous file through <code>yq</code> gives:</p>\r\n<pre><code>$ yq -y &#39;&#39; example.json\r\nfirst list:\r\n  - element1\r\n  - element2\r\n  - element3: is another k-v pair\r\n    but contains:\r\n      - a\r\n      - list\r\n      - of\r\n      - words\r\nthis value is a string: &#39;1&#39;\r\nand this is a number: 23\r\nand floating point: 1.413</code></pre>\r\n<p>And the output of this can be of course queried with <code>yq</code> itself, or can be used to feed into whatever application requires a yaml input (I guess it lacks the triple dash at the top, but that is actually the only warning I get from passing that abomination to yamllint)</p>\r\n<p>Similarly <code>xq</code> can be used to query XML files with the same language. However, to emit these files from json you need to use <code>yq -x</code> like so:</p>\r\n<pre><code>$ yq -x &#39;&#39; example2.json\r\n&lt;file&gt;\r\n  &lt;first_list&gt;element1&lt;/first_list&gt;\r\n  &lt;first_list&gt;element2&lt;/first_list&gt;\r\n  &lt;first_list&gt;\r\n    &lt;element3&gt;is another k-v pair&lt;/element3&gt;\r\n    &lt;but_contains&gt;a&lt;/but_contains&gt;\r\n    &lt;but_contains&gt;list&lt;/but_contains&gt;\r\n    &lt;but_contains&gt;of&lt;/but_contains&gt;\r\n    &lt;but_contains&gt;words&lt;/but_contains&gt;\r\n  &lt;/first_list&gt;\r\n  &lt;this_value_is_a_string&gt;1&lt;/this_value_is_a_string&gt;\r\n  &lt;and_this_is_a_number&gt;23&lt;/and_this_is_a_number&gt;\r\n  &lt;and_floating_point&gt;1.413&lt;/and_floating_point&gt;\r\n&lt;/file&gt;</code></pre>\r\n<p>where the original (modified) file <code>example2.json</code> looks like:</p>\r\n<pre><code>{\r\n    &quot;file&quot;:\r\n    {\r\n      &quot;first_list&quot;: [\r\n        &quot;element1&quot;,\r\n        &quot;element2&quot;,\r\n        {\r\n          &quot;element3&quot;: &quot;is another k-v pair&quot;,\r\n          &quot;but_contains&quot;: [\r\n            &quot;a&quot;,\r\n            &quot;list&quot;,\r\n            &quot;of&quot;,\r\n            &quot;words&quot;\r\n          ]\r\n        }\r\n      ],\r\n      &quot;this_value_is_a_string&quot;: &quot;1&quot;,\r\n      &quot;and_this_is_a_number&quot;: 23,\r\n      &quot;and_floating_point&quot;: 1.413\r\n    }\r\n}</code></pre>\r\n<p>So that the root dictionary has a single key-value pair and all the keys have no spaces in them (so that they can be made into xml tags).</p>\r\n',385,0,1,'CC-BY-SA','json, yaml, xml, query',0,0,1),
(3253,'2021-01-20','Pandas Intro',1241,'Enigma introduces one of his favorite python modules pandas','<p>\r\nWelcome to another episode of HPR I\'m your host Enigma and today we are going to be talking\r\nabout one of my favorite python modules Pandas <br>\r\nThis will be the first episode in a series I\'m naming: For The Love of Python. <br>\r\n<br>\r\nFirst we need to get the module <br>\r\npip or pip3 install pandas <br>\r\nThis will install numpy as well <br>\r\nPandas uses an object called a dataframe which is a two-dimensional data structure, <br>\r\ni.e., data is aligned in a tabular fashion in rows and columns. Think of a spreadsheet type object in memory\r\n<br> <br>\r\nToday we are going to talk about: <br>\r\n<b>1) Importing data from various sources</b><br>\r\nCsv, excel, sql. More advance topics like Json covered in another episode. <br>\r\ndf = pd.read_csv(\'file name\') <br>\r\n<br>\r\n<b>2) Accessing data by column names or positionally </b> <br>\r\nprint(df.head(5)) # print all columns only first 5 rows <br>\r\nprint(df.tail(5)) # print all columns only last 5 rows <br>\r\nprint(df.shape) # print number of rows and columns in dataframe <br>\r\nprint(df.columns) print column names <br>\r\nprint(df[0:1].head(5)) print first two columns first 5 values by column position <br>\r\nprint(df[\'field1].head(5)) print same column first five values by column name <br>\r\n<br>\r\n<b>3) Setting column types. </b> <br>\r\ndf[\'FieldName\'] = df[\'FieldName\'].astype(int) # sets column as interger <br>\r\ndf[\'FieldName\'] = df[\'FieldName\'].astype(str) # sets column to string <br>\r\ndf[\'DateColumn\'] = pd.to_datetime(df[\'DateColumn\']) # sets column to Datetime <br>\r\n<br>\r\n<br>\r\n<b>4) Some basic filtering/manipulation of data. </b><br>\r\nSplits string at the @ for one split next two lines create 2 columns that use the pieces. <br>\r\nnew = df2[\"Email\"].str.split(\"@\", n = 1, expand = True) <br>\r\ndf2[\"user\"]= new[0] <br>\r\ndf2[\"domain\"]= new[1] <br>\r\n<br>\r\ndf[\'col\'] = df[\'Office\'].str[:3] # creates a new column grabing the first 3 positions of Office column <br>\r\ndf = df[df[\'FieldName\'] != 0] # Only keep rows that have a FieldName value not equal to zero <br>\r\n<br>\r\nSee example code that you can run at: <br>\r\n<a href = \'https://github.com/eth0enigma/PandasExample\'> Pandas Working example </a>\r\n</p>',39,38,0,'CC-BY-SA','python, data analytics, data science',0,0,1),
(3256,'2021-01-25','Update, MS Teams, Covid 19, Raspberry PI 400 Raspberry PI 4 8GB Centos',539,'Hey guys just a short update, whats going with Centos?  Raspberry PI 400 Good buy','<p>Hey guys I have been doing a lot of MS Teams it works on Linux not so I can have 365 on my ubuntu browser and MS teams installed. (Work complete from a linux box) (It\'s great) The Raspberry PI400 is a great box you should get it. Also I thought the Raspberry 4 8GB to be very solid.</p>\r\n',129,0,0,'CC-BY-SA','Centos, Oracle linux, MS Teams, Covid, Raspberry, PI 400',0,0,1),
(3257,'2021-01-26','Lack of diversity in Linux and other open source communities',714,'I consider some reasons that there is a lack of diversity when it comes to open source communities. ','<ol type=\"1\">\r\n<li>Why is there a lack of diverse voices and faces in the world of Linux and open source</li>\r\n<li>Free software but it\'s not made available to the very people who could really benefit from it</li>\r\n<li>Lack of training in schools when it comes to Linux and other open source software</li>\r\n</ol>',297,0,0,'CC-BY-SA','linux, race, podcast',0,0,1),
(3259,'2021-01-28','Nextcloud - The easy way',482,'Self hosting a Nextcloud instance.','<p><a href=\"https://peyanski.com/personal-cloud-from-home-nextcloud-on-raspberry-pi/#Nextcloud_initial_setup\" class=\"uri\">https://peyanski.com/personal-cloud-from-home-nextcloud-on-raspberry-pi/#Nextcloud_initial_setup</a></p>\r\n<pre><code>sudo apt-get update &amp;&amp; sudo apt-get upgrade -y</code></pre>\r\n<p>Start the Nextcloud on Raspberry Pi installation with the following script.</p>\r\n<pre><code>curl -sSL https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh | sudo bash</code></pre>\r\n<p>Github script content</p>\r\n<p><a href=\"https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh\" class=\"uri\">https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh</a></p>\r\n<pre><code>\r\n#!/bin/bash\r\n\r\n# NextCloudPi installation script\r\n#\r\n# Copyleft 2017 by Ignacio Nunez Hernanz &lt;nacho _a_t_ ownyourbits _d_o_t_ com&gt;\r\n# GPL licensed (see end of file) * Use at your own risk!\r\n#\r\n# Usage: ./install.sh\r\n#\r\n# more details at https://ownyourbits.com\r\n\r\nBRANCH=master\r\n#DBG=x\r\n\r\nset -e$DBG\r\n\r\nTMPDIR=&quot;$(mktemp -d /tmp/nextcloudpi.XXXXXX || (echo &quot;Failed to create temp dir.\r\nExiting&quot; &gt;&amp;2 ; exit 1) )&quot;\r\ntrap &quot;rm -rf &quot;${TMPDIR}&quot; ; exit 0&quot; 0 1 2 3 15\r\n\r\n[[ ${EUID} -ne 0 ]] &amp;&amp; {\r\n  printf &quot;Must be run as root. Try &#39;sudo $0&#39;n&quot;\r\n  exit 1\r\n}\r\n\r\nexport PATH=&quot;/usr/local/sbin:/usr/sbin:/sbin:${PATH}&quot;\r\n\r\n# check installed software\r\ntype mysqld  &amp;&gt;/dev/null &amp;&amp; echo &quot;&gt;&gt;&gt; WARNING: existing mysqld configuration\r\nwill be changed &lt;&lt;&lt;&quot;\r\n\r\n# get install code\r\necho &quot;Getting build code...&quot;\r\napt-get update\r\napt-get install --no-install-recommends -y wget ca-certificates sudo lsb-release\r\n\r\npushd &quot;$TMPDIR&quot;\r\nwget -qO- --content-disposition\r\nhttps://github.com/nextcloud/nextcloudpi/archive/&quot;$BRANCH&quot;/latest.tar.gz\r\n  | tar -xz\r\n  || exit 1\r\ncd - &amp;&amp; cd &quot;$TMPDIR&quot;/nextcloudpi-&quot;$BRANCH&quot;\r\n\r\n# install NCP\r\necho -e &quot;nInstalling NextCloudPi...&quot;\r\nsource etc/library.sh\r\n\r\n# check distro\r\ncheck_distro etc/ncp.cfg || {\r\n  echo &quot;ERROR: distro not supported:&quot;;\r\n  cat /etc/issue\r\n  exit 1;\r\n}\r\n\r\n\r\nmkdir -p /usr/local/etc/ncp-config.d/\r\ncp etc/ncp-config.d/nc-nextcloud.cfg /usr/local/etc/ncp-config.d/\r\ncp etc/library.sh /usr/local/etc/\r\ncp etc/ncp.cfg /usr/local/etc/\r\n\r\ninstall_app    lamp.sh\r\ninstall_app    bin/ncp/CONFIG/nc-nextcloud.sh\r\nrun_app_unsafe bin/ncp/CONFIG/nc-nextcloud.sh\r\nsystemctl restart mysqld # TODO this shouldn&#39;t be necessary, but somehow it&#39;s\r\nneeded in Debian 9.6. Fixme\r\ninstall_app    ncp.sh\r\nrun_app_unsafe bin/ncp/CONFIG/nc-init.sh\r\nbash /usr/local/bin/ncp-provisioning.sh\r\n\r\npopd\r\n\r\nIFACE=&quot;$( ip r | grep &quot;default via&quot; | awk &#39;{ print $5 }&#39; | head -1 )&quot;\r\nIP=&quot;$( ip a show dev &quot;$IFACE&quot; | grep global | grep -oP &#39;d{1,3}(.d{1,3}){3}&#39; |\r\nhead -1 )&quot;\r\n\r\necho &quot;Done.\r\n\r\nFirst: Visit https://$IP/  https://nextcloudpi.local/ (also\r\nhttps://nextcloudpi.lan/ or https://nextcloudpi/ on windows and mac)\r\nto activate your instance of NC, and save the auto generated passwords. You may\r\nreview or reset them\r\nanytime by using nc-admin and nc-passwd.\r\nSecond: Type &#39;sudo ncp-config&#39; to further configure NCP, or access ncp-web on\r\nhttps://$IP:4443/\r\nNote: You will have to add an exception, to bypass your browser warning when you\r\nfirst load the activation and :4443 pages. You can run letsencrypt to get rid of\r\nthe warning if you have a (sub)domain available.\r\n&quot;\r\n\r\nexit 0\r\n\r\n# License\r\n#\r\n# This script is free software; you can redistribute it and/or modify it\r\n# under the terms of the GNU General Public License as published by\r\n# the Free Software Foundation; either version 2 of the License, or\r\n# (at your option) any later version.\r\n#\r\n# This script is distributed in the hope that it will be useful,\r\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n# GNU General Public License for more details.\r\n#\r\n# You should have received a copy of the GNU General Public License\r\n# along with this script; if not, write to the\r\n# Free Software Foundation, Inc., 59 Temple Place, Suite 330,\r\n# Boston, MA  02111-1307  USA\r\n</code></pre>\r\n<p>DuckDNS</p>\r\n<p><a href=\"https://www.duckdns.org\" class=\"uri\">https://www.duckdns.org</a></p>\r\n<p>Enter trusted domain</p>\r\n<p><em>NextCloudPi panel</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3259/hpr3259/img_005.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3259/hpr3259/img_005_thumbnail.png\" alt=\"NextCloudPi panel\" /></a></p>\r\n<p><em>Trusted domain 1</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3259/hpr3259/img_007.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3259/hpr3259/img_007_thumbnail.png\" alt=\"Trusted domain 1\" /></a></p>\r\n<p><em>Trusted domain 2</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3259/hpr3259/img_008.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3259/hpr3259/img_008_thumbnail.png\" alt=\"Trusted domain 2\" /></a></p>\r\n<p>Certbot script</p>\r\n<pre><code>sudo apt install certbot python-certbot-apache -y\r\n\r\nsudo certbot --apache</code></pre>\r\n<p>Customization External storage support</p>\r\n<p>Apps &gt; Disabled Apps &gt; External Storage Support &gt; Enable</p>\r\n<p><em>Apps 1</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3259/hpr3259/img_001.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3259/hpr3259/img_001_thumbnail.png\" alt=\"Apps 1\" /></a></p>\r\n<p><em>Apps 2</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3259/hpr3259/img_002.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3259/hpr3259/img_002_thumbnail.png\" alt=\"Apps 2\" /></a></p>\r\n<p><em>Settings</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3259/hpr3259/img_006.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3259/hpr3259/img_006_thumbnail.png\" alt=\"Settings\" /></a></p>\r\n<p><em>External storage</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3259/hpr3259/img_004.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3259/hpr3259/img_004_thumbnail.png\" alt=\"External storage\" /></a></p>\r\n<p>Dark mode support</p>\r\n<p><em>Apps 3</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3259/hpr3259/img_003.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3259/hpr3259/img_003_thumbnail.png\" alt=\"Apps 3\" /></a></p>\r\n',318,0,0,'CC-BY-SA','self hosting, cloud, linux, raspberry pi',0,0,1),
(3254,'2021-01-21','The Markdown editor Retext',1494,'In this episode I cover the markdown editor ReText. I found this useful when creating show notes','<h2 id=\"what-is-retext\">What is ReText?</h2>\r\n<p>The <a href=\"https://github.com/retext-project/retext\">ReText website</a> on GitHub says that ReText is a simple but powerful editor for Markdown and reStructuredText markup languages.</p>\r\n<p>Doing a search on the HPR site returned the following two references to ReText.</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=1832\">The excellent Markdown and Pandoc HPR 1832 episode by Mr. Young makes reference to ReText</a></p>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=3167\">Dave Morriss mentioned using ReText as a possible tool when sending in shownotes as markdown is preferable to plain text. Refer to HPR 3167</a></p>\r\n<h2 id=\"retext-version-info\">Retext Version Info</h2>\r\n<p>As of the 1st of January 2021 I am running ReText version 7.0.1 the latest version was 7.1.0 this was last updated on the 4th of April 2020.</p>\r\n<h2 id=\"why-i-am-covering-this\">Why I am covering this</h2>\r\n<p>I’m covering this because in HPR show 3167 Dave Morriss said that Markdown was a preferred way to submit shownotes. Prior to this I had supplied my shownotes in plain text.</p>\r\n<h2 id=\"what-is-markdown\">What is Markdown?</h2>\r\n<p>I guess I first must cover what markdown is I found the following definitions:-</p>\r\n<p><a href=\"https://daringfireball.net/projects/markdown/\">Description of Markdown from Wikipedia</a></p>\r\n<p>Markdown is a lightweight markup language for creating formatted text using a plain-text editor. John Gruber and Aaron Swartz created Markdown in 2004 as a markup language that is appealing to the human users in its source form.[9] Markdown is widely used in blogging, instant messaging, online forums, collaboration software, documentation pages, and even readme files Link <a href=\"https://en.wikipedia.org/wiki/Markdown\">https://en.wikipedia.org/wiki/Markdown</a></p>\r\n<p><a href=\"https://daringfireball.net/projects/markdown/\">Description of Markdown from John Gruber\'s website, one of the co founders of Markdown.</a></p>\r\n<p>Markdown is a text-to-HTML conversion tool for web writers. Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML).</p>\r\n<h2 id=\"example-text-used-in-the-show-and-how-it-looks\">Example text used in the show and how it looks</h2>\r\n<pre><code># This is a level 1 heading\r\n\r\n## This is a level 2 heading\r\n\r\n### This is a level 3 heading\r\n</code></pre>\r\n<h1 id=\"this-is-a-level-1-heading\">This is a level 1 heading</h1>\r\n<h2 id=\"this-is-a-level-2-heading\">This is a level 2 heading</h2>\r\n<h3 id=\"this-is-a-level-3-heading\">This is a level 3 heading</h3>\r\n<h2 id=\"list-of-useful-links\">List of useful links</h2>\r\n<p>Finally here are useful links that are available from within the ReText program. They can be found within the Help / About ReText menu:-</p>\r\n<p><a href=\"https://github.com/retext-project/retext\">Link to ReText website</a></p>\r\n<p><a href=\"https://daringfireball.net/projects/markdown/syntax#precode\">Link to Markdown syntax</a></p>\r\n<p><a href=\"https://docutils.sourceforge.io/docs/user/rst/quickref.html\">Link to reStructuredText syntax</a></p>\r\n<h2 id=\"final-thoughts\">Final thoughts</h2>\r\n<ul>\r\n<li><p>Using ReText to pull these shownotes together disciplined me to hopefully put more meaningful titles within my shownotes.</p></li>\r\n<li><p>It helped my to create meaningful descriptive links which will hopefully help accessibility for the visually impaired.</p></li>\r\n<li><p>I edited the text on this occasion in live preview mode I found this made it very easy to see how the final version would look.</p></li>\r\n<li><p>I think I ended up with more polished shownotes that hopefully needs fewer and hopefully no input from our band of HPR volunteers working behind the scenes.</p></li>\r\n</ul>\r\n',201,0,1,'CC-BY-SA','Markdown, HPR, shownotes',0,0,1),
(3265,'2021-02-05','My Chromebook Experience',525,'Adding my own perspective to the Chromebook discussion','<p>On January 5, 2021, Zen_Floater2 did an interesting show that you might call a virtual conversation with Klaatu. He took a show that Klaatu had done on the GNU World Order podcast about using Chromebooks, and interspersed his own comments. As I was listening I thought that I had a slightly different perspective, so I recorded this brief show about my own experience.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3242\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=3242</a></li>\r\n<li><a href=\"https://www.amazon.com/gp/product/B075S8YS87/\" class=\"uri\">https://www.amazon.com/gp/product/B075S8YS87/</a></li>\r\n<li><a href=\"https://www.palain.com/my-chromebook-experience/\" class=\"uri\">https://www.palain.com/my-chromebook-experience/</a></li>\r\n</ul>\r\n',198,0,0,'CC-BY-SA','Chromebooks',0,0,1),
(3258,'2021-01-27','Linux Inlaws S01E22: The Linux Professional Institute',4129,'The chaps host Evan Leibovitch from the LPI','<ul>\r\n<li>Linux Professional Institute: <a href=\"https://www.lpi.org\" target=\"_blank\">https://www.lpi.org</a></li>\r\n<li>Kali Linux: <a href=\"https://www.kali.org\" target=\"_blank\">https://www.kali.org</a></li>\r\n<li>Anti-pox of the week (Java is broken): <a href=\"https://stackoverflow.com/questions/2210720/how-to-analyse-a-noclassdeffounderror-caused-by-an-ignored-exceptionininitialize\" target=\"_blank\">https://stackoverflow.com/questions/2210720/how-to-analyse-a-noclassdeffounderror-caused-by-an-ignored-exceptionininitialize</a></li>\r\n<li>Book of Monsters: <a href=\"https://www.imdb.com/title/tt7260818\" target=\"_blank\">https://www.imdb.com/title/tt7260818</a></li>\r\n<li>Tucker and Dale vs. Evil: <a href=\"https://www.imdb.com/title/tt1465522\" target=\"_blank\">https://www.imdb.com/title/tt1465522</a></li>\r\n<li>The serpent (BBC series): <a href=\"https://en.wikipedia.org/wiki/The_Serpent_(TV_series)\" target=\"_blank\">https://en.wikipedia.org/wiki/The_Serpent_(TV_series)</a></li>\r\n<li>Grumpy Old Coders (epside 6): <a href=\"https://soundcloud.com/user-498377588/grumpy-old-coders-ep-6-retrospective\" target=\"_blank\">https://soundcloud.com/user-498377588/grumpy-old-coders-ep-6-retrospective</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Java screw-up, Linux Professional Institute, Zombies, Grumpies',0,0,1),
(3262,'2021-02-02','My thoughts on diversity in Linux and open source',2010,'I give some of my background story and certain frustrations I have experienced in life','<ol type=\"1\">\r\n<li>Lack of exposure to Linux and open source</li>\r\n<li>Lack of interest in Linux and open source</li>\r\n<li>Some experiences I had growing up</li>\r\n</ol>',297,0,0,'CC-BY-SA','linux, race, podcast, irc, telegram, technology, culture',0,0,1),
(3263,'2021-02-03','My Beginnings in Tech',1157,'Rambling about how I got in to technology and linux.','<p>Hiya! There aren\'t any links or anything to put here, but putting something in the show notes seems important.</p>',390,0,1,'CC-BY-SA','Introduction, Linux, First Show',0,0,1),
(3264,'2021-02-04','Intro to Nagios',1200,'Introduce some nagios basics and walk through setting up nagios on Ubuntu','<h1 id=\"nagios-basics\">Nagios Basics</h1>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>I noticed nagios on the requested topics page. I am far from being an expert with nagios and there is a lot I do not know. I have a working knowledge of most of the basic nagios principles. So, hopefully, I can give a useful introduction and review some one the principles of nagios along the way</p>\r\n<p>Nagios is a network monitoring tool. You define some things for nagios to check, and nagios will alert you if those checks fail.</p>\r\n<p>Nagios has a web UI that is normally used to see the status of the checks. There are some basic administration tasks you can do from the web UI</p>\r\n<ul>\r\n<li>enabling/disabling notifications</li>\r\n<li>Scheduling Downtime</li>\r\n<li>Forcing immediate checks</li>\r\n</ul>\r\n<p>Nagios is primarily configured with text files. You have to edit the nagios config files for things like</p>\r\n<ul>\r\n<li>adding servers</li>\r\n<li>customizing commands</li>\r\n</ul>\r\n<h2 id=\"nagios-core-vs-nagiosxi\">Nagios core vs NagiosXI</h2>\r\n<p>NagiosXI is the commercial version of nagios. NagiosXI requires a paid license and includes support. NagiosXI has some extra features including wizards for adding hosts and easy cloning of hosts.</p>\r\n<p>I have used NagiosXI, and personally don\'t find the extra features very useful. Probably the biggest reason to use NagiosXI is Enterprise that requires commercial support</p>\r\n<p>The <code>community</code> version of nagios is normally referred to as <code>nagios core</code> This episode will focus on the nagios core</p>\r\n<h2 id=\"nagios-documentation\">Nagios Documentation</h2>\r\n<p>I don\'t like the official nagios core documentation. A lot like man pages, It is a good reference, but can be hard to follow.</p>\r\n<p>Maybe is it possible for someone to read the documentation and be able to install and configure nagios for the first time. But it took me a lot of trial and error to get a functional nagios server following the nagios documentation</p>\r\n<p>Outside of the official documentation, Most of the nagios installation guides I found online recommend downloading and building nagios from the nagios site. My general policy is to use OS provided packages whenever possible. Normally, sticking to packages eases long the term maintenance.</p>\r\n<p>You may not always get the latest feature release, but installation and updates are usually easier. I know not everyone will agree with me here, and will want to build the latest version. Regardless of the install method, most of the nagios principles I go over will still apply</p>\r\n<p>I am making the assumption that most listeners will be most familiar with Debian/Ubuntu, so I will go over installing nagios on Ubuntu using the nagios packages from the Ubuntu repository</p>\r\n<h2 id=\"hosts-and-services\">Hosts and Services</h2>\r\n<p>Before I go over the installation, I\'ll talk a bit about some of the pieces that make up nagios Nagios checks are for either hosts or services.</p>\r\n<p>From the Nagios documentation</p>\r\n<blockquote>\r\n<p>A host definition is used to define a physical server, workstation, device, etc. that resides on your network.</p>\r\n</blockquote>\r\n<p>Also from the nagios documentation</p>\r\n<blockquote>\r\n<p>A service definition is used to identify a \"service\" that runs on a host. The term \"service\" is used very loosely. It can mean an actual service that runs on the host (POP, SMTP, HTTP, etc.) or some other type of metric associated with the host</p>\r\n</blockquote>\r\n<p>Normally, hosts are checked using ping. If the host responds to the ping with in the specified time frame, the host is considered up. Once a host is defined and determined to be UP, you can optionally check services on that host</p>\r\n<h2 id=\"installation-and-setup\">Installation and setup</h2>\r\n<p>Install the packages</p>\r\n<pre><code>apt install nagios4</code></pre>\r\n<p>One of the dependencies is the monitoring-plugins I\'ll talk more about the monitoring-plugins package when we dig in to the checks</p>\r\n<p>The primary UI for nagios is a cgi driven web app usually served via apache. Following the nagios4 installation, the web UI isn\'t functional. So we need to make a few configuration changes</p>\r\n<p>The nagios config file for apache contains a directive that is not enabled by default</p>\r\n<p>Enable 2 Apache modules</p>\r\n<pre><code>a2enmod authz_groupfile\r\na2enmod auth_digest\r\nsystemctl restart apache2</code></pre>\r\n<h2 id=\"nagios-authentication\">Nagios authentication</h2>\r\n<h3 id=\"enable-users-in-the-nagios-ui\">Enable users in the nagios UI</h3>\r\n<p>In <code>/etc/nagios4/cgi.cfg</code> change the line</p>\r\n<pre><code>&#39;use_authentication=0&#39;</code></pre>\r\n<p>to</p>\r\n<pre><code>&#39;use_authentication=1&#39;</code></pre>\r\n<h3 id=\"modify-apache\">Modify Apache</h3>\r\n<p>In <code>/etc/apache2/conf-enabled/nagios4-cgi.conf</code> change</p>\r\n<pre><code>Require all granted</code></pre>\r\n<p>to</p>\r\n<pre><code>Require valid-user</code></pre>\r\n<p>And if needed, remove the IP restriction by removing the line that starts with</p>\r\n<pre><code>Require ip</code></pre>\r\n<p>And finally we need to add a nagios basic auth user. I normally use <code>nagiosadmin</code>, but it can be any username</p>\r\n<pre><code>htdigest  -c /etc/nagios4/htdigest.users Nagios4 nagiosadmin</code></pre>\r\n<h4 id=\"restarts\">Restarts</h4>\r\n<p>Restart apache and nagios and the nagios UI will be fully functional</p>\r\n<h2 id=\"check-commands\">Check commands</h2>\r\n<p>Nagios uses a collection of small standalone executables to perform the checks. Checks are either OK, Warning, or Critical, depending on the exit code of the check.</p>\r\n<table>\r\n<thead>\r\n<tr class=\"header\">\r\n<th style=\"text-align: center;\">Exit Code</th>\r\n<th>Status</th>\r\n</tr>\r\n</thead>\r\n<tbody>\r\n<tr class=\"odd\">\r\n<td style=\"text-align: center;\">0</td>\r\n<td>OK/UP</td>\r\n</tr>\r\n<tr class=\"even\">\r\n<td style=\"text-align: center;\">1</td>\r\n<td>WARNING</td>\r\n</tr>\r\n<tr class=\"odd\">\r\n<td style=\"text-align: center;\">2</td>\r\n<td>CRITICAL</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<p>The check commands are standalone applications that can be run independent from nagios. Running the checks from the shell is helpful to better understand how the nagios checks work. The location of the check commands can vary depending on how nagios was packaged. In this case, they are in <code>/usr/lib/nagios/plugins</code></p>\r\n<p>Looking at the names on the files can give you an idea of their purpose. For example, it should be obvious what <code>check_http</code> and <code>check_icmp</code> are for.</p>\r\n<pre><code>cd /usr/lib/nagios/plugins\r\n$ ./check_icmp localhost\r\nOK - localhost: rta 0.096ms, lost 0%|rta=0.096ms;200.000;500.000;0; pl=0%;40;80;; rtmax=0.218ms;;;; rtmin=0.064ms;;;;\r\n$ ./check_http localhost\r\nHTTP OK: HTTP/1.1 200 OK - 10977 bytes in 0.005 second response time |time=0.004558s;;;0.000000;10.000000 size=10977B;;;0</code></pre>\r\n<p>Most checks can be run with <code>-h</code> to print usage help</p>\r\n<p>The checks can be in any language as long as is it is executable by the nagios server. Many are compiled C but Perl and shell scripts are also common</p>\r\n<pre><code>file check_icmp\r\ncheck_icmp: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=46badf6e4322515a70d5553c8018a20e1e9b8206, for GNU/Linux 3.2.0, stripped</code></pre>\r\n<h2 id=\"nagios-config-files\">Nagios config files</h2>\r\n<p>The primary nagios config file is <code>/etc/nagios4/nagios.cfg</code></p>\r\n<p>nagios.cfg has a directive that will load additional user generated files</p>\r\n<pre><code>cfg_dir=/etc/nagios4/conf.d</code></pre>\r\n<p>I like to put all my additions to nagios in this directory and use git for both version control and backup.</p>\r\n<h2 id=\"nagios-commands\">Nagios commands</h2>\r\n<p>Nagios doesn\'t run the check executable directly The checks have to be explicitly defined in as a command Some predefined commands are in <code>/etc/nagios4/objects/commands.cfg</code></p>\r\n<p>Debian package <code>monitoring-plugins-basic</code> contains several command definitions that are loaded by nagios.cfg <code>cfg_dir=/etc/nagios-plugins/config</code></p>\r\n<p>Lets look in the <code>/etc/nagios-plugins/config</code> at <code>ping.cfg</code> for an example of how commands are defined</p>\r\n<pre><code># &#39;check-host-alive&#39; command definition\r\ndefine command{\r\n    command_name    check-host-alive\r\n    command_line    /usr/lib/nagios/plugins/check_ping -H &#39;$HOSTADDRESS$&#39; -w 5000,100% -c 5000,100% -p 1\r\n    }</code></pre>\r\n<p>Commands require <code>command_name</code> and <code>command_line</code> The command line is that path to the executable that will perform the check and optional arguments. Most checks require <code>-H</code> for the host address to check The check-host-alive command also contains arguments to set the critical and warning thresholds with <code>-c</code> and <code>-w</code></p>\r\n<p>The check_ping command is similar the check-host-alive command except it requires 2 arguments to set the critical and warning thresholds.</p>\r\n<pre><code>define command{\r\n        command_name    check_ping\r\n        command_line    /usr/lib/nagios/plugins/check_ping -H &#39;$HOSTADDRESS$&#39; -w &#39;$ARG1$&#39; -c &#39;$ARG2$&#39;\r\n        }</code></pre>\r\n<h2 id=\"templates\">Templates</h2>\r\n<p>Hosts and services require a lot of reused variables. Object definitions normally use <strong>templates</strong> to avoid having to repetitively set the same variables on each host. Nagios normally ships with predefined templates for hosts and services that will work for most cases.</p>\r\n<p>In Ubuntu, the templates are defined in <code>/etc/nagios4/objects/templates.cfg</code>. Template definitions are the same as other object definitions, except they contain <code>register 0</code> which designates the object as a template. I\'ll show how the templates are used when I go over the host and service definitions.</p>\r\n<h2 id=\"notifications\">Notifications</h2>\r\n<p>By default, notifications are sent via email to nagios@localhost. The easiest way to get notifications is to configure the nagios server to forward emails to a monitored email address. Since many networks block sending email directly via SMTP, email forwarding may be challenging.</p>\r\n<p>In a follow up episode I will cover setting up postfix to relay mail through a mail sending service and maybe some other methods for sending alerts</p>\r\n<h2 id=\"localhost\">Localhost</h2>\r\n<p>By default, nagios is set to monitor localhost. Having the nagios server can be useful but you probably want to add some additional servers.</p>\r\n<p>Have a look at <code>/etc/nagios4/objects/localhost.cfg</code> if you want to see how the checks for localhost are defined</p>\r\n<h2 id=\"adding-a-new-host-to-monitor\">Adding a new host to monitor</h2>\r\n<p>We will use google.com as an example and create a file named <code>google.cfg</code> and place it in in the cfg_dir <code>/etc/nagios4/conf.d</code>.</p>\r\n<p>The files can be named anything that ends in <code>.cfg</code>. My preference is one file per host that contains all the checks for that host. The content of <code>google.cfg</code> is included new the end of the show notes.</p>\r\n<p>First, we need to define the host. <code>host_name</code> is the only field required to be set. The remaining requirements are met by using the <code>generic-host</code> template.</p>\r\n<p>We can add a service check to google.com using the same file. The easiest to add is a http check <code>host_name</code>, <code>service_description</code>, and <code>check_command</code> have to be set the remaining requirements are met by using the <code>generic-service</code> template.</p>\r\n<h2 id=\"restarting-nagios\">Restarting Nagios</h2>\r\n<p>Nagios has to be reloaded to pick up the configuration changes. Prior to restarting nagios, you can verify the nagios configuration is valid by running:</p>\r\n<pre><code>nagios4 -v /etc/nagios4/nagios.cfg</code></pre>\r\n<p>This will print a summary of the configuration. Any warnings or errors will be printed at the end.</p>\r\n<p>Warnings are not fatal, but should probably be looked at. Errors will keep nagios from restarting; if there are no errors, it is safe to restart nagios</p>\r\n<p>Check the nagios UI at <code>https://SERVER_IP/nagios4</code> and you should see 2 hosts, localhost and google.com as well as the service checks for the hosts</p>\r\n<h2 id=\"next-episode\">Next Episode</h2>\r\n<p>Since I have already made the mistake of mentioning a follow up episode, I know I am now committed to making additional episode, Next time I will try to cover some enhancements to nagios, including</p>\r\n<ul>\r\n<li>some notification options</li>\r\n<li>monitoring-plugins packages</li>\r\n<li>writing custom checks</li>\r\n<li>using SNMP to monitor load average and disk usage</li>\r\n</ul>\r\n<p>Leave a comment if there are other aspects of nagios you would like me to try to cover. No promises, but I will do my best.</p>\r\n<p><strong>Thanks for listening and I will see you next time.</strong></p>\r\n<h2 id=\"files\">Files</h2>\r\n<h3 id=\"playbook\">Playbook</h3>\r\n<pre><code>---\r\n- hosts: nagios\r\n  tasks:\r\n  - name: install nagios\r\n    apt:\r\n      name:\r\n        - nagios4\r\n      update_cache: yes\r\n\r\n  - name: Enable the Apache2 modules\r\n    command: a2enmod &quot;{{item}}&quot;\r\n    with_items:\r\n    - authz_groupfile\r\n    - auth_digest\r\n  - name: modify nagios cgi config to require user\r\n    replace:\r\n      path: /etc/nagios4/cgi.cfg\r\n      regexp: &#39;use_authentication=0&#39;\r\n      replace: &#39;use_authentication=1&#39;\r\n  - name: nagios require valid user\r\n    replace:\r\n      path: /etc/apache2/conf-enabled/nagios4-cgi.conf\r\n      regexp: &quot;Require all  granted&quot;\r\n      replace: &quot;Require valid-user&quot;\r\n  - name: remove IP restriction\r\n    lineinfile:\r\n      regexp: &quot;Require ip&quot;\r\n      path: /etc/apache2/conf-enabled/nagios4-cgi.conf\r\n      state: absent\r\n  - name: move auth requirements out of File restrictions\r\n    lineinfile:\r\n      path: /etc/apache2/conf-enabled/nagios4-cgi.conf\r\n      regexp: &#39;^s*&lt;/?Files&#39;\r\n      state: absent\r\n  - name: nagios user\r\n    copy:\r\n      dest: /etc/nagios4/htdigest.users\r\n      src: htdigest.users\r\n  - name: restart apache\r\n    service:\r\n      name: apache2\r\n      state: restarted\r\n  - name: copy nagios configs\r\n    copy:\r\n      src: &quot;{{item}}&quot;\r\n      dest: /etc/nagios4/conf.d\r\n    with_items:\r\n      - google.cfg\r\n  - name: restart nagios\r\n    service:\r\n      name: nagios4\r\n      state: restarted</code></pre>\r\n<h3 id=\"google.cfg\">google.cfg</h3>\r\n<pre><code>define host {\r\n  host_name google.com\r\n  use generic-host\r\n}\r\n\r\ndefine service {\r\n  use generic-service\r\n  host_name google.com\r\n  service_description HTTP\r\n  check_command check_http\r\n}</code></pre>\r\n<h3 id=\"htdigest.users\">htdigest.users</h3>\r\n<pre><code>nagiosadmin:Nagios4:85043cf96c7f3eb0884f378a8df04e4c</code></pre>\r\n',342,0,0,'CC-BY-SA','nagios, ubuntu',0,0,1),
(3267,'2021-02-09','Ripping Media 2021',1000,'I go over ripping webpage media','<ul>\r\n<li>android has newpipes for downloading youtube</li>\r\n<li>windows youtube-DL script:<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Youtube-dl-ffmpeg-aria2c-updater-downloader.bat\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Youtube-dl-ffmpeg-aria2c-updater-downloader.bat</a></li>\r\n</ul>\r\n<p>ffmpeg notes:</p>\r\n<ul>\r\n<li><p>I started out by wanting to download facebook live streams and ended up missing it all together</p></li>\r\n<li><p>Reference (no longer live by the time I got online... ): <a href=\"https://www.facebook.com/FormulaDRIFT/videos/452016008942956/\" class=\"uri\">https://www.facebook.com/FormulaDRIFT/videos/452016008942956/</a></p></li>\r\n<li><p>live video looks like something about mpd files with facebook also looks like you need ffmpeg complied with --enable-libxml2</p></li>\r\n<li><p>this is where I found a WONDERFUL script <a href=\"https://github.com/jb-alvarado/media-autobuild_suite\" class=\"uri\">https://github.com/jb-alvarado/media-autobuild_suite</a></p></li>\r\n<li><p>also located other untested projects (pre compiled binaries ;/ ) <a href=\"https://www.videohelp.com/software/Hybrid\" class=\"uri\">https://www.videohelp.com/software/Hybrid</a></p></li>\r\n<li><p>windows binary of youtube-dl for facebook/twitch.tv and youtube etc ..<br />\r\n<a href=\"https://ytdl-org.github.io/youtube-dl/download.html\" class=\"uri\">https://ytdl-org.github.io/youtube-dl/download.html</a></p></li>\r\n<li><p>oneliner to download/run media-autobuild_suite to \"%userprofile%media-autobuild_suite-masterbuildffmpeg-gitbuild-static-64bit\"</p></li>\r\n</ul>\r\n<pre><code>powershell   -Exec Bypass &quot;IEX (New-Object System.Net.WebClient).DownloadFile(&#39;https://github.com/jb-alvarado/media-autobuild_suite/archive/master.zip&#39;,&quot;%userprofile%desktopmaster.zip&quot;);   Expand-Archive -LiteralPath  &quot;%userprofile%desktopmaster.zip&quot;  -DestinationPath  &quot;%userprofile%desktop&quot;     ;Start-Process &quot;%userprofile%desktopmedia-autobuild_suite-mastermedia-autobuild_suite.bat&quot; &quot;</code></pre>\r\n<ul>\r\n<li><p>this took over 8hrs to compile on a i7 I disabled items that had warnings and comments about issues and useless of codes that have issues etc</p></li>\r\n<li><p>missing libopenh264.dll when I launched ffmpeg_g.exe</p></li>\r\n<li><p>the dll was not built but I\'m not sure it\'s something I messed up I\'m sure</p></li>\r\n<li><p>only post I saw online about it was that it\'s useless and -full should never be used flaming etc</p></li>\r\n<li><p>start media-autobuild_suite-mastermsys64mingw64.exe and run the following</p></li>\r\n<li><p>Reference : <a href=\"https://bluexmas.tistory.com/category/OS\" class=\"uri\">https://bluexmas.tistory.com/category/OS</a> not sure what the flags were for but copied the DLL into the folder and it appears to run</p></li>\r\n</ul>\r\n<pre><code>git clone https://github.com/cisco/openh264.git\r\ncd openh264\r\nexport &quot;CFLAGS=-fno-stack-protector&quot;\r\nexport &quot;LDFLAGS=-lssp&quot;\r\nmake</code></pre>\r\n<ul>\r\n<li>also had to apply this fix for AR etc in platform-mingw_nt.mk folder</li>\r\n</ul>\r\n<pre><code>find / -iname &quot;platform-mingw_nt.mk&quot; -exec sed &#39;s/x86_64-w64-mingw32-//g&#39; -i.bak &#39;{}&#39; ;</code></pre>\r\n<pre><code>youtube-dl -f bestvideo+bestaudio &quot;link to youtube video&quot;</code></pre>\r\n<p>If that gives you an error, try the following instead:</p>\r\n<pre><code>youtube-dl -f &#39;bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio&#39; --merge-output-format mp4 &quot;link to youtube video&quot;</code></pre>\r\n<p>Here you download the best video and audio separately and then merge into a, in this case mp4 file. You can change the output format on the merged video as well.</p>\r\n',36,0,1,'CC-BY-SA','ffmpeg,hacking,youtube-dl,media',0,0,1),
(3271,'2021-02-15','Interview with a 6yo child ',428,'I ask some basic questions to my 6yo','<p>Not really hacking but good times</p>',36,78,0,'CC-BY-SA','interviews,kids',0,0,1),
(3269,'2021-02-11','Linux Inlaws S01E23: The first year of the five year plan',2855,'The Inlaws review the first year: the highlights, lowlights and all the bloody rest','<ul>\r\n<li>Free software (not just Richard\'s idea): <a href=\"https://www.gnu.org/philosophy/free-sw.html\" target=\"_blank\">https://www.gnu.org/philosophy/free-sw.html</a></li>\r\n<li>How Nvidia became Skynet: <a href=\"https://hackerpublicradio.org/eps.php?id=3069\" target=\"_blank\">https://hackerpublicradio.org/eps.php?id=3069</a></li>\r\n<li>Hacktoberfest: <a href=\"https://hacktoberfest.digitalocean.com\" target=\"_blank\">https://hacktoberfest.digitalocean.com</a></li>\r\n<li>Claudio and crew: <a href=\"https://hackerpublicradio.org/eps.php?id=3099\" target=\"_blank\">https://hackerpublicradio.org/eps.php?id=3099</a></li>\r\n<li>Not going out: <a href=\"https://en.wikipedia.org/wiki/Not_Going_Out\" target=\"_blank\">https://en.wikipedia.org/wiki/Not_Going_Out</a></li>\r\n<li>An American Pickle: <a href=\"https://www.imdb.com/title/tt9059704/?ref_=fn_al_tt_2\" target=\"_blank\">https://www.imdb.com/title/tt9059704/?ref_=fn_al_tt_2</a></li>\r\n<li>Mrs Honeyhume: <a href=\"https://hackerpublicradio.org/eps.php?id=3251\" target=\"_blank\">https://hackerpublicradio.org/eps.php?id=3251</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','communism, five year plan, world domination, FOSS, Femke',0,0,1),
(3279,'2021-02-25','Linux Inlaws S01E24: Legacy programming languages',3252,'The two chaps discuss why history keeps repeating itself in programming languages and beyond','<ul>\r\n<li>Plankalkül: <a href=\"https://en.wikipedia.org/wiki/Plankalk%C3%BCl\" target=\"_blank\">https://en.wikipedia.org/wiki/Plankalk%C3%BCl</a></li>\r\n<li>Fortran: <a href=\"https://fortran-lang.org\" target=\"_blank\">https://fortran-lang.org</a></li>\r\n<li>COBOL: <a href=\"https://en.wikipedia.org/wiki/COBOL\" target=\"_blank\">https://en.wikipedia.org/wiki/COBOL</a></li>\r\n<li>ALGOL: <a href=\"https://en.wikipedia.org/wiki/ALGOL\" target=\"_blank\">https://en.wikipedia.org/wiki/ALGOL</a></li>\r\n<li>GNU Fortran: <a href=\"https://gcc.gnu.org/fortran/\" target=\"_blank\">https://gcc.gnu.org/fortran/</a></li>\r\n<li>IBM System/36: <a href=\"https://en.wikipedia.org/wiki/IBM_System/36\" target=\"_blank\">https://en.wikipedia.org/wiki/IBM_System/36</a></li>\r\n<li>IBM Z: <a href=\"https://www.ibm.com/it-infrastructure/z/hardware\" target=\"_blank\">https://www.ibm.com/it-infrastructure/z/hardware</a></li>\r\n<li>Niklaus Wirth: <a href=\"https://en.wikipedia.org/wiki/Niklaus_Wirth\" target=\"_blank\">https://en.wikipedia.org/wiki/Niklaus_Wirth</a></li>\r\n<li>Pascal: <a href=\"https://en.wikipedia.org/wiki/Pascal_(programming_language)\" target=\"_blank\">https://en.wikipedia.org/wiki/Pascal_(programming_language)</a></li>\r\n<li>Modula-2: <a href=\"https://en.wikipedia.org/wiki/Modula-2\" target=\"_blank\">https://en.wikipedia.org/wiki/Modula-2</a></li>\r\n<li>Smalltalk: <a href=\"https://en.wikipedia.org/wiki/Smalltalk\" target=\"_blank\">https://en.wikipedia.org/wiki/Smalltalk</a></li>\r\n<li>Lisp: <a href=\"https://en.wikipedia.org/wiki/Lisp_(programming_language)\" target=\"_blank\">https://en.wikipedia.org/wiki/Lisp_(programming_language)</a></li>\r\n<li>Fourth generation languages: <a href=\"https://en.wikipedia.org/wiki/Fourth-generation_programming_language\" target=\"_blank\">https://en.wikipedia.org/wiki/Fourth-generation_programming_language</a></li>\r\n<li>SQL: <a href=\"https://en.wikipedia.org/wiki/SQL\" target=\"_blank\">https://en.wikipedia.org/wiki/SQL</a></li>\r\n<li>ABAP: <a href=\"https://en.wikipedia.org/wiki/ABAP\" target=\"_blank\">https://en.wikipedia.org/wiki/ABAP</a></li>\r\n<li>SAP NetWeaver: <a href=\"https://en.wikipedia.org/wiki/SAP_NetWeaver_Application_Server\" target=\"_blank\">https://en.wikipedia.org/wiki/SAP_NetWeaver_Application_Server</a></li>\r\n<li>Rust: <a href=\"https://rust-lang.org\" target=\"_blank\">https://rust-lang.org</a></li>\r\n<li>Occam: <a href=\"https://en.wikipedia.org/wiki/Occam_(programming_language)\" target=\"_blank\">https://en.wikipedia.org/wiki/Occam_(programming_language)</a></li>\r\n<li>C: <a href=\"https://www.iso.org/standard/74528.html\" target=\"_blank\">https://www.iso.org/standard/74528.html</a></li>\r\n<li>Foreign Function Interface: <a href=\"https://github.com/libffi/libffi\" target=\"_blank\">https://github.com/libffi/libffi</a></li>\r\n<li>Cracking Codes with Python: <a href=\"https://inventwithpython.com/cracking\" target=\"_blank\">https://inventwithpython.com/cracking</a></li>\r\n<li>CUDA: <a href=\"https://developer.nvidia.com/cuda-GPUs\" target=\"_blank\">https://developer.nvidia.com/cuda-GPUs</a></li>\r\n</ul>\r\n\r\n\r\n',384,111,1,'CC-BY-SA','Programming languages, Legacy, old stuff, new stuff, hipster languages, coffee',0,0,1),
(3268,'2021-02-10','Video Game Review - Ark Survival Evolved',532,'Enigma reviews Ark survival evolved','<p>\r\nEnigma reviews <a href=\"https://ark.gamepedia.com/ARK_Survival_Evolved_Wiki\"> Ark Survival Evolved </a>, a multiplayer survival game for the xbox, PC and ps4 <br>\r\n<br>\r\nCome chat with us at irc.freenode.net #hackerexchange <br>\r\nFollow me on twitter @Ed_N1gma\r\n</p>',39,0,1,'CC-BY-SA','video, game, reviews',0,0,1),
(3272,'2021-02-16','In GNU/Linux, there is no \"diversity\", we\'re all just data.',1032,'How I experienced GNU/Linux and the topic of \"diversity\".','<p>I\'m just Some Guy On The Internet.</p>',391,0,1,'CC-BY-SA','GNU/Linux, GNU/Linux diversity',0,0,1),
(3273,'2021-02-17','Embrace Firefox',853,'That\'s Our Browser!','<pre>\r\nHPR.config\r\n\r\nName: \"Darwin\"\r\nHandle: \"Some Guy on the Internet\"\r\nOccupation: \"Loiter on the Internet\"\r\nHobby: \"Freedom\"\r\n\r\nTitle: \"Embrace Firefox\"\r\nSummary: \"That’s Our Browser!\"\r\n</pre>',391,0,1,'CC-BY-SA','Some Guy on the Internet, Darwin, Firefox',0,0,1),
(3266,'2021-02-08','Upgrading Debian on my raspberry pi',2001,'In this episode I cover the process of upgrading Debian from Jessie 8 to Stretch 9 on my raspberrypi','<h1 id=\"pi13-upgrade-from-jessie-8-to-stretch-9---performed-151220\">Pi13 upgrade from Jessie 8 to Stretch 9 - performed 15/12/20</h1>\r\n<h2 id=\"history\">History</h2>\r\n<p>Upgraded my raspberry pi 13, which I think had a minimal install Raspbian, Debian i.e. has no desktop installed. The Pi had a PiFaceIO board installed, <a href=\"https://hackerpublicradio.org/eps.php?id=2901\">refer to my previous HPR episode Hpr2901</a></p>\r\n<h2 id=\"backup-process-in-case-something-went-wrong\">Backup process, in case something went wrong</h2>\r\n<p>I first moved all the unnecessary files to free up as much space as possible</p>\r\n<p>Shrunk the Pi partition on the installed 128GB SD card down to 25106MB (24.52GB), (25708544K), 26,325,549,056 bytes using partition magic</p>\r\n<p>I calculated that this would be 51,417,088 blocks of 512 bytes</p>\r\n<p>I used <code>dd</code> to make an image file and grabbed some unallocated space after partition by using count=55417088, refer to the command below</p>\r\n<pre><code>sudo dd if=/dev/sdb of=/home/stuart/pi-13-img-backup.img bs=512 count=55417088</code></pre>\r\n<p>I used the following command to image files to a spare 64GB SD card</p>\r\n<pre><code>sudo dd if=/home/stuart/pi-13-img-backup.img of=/dev/sdb bs=512 status=progress</code></pre>\r\n<p>I then expanded the partition to fill the full 64GB of the card</p>\r\n<p>Booted from the 64GB card to make sure that I had a backup in case anything went wrong</p>\r\n<p>Removed the 64GB card which I can go back to if things don\'t work out</p>\r\n<p>Booted from 128GB card and expanded the partition using Gparted to fill 128GB SD card</p>\r\n<p>I used the 128GB SD card to perform the upgrade, remember I have 64GB card to fall back on if things go wrong</p>\r\n<h2 id=\"upgrade-process\">Upgrade process</h2>\r\n<p><a href=\"https://www.datenreise.de/en/raspberry-pi-raspbian-update-update-jessie-to-stretch/\">Source of information below</a></p>\r\n<p>Step 1: Check available disk space</p>\r\n<p>In order to update to Raspbian Stretch, there must be enough space on the SD card. Therefore you should check the available and used disk space usage first:</p>\r\n<pre><code>$ df -h</code></pre>\r\n<p>Step 2: Check package status</p>\r\n<p>You must also check that all packages are in a state that is suitable for upgrade. The following command displays all packages that have the status semi-installed or configuration failed, and those with error status:</p>\r\n<pre><code>$ sudo dpkg --audit\r\n$ sudo dpkg --get-selections | grep hold</code></pre>\r\n<p>Step 3: Update system</p>\r\n<p>Before upgrading, the Raspbian should be completely updated:</p>\r\n<pre><code>$ sudo apt-get update\r\n$ sudo apt-get upgrade\r\n$ sudo apt-get dist-upgrade</code></pre>\r\n<p>Step 4: Modify Release</p>\r\n<p>For upgrading to the new Raspbian version, the package lists must be adapted to the \"Stretch\" release. To do this, only the word \"jessie\" has to be replaced by \"stretch\". In order not to overlook any position, we simply let the replacement be done by the following command:</p>\r\n<pre><code>$ sudo sed -i /deb/s/jessie/stretch/g /etc/apt/sources.list\r\n$ sudo sed -i /deb/s/jessie/stretch/g /etc/apt/sources.list.d/*.list</code></pre>\r\n<p>Step 5: Updating package lists</p>\r\n<p>The new package lists must then be updated and imported:</p>\r\n<pre><code>$ sudo apt-get update</code></pre>\r\n<p>Step 6: Update to \"Stretch\"</p>\r\n<p>Now we are ready to start the upgrade:</p>\r\n<pre><code>$ sudo apt-get upgrade\r\n$ sudo apt-get dist-upgrade</code></pre>\r\n<p>Step 7: Clean up installation</p>\r\n<p>Old, unnecessary packages are removed after the system update with the following commands:</p>\r\n<pre><code>$ sudo apt-get autoremove\r\n$ sudo apt-get autoclean</code></pre>\r\n<h2 id=\"what-was-reported-during-upgrade\">What was reported during upgrade</h2>\r\n<h3 id=\"repo-for-get_iplayer-no-longer-available-so-had-to-comment-them-out.-on-my-pi-these-were-located-at-the-following-location.\">repo for get_iplayer no longer available so had to comment them out. On my Pi these were located at the following location.</h3>\r\n<pre><code>/etc/apt/sources.list.d/packages.hedgrows.org.uk.list</code></pre>\r\n<h3 id=\"change-to-lsb_release-command\">change to lsb_release command</h3>\r\n<p>The lsb_release command no longer worked so after the upgrade I could not use it to check what version of Debian I was running.</p>\r\n<p><a href=\"https://linuxconfig.org/check-what-debian-version-you-are-running-on-your-linux-system\">Link to alternative methods to check installed Debian version.</a></p>\r\n<p>I chose the following method</p>\r\n<pre><code>cat /etc/os-release</code></pre>\r\n<h3 id=\"bashrc---kept-my-original-file\">.bashrc - kept my original file</h3>\r\n<p>Something about /etc/login.defs &amp; /etc/login.defs.dpkg-new</p>\r\n<h3 id=\"lots-of-changes-in-new-version-of-ssh\">lots of changes in new version of ssh</h3>\r\n<p>Something was mentioned about apt hashes sha1 weak \"yes\" &amp; apt hashes ripe-md/160 weak \"yes\"</p>\r\n<p>Something about ~/.ssh/authorized_keys &amp; ~/.ssh/authorized_keys2</p>\r\n<p>Something about key length and accepted key types</p>\r\n<h2 id=\"what-went-wrong-after-the-upgrade\">What went wrong after the upgrade</h2>\r\n<h3 id=\"mocp-wouldnt-run\">mocp wouldn\'t run</h3>\r\n<p>I had to modify my config file in .moc folder I added the following line near the top of the file</p>\r\n<pre><code>ALSAStutterDefeat = no</code></pre>\r\n<p>In my .moc folder I had to also modify the my_keymap file at line 82. I think the next_search option is not available in the new version of moc 2.6-alpha3 installed with Debian Stretch. I commented out the following</p>\r\n<pre><code>#next_search =          ^g ^n</code></pre>\r\n<h3 id=\"pifacedigitalio-test.py-reported-an-error\">pifacedigitalio test.py reported an error</h3>\r\n<p>multiple errors reported last line of error was:-</p>\r\n<pre><code>pifacedigitalio.core.NoPiFaceDigitalDetectedError: No PiFace Digital board detected (hardware_addr=0, bus=0, chip_select=0)</code></pre>\r\n<p>I changed the first line of my python script</p>\r\n<p>from</p>\r\n<pre><code>#!/usr/bin/env python</code></pre>\r\n<p>to</p>\r\n<pre><code>#!/usr/bin/env python3</code></pre>\r\n<p>This removed the original error. I stupidly thought this had solved the problem so I went about converting my script to run with Python 3 only to find at the end once I had correct everything that I ended up with the same original error.</p>\r\n<h2 id=\"how-i-solved-the-pifacedigitalio-test.py-reported-error\">How I solved the pifacedigitalio test.py reported error</h2>\r\n<p><a href=\"https://www.raspberrypi.org/forums/viewtopic.php?t=196248\">The problem was solved by looking at this post</a></p>\r\n<p>According to the post it had something to do with the SPI serial speed changing from 500Khz to 125Mhz</p>\r\n<p>Problem was solved by modifying a file spi.py</p>\r\n<p>I found the location of the file by using the following command</p>\r\n<pre><code>find / -iname spi.py</code></pre>\r\n<p>The files were located at</p>\r\n<pre><code>/usr/lib/python2.7/dist-packages/pifacecommon/spi.py\r\n/usr/lib/python3/dist-packages/pifacecommon/spi.py</code></pre>\r\n<p>I created a copy of the original file and called it spi.py.bak</p>\r\n<p>I only modified the file in python2.7 as my program test.py runs in python2.7</p>\r\n<p>I added a comma to the end of line 68 and added the following line to line 69</p>\r\n<pre><code>speed_hz=ctypes.c_uint32(15000)</code></pre>\r\n<h2 id=\"ssh-from-pifacecad-stopped-working\">SSH from pifacecad stopped working</h2>\r\n<p>My Raspberry pi \"Pi10\" downstairs would not SSH into my Pi13 server upstairs This made it impossible for me to remotely start and stop podcasts and audiobooks playing on my Pi13 upstairs.</p>\r\n<p>This happened because the downstairs Pi10 had DSA and RSA keys and it was using DSA keys to ssh into Pi13. I found this by looking at /var/logs/auth.log on Pi13 The log reported</p>\r\n<pre><code>userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes</code></pre>\r\n<h2 id=\"ssh-from-eeepc-stopped-working\">SSH from EEEPC stopped working</h2>\r\n<p>Was not able to SSH into Pi13 from EEEpc</p>\r\n<p>My EEEPC netbook only had DSA keys and that is what it was using to try and SSH into Pi13 I generated new RSA keys and added them to Pi13, this solved the problem and allowed me to ssh into Pi13 from the EEEpc</p>\r\n',201,0,1,'CC-BY-SA','Linux, Distros, Raspberry Pi, Debian',0,0,1),
(3274,'2021-02-18','My Custom dwm Setup',2159,'Me talking about how I\'ve customised dwm, added and removed patches and written various scripts.','<ul>\r\n<li>Intro - video on yt, audio on hpr <a href=\"https://youtu.be/EMFMyxYch14\">https://youtu.be/EMFMyxYch14</a></li>\r\n<li>Who am I? arfab, clearnitesky, trumpetplanet</li>\r\n<li>my email has changed since my first hpr episode - thanks lavabit!</li>\r\n<li>You can now use hello@richcolq.xyz</li>\r\n<li>My previous episode was <a href=\"https://hackerpublicradio.org/eps.php?id=0618\">0618</a></li>\r\n</ul>\r\n<ol type=\"1\">\r\n<li>Story of ricing my own desktop:\r\n<ul>\r\n<li>Always been into customising look/feel, never satisfied</li>\r\n<li>Found Luke Smith and liked i3, made own version.</li>\r\n<li>Pandemic hits! Started learning Python, JavaScript but had no real use for them...</li>\r\n<li>Made a website (inspired by disconnecting from social media)</li>\r\n<li>check out <a href=\"https://richcolq.xyz\">richcolq.xyz</a> and <a href=\"https://github.com/clearnitesky\">github.com/clearnitesky</a></li>\r\n</ul></li>\r\n<li>What programs am I using?\r\n<ul>\r\n<li>dwm (obviously)</li>\r\n<li>dmenu</li>\r\n<li>st</li>\r\n<li>surf / brave</li>\r\n<li>sxhkd - various short cuts sorted by purpose</li>\r\n<li>dunst</li>\r\n<li>sxiv/feh</li>\r\n<li>zathura</li>\r\n<li>my status stuff using dwmstat script</li>\r\n<li>a look in <code>~/.local/bin</code></li>\r\n<li>I recently learned about awk and rewrote all icon scripts which is what inspired me to record this episode.</li>\r\n</ul></li>\r\n<li>What next?\r\n<ul>\r\n<li>Is it necessary to patch dwm? Probably not.<br />\r\nI\'ve come to believe that the real value in these experiments has come from my custom status scripts and keyboard shortcuts - not from patching new features into dwm. It does what I need it to (manage windows!)</li>\r\n</ul></li>\r\n<li>Thanks for watching!</li>\r\n</ol>\r\n',138,0,1,'CC-BY-SA','dwm, suckless, linux, bash, cli',0,0,1),
(3276,'2021-02-22','Deepgeek\'s thoughts about HD Radio',612,'Klaatu reads a post by Deepgeek','<p>\r\nDeepgeek\'s thoughts about HD radio.\r\n</p>\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n<li><a href=\"https://hdradio.com/broadcasters/engineering-support/high-quality-consistent-multicast-engineering/\" target=\"_blank\">multicast chart</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Sacd\" target=\"_blank\">en.wikipedia.org&#47;wiki&#47;Sacd</a></li>\r\n<li><a href=\"https://traffic.libsyn.com/secure/textfiles/Jason_Scott_Talks_His_Way_Out_Of_It_-_Episode_120.mp3\" target=\"_blank\">Jason Scott episode 120</a></li>\r\n</ul>\r\n\r\n',73,99,0,'CC-BY-SA','radio',0,0,1),
(3277,'2021-02-23','Microsoft in my Debian repo',272,'microsoft, raspberry pi, bash, script','<h2 id=\"raspberry-pi-foundation-added-vscode-repo-to-raspberry-os.\">Raspberry pi foundation added vscode repo to raspberry OS.</h2>\r\n<p>Raspberry Pi OS\'s tried:</p>\r\n<ul>\r\n<li>Raspberry Pi OS<br />\r\n<a href=\"https://www.raspberrypi.org/software/\" class=\"uri\">https://www.raspberrypi.org/software/</a></li>\r\n<li>Debian 10<br />\r\n<a href=\"https://raspi.debian.net/\" class=\"uri\">https://raspi.debian.net/</a></li>\r\n<li>Fedora 33<br />\r\n<a href=\"https://fedoraproject.org/wiki/Architectures/ARM/Raspberry_Pi#Downloading_the_Fedora_ARM_image\" class=\"uri\">https://fedoraproject.org/wiki/Architectures/ARM/Raspberry_Pi#Downloading_the_Fedora_ARM_image</a></li>\r\n</ul>\r\n<p>To try later:</p>\r\n<ul>\r\n<li><p>Arch for Arm<br />\r\n<a href=\"https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-4\" class=\"uri\">https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-4</a></p></li>\r\n<li><p>TPLink dongle. Actually, it has a 6-7 inch antenna for greater range.<br />\r\n<a href=\"https://www.amazon.com/Wireless-desktop-10-9-10-14-Archer-T2U/dp/B07P5PRK7J/\" class=\"uri\">https://www.amazon.com/Wireless-desktop-10-9-10-14-Archer-T2U/dp/B07P5PRK7J/</a><br />\r\n<a href=\"https://github.com/aircrack-ng/rtl8812au.git\" class=\"uri\">https://github.com/aircrack-ng/rtl8812au.git</a></p></li>\r\n</ul>\r\n<pre><code>sudo apt install dkms\r\n\r\ncd rtl8812au\r\n\r\nsudo make dkms_install</code></pre>\r\n<h2 id=\"references.\">References.</h2>\r\n<ul>\r\n<li><p>Gardiner Bryant (The Linux Gamer)<br />\r\n<a href=\"https://www.youtube.com/watch?v=TuYPIohzo2Y\" class=\"uri\">https://www.youtube.com/watch?v=TuYPIohzo2Y</a></p></li>\r\n<li><p>Found after this recording is a more in-depth way to remove Microsoft\'s hands from your Raspberry Pi OS.</p>\r\n<ul>\r\n<li>From Ham Radio operator KM4ACK<br />\r\n<a href=\"https://github.com/km4ack/pi-scripts\" class=\"uri\">https://github.com/km4ack/pi-scripts</a><br />\r\n<a href=\"https://raw.githubusercontent.com/km4ack/pi-scripts/417aaf3a9347c5e6a475071dcbbbe8cae68c1f75/removeMS\" class=\"uri\">https://raw.githubusercontent.com/km4ack/pi-scripts/417aaf3a9347c5e6a475071dcbbbe8cae68c1f75/removeMS</a></li>\r\n</ul></li>\r\n</ul>\r\n<p>The following code snippet was edited for readability.</p>\r\n<pre><code>#Hold raspberrypi-sys-mods package\r\nsudo apt-mark hold raspberrypi-sys-mods\r\n\r\n#Redirect calls to packages.microsoft.com to localhost\r\nsudo echo &quot;0.0.0.0 packages.microsoft.com&quot; &gt;&gt; /etc/hosts\r\n\r\n#remove MS Key file\r\nsudo rm -vf /etc/apt/trusted.gpg.d/microsoft.gpg\r\n\r\n#create empty dummy key file\r\nsudo touch /etc/apt/trusted.gpg.d/microsoft.gpg\r\n\r\n#lock the dummy key file\r\nsudo chattr +i /etc/apt/trusted.gpg.d/microsoft.gpg\r\n\r\n#comment out vscode.list\r\nsudo sed -i &#39;s/deb/#deb/&#39; /etc/apt/sources.list.d/vscode.list\r\n\r\n#lock the vscode.list file\r\nsudo chattr +i /etc/apt/sources.list.d/vscode.list</code></pre>\r\n',318,0,0,'CC-BY-SA','microsoft, raspberry pi, bash, script',0,0,1),
(3278,'2021-02-24','A Minor Victory Against Designed-In Obsolescence',513,'Extracting a bit more life out of a device that Apple would rather have you dump','<p>The Ipad2, at over 9 years old, is unsupported with security or any other kind of updates. Few apps in the App Store will run on its old version of IOS, and that operating system cannot be upgraded.</p>\r\n<p>As far as Apple are concerned an Ipad2 should have been sent to the scrap heap years ago. If you found its 16GB of storage wasn\'t enough, you were supposed to dump it and buy a new one as you couldn\'t add more. If you found that you couldn\'t run the latest version of your favourite apps, dump it and buy a new one as you couldn\'t upgrade the operating system to the required standard.</p>\r\n<p>Is it necessary to abide by this designed-in obsolescence? Beeza inherits an Ipad2 and decides to find out if he can get any serious use out of it or whether it really does need to be dumped.</p>',246,0,0,'CC-BY-SA','Ipad, Apple, Obsolescence, IOS, Hardware',0,0,1),
(3282,'2021-03-02','HP Laptop with AMD Ryzen 3 Mobile with Radeon Graphics',1637,'I talk about the specs of the laptop and a brief upgrade.','<h1 id=\"hp-laptop-with-amd-ryzen-3-mobile-processors-with-radeon-graphics\">HP Laptop with AMD Ryzen 3 Mobile Processors with Radeon Graphics</h1>\r\n<h3 id=\"hp-laptop-info\"><strong>HP Laptop Info.</strong></h3>\r\n<ul>\r\n<li><a href=\"https://support.hp.com/us-en/document/c06620370\" title=\"HP Customer Support, Knowledge Base\">model: 14-dk1025wm</a> (I own this model)</li>\r\n<li>Product ID: 1A491UA#ABA</li>\r\n<li>\r\n<ul>\r\n<li><a href=\"https://www.walmart.com/ip/HP-14-Ryzen-3-4GB-1TB-Laptop-Silver-Google-Classroom-Compatible/580075820\" title=\"HP Laptop - 14-dk1025wm\">Walmart Link 01</a></li>\r\n<li><a href=\"https://www.walmart.com/ip/HP-14-Ryzen-3-4GB-128GB-Laptop-Silver-Google-Classroom-Compatible/779578906\" title=\"HP Laptop - 14-dk1022wm\">Walmart Link 02</a></li>\r\n</ul></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/NATO_phonetic_alphabet\" title=\"Alfa, Brovo, Charlie,...you get it.\">NATO phonetic alphabet</a></li>\r\n</ul>\r\n<h3 id=\"specifications\"><strong>Specifications.</strong></h3>\r\n<ol>\r\n<li><p><a href=\"https://www.amd.com/en/products/apu/amd-ryzen-3-3250u\" title=\"AMD Ryzen 3 3250U Specifications\">AMD Ryzen 3 3250U</a> (2.6 GHz base clock, up to 3.5 GHz max boost clock, 1 MB L2 cache, 2 cores)</p>\r\n<ul>\r\n<li>CPU Cores: 2</li>\r\n<li>CPU Threads: 4</li>\r\n<li>GPU Cores: 3</li>\r\n<li>System Memory Specification: Up to 2400MHz (No need to go big, keep it simple and cheap.)</li>\r\n<li>Launch Date: 06/01/2020 (January 06, 2020)</li>\r\n</ul></li>\r\n<li><p>Memory/Ram: 4 GB DDR4-2400 SDRAM (1 x 4 GB)</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/ECC_memory\" title=\"wiki\">ECC</a> Type: Non-ECC</li>\r\n<li>Form Factor: <a href=\"https://en.wikipedia.org/wiki/SO-DIMM\" title=\"wiki\">SODIMM</a></li>\r\n<li>Pin Count: 260-pin</li>\r\n<li>PC Speed: PC4-19200</li>\r\n<li><strong>Ram is upgradable</strong> (Two slots)\r\n<ul>\r\n<li>Walmart has \"Maximum RAM Supported 4 GB\" for model: 14-dk1025wm; <em>this is false information.</em></li>\r\n<li><a href=\"https://www.amazon.com/Crucial-Single-PC4-19200-SODIMM-260-Pin/dp/B01BIWKP58\" title=\"Crucial DDR4-2400\">Amazon Link 01: 8 gb SODIMM</a></li>\r\n<li><a href=\"https://www.amazon.com/Crucial-DDR4-Laptop-Memory-CT8G4SFRA266/dp/B08C56KXQJ\" title=\"Crucial DDR4-2666\">Amazon Link 02: 8 gb SODIMM</a></li>\r\n</ul></li>\r\n<li><strong>Note:</strong>\r\n<ul>\r\n<li>Installed 16 GB ram but system only accepts/recognizes 14 GB ram. Attempted two different ram manufacture type (Crucial and PNY Ram)</li>\r\n</ul></li>\r\n</ul></li>\r\n<li><p>Video graphics: <a href=\"https://www.notebookcheck.net/AMD-Radeon-RX-Vega-3-GPU.278652.0.html\" title=\"Packaged with CPU/APU\">AMD Radeon Vega 3 Graphics</a></p></li>\r\n<li><p>Hard drive: <a href=\"https://shop.westerndigital.com/products/internal-drives/wd-blue-mobile-sata-hdd#WD5000LPCX\" title=\"Western Digital Blue 2.5 hdd 5400 rpm\">1 TB 5400 rpm SATA III HDD</a></p>\r\n<ul>\r\n<li>Also includes, SATA III 6 Gb/s, <a href=\"https://bytebitebit.com/wp-content/uploads/2020/02/m2-ssd-2230-2242-2260-2280-22110.png\" title=\"images\">M.2 2280</a> Slot for additional storage.\r\n<ul>\r\n<li><a href=\"https://www.amazon.com/Blue-NAND-500GB-SSD-WDS500G2B0B/dp/B073SBX6TY\" title=\"Amazon Link 01\">Western Digital Blue 500 GB M.2 2280 SSD.</a></li>\r\n<li><a href=\"https://www.amazon.com/Blue-NAND-500GB-SSD-WDS500G2B0A/dp/B073SBZ8YH\" title=\"Amazon Link 02\">Western Digital Blue 500 GB 2.5 inch SSD, SATA III 6 Gb/s,Up to 560 MB/s</a></li>\r\n</ul></li>\r\n</ul></li>\r\n<li><p>Wifi: Realtek RTL8821CE 802.11b/g/n/ac (1x1) and Bluetooth® 4.2 Combo.</p>\r\n<ul>\r\n<li>Open Source <a href=\"https://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support\" title=\"Noob Friendly\">DKMS</a> Drivers in <a href=\"https://ubuntu.com/\" title=\"Ubuntu\">Ubuntu</a> (and Ubuntu based <a href=\"https://www.howtogeek.com/132624/htg-explains-whats-a-linux-distro-and-how-are-they-different/\">Distros</a>).</li>\r\n</ul></li>\r\n<li><p>Battery Life: 9 hrs (Nope<a href=\"https://www.bfytw.com/\" title=\"And now you know.\">!</a>)</p>\r\n<ul>\r\n<li>Won\'t be seeing that in <a href=\"https://www.gnu.org/home.en.html\" title=\"GNU\">GNU</a>/<a href=\"https://www.linux.com/what-is-linux/\" title=\"Linux\">Linux</a>.</li>\r\n</ul></li>\r\n</ol>\r\n<h3 id=\"secure-boot\"><strong>Secure Boot!</strong></h3>\r\n<ol>\r\n<li><a href=\"https://ubuntu.com/\" title=\"Ubuntu\">Ubuntu</a> is able to boot with <a href=\"https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-secure-boot\" title=\"Poor Mint\">secure boot</a> enabled.\r\n<ul>\r\n<li>Once disabled, you can load other <a href=\"https://www.howtogeek.com/132624/htg-explains-whats-a-linux-distro-and-how-are-they-different/\">Distros</a>.</li>\r\n</ul></li>\r\n</ol>\r\n',391,57,0,'CC-BY-SA','HP, Ryzen, Crucial, Western Digital, Realtek',0,0,1),
(3288,'2021-03-10','Linux Inlaws S01E25: The Grumpy Old Coders',3628,'Our heroes host an episode with an eclectic duo (not Waldorf or Statler)','<p>\r\nThis time our two heroes host an eclectic couple known as the grumpy old coders. Thomas, David, Martin and Chris\r\ndiscuss stealing, um, borrowing (and never giving back) of mottos and mascotts, programming languages including\r\nJava, Python and Rust woes and how they all arrived at podcasting. Never mind Chris revealing his true and\r\nonly heritage and other little-known secrets. Don\'t miss out on this episode for the full lowdown (never mind\r\nthe even lower down .\r\n</p>\r\n<h3>Shownotes:</h3>\r\n<ul>\r\n<li>Grumpy Old Coders: <a href=\"https://grumpy-old-coders.org\" target=\"_blank\">https://grumpy-old-coders.org</a></li>\r\n<li>The Dig: <a href=\"https://www.netflix.com/de-en/title/81167887\" target=\"_blank\">https://www.netflix.com/de-en/title/81167887</a></li>\r\n<li>Oktoberfest: <a href=\"https://www.oktoberfest.de/en\" target=\"_blank\">https://www.oktoberfest.de/en</a></li>\r\n<li>Erdinger Herbstfest (in German only): <a href=\"https://de.wikipedia.org/wiki/Erdinger_Herbstfest\" target=\"_blank\">https://de.wikipedia.org/wiki/Erdinger_Herbstfest</a></li>\r\n<li>F#: <a href=\"https://fsharp.org\" target=\"_blank\">https://fsharp.org</a></li>\r\n<li>Vulkan API: <a href=\"https://www.khronos.org/vulkan\" target=\"_blank\">https://www.khronos.org/vulkan</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','OAPs, old coders, senior citizens, Bitterfeld, communism',0,0,1),
(3283,'2021-03-03','HPR RPG Club reviews Dead Earth',3150,'Escape reality by pretending you live in a dystopia','<p>\r\nKlaatu, Beni, and Mcnalu review the tabletop RPG game <strong>Dead Earth</strong>, a game published under the <a href=\"https://www.gnu.org/licenses/fdl-1.3.en.html\" target=\"_blank\">GNU Free Documentation License (GFDL)</a>.\r\n</p>\r\n\r\n<p>\r\nNext up is <a href=\"https://paizo.com/starfinder\" target=\"_blank\">Starfinder</a>, a space-themed game using the 3.5 edition D&amp;D rules.\r\nIf you\'re interested in playing, join the Hacker Public Radio mailing list or email Klaatu at this domain.\r\n</p>\r\n\r\n\r\n',78,95,0,'CC-BY-SA','rpg, cyberpunk, post-apocalyptic',0,0,1),
(3284,'2021-03-04','Introduction to gdb',1420,'A really friendly introduction to Gnu Debugger','<p>\r\nFrustrated by gdb tutorials that are either too complicated or too simple? I think this might be an actually-useful tutorial to help you see how and why gdb can be useful.  Anyway, it\'s the path I followed to finding a use for the mysterious gdb, so maybe it will work for you.\r\n</p>\r\n\r\n<p>\r\nTo follow along with this episode, here\'s some simple yet buggy code. This compiles but crashes when run.\r\n</p>\r\n\r\n<pre><code>\r\n#include &lt;iostream&gt;\r\n#include &lt;stdlib.h&gt;  // rand\r\n#include &lt;stdio.h&gt;  // printf\r\n\r\nusing namespace std;\r\n\r\nint main () {\r\n\r\nsrand (time(NULL));\r\nint penguin = rand() % 8;\r\ncout &lt;&lt; &quot;This is a message from your friendly coder\\n&quot; &lt;&lt; endl;\r\nint kiwi = 3;\r\n\r\nprintf(\"penguin is set to is %s\\n\", penguin);\r\nprintf(\"kiwi is set to is %s\\n\", kiwi);\r\n\r\n return 0;\r\n} // main\r\n</code>\r\n</pre>\r\n\r\n<p>\r\nTo compile it and see it crash, do this:\r\n</p>\r\n\r\n<pre><code>\r\n$ g++ example.cpp\r\n$ ./a.out\r\n</code></pre>\r\n\r\n<p>\r\nTo compile it with debug symbols so you can step through it in gdb, do this:\r\n</p>\r\n\r\n<pre><code>\r\n$ g++ -g -o debugtest example.cpp\r\n$ gdb debugtest\r\n</code></pre>\r\n\r\n<p>\r\nYou can now follow along with this tutorial.\r\n</p>\r\n\r\n<p>\r\n<em>For extra credit, try compiling this with clang++ instead&#33;</em>\r\n</p>\r\n\r\n\r\n\r\n',78,84,0,'CC-BY-SA','programming, cpp, gdb, gcc',0,0,1),
(3295,'2021-03-19','Renewing a Let\'s Encrypt cert for Home Network use',195,'How to update a cert when the automatic processes don\'t work','<p>\r\nBack in <a  href=\"https://hackerpublicradio.org/eps.php?id=3289\">hpr3289 :: NextCloud the hard way</a>, I showed you how to install a Let\'s Encrypt SSL cert for use on your home network. One of the problems was the fact that the automatic renew tools won\'t work.\r\n</p>\r\n<p>\r\nToday I got a reminder email from Let\'s Encrypt and I used the exact same command to renew it as I did to create it in the first place. The tool is smart enough to know this is a renewal process. \r\n</p>\r\n<p>\r\nOne thing I forgot to do last time was to remove the <em>TXT</em> record from DNS after I was done. So I had to delete the record and wait a while for the Time To Live (TTL) to expire.\r\n</p>\r\n<p>\r\nI set about doing a check list so the next time the process can be even faster.\r\n</p>\r\n<ol>\r\n<li>Run the command <pre>certbot certonly --manual --preferred-challenges dns</pre></li>\r\n<li>Deploy a DNS TXT record under the name _acme-challenge.nextcloud.example.com</li>\r\n<li>Finish the challenge.</li>\r\n<li>When successful, remove the DNS TXT record as it\'s not needed for another two months.</li>\r\n</ol>',30,0,0,'CC-BY-SA','SSL, Let\'s Encrypt, Intranet',0,0,1),
(3566,'2022-04-04','HPR Community News for March 2022',5485,'Dave and Ken talk about shows released and comments posted in March 2022','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3542\" target=\"_blank\">3542</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-03-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3542\" target=\"_blank\">The Worst Car I Ever Had</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0246.html\" target=\"_blank\">Beeza</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3543\" target=\"_blank\">3543</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-03-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3543\" target=\"_blank\">Idle thoughts on web browsers</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3544\" target=\"_blank\">3544</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-03-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3544\" target=\"_blank\">All my microphones</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0268.html\" target=\"_blank\">Andrew Conway</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3545\" target=\"_blank\">3545</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-03-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3545\" target=\"_blank\">How I make coffee</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3546\" target=\"_blank\">3546</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-03-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3546\" target=\"_blank\">HPR Community News for February 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3547\" target=\"_blank\">3547</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-03-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3547\" target=\"_blank\">Password Managers</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3548\" target=\"_blank\">3548</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-03-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3548\" target=\"_blank\">Make a custom Git command</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3549\" target=\"_blank\">3549</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-03-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3549\" target=\"_blank\">Linux Inlaws S01E51: git and static site generators</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3550\" target=\"_blank\">3550</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-03-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3550\" target=\"_blank\">Format; Copy; Diskcopy; Xcopy</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3551\" target=\"_blank\">3551</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-03-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3551\" target=\"_blank\">Bash snippet - some possibly helpful hints</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3552\" target=\"_blank\">3552</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-03-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3552\" target=\"_blank\">Unboxing a PineTime development kit</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3553\" target=\"_blank\">3553</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-03-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3553\" target=\"_blank\">Freedom of speech in open source</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3554\" target=\"_blank\">3554</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-03-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3554\" target=\"_blank\">Guide to the Science and Technology Section of Bitchute</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3555\" target=\"_blank\">3555</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-03-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3555\" target=\"_blank\">PopKorn Episode 1: The Fallacy of the Unreasonable Effectiveness of Mathematics in the ETC</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3556\" target=\"_blank\">3556</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-03-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3556\" target=\"_blank\">TTS for HPR</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0402.html\" target=\"_blank\">takov751</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3557\" target=\"_blank\">3557</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-03-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3557\" target=\"_blank\">A short story about Lenovo and laptop batteries</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0309.html\" target=\"_blank\">folky</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3558\" target=\"_blank\">3558</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-03-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3558\" target=\"_blank\">How I\'m learning Haskell</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3559\" target=\"_blank\">3559</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-03-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3559\" target=\"_blank\">Linux Inlaws S01E52: The Zig Project</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3560\" target=\"_blank\">3560</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-03-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3560\" target=\"_blank\">LCh Components Layer Modes</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3561\" target=\"_blank\">3561</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-03-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3561\" target=\"_blank\">Employment security</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3562\" target=\"_blank\">3562</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-03-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3562\" target=\"_blank\">Creating a new project with Haskell and Stack</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3563\" target=\"_blank\">3563</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-03-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3563\" target=\"_blank\">Home Coffee Roasting, part 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3564\" target=\"_blank\">3564</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-03-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3564\" target=\"_blank\">Removing EXIF data from an image</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a></td>\n</tr>\n</table>\n\n<h2>Comments this month</h2>\n\n<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 21 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 7 comments on\n7 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=1743#comments\" target=\"_blank\">hpr1743</a></strong>\n(2015-04-08) \"<em>Scale 13x Part 1 of 6</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0024.html\" target=\"_blank\">Lord Drachenblut (R.I.P.)</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=1743#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-03-05:\n\"Thank you Lord D\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=1780#comments\" target=\"_blank\">hpr1780</a></strong>\n(2015-05-29) \"<em>16 - TrueCrypt and GnuPG - An Update</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=1780#4\" target=\"_blank\">Comment 4</a>:\nelmussol on 2022-03-27:\n\"mistag\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3461#comments\" target=\"_blank\">hpr3461</a></strong>\n(2021-11-08) \"<em>Changes to HPR Branding</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3461#2\" target=\"_blank\">Comment 2</a>:\nBentley Sorsdahl on 2022-03-12:\n\"The TTS voice\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3496#comments\" target=\"_blank\">hpr3496</a></strong>\n(2021-12-27) \"<em>How I record HPR Episodes</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3496#3\" target=\"_blank\">Comment 3</a>:\ndnt on 2022-03-09:\n\"I use it\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3515#comments\" target=\"_blank\">hpr3515</a></strong>\n(2022-01-21) \"<em>ADB and scrcpy</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3515#1\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2022-03-03:\n\"On my list\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3533#comments\" target=\"_blank\">hpr3533</a></strong>\n(2022-02-16) \"<em>Porridge</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3533#4\" target=\"_blank\">Comment 4</a>:\nWindigo on 2022-03-18:\n\"Very informative\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3534#comments\" target=\"_blank\">hpr3534</a></strong>\n(2022-02-17) \"<em>Vernier caliper</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3534#3\" target=\"_blank\">Comment 3</a>:\nMichael on 2022-03-10:\n\"Unit missmatch\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 14 comments on 8 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3546#comments\" target=\"_blank\">hpr3546</a></strong>\n(2022-03-07) \"<em>HPR Community News for February 2022</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3546#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2022-03-09:\n\"Thank you\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3551#comments\" target=\"_blank\">hpr3551</a></strong>\n(2022-03-14) \"<em>Bash snippet - some possibly helpful hints</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3551#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-03-20:\n\"Bash for the Win.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3551#2\" target=\"_blank\">Comment 2</a>:\nDave Morriss on 2022-03-21:\n\"Hi SGOTI\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3552#comments\" target=\"_blank\">hpr3552</a></strong>\n(2022-03-15) \"<em>Unboxing a PineTime development kit</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3552#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-03-26:\n\"Development on Pinetime\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3553#comments\" target=\"_blank\">hpr3553</a></strong>\n(2022-03-16) \"<em>Freedom of speech in open source</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3553#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2022-03-16:\n\"Great Intro\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3553#2\" target=\"_blank\">Comment 2</a>:\nTrey on 2022-03-16:\n\"Important topic\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3553#3\" target=\"_blank\">Comment 3</a>:\nBeeza on 2022-03-17:\n\"Free Speech\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3553#4\" target=\"_blank\">Comment 4</a>:\nKen Fallon on 2022-03-17:\n\"My thoughts\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3553#5\" target=\"_blank\">Comment 5</a>:\njezra on 2022-03-22:\n\"the show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3557#comments\" target=\"_blank\">hpr3557</a></strong>\n(2022-03-22) \"<em>A short story about Lenovo and laptop batteries</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0309.html\" target=\"_blank\">folky</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3557#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-03-31:\n\"Thank you.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3558#comments\" target=\"_blank\">hpr3558</a></strong>\n(2022-03-23) \"<em>How I\'m learning Haskell</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3558#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-03-23:\n\"Nicely done.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3558#2\" target=\"_blank\">Comment 2</a>:\nTuula on 2022-03-24:\n\"Good idea\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3563#comments\" target=\"_blank\">hpr3563</a></strong>\n(2022-03-30) \"<em>Home Coffee Roasting, part 1</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3563#1\" target=\"_blank\">Comment 1</a>:\nTuula on 2022-03-31:\n\"Very interesting\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3564#comments\" target=\"_blank\">hpr3564</a></strong>\n(2022-03-31) \"<em>Removing EXIF data from an image</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3564#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-03-31:\n\"Much Respect\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-March/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-March/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"access-problems-from-argentina\">Access problems from Argentina</h3>\n<p>An HPR listener from Argentina reports that the HPR site is unavailable from there. This applies both to an ISP connection and on a mobile phone. It\'s not clear what is causing this.</p>\n<p>Reportedly the problem was resolved on March 30<sup>th</sup> but the next day it returned and at the time of writing the HPR site is still unavailable.</p>\n<h3 id=\"older-hpr-shows-on-archive.org\">Older HPR shows on archive.org</h3>\n<p>As reported on the last Community News all shows in the range 1-870 had been uploaded except for shows hpr0001 - hpr0003. Shows hpr0001 and hpr0002 had been \"blocked\" by existing non-HPR items from over 8 years ago, with the names we were going to assign. Show hpr0003 seemed to have been an early attempt to upload blocks of shows since it contained the audio for shows 1-9, but no notes.</p>\n<p>We received help with clearing the slots for shows 1 and 2 from Jason Scott of the Internet Archive, and the correct shows have now been uploaded. Show hpr0003 has now been resolved by replacing the contents with the appropriate transcoded audio and the notes have been added to it.</p>\n<p>We can now consider this project to be complete!</p>\n<!-- This month 2 additional shows in -->\n<!-- the range 1-870 have been uploaded. -->\n<!-- The number of shows left to upload in this range is now: 0. -->\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3299,'2021-03-25','Linux Inlaws S01E26: Make your Linux harder',2985,'Ever wanted to know about AppArmor and SELinux? Then this is your show!','<p>In this episode our two aging heroes discuss the proper temperature to\r\ndrink beer at (spoiler: it\'s not 20 degrees as CAMRA would make you believe)\r\nand the ins and outs of basic and enhanced security on our beloved operating\r\nsystem. If you ever wanted to know more about Linux Security Modules, AppArmor\r\nand SELinux and how dames of negotiable affections relate to these concepts,\r\nthis show is for you.</p>\r\n<h3>Shownotes:</h3>\r\n<ul>\r\n    <li>Campaign for Real Ale: <a href=\"https://camra.org.uk/\" target=\"_blank\">https://camra.org.uk/</a>\r\n    </li>\r\n    <li>Linux Security Modules: <a href=\"https://en.wikipedia.org/wiki/Linux_Security_Modules\" target=\"_blank\">https://en.wikipedia.org/wiki/Linux_Security_Modules</a>\r\n    </li>\r\n    <li>SELinux: <a href=\"https://selinuxproject.org/page/Main_Page\" target=\"_blank\">https://selinuxproject.org/page/Main_Page</a>\r\n    </li>\r\n    <li>SELinux on Android: <a href=\"https://source.android.com/security/selinux\" target=\"_blank\">https://source.android.com/security/selinux</a>\r\n    </li>\r\n    <li>AppArmor: <a href=\"https://gitlab.com/apparmor/apparmor/-/wikis/Documentation\" target=\"_blank\">https://gitlab.com/apparmor/apparmor/-/wikis/Documentation</a>\r\n    </li>\r\n    <li>RBAC with AppArmor: <a href=\"https://gitlab.com/apparmor/apparmor/-/wikis/AppArmorRBAC\" target=\"_blank\">https://gitlab.com/apparmor/apparmor/-/wikis/AppArmorRBAC</a>\r\n    </li>\r\n    <li>Plan 9: <a href=\"https://9p.io/plan9\" target=\"_blank\">https://9p.io/plan9</a>\r\n    </li>\r\n    <li>Plan 9 from Outer Space: <a href=\"https://www.imdb.com/title/tt0052077\" target=\"_blank\">https://www.imdb.com/title/tt0052077</a>\r\n    </li>\r\n    <li>Man down: <a href=\"https://www.imdb.com/title/tt2461520/?ref_=fn_tt_tt_2\" target=\"_blank\">https://www.imdb.com/title/tt2461520/?ref_=fn_tt_tt_2</a>\r\n    </li>\r\n    <li>The Midnight Gospel: <a href=\"https://www.netflix.com/de-en/title/80987903\" target=\"_blank\">https://www.netflix.com/de-en/title/80987903</a>\r\n    </li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Linux Security Modules, DAC, MAC, AppArmor, SELinux, Plan 9',0,0,1),
(3285,'2021-03-05','Upgrading Lubuntu on my Samsung N150 Plus netbook',1079,'Lubuntu 16.04 LTS to 20.04.1 LTS upgrade on ageing Samsung N150 Plus netbook.','<h1 id=\"samsung-n150-plus-upgrade-from-lubuntu-16.04-lts-to-lubuntu-20.04.1---performed-171220\">Samsung N150 Plus upgrade from Lubuntu 16.04 LTS to Lubuntu 20.04.1 - performed 17/12/20</h1>\r\n<h2 id=\"backup-and-prep-process\">Backup and prep process</h2>\r\n<ul>\r\n<li><p>Copied all documents and important files from Samsung laptop to removable hard drive. Used Lubuntu gui file manager which crashed at least twice, probably due to netbook limited RAM.</p></li>\r\n<li><p>Found out that a direct upgrade from 16.04 LTS to 20.04 LTS is not possible, refer to the following links.</p>\r\n<ul>\r\n<li><a href=\"https://askubuntu.com/questions/1214292/upgrade-path-from-16-04-to-20-04-lts-without-gui-change\">Upgrade path from 16.04 LTS to 20.04 LTS</a></li>\r\n<li><a href=\"https://ubuntu.com/about/release-cycle\">Ubuntu release-cycle</a></li>\r\n</ul></li>\r\n<li><p>Downloaded Lubuntu 20.04.1</p></li>\r\n<li><p>Found a spare 32GB USB stick and copied all the files that were on it to a removable hard drive.</p></li>\r\n<li><p>Opened downloaded Lubuntu image using Disk Image writer (1st time I\'ve used this), wrote image to 32GB SD, found process very easy</p></li>\r\n<li><p>On Samsung netbook hit F2 at boot time to select boot from USB</p></li>\r\n<li><p>Booted from USB stick containing LUBUNTU 20.04.1</p></li>\r\n</ul>\r\n<h2 id=\"live-distro-1st-boot.\">Live distro 1st boot.</h2>\r\n<ul>\r\n<li><p>Once booted I found the trackpad speed to be very slow and my first attempt at adjusting the speed in preferences made no difference.</p></li>\r\n<li><p>Connected to WiFi, setting this up seemed much more clunky than previous connection method, however it did work.</p></li>\r\n<li><p>Went to Youtube and played some video, everything worked fine, also found that volume keys on netbook worked.</p></li>\r\n</ul>\r\n<h2 id=\"install-process\">Install Process</h2>\r\n<ul>\r\n<li><p>Went through install and selected manual partitioning,</p></li>\r\n<li><p>Used existing swap on sda6 and format and mounted new Lubuntu root filesystem on sda7 replacing 16.04 with 20.04.1</p></li>\r\n</ul>\r\n<h2 id=\"after-first-boot\">After first boot</h2>\r\n<ul>\r\n<li><p>Upon first boot was surprised that it had remembered my WiFi connection details and told me there were updates</p></li>\r\n<li><p>It asked if I wanted to perform a full upgrade without giving any details. At the time I didn\'t know what this meant. I wasn\'t sure I would remain on an LTS or upgrade to 20.10. After the full upgrade I check OS release using the following command. This confirmed I was still running 20.04 LTS</p>\r\n<pre><code>  cat /etc/os-release</code></pre></li>\r\n<li><p>The logon screen has desktop options, by default it\'s set to Lubuntu, I found this to be a bit slow and unresponsive also the screen decoration on terminals was rather clunky taking up unnecessary screen space.</p></li>\r\n<li><p>The next time I entered the logon screen I selected LXQT. I was pleased to find that this option was remembered. The netbook was now a bit more responsive though not quite as good as it was before the upgrade. The terminal screen was now much tidier and more usable.</p></li>\r\n<li><p>Preferences / LXQT settings / Keyboard and mouse / Mouse and Touch Pad / Acceleration speed now 5.0 think was 0.1, also selected single click to activate item</p></li>\r\n<li><p>Installed mc, ncdu, screen, pv, moc, ssh</p></li>\r\n<li><p>Generated RSA ssh keys and copied them to Pi13, they installed with no problems and allowed me to SSH into my Pi13.</p></li>\r\n<li><p>Copied all my files and documents from my portable hard drive back onto the laptop. This time I used mc \"Midnight Commander\" to copy the files back which I found much easier than using the GUI file manager the first time around. Midnight commander is an Ncurses file manager.</p></li>\r\n<li><p>I had forgotten just how good the ncurses file manager Midnight commander is.</p></li>\r\n<li><p>Midnight Commander gave a constant percentage progress of each individual file being copied and the overall progress which was very useful and reassuring with such a slow laptop. The first time around the laptop actually crashed a couple of times when I was using the LUBUNTU GUI file manager to try and copy the files from the laptop to the hard drive.</p></li>\r\n<li><p>Also even though I generally use keyboard shortcuts for copy and paste operation I still tend to use the track pad at places when using a file manager. It\'s easy to limit yourself to keyboard navigation using mc. I found this to be greatly reassuring and I feel doing this makes the likelihood of disastrous errors much less likely.</p></li>\r\n</ul>\r\n<h2 id=\"general-thoughts-and-observations\">General thoughts and Observations</h2>\r\n<ul>\r\n<li><p>The keyboard screen brightness buttons don\'t work however I can adjust it within preferences. Further investigation will be needed to resolve this minor annoyance if / when I get the time and inclination.</p></li>\r\n<li><p>The netbook now has a much slower boot time</p></li>\r\n<li><p>The netbook now feels a little sluggish but I think it\'s still perfectly usable. I have a feeling this might be the last upgrade this netbook sees as it\'s now getting a bit long in the tooth. It also has a broken power switch which I believe was a common fault. I have to use a pair of scissors to turn it on.</p></li>\r\n</ul>\r\n',201,0,1,'CC-BY-SA','Linux, Distros, Netbook, Lubuntu',0,0,1),
(3286,'2021-03-08','Wireguard How To',574,'My findings setting up wireguard at home and in my office at work.','<h2 id=\"wireguard-how-to\">Wireguard How To</h2>\r\n<p>Firstly, I am not an expert. These are just my findings setting up wireguard at home and in my office at work.</p>\r\n<p>I\'ve used a program called <code>sshuttle</code> for 7/8 years to attach myself to my home and work networks when on public/untrusted networks or if I need to access some resource at work from home.</p>\r\n<p>Sshuttle for the main part works great and the main benefit is that the only port you ever need to open on the server network is whichever port you have your ssh server running on.</p>\r\n<p>The downside to sshuttle is that it won\'t work with my android devices so I\'ve been using a paid for VPN called PIA on untrusted networks or just staying on 3g/4g and not have any way to connect to my home or work network.</p>\r\n<p>Sshuttle is written in python and a few weeks ago Arch Linux moved to python 3.8 which broke sshuttle. There is a workaround using pyenv and a bug has been filled with the python team and a it\'s already been fixed upstream <a href=\"https://bugs.python.org/issue35415\" class=\"uri\">https://bugs.python.org/issue35415</a>.</p>\r\n<p>Anyway.</p>\r\n<p>I thought it was about time I looked at setting up a proper VPN on my work network.</p>\r\n<p>So I spent a couple of hours reading up on openVPN and creating client and server certificates making a server config on the work server forwarding the port on the router to the server.</p>\r\n<p>Then I spent a couple more hours poking around trying to figure out why it wouldn\'t work.</p>\r\n<p>I eventually gave up frustrated.</p>\r\n<p>I\'m not blaming openVPN, I know it works for many many people, but I couldn\'t see what was wrong.</p>\r\n<p>So I did what we all do in a situation like this.</p>\r\n<p>I took to social media, which in my case is my pleroma server and posted a message to the fediverse.</p>\r\n<p><em>\"OpenVPN has fried my brain. Need booze\"</em><br />\r\nThen I had a beer, a nice cold Stiegl goldbrau if I remember right.</p>\r\n<p>A few minutes later a message popped up from theru, it contained one word with a smiley face. Wireguard.</p>\r\n<p>Now I had looked at wireguard a while ago. You might remember it hit the headlines because Linus Torvalds had praised how beautifully written the code was for it. It turns out what he said was \"It\'s beautiful when compared to openVPN\'s code\". Back then the how to guides were really hard, for me anyway to follow.</p>\r\n<p>There were just examples of two machines on the same LAN connected together and I really struggled to get my head around it being serverless and both machines being peers to each other; after all openVPN has clients and servers and even sshuttle on my laptop connects to a server machine.</p>\r\n<p>There where a couple of wiki pages that I read on Christmas Eve that gave me a lightbulb moment and some clarity on the way it worked. So I decided to try and set it up.</p>\r\n<p>The articles acknowledge that it is a peer to peer technology and then go on to call one peer a server and the other peer the client.</p>\r\n<p>Also I would recommend for your first client use an android device with the wireguard app. It\'s more user friendly in that some of the config is auto filled for you and then you can export the config file and examine it in a text editor later to get a better handle on things.</p>\r\n<p>I\'m going to assume that you have installed the wireguard packages for your system and that you have given your server a static IP on your network.</p>\r\n<p>I\'m using Arch linux on my servers but I see the Linode Debian \'how to\' works in the same way.</p>\r\n<p>So we are going to log into the server and start the setup.</p>\r\n<h3 id=\"st-create-private-and-public-keys\">1st create Private and Public keys</h3>\r\n<p>Create directory for Keys</p>\r\n<pre><code>cd ~\r\nmkdir wireguard\r\ncd wireguard</code></pre>\r\n<p>Create Server Keys</p>\r\n<pre><code>umask 077\r\nwg genkey | tee privatekey | wg pubkey &gt; publickey</code></pre>\r\n<p>Create sub directory for client1 keys</p>\r\n<pre><code>mkdir client1\r\ncd client1\r\nwg genkey | tee privatekey | wg pubkey &gt; publickey</code></pre>\r\n<p>Repeat for as many clients as needed</p>\r\n<h3 id=\"createedit-wireguard-config\">Create/edit wireguard config</h3>\r\n<p>Check the interface name facing the internet is correct before copy/paste</p>\r\n<pre><code>ifconfig</code></pre>\r\n<p>Before you continue you will need to forwrd a port from your internet facing router to your server. Somewhere in your router settings you\'ll find a port forward setting. At home I have a Fritzbox and it\'s buried under network / permitted access. At work it\'s a Linksys ac1200 and it\'s under gaming / apps / single port forwarding. I\'m sure you will find it.</p>\r\n<p>The wireguard default port is 51820 and you\'ll find this port named in most of the how to\'s on the web. I use a different port number just to add a little bit of obsurity/security to my setup so if you choose to forward a different port from your router then remember to use that number in the configs.</p>\r\n<p>Below is the working <code>wg0.conf</code> file from my arch server with one client</p>\r\n<pre><code>[root@arch-server marshall]# cat /etc/wireguard/wg0.conf\r\n[Interface]\r\nAddress = 10.0.0.1/24\r\nMTU = 1500\r\nSaveConfig = false\r\nListenPort = 8801\r\nPrivateKey = sBNF2igw+xxxxxHh0HWJL2SHZ0ltR+xxxxxaCN/Wu3o=\r\nPostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE\r\nPostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D\r\nPOSTROUTING -o enp2s0 -j MASQUERADE\r\n\r\n[Peer]\r\n# BBKey2\r\nPublicKey = Aeo8ya/wCW9dlfO1a5cEaApLTbCfqJVw/stVDi2gDh8=\r\nAllowedIPs = 10.0.0.2/32</code></pre>\r\n<p>Below is the working <code>wg0.conf</code> file from my archarm server with one client</p>\r\n<pre><code>[root@alarmpi wireguard]# cat wg0.conf\r\n[Interface]\r\nAddress = 10.0.0.1/24\r\nMTU = 1500\r\nSaveConfig = false\r\nListenPort = 8801\r\nPrivateKey = GOzcxxxxx4+Gjs/50Ln+XFrlX0XXXXXKpeuf59IDnc=\r\nPostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\r\nPostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D\r\nPOSTROUTING -o eth0 -j MASQUERADE\r\n\r\n[Peer]\r\n# BBKey2\r\nPublicKey = CSJyWwknPQyhF+dRrB6TOBX55gJXnreNIpBiz3qsSm0=\r\nAllowedIPs = 10.0.0.2/32</code></pre>\r\n<h3 id=\"enable-ipv4-forwarding\">Enable IPv4 forwarding</h3>\r\n<p>On the server enable IPv4 forwarding using sysctl</p>\r\n<pre><code>sysctl -w net.ipv4.ip_forward=1</code></pre>\r\n<p>To make the change permanent. Add</p>\r\n<pre><code>net.ipv4.ip_forward = 1</code></pre>\r\n<p>to <code>/etc/sysctl.d/99-sysctl.conf</code></p>\r\n<h3 id=\"check-if-everything-works\">Check if everything works!</h3>\r\n<p>Bring the tunnel up.</p>\r\n<pre><code>wg-quick up wg0</code></pre>\r\n<p>Check tunnel state and see currently connected peers.</p>\r\n<pre><code>wg</code></pre>\r\n<p>If it all works then use systemd to start the tunnel on boot.</p>\r\n<pre><code>systemctl enable wg-quick@wg0.service</code></pre>\r\n<h3 id=\"if-it-doesnt\">If it doesn\'t</h3>\r\n<p>More than likely it\'s IPv4 forwarding.</p>\r\n<p>Try running <code>sysctl -w net.ipv4.ip_forward=1</code> again, or DNS on the client is set wrong.</p>\r\n<h2 id=\"arch-linux\">Arch linux</h2>\r\n<pre><code>pacman -S wireguard-tools wireguard-arch dkms linux-headers</code></pre>\r\n<p>ArchArm dkms + headers</p>\r\n<pre><code>pacman -S dkms wireguard-tools wireguard-dkms linux-raspberrypi-headers</code></pre>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1263\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=1263</a> &lt;--- the old sshuttle episode with NYbill</li>\r\n<li><a href=\"https://aur.archlinux.org/packages/networkmanager-wireguard-git/\" class=\"uri\">https://aur.archlinux.org/packages/networkmanager-wireguard-git/</a></li>\r\n<li><a href=\"https://github.com/max-moser/network-manager-wireguard\" class=\"uri\">https://github.com/max-moser/network-manager-wireguard</a></li>\r\n<li><a href=\"https://wiki.archlinux.org/index.php/WireGuard\" class=\"uri\">https://wiki.archlinux.org/index.php/WireGuard</a></li>\r\n<li><a href=\"https://www.linode.com/docs/networking/vpn/set-up-wireguard-vpn-on-ubuntu/\" class=\"uri\">https://www.linode.com/docs/networking/vpn/set-up-wireguard-vpn-on-ubuntu/</a></li>\r\n</ul>\r\n',392,0,0,'CC-BY-SA','wireguard, openVPN, Arch, sshuttle',0,0,1),
(3287,'2021-03-09','Quick tip',117,'Quick tip and HPR needs shows','<p><a href=\"https://f-droid.org/en/packages/com.github.axet.audiorecorder/\" class=\"uri\">https://f-droid.org/en/packages/com.github.axet.audiorecorder/</a></p>\r\n<p><em>Small drinking glass</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3287/hpr3287/picture1.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3287/hpr3287/picture1_thumbnail.jpg\" alt=\"Small drinking glass\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Perfectly peeled eggs</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3287/hpr3287/picture2.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3287/hpr3287/picture2_thumbnail.jpg\" alt=\"Perfectly peeled eggs\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n',318,93,0,'CC-BY-SA','Cooking',0,0,1),
(3291,'2021-03-15','The New Audacity and Batch Processing Macros',501,'A brief look at at the new Audacity and how I got it working for me','<p>When Audacity upgraded it caused some changes that affected my use of it to prepare podcasts I listen to. I did find the answer, though, and I am sharing it with you.</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/\" class=\"uri\">https://hackerpublicradio.org/</a></li>\r\n<li><a href=\"https://forum.audacityteam.org/\" class=\"uri\">https://forum.audacityteam.org/</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=_DZeio_ansE\" class=\"uri\">https://www.youtube.com/watch?v=_DZeio_ansE</a></li>\r\n<li><a href=\"https://www.zwilnik.com/the-new-audacity-and-batch-processing-macros/\" class=\"uri\">https://www.zwilnik.com/the-new-audacity-and-batch-processing-macros/</a></li>\r\n</ul>\r\n',198,0,0,'CC-BY-SA','Audacity, macros, batch processing',0,0,1),
(3390,'2021-07-30','Intro to DOS Series',803,'We begin some technological archeology to explore the old warhorse, DOS.','<p>This Introduction to the series also serves as a brief recap of my early history with computers, and the path that brought me to where I am today.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing',0,0,1),
(3400,'2021-08-13','Normal Layer Modes: Normal, Dissolve, Color Erase',778,'We begin a look at the Layer Modes in GIMP','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We\'ll begin with the Normal modes and work our way through many, but not all, of the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.20.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/normal-layer-modes-normal-dissolve-color-erase/\" class=\"uri\">https://www.ahuka.com/gimp/normal-layer-modes-normal-dissolve-color-erase/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes',0,0,1),
(3410,'2021-08-27','Operating Systems',828,'Here we look at what an operating system is, and how they developed historically.','<p>While the very first computers did not have operating systems, the lack of them made computers less efficient and more difficult to use. We look at the general history of operating systems before getting into the history of DOS. Then we look at some general principles of what operating systems do.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://webopedia.com/\" class=\"uri\">https://webopedia.com/</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/o/operating_system.html\" class=\"uri\">https://webopedia.com/TERM/o/operating_system.html</a></li>\r\n<li><a href=\"https://www.telegraph.co.uk/technology/0/worst-tech-predictions-of-all-time/thomas-watson-ibm-president-in-1943/\" class=\"uri\">https://www.telegraph.co.uk/technology/0/worst-tech-predictions-of-all-time/thomas-watson-ibm-president-in-1943/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Time-sharing\" class=\"uri\">https://en.wikipedia.org/wiki/Time-sharing</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Multics\" class=\"uri\">https://en.wikipedia.org/wiki/Multics</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/C/CPU.html\" class=\"uri\">https://webopedia.com/TERM/C/CPU.html</a></li>\r\n<li><a href=\"https://webopedia.internet.com/TERM/u/user_interface.html\" class=\"uri\">https://webopedia.internet.com/TERM/u/user_interface.html</a></li>\r\n<li><a href=\"https://dougengelbart.org/\" class=\"uri\">https://dougengelbart.org/</a></li>\r\n<li><a href=\"https://webopedia.internet.com/TERM/G/Graphical_User_Interface_GUI.html\" class=\"uri\">https://webopedia.internet.com/TERM/G/Graphical_User_Interface_GUI.html</a></li>\r\n<li><a href=\"https://www.amazon.com/Fumbling-Future-Invented-Personal-Computer/dp/1583482660\" class=\"uri\">https://www.amazon.com/Fumbling-Future-Invented-Personal-Computer/dp/1583482660</a></li>\r\n<li><a href=\"https://www.cryptonomicon.com/beginning.html\" class=\"uri\">https://www.cryptonomicon.com/beginning.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-1-operating-systems/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-1-operating-systems/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, operating systems',0,0,1),
(3420,'2021-09-10','Normal Layer Modes: Erase, Merge, and Split',606,'We continue our look at the Layer Modes in GIMP','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We\'ll begin with the Normal modes and work our way through many, but not all, of the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.20.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://fontlibrary.org/\" class=\"uri\">https://fontlibrary.org/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/free-public-domain-and-cc-assets/\" class=\"uri\">https://www.ahuka.com/gimp/free-public-domain-and-cc-assets/</a></li>\r\n<li><a href=\"https://fontlibrary.org/en/font/fivefoldornamentsetc\" class=\"uri\">https://fontlibrary.org/en/font/fivefoldornamentsetc</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=17Iivi0tmug\" class=\"uri\">https://www.youtube.com/watch?v=17Iivi0tmug</a></li>\r\n<li><a href=\"https://www.gimp-forum.net/Forum-GIMP\" class=\"uri\">https://www.gimp-forum.net/Forum-GIMP</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/normal-layer-modes-erase-merge-and-split/\" class=\"uri\">https://www.ahuka.com/gimp/normal-layer-modes-erase-merge-and-split/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes',0,0,1),
(3430,'2021-09-24','Booting',724,'We look in detail at how early PCs booted.','<p>The boot process is a very particular system for taking a dead hunk of metal and silicon and turning it into an active computer. It is kind of remarkable, and in the DOS environment you really needed to know how it worked.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://webopedia.com/TERM/B/BIOS.html\" class=\"uri\">https://webopedia.com/TERM/B/BIOS.html</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/R/ROM.html\" class=\"uri\">https://webopedia.com/TERM/R/ROM.html</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/C/CMOS.html\" class=\"uri\">https://webopedia.com/TERM/C/CMOS.html</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/p/power_on_self_test.html\" class=\"uri\">https://webopedia.com/TERM/p/power_on_self_test.html</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/M/MBR.html\" class=\"uri\">https://webopedia.com/TERM/M/MBR.html</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/k/kernel.html\" class=\"uri\">https://webopedia.com/TERM/k/kernel.html</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/s/shell.html\" class=\"uri\">https://webopedia.com/TERM/s/shell.html</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/i/internal_command.html\" class=\"uri\">https://webopedia.com/TERM/i/internal_command.html</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/b/batch_file.html\" class=\"uri\">https://webopedia.com/TERM/b/batch_file.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-2-booting/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-2-booting/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, boot process',0,0,1),
(3292,'2021-03-16','Squirrel FSF blog',2785,'The trouble with HUMANS and HUMAN things.... ','<ul>\r\n<li><p>Google Chrome OS<br />\r\n<a href=\"https://www.google.com/chromebook/chrome-os\" class=\"uri\">https://www.google.com/chromebook/chrome-os</a></p></li>\r\n<li><p>Dell Mini 10<br />\r\n<a href=\"https://www.dell.com/sr/business/p/inspiron-mini10z/pd\" class=\"uri\">https://www.dell.com/sr/business/p/inspiron-mini10z/pd</a></p></li>\r\n<li><p>ConnochaetOS - what\'s left of it.<br />\r\n<a href=\"https://sourceforge.net/projects/connochaetos/\" class=\"uri\">https://sourceforge.net/projects/connochaetos/</a></p></li>\r\n<li><p>OpenBSD website<br />\r\n<a href=\"https://www.openbsd.org/index.html\" class=\"uri\">https://www.openbsd.org/index.html</a></p></li>\r\n<li><p>Enabling audio in OpenBSD<br />\r\n<a href=\"https://www.openbsd.org/faq/faq13.html\" class=\"uri\">https://www.openbsd.org/faq/faq13.html</a></p></li>\r\n<li><p>Enabling a webcam in OpenBSD<br />\r\n<a href=\"https://www.openbsd.org/faq/faq13.html#webcam\" class=\"uri\">https://www.openbsd.org/faq/faq13.html#webcam</a></p></li>\r\n<li><p>FuguIta - OpenBSD Live System<br />\r\n<a href=\"https://fuguita.org/\" class=\"uri\">https://fuguita.org/</a></p></li>\r\n<li><p>Linux Mint - LMDE 4 - Debbie<br />\r\n<a href=\"https://www.linuxmint.com/download_lmde.php\" class=\"uri\">https://www.linuxmint.com/download_lmde.php</a></p></li>\r\n<li><p>Bonus Material - CROWZ - Devuan based Crunchbang clone.<br />\r\n<a href=\"https://sourceforge.net/projects/crowz/\" class=\"uri\">https://sourceforge.net/projects/crowz/</a></p></li>\r\n</ul>\r\n',377,0,0,'CC-BY-SA','banning software, banning ideology, modernizing, re-evaluating, prejudice',0,0,1),
(3293,'2021-03-17','HPR RPG Club reviews Dungeon Raiders',3269,'Klaatu, Beni, and McNalu review an OSR DnD clone','<p>\r\nDungeon Raiders is a D&amp;D \"retroclone\", designed to mimic old school gaming.\r\nIt\'s a simple system, but is it <em>too</em> simple?\r\nFind out in today\'s episode&#33;\r\n</p>\r\n\r\n<p>\r\nYou can download Dungeon Raiders for free from <a href=\"https://www.drivethrurpg.com/product/99366/Dungeon-Raiders\">Drivethrurpg.com</a>\r\n</p>\r\n\r\n<p>\r\nYou can play games with the RPG club.\r\nSubscribe to the HPR mailing list to learn about our schedule, or email Klaatu at this domain.\r\n</p>\r\n',78,95,0,'CC-BY-SA','dnd,osr,tabletop,rpg',0,0,1),
(3301,'2021-03-29','K S P Kerbal Space Program! (Game)',2131,'400 hours into the game I talk about howto get into Kerbal Space Program!','<ul>\r\n<li>dont ever use return to launch pad or anything always use quick save and load etc .. quick save before launch etc...</li>\r\n<li>stay away from missions that are high altitudes/ and low speed etc ... for now. stick with ones that are ALT or SPEED only .. do both only if you are sure you can do it.</li>\r\n<li>use F12 to keep an eye on physics</li>\r\n<li>to EVA in space you need upgrade astronaut complex first ...</li>\r\n<li>hit the rest button in the build menu to reset all the stage to .. logical order</li>\r\n<li>My rules of thumb for parachutes:\r\n<ul>\r\n<li>Mk1s are good for a ton each.</li>\r\n<li>Radials and drogues are good for 1.5t each.</li>\r\n<li>Mk2s are good for 2t each.</li>\r\n</ul></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=nprOvWBgsEM&amp;t=1574\" class=\"uri\">https://www.youtube.com/watch?v=nprOvWBgsEM&amp;t=1574</a></li>\r\n<li>build a plane to do \"conduct survey\" missions ...</li>\r\n<li>missing SAS buttons ? upgrade at tracking and mission control then level up your Pilot to 3 or use tech tree to unlock mod with SAS https://forum.kerbalspaceprogram.com/index.php?/topic/186853-most-efficient-way-to-level-up-pilots/</li>\r\n<li>try to just focuses on missions you can complete easily</li>\r\n<li>when you finish a mission keep an eye on the recovery mod or % at the end it will tell you in the report how much money you lost ....</li>\r\n<li>sub assembly <a href=\"https://www.youtube.com/watch?v=ZdUyKH4NC1M\" class=\"uri\">https://www.youtube.com/watch?v=ZdUyKH4NC1M</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=RXKjt11vjps\" class=\"uri\">https://www.youtube.com/watch?v=RXKjt11vjps</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=mqWppFJGbY8\" class=\"uri\">https://www.youtube.com/watch?v=mqWppFJGbY8</a> ( unlock tech tree )</li>\r\n<li>A good rule of thumb is to simply keep the ship between 200-300 m/s until you are above 12k meters so you aren\'t burning extra fuel to get through the lower atmosphere where you\'re going to experience the most drag. <a href=\"https://m.youtube.com/playlist?list=PL-7ICWbZUDjlBrsHIS8mEEj3xIMUQwlp5\" class=\"uri\">https://m.youtube.com/playlist?list=PL-7ICWbZUDjlBrsHIS8mEEj3xIMUQwlp5</a>\r\n<ul>\r\n<li>different rockets work better in vacuum of Space</li>\r\n<li>for large payloads: Fuel Flow &amp; Asparagus Staging | KSP Beginner\'s Guide</li>\r\n</ul></li>\r\n<li>NERV Rocket : <a href=\"https://www.youtube.com/watch?v=s90tSM0oowo\" class=\"uri\">https://www.youtube.com/watch?v=s90tSM0oowo</a></li>\r\n<li>223 hrs and just now getting to build/mechjeb OK...</li>\r\n<li>COM ranges <a href=\"https://wiki.kerbalspaceprogram.com/wiki/CommNet\" class=\"uri\">https://wiki.kerbalspaceprogram.com/wiki/CommNet</a></li>\r\n<li>sat build! <a href=\"https://www.youtube.com/watch?v=OYCk_pYx_kE\" class=\"uri\">https://www.youtube.com/watch?v=OYCk_pYx_kE</a> :\r\n<ul>\r\n<li>AE-F33 shell (faring)</li>\r\n<li>TR-V2 decopuler</li>\r\n<li>dawn engine</li>\r\n<li>2 x pb-x150 xeono</li>\r\n<li>small inline reaction wheel</li>\r\n<li>z-200 battery</li>\r\n<li>ra-15 sat</li>\r\n<li>OK-T02 probe (remote control )</li>\r\n<li>communion 16 (for kerbal coms)</li>\r\n<li>2x gigantor solar array</li>\r\n</ul></li>\r\n<li>toggle debeis and clean up !</li>\r\n<li><span class=\"citation\" data-cites=\"KSpaceAcademy\">@KSpaceAcademy</span> <span class=\"citation\" data-cites=\"KSA_MissionCtrl\">@KSA_MissionCtrl</span> #KSP #KSP2 <span class=\"citation\" data-cites=\"SquadDevs\">@SquadDevs</span> <span class=\"citation\" data-cites=\"KerbalSpaceP\">@KerbalSpaceP</span></li>\r\n</ul>\r\n',36,0,0,'CC-BY-SA','Kerbal Space Program,KSP,games,space',0,0,1),
(3294,'2021-03-18','Update to MakeMKV to back up media',378,'Update to MakeMKV to back up media, now on Raspberry Pi','<p>Hello, this is your host Archer72 for Hacker Public Radio. In this\nepisode, I share my overly complicated media ripping setup, and hope it\nhelps someone.</p>\n<p>First of all, I have revised my media ripping setup since <a\nhref=\"https://hackerpublicradio.org/eps/hpr3294/index.html\"\ntitle=\"HPR3294 - Update to MakeMKV to back up media\">HPR3294 - Update to\nMakeMKV to back up media</a></p>\n<p>I’ve changed my mind about only using a terminal for ripping media,\nand it was time to make a change. Now, I start both MakeMKV and\nHandbrake from a remote GUI, either on my laptop or phone.</p>\n<ul>\n<li>VNC server for remote GUI\n<ul>\n<li>virt-manager server</li>\n</ul></li>\n</ul>\n<pre><code>sudo apt install tigervnc-common</code></pre>\n<ul>\n<li><a href=\"https://remmina.org\" title=\"Remmina VNC viewer\">Remmina VNC\nviewer</a>, tabbed viewing\n<ul>\n<li>Debian desktop</li>\n</ul></li>\n<li>VNC Client for Android\n<ul>\n<li><a href=\"https://f-droid.org/packages/com.gaurav.avnc\"\ntitle=\"AVNC client on F-Droid\">AVNC client on F-Droid</a></li>\n</ul></li>\n<li>NFS server on Raspberry Pi\n<ul>\n<li>Remote for Intel mini PC Server</li>\n</ul></li>\n</ul>\n<pre><code>mark-hpprodesk600g2dm\n    description: Space-saving Computer\n    product: HP ProDesk 600 G2 DM (Y0E36UP#ABA)\n    vendor: HP\n    serial: xxxxxxxx \n    width: 64 bits</code></pre>\n<pre><code>sudo apt install nfs-kernel-server</code></pre>\n<p>Added symbolic links to <code>/srv/</code> for ease of use</p>\n<pre><code>Oct 28 05:34 dvdrip -&gt; /mnt/USBdrive-12Tb/DVDrip/\nOct 28 05:30 movies -&gt; /mnt/USBdrive-12Tb/Movies/\nOct 30 05:20 tv -&gt; /mnt/USBdrive-12Tb/TV</code></pre>\n<pre><code>192.168.50.20:/mnt/USBdrive-12Tb/DVDrip /mnt/dvdrip nfs users,defaults,_netdev,nofail 0 0\n192.168.50.20:/mnt/USBdrive-12Tb/TV /mnt/tv nfs\nusers,defaults,_netdev,nofail </code></pre>\n<ul>\n<li>Blu Ray writer</li>\n</ul>\n<pre><code>*-cdrom\n     description: DVD-RAM writer\n     product: BDDVDRW CH20L\n     vendor: hp\n     physical id: 0.0.0\n     bus info: scsi@9:0.0.0\n     logical name: /dev/sr1\n     version: BC33\n     capabilities: removable audio cd-r cd-rw dvd dvd-r dvd-ram</code></pre>\n<ul>\n<li><p>MakeMKV</p>\n<ul>\n<li><p><a href=\"https://forum.makemkv.com/forum/viewtopic.php?t=38872\"\ntitle=\"DVD and Blu-ray disks won&#39;t stop loading on updated MakeMKV\">Discs\nwon’t stop loading</a></p></li>\n<li><p><a href=\"https://forum.makemkv.com/forum/viewtopic.php?p=178186\"\ntitle=\"MakeMKV above v1.17.7 still broken on Linux\">MakeMKV above\nv1.17.7 still broken on Linux</a></p></li>\n<li><p>Downgraded version</p>\n<ul>\n<li><a href=\"https://makemkv.com/download/old/\"\ntitle=\"Old versions of MakeMKV\">Old versions of MakeMKV</a></li>\n<li><a href=\"https://makemkv.com/download/old/makemkv-bin-1.17.7.tar.gz\"\ntitle=\"makemkv-bin-1.17.7.tar.gz\">makemkv-bin-1.17.7.tar.gz</a></li>\n<li><a href=\"https://makemkv.com/download/old/makemkv-oss-1.17.7.tar.gz\"\ntitle=\"makemkv-oss-1.17.7.tar.gz\">makemkv-oss-1.17.7.tar.gz</a></li>\n</ul></li>\n</ul></li>\n<li><p>Tailscale</p>\n<ul>\n<li><a href=\"https://tailscale.com/kb/1626/install-debian-trixie\"\ntitle=\"Tailscale on Debian trixie\">on Debian trixie</a></li>\n<li><a href=\"https://f-droid.org/packages/com.tailscale.ipn\"\ntitle=\"Tailscale on F-droid\">Tailscale on F-droid</a></li>\n</ul></li>\n</ul>\n<p><a href=\"makemkv.png\" title=\"Screenshot of MakeMKV while using Remmina remote desktop viewer\">MakeMKV\nvia Remmina <br><img src=makemkv_tn.png></a></p>\n<p><a href=\"handbrake.png\" title=\"Screenshot of Handbrake video encoder, while using Remmina remote desktop viewer\">Handbrake\nvia Remmina <br><img src=handbrake_tn.png></a></p>',318,0,0,'CC-BY-SA','dvd, blu-ray, backup, nnn',0,0,1),
