(2826,'2019-06-03','HPR Community News for May 2019',3497,'HPR Volunteers talk about shows released and comments posted in May 2019','<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/0376.html\" target=\"_blank\">Joel D</a>, \n    <a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</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=2803\" target=\"_blank\">2803</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-05-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2803\" target=\"_blank\">Update on my Raspi 3 B OpenMedia Vault and Next Cloud instances</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=2804\" target=\"_blank\">2804</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-05-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2804\" target=\"_blank\">Awk Part 13: Fix-Width Field Processing</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0300.html\" target=\"_blank\">b-yeezi</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2805\" target=\"_blank\">2805</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-05-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2805\" target=\"_blank\">My 50th Show</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=2806\" target=\"_blank\">2806</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-05-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2806\" target=\"_blank\">HPR Community News for April 2019</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=2807\" target=\"_blank\">2807</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-05-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2807\" target=\"_blank\">Are bash local variables local?</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0311.html\" target=\"_blank\">clacke</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2808\" target=\"_blank\">2808</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-05-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2808\" target=\"_blank\">Haskell function types</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=2809\" target=\"_blank\">2809</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-05-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2809\" target=\"_blank\">The Blue Oak Model License and Its One Big Gotcha</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0376.html\" target=\"_blank\">Joel D</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2810\" target=\"_blank\">2810</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-05-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2810\" target=\"_blank\">Wi-Fi on Android</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=2811\" target=\"_blank\">2811</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-05-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2811\" target=\"_blank\">Interview with Alan Pope</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0370.html\" target=\"_blank\">Yannick</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2812\" target=\"_blank\">2812</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-05-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2812\" target=\"_blank\">Is 5G mobile data a danger to your health?</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0311.html\" target=\"_blank\">clacke</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2813\" target=\"_blank\">2813</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-05-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2813\" target=\"_blank\">Should we dump the linux Desktop.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0111.html\" target=\"_blank\">knightwise</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2814\" target=\"_blank\">2814</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-05-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2814\" target=\"_blank\">Spectre and Meltdown and OpenBSD and our future</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2815\" target=\"_blank\">2815</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-05-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2815\" target=\"_blank\">Copy pasta</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=2816\" target=\"_blank\">2816</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-05-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2816\" target=\"_blank\">Gnu Awk - Part 14</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=2817\" target=\"_blank\">2817</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-05-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2817\" target=\"_blank\">Are you successful? Click to find out more!</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0311.html\" target=\"_blank\">clacke</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2818\" target=\"_blank\">2818</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-05-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2818\" target=\"_blank\">Writing Web Game in Haskell - Science, part 1</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=2819\" target=\"_blank\">2819</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-05-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2819\" target=\"_blank\">Reply to Knightwise - podcasts</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=2820\" target=\"_blank\">2820</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-05-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2820\" target=\"_blank\">29 - CERT Home Security Tips</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=2821\" target=\"_blank\">2821</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-05-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2821\" target=\"_blank\">Interviewing some exhibitors at the 2019 vcfe.org event</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2822\" target=\"_blank\">2822</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-05-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2822\" target=\"_blank\">What\'s in the Box! Part 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0235.html\" target=\"_blank\">NYbill</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2823\" target=\"_blank\">2823</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-05-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2823\" target=\"_blank\">Gentoo and why I use it</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0374.html\" target=\"_blank\">aldenp</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2824\" target=\"_blank\">2824</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-05-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2824\" target=\"_blank\">Gnu Awk - Part 15</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=2825\" target=\"_blank\">2825</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-05-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2825\" target=\"_blank\">More text to speech trials</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</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 16 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=2504#comments\" target=\"_blank\">hpr2504</a></strong>\n(2018-03-08) \"<em>Intro to Git with pen and paper</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=2504#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2019-05-23:\n\"This needs to be a video\"</li></ul><br/>\n</li><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#2\" target=\"_blank\">Comment 2</a>:\nclacke on 2019-05-04:\n\"Re: backquotes vs dollar-paren\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2793#3\" target=\"_blank\">Comment 3</a>:\nclacke on 2019-05-09:\n\"Re: awk coprocesses\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2793#4\" target=\"_blank\">Comment 4</a>:\nDave Morriss on 2019-05-09:\n\"Regarding awk coprocesses\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2794#comments\" target=\"_blank\">hpr2794</a></strong>\n(2019-04-18) \"<em>Interview with Martin Wimpress</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0370.html\" target=\"_blank\">Yannick</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2794#1\" target=\"_blank\">Comment 1</a>:\nKlaatu on 2019-05-26:\n\"Great interview\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2798#comments\" target=\"_blank\">hpr2798</a></strong>\n(2019-04-24) \"<em>Should Podcasters be Pirates ?</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0111.html\" target=\"_blank\">knightwise</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2798#4\" target=\"_blank\">Comment 4</a>:\nKlaatu on 2019-05-07:\n\"This is one of those episodes...\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 10 comments on 4 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2806#comments\" target=\"_blank\">hpr2806</a></strong>\n(2019-05-06) \"<em>HPR Community News for April 2019</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=2806#1\" target=\"_blank\">Comment 1</a>:\nclacke on 2019-05-09:\n\"Yggdrasil and Hollywood\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2806#2\" target=\"_blank\">Comment 2</a>:\nclacke on 2019-05-09:\n\"HKOSCON2019\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2809#comments\" target=\"_blank\">hpr2809</a></strong>\n(2019-05-09) \"<em>The Blue Oak Model License and Its One Big Gotcha</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0376.html\" target=\"_blank\">Joel D</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2809#1\" target=\"_blank\">Comment 1</a>:\nnorrist on 2019-05-09:\n\"The show _was_ fun\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2809#2\" target=\"_blank\">Comment 2</a>:\nJoel D on 2019-05-16:\n\"re: norrist\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2813#comments\" target=\"_blank\">hpr2813</a></strong>\n(2019-05-15) \"<em>Should we dump the linux Desktop.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0111.html\" target=\"_blank\">knightwise</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2813#1\" target=\"_blank\">Comment 1</a>:\nYannick on 2019-05-15:\n\"Should we dump Windows?\n\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2813#2\" target=\"_blank\">Comment 2</a>:\nHipstre on 2019-05-15:\n\"Do We Need Linux?\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2813#3\" target=\"_blank\">Comment 3</a>:\nDV on 2019-05-16:\n\"Response to knightwise\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2813#4\" target=\"_blank\">Comment 4</a>:\nDeepGeek on 2019-05-17:\n\"Desktop is Dead\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2813#5\" target=\"_blank\">Comment 5</a>:\nSnapdeus on 2019-05-17:\n\"Linux desktop\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2814#comments\" target=\"_blank\">hpr2814</a></strong>\n(2019-05-16) \"<em>Spectre and Meltdown and OpenBSD and our future</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><li><a href=\"https://hackerpublicradio.org/eps.php?id=2814#1\" target=\"_blank\">Comment 1</a>:\nClaudioM on 2019-05-17:\n\"Hello, Fellow Puffy Disciple!\"</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/2019-May/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2019-May/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=\"links\">Links</h3>\n<ul>\n<li><a href=\"https://ohshitgit.com/\" class=\"uri\">https://ohshitgit.com/</a></li>\n<li><a href=\"https://www.nporadio1.nl/podcasts/hallo-hier-hilversum\" class=\"uri\">https://www.nporadio1.nl/podcasts/hallo-hier-hilversum</a></li>\n</ul>\n<h3 id=\"tags-and-summaries\">Tags and Summaries</h3>\n<p>Over the period tags and/or summaries have been added to 10 shows which were without them.</p>\n<p>If you would like to contribute to the tag/summary project visit the summary page at <a href=\"https://hackerpublicradio.org/report_missing_tags.php\" class=\"uri\">https://hackerpublicradio.org/report_missing_tags.php</a> and follow the instructions there.</p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2846,'2019-07-01','HPR Community News for June 2019',3364,'HPR Volunteers talk about shows released and comments posted in June 2019','<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/0378.html\" target=\"_blank\">Shannon Wright</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=2826\" target=\"_blank\">2826</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-06-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2826\" target=\"_blank\">HPR Community News for May 2019</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=2827\" target=\"_blank\">2827</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-06-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2827\" target=\"_blank\">Unscripted ramblings from my garage about my first CTF event</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0241.html\" target=\"_blank\">Christopher M. Hobbs</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2828\" target=\"_blank\">2828</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-06-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2828\" target=\"_blank\">Writing Web Game in Haskell - Science, part 2</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=2829\" target=\"_blank\">2829</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-06-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2829\" target=\"_blank\">Discussion around fair use clips on HPR</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0109.html\" target=\"_blank\">Various Hosts</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2830\" target=\"_blank\">2830</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-06-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2830\" target=\"_blank\">HPR NYE Show 2018-2019 part 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2831\" target=\"_blank\">2831</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-06-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2831\" target=\"_blank\">Interview with Robbie Ferguson</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0370.html\" target=\"_blank\">Yannick</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2832\" target=\"_blank\">2832</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-06-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2832\" target=\"_blank\">How I got started in Linux</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0378.html\" target=\"_blank\">Shannon Wright</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2833\" target=\"_blank\">2833</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-06-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2833\" target=\"_blank\">Jeroen chats with Joep Piscaer</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2834\" target=\"_blank\">2834</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-06-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2834\" target=\"_blank\">My favorite desktop and android applications</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0241.html\" target=\"_blank\">Christopher M. Hobbs</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2835\" target=\"_blank\">2835</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-06-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2835\" target=\"_blank\">HPR NYE Show 2018-2019 part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2836\" target=\"_blank\">2836</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-06-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2836\" target=\"_blank\">Interview with Wendy Hill</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0370.html\" target=\"_blank\">Yannick</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2837\" target=\"_blank\">2837</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-06-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2837\" target=\"_blank\">parallax live desktops in android</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=2838\" target=\"_blank\">2838</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-06-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2838\" target=\"_blank\">Why 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=2839\" target=\"_blank\">2839</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-06-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2839\" target=\"_blank\">Sample episode of the Distrohoppers Digest podcast</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=2840\" target=\"_blank\">2840</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-06-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2840\" target=\"_blank\">HPR NYE Show 2018-2019 part 3</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2841\" target=\"_blank\">2841</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-06-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2841\" target=\"_blank\">How I got into Linux (and then some...)</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0241.html\" target=\"_blank\">Christopher M. Hobbs</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2842\" target=\"_blank\">2842</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-06-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2842\" target=\"_blank\">What\'s in my Bag an update to hpr2065</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=2843\" target=\"_blank\">2843</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-06-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2843\" target=\"_blank\">Afrikan Tähti (or Star of Africa)</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=2844\" target=\"_blank\">2844</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-06-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2844\" target=\"_blank\">The Sony TC-222-A Portable Reel-To-Reel Tape Recorder</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=2845\" target=\"_blank\">2845</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-06-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2845\" target=\"_blank\">HPR NYE Show 2018-2019 part 4</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</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 19 comments in total.</p>\n<h3>Past shows</h3>\n<p>There is 1 comment on\n1 previous show:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2807#comments\" target=\"_blank\">hpr2807</a></strong>\n(2019-05-07) \"<em>Are bash local variables local?</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=2807#1\" target=\"_blank\">Comment 1</a>:\nDave Morriss on 2019-06-06:\n\"Thanks for this\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 18 comments on 8 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2827#comments\" target=\"_blank\">hpr2827</a></strong>\n(2019-06-04) \"<em>Unscripted ramblings from my garage about my first CTF event</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0241.html\" target=\"_blank\">Christopher M. Hobbs</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2827#1\" target=\"_blank\">Comment 1</a>:\nChristopher M. Hobbs on 2019-05-30:\n\"event cancellation\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2827#2\" target=\"_blank\">Comment 2</a>:\nTuula on 2019-06-04:\n\"sorry to hear about cancellation\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2829#comments\" target=\"_blank\">hpr2829</a></strong>\n(2019-06-06) \"<em>Discussion around fair use clips on HPR</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0109.html\" target=\"_blank\">Various Hosts</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2829#1\" target=\"_blank\">Comment 1</a>:\nJoel D on 2019-06-06:\n\"Fair Use\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2829#2\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2019-06-07:\n\"We don\'t know\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2830#comments\" target=\"_blank\">hpr2830</a></strong>\n(2019-06-07) \"<em>HPR NYE Show 2018-2019 part 1</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2830#1\" target=\"_blank\">Comment 1</a>:\nfolky on 2019-06-10:\n\"plumble is better than I thought.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2830#2\" target=\"_blank\">Comment 2</a>:\nfolky on 2019-06-10:\n\"More %\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2830#3\" target=\"_blank\">Comment 3</a>:\nDave Morriss on 2019-06-10:\n\"Missing \'%\' in date command\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2831#comments\" target=\"_blank\">hpr2831</a></strong>\n(2019-06-10) \"<em>Interview with Robbie Ferguson</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0370.html\" target=\"_blank\">Yannick</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2831#1\" target=\"_blank\">Comment 1</a>:\nb-yeezi on 2019-06-10:\n\"Just what I was looking for\n\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2832#comments\" target=\"_blank\">hpr2832</a></strong>\n(2019-06-11) \"<em>How I got started in Linux</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0378.html\" target=\"_blank\">Shannon Wright</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2832#1\" target=\"_blank\">Comment 1</a>:\nNYbill on 2019-06-11:\n\"Welcome!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2833#comments\" target=\"_blank\">hpr2833</a></strong>\n(2019-06-12) \"<em>Jeroen chats with Joep Piscaer</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2833#1\" target=\"_blank\">Comment 1</a>:\nAhuka on 2019-06-14:\n\"Great show!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2837#comments\" target=\"_blank\">hpr2837</a></strong>\n(2019-06-18) \"<em>parallax live desktops in android</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=2837#1\" target=\"_blank\">Comment 1</a>:\nnorrist on 2019-06-18:\n\"I like this kind of episode.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2839#comments\" target=\"_blank\">hpr2839</a></strong>\n(2019-06-20) \"<em>Sample episode of the Distrohoppers Digest podcast</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=2839#1\" target=\"_blank\">Comment 1</a>:\nMike Ray on 2019-06-20:\n\"Accessibility\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2839#2\" target=\"_blank\">Comment 2</a>:\nBob on 2019-06-20:\n\"reply to Mike\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2839#3\" target=\"_blank\">Comment 3</a>:\nMike Ray on 2019-06-20:\n\"Accessibility and non-English character sets\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2839#4\" target=\"_blank\">Comment 4</a>:\nTony Hughes on 2019-06-21:\n\"Responce to Mike and Bob\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2839#5\" target=\"_blank\">Comment 5</a>:\nBob on 2019-06-23:\n\"I wasn\'t serious\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2839#6\" target=\"_blank\">Comment 6</a>:\nMike Ray on 2019-06-25:\n\"Accessibility\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2839#7\" target=\"_blank\">Comment 7</a>:\nTonyH1212 on 2019-06-29:\n\"Further responce to Mike and Bob\"</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/2019-June/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2019-June/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=\"issue-with-advanced-rss-settings\">Issue with advanced RSS settings</h3>\n<p>The page at <a href=\"https://www.hackerpublicradio.org/advanced_rss_settings.php\" class=\"uri\">https://www.hackerpublicradio.org/advanced_rss_settings.php</a> describes a series of features that allow the specification of a tailored RSS feed.</p>\n<p>One of the features is <code>\'gomax=1\'</code> which includes shows in the queue scheduled for the future. For example, the following URL requests 30 OGG format shows including those scheduled for the future:</p>\n<pre><code>https://hackerpublicradio.org/rss.php?format=ogg&amp;gomax=1&amp;limit=30</code></pre>\n<p>However, there is a problem with this, caused by the way we direct downloads to <code>archive.org</code>. We usually upload the next week’s shows to <code>archive.org</code>, but not all future shows as they arrive. This means that the links to some future shows returned by the feed point to currently non-existent episodes.</p>\n<p>This has been the case ever since we moved to using <code>archive.org</code> in this way, in late 2017. We have not received any comments or complaints about it in that time, so the question is:</p>\n<blockquote>\n<p><b>Does anyone use <code>\'gomax=1\'</code>?</b></p>\n</blockquote>\n<h3 id=\"tags-and-summaries\">Tags and Summaries</h3>\n<p>Thanks to the following contributor for sending in updates in the past month: <b><a href=\"https://hackerpublicradio.org/correspondents/0338.html\">Tony Hughes</a></b></p>\n<p>Over the period tags and/or summaries have been added to 6 shows which were without them.</p>\n<p>If you would like to contribute to the tag/summary project visit the summary page at <a href=\"https://hackerpublicradio.org/report_missing_tags.php\" class=\"uri\">https://hackerpublicradio.org/report_missing_tags.php</a> and follow the instructions there.</p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2558,'2018-05-23','Battling with English - part 1',678,'Misunderstandings about English grammar, spelling, punctuation, etc.','<h1 id=\"battling-with-english---part-1\">Battling with English - part 1</h1>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>This is the first episode of a series about the English language. In it I want to look at some of the problems people (including myself) have with it. I plan to do several episodes and I want to keep them short.</p>\r\n<p>The English language is old and has changed – evolved – in many ways over the years. It has come from a multitude of sources, and it\'s difficult to say what is <strong>correct</strong> in an absolute way.</p>\r\n<p>For example, when I was at school we were taught that &quot;<em>nice</em>&quot; should not be used in written material. At that time it was becoming common to see phrases like &quot;<em>I had a nice time</em>&quot; meaning <em>pleasant</em> (in a bland sort of way). In my &quot;<em>Concise Oxford Dictionary</em>&quot; from 1976 the 6th definition, &quot;<em>agreeable</em>&quot; is marked &quot;<em>colloquialism</em>&quot;, whereas today this is a common usage.</p>\r\n<p>However, it\'s easy to use the wrong word in the wrong context. You might choose one that sounds similar for example. You might also have problems with the spelling of a chosen word. Spelling in English is not always logical. You might also find yourself confused about the use of punctuation – the correct use of apostrophes can be challenging for example.</p>\r\n<p>In this series I want to examine some of the problem areas and try to give you the means of remembering the <strong>right</strong> way.</p>\r\n<p><strong>Note</strong>: I\'m not an authority on this stuff, but I have tried to teach myself not to make these mistakes over the years. I just wanted to share what I have learnt<a href=\"#fn1\" class=\"footnoteRef\" id=\"fnref1\"><sup>1</sup></a> with some links to higher authorities.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2558/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Then:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/then\">Definition of &quot;then&quot;</a></li>\r\n<li><a href=\"https://www.etymonline.com/word/then\">Online Etymology Dictionary</a></li>\r\n</ul></li>\r\n<li>Than:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/than\">Definition of &quot;than&quot;</a></li>\r\n<li><a href=\"https://www.etymonline.com/word/than\">Online Etymology Dictionary</a></li>\r\n</ul></li>\r\n<li>Then versus Than\r\n<ul>\r\n<li>Writing Explained: <a href=\"https://writingexplained.org/then-vs-than-difference\">Then vs. Than: What’s the Difference?</a></li>\r\n<li>Grammarist: <a href=\"https://grammarist.com/usage/than-then/\">Than vs. then</a></li>\r\n<li>Merriam-Webster: <a href=\"https://www.merriam-webster.com/words-at-play/when-to-use-then-and-than\">When To Use Then and Than</a></li>\r\n</ul></li>\r\n<li>There:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/there\">Definition of &quot;there&quot;</a></li>\r\n<li><a href=\"https://www.etymonline.com/word/there\">Online Etymology Dictionary</a></li>\r\n</ul></li>\r\n<li>Their:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/their\">Definition of &quot;their&quot;</a></li>\r\n<li><a href=\"https://www.etymonline.com/word/their\">Online Etymology Dictionary</a></li>\r\n</ul></li>\r\n<li>They\'re:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/they%27re\">Definition of &quot;they\'re&quot;</a></li>\r\n</ul></li>\r\n<li>Tenet:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/tenet\">Definition of &quot;tenet&quot;</a></li>\r\n<li><a href=\"https://www.etymonline.com/word/tenet\">Online Etymology Dictionary</a></li>\r\n</ul></li>\r\n<li>Tenant:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/tenant\">Definition of &quot;tenant&quot;</a></li>\r\n<li><a href=\"https://www.etymonline.com/word/tenant\">Online Etymology Dictionary</a></li>\r\n</ul></li>\r\n<li>Tenet versus Tenant:\r\n<ul>\r\n<li>Quick and Dirty Tips: <a href=\"https://www.quickanddirtytips.com/education/grammar/tenet-versus-tenant\">Grammar Girl</a></li>\r\n</ul></li>\r\n</ul>\r\n<section class=\"footnotes\">\r\n<hr />\r\n<ol>\r\n<li id=\"fn1\"><p>One thing I have <em>learnt</em> is that &quot;<em>learned</em>&quot; and &quot;<em>learnt</em>&quot; are both correct and mean the same. However, &quot;<em>learnt</em>&quot; is more common in the UK, whereas &quot;<em>learned</em>&quot; is used both in the UK and the USA.<a href=\"#fnref1\">↩</a></p></li>\r\n</ol>\r\n</section>',225,120,1,'CC-BY-SA','grammar,spelling,punctuation,word misuse,English',0,0,1),
(2562,'2018-05-29','I bought a laptop',1292,'... in which clacke takes months (or years?) to buy a laptop, but comes out pretty pleased','<p>After months (or years?) of waffling and false starts I finally bought an <a href=\"https://www.asus.com/Laptops/ASUS-VivoBook-15-X542UA/\">ASUS X542U</a>. The advertised specs say &quot;up to&quot;, but I don’t have the &quot;up to&quot;, I have the baseline 7th gen i3, 128GB SSD, 4 GB RAM.</p>\r\n<p>Here’s the rambling story of a laptop purchase and its various side quests.</p>\r\n<p>Some details that may or may not have made it in to the show (and the show has some that aren’t there) available on the Fediverse at <a href=\"https://pleroma.heldscal.la/notice/7204988\" class=\"uri\">https://pleroma.heldscal.la/notice/7204988</a> .</p>\r\n<p>Side quest to the side quest of making an episode about side quests:</p>\r\n<p>Why spend five minutes writing a simple Makefile when you can spend half an afternoon writing a <a href=\"https://gitlab.com/clacke/hpr/blob/master/default.nix\">simple default.nix</a> instead?</p>',311,0,0,'CC-BY-SA','laptop, linux, ubuntu, nix, cryptocurrency',0,0,1),
(2559,'2018-05-24','My Favourite Browser extension',1117,'In this episode I cover my favourite browser Add-on','<p>My contribution to List of requested shows “Your favourite browser extensions”</p>\r\n<ul>\r\n<li><p>OneTab Homepage<br />\r\n<a href=\"https://www.one-tab.com/\" class=\"uri\">https://www.one-tab.com/</a></p></li>\r\n<li><p>Firefox add-on link<br />\r\n<a href=\"https://addons.mozilla.org/en-US/firefox/addon/onetab/\" class=\"uri\">https://addons.mozilla.org/en-US/firefox/addon/onetab/</a></p></li>\r\n</ul>\r\n<p>On Android, I\'m lazy and just seem to have fallen into using the chrome browser. The Add-on I\'m going to talk about unfortunately isn\'t available for the Android operating system.</p>\r\n<p>On the Linux desktop, I use Firefox</p>\r\n<p>In the past, I\'ve dabbled with various browser add-ons but until very recently I\'ve been using no browser add-ons on the desktop.</p>\r\n<p>A browser add-on I did use and did miss was Tab groups</p>\r\n<p>Tab Groups was originally a feature built into Mozilla Firefox</p>\r\n<p>The feature was removed but maintained as an add-on until it was broken by changes in Firefox 57</p>\r\n<ul>\r\n<li><a href=\"https://addons.mozilla.org/en-GB/firefox/addon/tab-groups-panorama/\" class=\"uri\">https://addons.mozilla.org/en-GB/firefox/addon/tab-groups-panorama/</a></li>\r\n</ul>\r\n<p>A colleague at work brought the One-Tab add-on to my attention https://www.one-tab.com/</p>\r\n<p>It\'s available for both the Chrome browser and Firefox</p>\r\n<p>No sign-up or registration required</p>\r\n<p>With Tab-group I found myself spending a lot of time arranging groups getting the size right naming them etc.</p>\r\n<p>One tab philosophy is a bit different and perhaps maybe not so intuitive, though I think now after some use I prefer it as it gets out of the way and can be used with the minimal of fuss.</p>\r\n<p>I highly recommend one-tab if you regularly find yourself dealing with a lot of open tabs in your browser.</p>\r\n',201,0,1,'CC-BY-SA','Internet, Research, Browser, Firefox, Plug-in, Add-On',0,0,1),
(2560,'2018-05-25','General Data Protection Regulation (GDPR)',1117,'The GDPR becomes enforceable today and Ken gives an overview on what it is and how it effects you.','<p>Been getting a lot of updated policy changes lately ? Here\'s why !</p>\r\n\r\n<h3>From Wikipedia</h3>\r\n<quote>\r\nThe <a href=\"https://en.wikipedia.org/wiki/General_Data_Protection_Regulation\">General Data Protection Regulation (GDPR) (EU) 2016/679</a> is a regulation in EU law on data protection and privacy for all individuals within the European Union. It also addresses the export of personal data outside the EU. The GDPR aims primarily to give control to citizens and residents over their personal data and to simplify the regulatory environment for international business by unifying the regulation within the EU. It was adopted on 14 April 2016, and after a two-year transition period, becomes enforceable on 25 May 2018.\r\n</quote>\r\n\r\n<p>The following information is taken from the <a href=\"https://ico.org.uk/for-organisations/guide-to-the-general-data-protection-regulation-gdpr/\">Guide to the General Data Protection\r\nRegulation (GDPR)</a> from the Information Commissioners Office in the UK, which is released under a <a href=\"https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/\">Open Government Licence v3.0.</a></p>\r\n\r\n<h2>Principles of the GDPR</h2>\r\n<p>Under the GDPR, the data protection principles set out the main responsibilities for organisations.<br />\r\nArticle 5 of the GDPR requires that personal data shall be:</p>\r\n<dl>\r\n<dt>a) processed lawfully, fairly and in a transparent manner in relation to individuals;</dt>\r\n<dt>b) collected for specified, explicit and legitimate purposes and not further processed in a manner that is incompatible with those purposes; further processing for archiving purposes in the public interest, scientific or historical research purposes or statistical purposes shall not be considered to be incompatible with the initial purposes;</dt>\r\n<dt>c) adequate, relevant and limited to what is necessary in relation to the purposes for which they are processed;</dt>\r\n<dt>d) accurate and, where necessary, kept up to date; every reasonable step must be taken to ensure that personal data that are inaccurate, having regard to the purposes for which they are processed, are erased or rectified without delay;</dt>\r\n<dt>e) kept in a form which permits identification of data subjects for no longer than is necessary for the purposes for which the personal data are processed; personal data may be stored for longer periods insofar as the personal data will be processed solely for archiving purposes in the public interest, scientific or historical research purposes or statistical purposes subject to implementation of the appropriate technical and organisational measures required by the GDPR in order to safeguard the rights and freedoms of individuals; and</dt>\r\n<dt>f) processed in a manner that ensures appropriate security of the personal data, including protection against unauthorised or unlawful processing and against accidental loss, destruction or damage, using appropriate technical or organisational measures.</dt>\r\n</dl>\r\nArticle 5(2) requires that:\r\n<dl>\r\n<dt>the controller shall be responsible for, and be able to demonstrate, compliance with the principles.</dt>\r\n</dl>\r\n\r\n<h2>What information does the GDPR apply to?</h2>\r\n\r\n<h3>Personal data</h3>\r\n<p>The GDPR applies to ‘personal data’ meaning any information relating to an identifiable person who can be directly or indirectly identified in particular by reference to an identifier.</p>\r\n\r\n<h3>Sensitive personal data</h3>\r\n<p>Special category data is personal data which the GDPR says is more sensitive, and so needs more protection.</p>\r\n<ul>\r\n  <li>race</li>\r\n  <li>ethnic origin</li>\r\n  <li>politics</li>\r\n  <li>religion</li>\r\n  <li>trade union membership</li>\r\n  <li>genetics</li>\r\n  <li>biometrics (where used for ID purposes)</li>\r\n  <li>health</li>\r\n  <li>sex life</li>\r\n  <li>sexual orientation</li>\r\n</ul>\r\n\r\n<h3>Criminal offence data</h3>\r\n<p>The Data Protection Bill deals with this type of data in a similar way to special category data, and sets out specific conditions providing lawful authority for processing it.</p>\r\n\r\n<h2>What are the lawful bases for processing?</h2>\r\n<p>You can only process personal information if you have:</p>\r\n<ol>\r\n  <li>Consent: the individual has given clear consent for you to process their personal data for a specific purpose.\r\n  <li>Contract: the processing is necessary for a contract you have with the individual, or because they have asked you to take specific steps before entering into a contract.\r\n  <li>Legal obligation: the processing is necessary for you to comply with the law (not including contractual obligations).\r\n  <li>Vital interests: the processing is necessary to protect someone’s life.\r\n  <li>Public task: the processing is necessary for you to perform a task in the public interest or for your official functions, and the task or function has a clear basis in law.\r\n  <li>Legitimate interests: the processing is necessary for your legitimate interests or the legitimate interests of a third party unless there is a good reason to protect the individual’s personal data which overrides those legitimate interests. (This cannot apply if you are a public authority processing data to perform your official tasks.)\r\n</ol>\r\n\r\n<h3>Individual rights</h3>\r\n<ol>\r\n  <li>The right of access</li>\r\n  <li>The right to rectification</li>\r\n  <li>The right to erasure</li>\r\n  <li>The right to restrict processing</li>\r\n  <li>The right to data portability</li>\r\n  <li>The right to object</li>\r\n  <li>Rights in relation to automated decision making and profiling.</li>\r\n</ol>\r\n\r\n<h3>Other Considerations</h3>\r\n<ul>\r\n  <li>Accountability and governance</li>\r\n  <li>Contracts</li>\r\n  <li>Documentation</li>\r\n  <li>Data protection by design and default</li>\r\n  <li>Data protection officers</li>\r\n  <li>Codes of conduct and certification</li>\r\n  <li>Guide to the data protection fee</li>\r\n  <li>Security</li>\r\n  <li>International transfers</li>\r\n  <li>Exemptions</li>\r\n  <li>Children</li>\r\n</ul>\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2560/regulation_oj_en.pdf\">REGULATION (EU) 2016/679 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL</a> \r\nof 27 April 2016 on the protection of natural persons with regard to the processing of personal data and on the free movement of such data, \r\nand repealing Directive 95/46/EC (General Data Protection Regulation). Published under the terms of \r\n<a href=\"https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32011D0833&qid=1495026738506&from=EN\">COMMISSION DECISION of 12 December 2011 on the reuse of Commission documents (2011/833/EU)</a></li>\r\n<li>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2560/guide-to-the-general-data-protection-regulation-gdpr-1-0.pdf\">Guide to the General Data Protection Regulation (GDPR)</a>  from the \r\n<a href=\"https://ico.org.uk/for-organisations/guide-to-the-general-data-protection-regulation-gdpr/\">Information Commissioners Office</a> in the UK, which is released under a \r\n<a href=\"https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/\">Open Government Licence v3.0.</a></li>\r\n<li>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2560/preparing-for-the-gdpr-12-steps.pdf\">Preparing for the General Data Protection Regulation (GDPR)</a>.</li>\r\n<li>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2560/DPbD_Framework.pdf\">Data Protection by Design Framework</a>. Published under Creative Commons 4.0 Attribution - NoDerivs CC BY - ND license. The most recent version of the Data Protection by Design Framework is available on \r\n<a href=\"https://www.privacycompany.eu/en/\">www.privacycompany.eu</a>.</li>\r\n<li>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2560/factsheet_GDPR.pdf\">Overview of the EU General Data Protection Regulation (GDPR)</a>. Published under Creative Commons 4.0 Attribution - NoDerivs CC BY - ND license. The most recent version of the Data Protection by Design Framework is available on \r\n<a href=\"https://www.privacycompany.eu/en/\">www.privacycompany.eu</a>.</li>\r\n<li>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2560/wp242_rev01_enpdf.pdf\">Guidelines on the right to data portability</a>16/EN WP 242 rev.01 ARTICLE 29 DATA PROTECTION WORKING PARTY. Published under the terms of \r\n<a href=\"https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32011D0833&qid=1495026738506&from=EN\">COMMISSION DECISION of 12 December 2011 on the reuse of Commission documents (2011/833/EU)</a></li>\r\n</ul>\r\n',30,74,0,'CC-BY-SA','GDPR,General Data Protection Regulation',0,0,1),
(2561,'2018-05-28','A reluctant dog walk',1472,'A reluctant dog walk after some hand stripping','<p>An explanation of hand stripping <a href=\"https://www.petguide.com/petcare/dog/grooming-basics-all-about-hand-stripping/\" class=\"uri\">https://www.petguide.com/petcare/dog/grooming-basics-all-about-hand-stripping/</a></p>\r\n<p>I chopped the recording down a bit as it was originally over an hour long I thought it would just be too monotonous.</p>\r\n<p>Listening back to the recording I can\'t believe it took me so long to get organised and get out the door.</p>\r\n<p>With all the rhythmic clinking sounds it sounds more like I\'m riding a horse than walking the dog, I think the supplied clip-on Dictaphone microphone is a bit on the sensitive side.</p>\r\n<p>As a responsible dog walker, one of the most important pieces of equipment I take with me on every dog walk is the “Toley Bone” mentioned around one minute point.</p>\r\n<p>Toley is a fine Scottish word, you can look it up if you are unfamiliar with it <a href=\"https://www.firstfoot.com/dictionary/t.html\" class=\"uri\">https://www.firstfoot.com/dictionary/t.html</a> or alternatively just do a simple google search to be enlightened.</p>\r\n<p>An example can be found here. <a href=\"https://www.amazon.co.uk/Plastic-Holder-Dispenser-Carrying-Walking/dp/B01IW0YSM0/ref=sr_1_8?ie=UTF8&amp;qid=1509280608&amp;sr=8-8&amp;keywords=dog+bag+bone\" class=\"uri\">https://www.amazon.co.uk/Plastic-Holder-Dispenser-Carrying-Walking/dp/B01IW0YSM0/ref=sr_1_8?ie=UTF8&amp;qid=1509280608&amp;sr=8-8&amp;keywords=dog+bag+bone</a></p>\r\n<p>Listen out for the crinkling sound around the halfway point where it is put to good use.</p>\r\n<p>The second most important piece of kit is a sweet, consumed around the 3 minute point.</p>\r\n<p>The main part of the walk was fairly uneventful and consisted of traffic noise, passing by the local bus terminus where the bus turns at the end of its route, a rather noisy motorbike and a brief encounter with a fellow dog walker on route.</p>\r\n<p>Finally ending with a treat and some light refreshment.</p>\r\n<p>Oh, and in case you\'re wondering yes the the scones mentioned near the end of the podcast made by Mrs X were wonderful.</p>\r\n<p>Oh and one final thing on listening back to the recording one more time I just realised that for some unknown reason just after the bus noise I started whistling very softly to myself, I don\'t remember doing that at all, I must have been doing it subconsciously. I could be wrong but it sounds to me like I\'m whistling the tune “The animals march in two by two” I guess it was just the right tempo to help me round my one hour walk.</p>\r\n',201,101,1,'CC-BY-SA','dog, walking',0,0,1),
(2563,'2018-05-30','Action In Storytelling',1065,'Lostnbronx looks at different uses of action in storytelling.','<p>Lostnbronx contrasts what he calls &quot;static action&quot; with &quot;story action&quot;, and looks at the functions of these techniques for storytelling in various media.</p>\r\n<p>A car chase is action-filled, but so might be a quiet Victorian drawing room, where, at least on the surface of it, nothing is happening.</p>\r\n<p>What actually constitutes action? What purpose does it serve? And how much of it do you really need?</p>',107,105,0,'CC-0','storytelling,action',0,0,1),
(2564,'2018-05-31','Intro to Fossil',1991,'Klaatu talks about the Fossil version control system','<p>Some shownotes for fossil</p>\r\n\r\n<p>\r\nCreate a new fossil repository&#58;\r\n</p>\r\n\r\n<pre><code>  $ fossil new shownotes\r\n</code></pre>\r\n\r\n<p>\r\n  Add your work to the repository&#58;\r\n</p>\r\n\r\n<pre><code>  $ fossil add shownotes.html\r\n</code></pre>\r\n\r\n<p>\r\n  Commit your work&#58;\r\n</p>\r\n\r\n<pre><code>  $ fossil commit --comment \"added shownote HTML file\"\r\n</code></pre>\r\n\r\n<p>\r\n  As a fun exercise, destroy your work.\r\n</p>\r\n\r\n<pre><code>  $ echo \"klaatu said this was perfectly safe\" &gt; shownotes.html\r\n  $ cat shownotes.html\r\n  klaatu said this was perfectly safe\r\n</code></pre>\r\n\r\n<p>\r\n  And now revert it back to the\r\n  last known good version&#58;\r\n</p>\r\n\r\n<pre><code>  $ fossil revert shownotes.html\r\n  REVERT shownotes.html\r\n  $ head -n1 shownotes.html\r\n  &lt;p&gt;Some shownotes for fossil&lt;p&gt;\r\n</code></pre>\r\n\r\n<p>\r\n  Did you accidentally revert? You can undo that.\r\n</p>\r\n\r\n<pre><code>  $ fossil undo shownotes.html\r\n</code></pre>\r\n\r\n<p>\r\n  And then revert again.\r\n</p>\r\n\r\n<pre><code>  $ fossil revert shownotes.html\r\n  REVERT shownotes.html\r\n  $ head -n1 shownotes.html\r\n  &lt;p&gt;Some shownotes for fossil&lt;p&gt;\r\n</code></pre>\r\n\r\n<p>\r\nCheck your remote&#58;\r\n</p>\r\n<pre><code>  $ fossil remote-url\r\n</code></pre>\r\n\r\n<p>\r\nClose a fossil repo&#58;\r\n</p>\r\n\r\n<pre><code>  $ fossil close\r\n</code></pre>\r\n\r\n<p>\r\nSee the fancy browser-based UI of your repo&#58;\r\n</p>\r\n<pre><code>  $ fossil ui\r\n</code></pre>\r\n\r\n',78,0,0,'CC-BY-SA','fossil,sqlite,svn,git,scm',0,0,1),
(2567,'2018-06-05','Son of Hunky Punk',269,'I follow-up on my Frotz episode by covering Son of Hunky Punk, a Z-machine interpreter for Android.','<p>I follow-up on my Frotz episode by covering Son of Hunky Punk, a Z-machine interpreter for Android. I also test my copy of ZORK I to see if it works as well as it did on Frotz.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><p>Son of Hunky Punk - IFWiki<br />\r\n<a href=\"https://ifwiki.org/index.php/Son_of_Hunky_Punk\" class=\"uri\">https://ifwiki.org/index.php/Son_of_Hunky_Punk</a></p></li>\r\n<li><p>Github: <a href=\"https://github.com/retrobits/son_of_hunkypunk\" class=\"uri\">https://github.com/retrobits/son_of_hunkypunk</a></p></li>\r\n<li><p>Google Play: <a href=\"https://play.google.com/store/apps/details?id=org.andglkmod.hunkypunk&amp;hl=en_US\" class=\"uri\">https://play.google.com/store/apps/details?id=org.andglkmod.hunkypunk&amp;hl=en_US</a></p></li>\r\n<li><p>F-Droid: <a href=\"https://f-droid.org/packages/org.andglkmod.hunkypunk/\" class=\"uri\">https://f-droid.org/packages/org.andglkmod.hunkypunk/</a></p></li>\r\n<li><p>Hunky Punk (the original)<br />\r\n<a href=\"https://hunkypunk.sourceforge.net/\" class=\"uri\">https://hunkypunk.sourceforge.net/</a></p></li>\r\n</ul>\r\n<h3 id=\"contact\">Contact:</h3>\r\n<ul>\r\n<li>IRC: claudiom (#oggcastplanet on Freenode)</li>\r\n<li>E-mail: claudio (at) linuxbasement (dot) com</li>\r\n</ul>\r\n',152,0,0,'CC-BY-SA','Interactive Fiction,interpreter,Android,Son of Hunky Punk,Hunky Punk',0,0,1),
(2568,'2018-06-06','Personal finance',3282,'How to manage personal finances.','<h2 id=\"personal-finances\">Personal finances</h2>\r\n<h3 id=\"problem\">Problem</h3>\r\n<p>People need to save for retirement. But how do we do that?</p>\r\n<p>Conventional wisdom in the USA says that Social Security is your retirement fund.</p>\r\n<p>There\'s no guarantee that will still be around when you retire, and it\'s entirely out of your hands. It maybe a good bonus, but possibly it isn\'t something to rely on.</p>\r\n<p>So how do we do it?</p>\r\n<h3 id=\"they-dont-teach-you-this-stuff-in-school\">They don\'t teach you this stuff in school</h3>\r\n<p>People say you should save for retirement, but they forget to say <em>how</em>.</p>\r\n<p>Currently, there are two de facto methods of funding retirement in the USA:</p>\r\n<ul>\r\n<li>social security: abstract, not guaranteed. Assumes you start contributing to ssn early</li>\r\n<li>401k. abstract, indirect unless you take active role in tracking it. best if you start early.</li>\r\n</ul>\r\n<p>In other countries, there may be significant alternatives. For instance, Kiwisaver in New Zealand.</p>\r\n<p>These methods are OK, but difficult for you to interact with directly.</p>\r\n<h3 id=\"there-are-two-direct-levels-of-investment\">There are two direct levels of investment:</h3>\r\n<ol start=\"0\" type=\"1\">\r\n<li>At your bank: CDs and mutual funds</li>\r\n</ol>\r\n<ul>\r\n<li>Go to your bank, ask to invest in a mutual fund or Certificate of Deposit (CD)</li>\r\n</ul>\r\n<ol type=\"1\">\r\n<li>Stock market: your local market and the US market</li>\r\n</ol>\r\n<ul>\r\n<li>what: direct investment in &quot;publically traded&quot; (whatever that means) companies</li>\r\n<li>how: <a href=\"https://etrade.com\" class=\"uri\">https://etrade.com</a> or <a href=\"https://fidelity.com\" class=\"uri\">https://fidelity.com</a></li>\r\n<li>In other countries, look for brokers who will invest your money in local or international markets</li>\r\n</ul>\r\n',78,0,0,'CC-BY-SA','money, finance, life',0,0,1),
(2569,'2018-06-07','Pandemic: Reign of Cthulu board game review',1140,'Klaatu reviews a board game','<p><a href=\"https://boardgamegeek.com/boardgame/192153/pandemic-reign-cthulhu\" target=\"_blank\">Pandemic Reign of Cthulu</a>\r\n</p><p>\r\n<a href=\"https://boardgamegeek.com/boardgame/30549/pandemic\" target=\"_blank\">Pandemic</a> original edition\r\n</p>\r\n<p>Mods can be found online. For instance: <a href=\"https://www.fractuslearning.com/pandemic-board-game/\" target=\"_blank\">fractuslearning.com&#47;pandemic-board-game</a></p>\r\n\r\n',78,95,0,'CC-BY-SA','game,tabletop',0,0,1),
(2571,'2018-06-11','Kill Dr. Lucky',1168,'Klaatu reviews a board game','<p>Details about <a href=\"https://paizo.com/products/btpy9ijp?Kill-Doctor-Lucky\" target=\"_blank\">Kill Doctor Lucky</a> on Paizo.com.</p>',78,95,0,'CC-BY-SA','game,tabletop',0,0,1),
(2570,'2018-06-08','Penguicon 2018 Report',987,'Penguicon 2018 took place on May 4-6, 2018 in Southfield, Michigan','<p>Penguicon 2018 is a combined technology and science fiction convention in Southfield, Michigan, a suburb of Detroit, and presents over 500 hours of programming over the entire weekend. Of this, around 100 hours are open source, tech-related. In this episode I tell you about my own personal experience at Penguicon this year.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://2018.penguicon.org/\" class=\"uri\">https://2018.penguicon.org/</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCZFipeZtQM5CKUjx6grh54g\" class=\"uri\">https://www.youtube.com/channel/UCZFipeZtQM5CKUjx6grh54g</a></li>\r\n<li><a href=\"https://www.michaelwlucas.com/\" class=\"uri\">https://www.michaelwlucas.com/</a></li>\r\n<li><a href=\"https://www.physics.ccsu.edu/larsen/\" class=\"uri\">https://www.physics.ccsu.edu/larsen/</a></li>\r\n<li><a href=\"https://solarsystem1.jpl.nasa.gov/ssa/home.cfm\" class=\"uri\">https://solarsystem1.jpl.nasa.gov/ssa/home.cfm</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCHkYOD-3fZbuGhwsADBd9ZQ\" class=\"uri\">https://www.youtube.com/channel/UCHkYOD-3fZbuGhwsADBd9ZQ</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2510\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2510</a></li>\r\n<li><a href=\"https://www.zwilnik.com\" class=\"uri\">https://www.zwilnik.com</a></li>\r\n</ul>\r\n',198,96,0,'CC-BY-SA','Penguicon 2018',0,0,1),
(2573,'2018-06-13','Foundations of git rebase',1229,'Klaatu talks about git rebase','<p>A git rebase is like a git merge done through rose-coloured glasses.</p>\r\n\r\n<p>\r\nYou can see it for yourself by doing this little experiment. Assuming the <code>alice</code> directory is a valid git repository&#58;\r\n</p>\r\n\r\n<pre><code>$ cd alice\r\n$ echo \"foo\" &gt;&gt; rebase.episode\r\n$ git add rebase.episode ; git commit -m \'begin rebase episode\'\r\n$ git checkout -b monsters\r\n\r\n$ git branch\r\n* monsters\r\nmaster\r\n$ echo \"ghoul\" &gt;&gt; ghoul.txt\r\n$ git add ghoul.txt ; git commit -m \'ghoul\'\r\n$ git checkout master\r\n$ echo \"rogue\" &gt;&gt; rogue.txt\r\n$ git add rogue.txt ; git commit -m \'rogue\'\r\n\r\n$ git checkout monsters\r\n$ echo \"dragon\" &gt;&gt; dragon.txt\r\n$ git add dragon.txt ; git commit -m \'dragon\'\r\n\r\n$ git checkout master\r\n$ echo \"paladin\" &gt;&gt; paladin.txt\r\n$ git add paladin.txt ; git commit -m \'paladin\'\r\n</code></pre>\r\n\r\n<p>\r\nYou have now emulated a bunch of activity on two separate branches of a git repository.\r\nCreate a copy of the repo so that you can perform two separate git actions.\r\n</p>\r\n\r\n<pre><code>$ cd ..\r\n$ cp -r alice alice-merge\r\n$ cp -r alice alice-base\r\n</code></pre>\r\n\r\n<p>\r\nDo an honest merge&#58;\r\n</p>\r\n\r\n<pre><code>$ cd alice-merge\r\n$ git checkout master\r\n$ git merge monsters\r\n</code></pre>\r\n\r\n<p>\r\nThe log shows you an accurate representation what got merged, and how all those changes came to be&#58;\r\n</p>\r\n\r\n<pre><code>$ git log --oneline\r\n123456 Merged monsters into master\r\n789101 paladin\r\n112131 dragon\r\n415161 rogue\r\n718191 ghoul\r\n7ef217 begin rebase episode\r\n</code></pre>\r\n\r\n<p>\r\nNow perform a rebase.\r\n</p>\r\n\r\n<pre><code>$ cd ../alice-base\r\n$ git checkout master\r\n$ git rebase monsters\r\n</code></pre>\r\n\r\n<p>\r\nThe log displays a different story than what really happened.\r\n</p>\r\n\r\n<pre><code>123456 Merged monsters into master\r\n8e9122 paladin\r\n21d163 rogue\r\n912a3f dragon\r\n51c098 ghoul\r\n7ef217 begin rebase episode\r\n</code></pre>\r\n\r\n<p>\r\nBetter? Worse? YOU DECIDE&#33;\r\n</p>\r\n\r\n',78,81,0,'CC-BY-SA','git,rebase,merge',0,0,1),
(2580,'2018-06-22','Diabetes',841,'This is the story of how I became diabetic and what I did about it.','<p>For the last 15 years or so Diabetes has been a central fact in my life, and I needed to learn what to do about it. I think I discovered a way I can live with it and still have a good quality of life</p>\r\n<ul>\r\n<li><a href=\"https://www.webmd.com/diabetes/default.htm\" class=\"uri\">https://www.webmd.com/diabetes/default.htm</a></li>\r\n<li><a href=\"https://www.aao.org/eye-health/diseases/what-is-diabetic-retinopathy\" class=\"uri\">https://www.aao.org/eye-health/diseases/what-is-diabetic-retinopathy</a></li>\r\n<li><a href=\"https://www.mayoclinic.org/diseases-conditions/diabetic-neuropathy/symptoms-causes/syc-20371580\" class=\"uri\">https://www.mayoclinic.org/diseases-conditions/diabetic-neuropathy/symptoms-causes/syc-20371580</a></li>\r\n<li><a href=\"https://www.webmd.com/diabetes/tc/diabetic-nephropathy-topic-overview#1\" class=\"uri\">https://www.webmd.com/diabetes/tc/diabetic-nephropathy-topic-overview#1</a></li>\r\n<li><a href=\"https://www.diabetes-book.com/\" class=\"uri\">https://www.diabetes-book.com/</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=338\" class=\"uri\">https://www.palain.com/?page_id=338</a></li>\r\n</ul>\r\n',198,100,0,'CC-BY-SA','Health, Medicine, Diabetes',0,0,1),
(2574,'2018-06-14','Personal cash-only finance',1800,'Klaatu discusses the advantages and disadvantages of going [mostly] cash-only','<p>Klaatu discusses the advantages and disadvantages of going [mostly] cash-only</p>\r\n',78,0,0,'CC-BY-SA','money, finance, life',0,0,1),
(2579,'2018-06-21','Ubuntu 18.04 Mate',620,'This is a short show on installing the latest Ubuntu 18.04 onto a laptop and desktop PC','<h2 id=\"ubuntu-mate-18.04\">Ubuntu Mate 18.04</h2>\r\n<p>Good day to all you HPR Listers. Sorry that its been a while since I recorded a show, but as they say life has got in the way over the last few months, and I\'ve spent quite a bit of it away from the home front.</p>\r\n<p>As it happens on one of those trips away my laptop running Mint Mate 18.3 LTS, based on Ubuntu 16.04LTS decided that it wouldn\'t boot as it didn\'t recognise my account, and as I had not created a Root account I could not sign in and fix the issue, which was a corrupted configuration file in the users folder.</p>\r\n<p>As luck would have it I had just downloaded the latest Ubuntu Mate 18.04 .iso to try it as a live disc, so I had a boot disc that I could use to boot the laptop and access the data to rescue all my important information which was mainly all my emails and my browser settings and bookmarks, as this is one of my travelling laptops not much of importance is permanently stored on it, so it didn\'t take long and I was ready to reinstall the OS to the PC. Just in case I had missed some important data on the current SSD, as I had a spare SSD with me in the bag, yes I\'m geeky enough to carry a spare SSD or 2 in the bag. So I dug it out and installed it into the PC, which by the way is a Dell Latitude E6540 with an i5 dual core mobile chip with hyper-threading. It\'s currently running 4Gig DDR3 RAM but can run up to 16Gig in the 2 slots it has.</p>\r\n<p>So I booted the laptop with the USB boot disc I had created and as with all recent Ubuntu releases you get a screen asking if you want to try or install the OS, as I needed a working PC I went straight to the install option. For those not familiar with Linux or Ubuntu, the installer is a joy to use and very friendly to new users. As this was a first install to this SSD the only option I had was a full install which I chose, then was asked if I wanted to do the default install which partitions the drive and installs the bootloader automatically without any further need for intervention or did I want to do a custom partition arrangement. As the default is adequate for my needs I chose this and clicked continue. During this process you also get the option of a minimal or full installation, the minimal installation gets you a running PC with the basic utilities and leaves you to chose what to install later, but as I use the software that would be omitted I chose the full install. You get asked a final time if you are sure you want to install, with a warning that all current data on the disc will be wiped, as I was happy I clicked proceed. At this point the install starts and you are taken through setting up your PC configuration for language, keyboard, and user account. By the time I had completed this, the install was half completed and the whole process took less than 15 minutes.</p>\r\n<p>After the install is complete you get the message to reboot the PC and eject the boot media to reboot into the new install, on first boot you will either be presented with the login screen or go straight to the desktop depending on the choices you made during the install. Once you are at the desktop for the first time you are presented with a wallpaper of the Ubuntu Mate logo and 2 panels one at the top and one at the bottom of the screen. The top one has for those more traditional Linux and Windows users all the information you would expect on the lower panel, such as the menu, notification area etc. As I\'m more traditional in my use of a PC I quickly set up the lower panel with the Advanced Mate Menu and other notification apps such as network, clock and calendar and then deleted the other panel, but obviously this is a personal preference - go with what you find comfortable.</p>\r\n<p>The next step after connecting to the local WiFi was to install any updates, which despite this release only being a few days old there were a few, but this didn\'t take long and in less than an hour, which included backing up and swapping out the SSD I had a fully working laptop running Ubuntu 18.04 Mate.</p>\r\n<p>So there are a few bits of software not included by default in Ubuntu which I use regularly, one of which is synaptic so I opened the terminal and a <code>sudo apt install synaptic</code> later I had the package manager on the PC. You may ask why, but the software Boutique doesn\'t seem to have all the software available in the repositories and I don\'t always know the appropriate name of software I\'m looking for to use the terminal all the time, so synaptic is a tool I use a lot. The next software that gets installed is Audacity as I use this for editing audio and sometimes extracting the audio stream from videos of the internet, most importantly for HPR listeners it is what I use to record and edit my HPR shows.</p>\r\n<p>So back to Ubuntu 18.04 Mate, I\'ve been running it for a month on the laptop and about 3 weeks on my main box and as you would expect from a LTS (long term support until 2023) it\'s very solid and stable, I had a glitch transferring my e mails into Thunderbird on my main box, it had worked flawlessly on the laptop, so I ended up having to reinstall from scratch and on the second install it went perfectly, I think it was down to the way I set up Thunderbird which screwed things up, not the OS, but it\'s all fine now and I didn\'t lose anything in the process. For me coming from Mint there are a couple of utilities the Mint developers have implemented that are not available in Ubuntu, but nothing I can\'t work around. Saying that, if there are any Ubuntu developers out there, the Mint USB drive formatter and USB boot disc creation utilities are nice and simple to use but not available in the Ubuntu repositories.</p>\r\n<p>Obviously I\'ve only had limited time to get to use the new OS but so far it doesn\'t seem too bad coming back to the mother ship so to speak from several years of using Mint Mate, virtually since its inception, but as I record this there has been nothing that has made me feel I need to rush and reinstall Mint, so I\'ll continue with Ubuntu Mate 18.04 at least until the new Mint19 based on this Ubuntu release comes out.</p>\r\n<p><a href=\"https://ubuntu-mate.org/download/\" class=\"uri\">https://ubuntu-mate.org/download/</a></p>\r\n',338,57,0,'CC-BY-SA','Linux, Ubuntu',0,0,1),
(2576,'2018-06-18','My swedish and german podcasts part 1',335,'I\'m recommending 6 podcasts in swedish and german','<ul>\r\n<li><strong>P1 Språket</strong> <a href=\"https://api.sr.se/api/rss/pod/4012\" class=\"uri\">https://api.sr.se/api/rss/pod/4012</a></li>\r\n<li><strong>P1 Vetenskapsradion Historia</strong> <a href=\"https://api.sr.se/api/rss/pod/4020\" class=\"uri\">https://api.sr.se/api/rss/pod/4020</a></li>\r\n<li><strong>Medierna i P1</strong> <a href=\"https://api.sr.se/api/rss/pod/3951\" class=\"uri\">https://api.sr.se/api/rss/pod/3951</a></li>\r\n<li><strong>@mediasres</strong> <a href=\"https://www.deutschlandfunk.de/podcast-mediasres.762.de.podcast\" class=\"uri\">https://www.deutschlandfunk.de/podcast-mediasres.762.de.podcast</a></li>\r\n<li><strong>Europa heute</strong> <a href=\"https://www.deutschlandfunk.de/podcast-europa-heute.796.de.podcast\" class=\"uri\">https://www.deutschlandfunk.de/podcast-europa-heute.796.de.podcast</a></li>\r\n<li><strong>Computer und Kommunikation</strong> <a href=\"https://www.deutschlandfunk.de/podcast-computer-und-kommunikation.685.de.podcast\" class=\"uri\">https://www.deutschlandfunk.de/podcast-computer-und-kommunikation.685.de.podcast</a></li>\r\n</ul>',309,75,0,'CC-BY-SA','podcasts,swedish,german,language,media,europe',0,0,1),
(2577,'2018-06-19','Emigration',1855,'Howto emigrate','<p>Confused about leaving your homeland for &#60;strike&#62;greener&#60;&#47;strike&#62; pastures? Maybe this episode will shed some light on the subject.</p>\r\n\r\n<p>Public domain music from <a href=\"https://archive.org/details/Americasnationalanthem\" target=\"_blank\">archive.org</a>. Can you find your national anthem? Do you know all the words to your national anthem? Either way, you should be ashamed of yourself.</p>',78,0,0,'CC-BY-SA','Emigration,visa,permanent residency,citizenship',0,0,1),
(2575,'2018-06-15','Quick Tips June 2018',826,'I go over a few quick tips for June','<ul>\r\n<li>sites that required two factor tips</li>\r\n<li>Referb your can opener</li>\r\n<li>Referb your powerwheels</li>\r\n<li>Humidifier filter DIY</li>\r\n<li>free anonymous email over TOR</li>\r\n</ul>',36,0,1,'CC-BY-SA','QuickTips',0,0,1),
(2578,'2018-06-20','LinuxLUGcast 102 the lost episode',13976,'LinuxLUGcast episode 102. The lost episode.','<p>\r\nThis was episode 102 of the LinuxLUGcast.\r\n<br/>\r\nSo the LinuxLUGcast is an open podcast/LUG that meets every first and third friday of the month using mumble. This method of running a podcast leaves it open to anyone showing up (which is what we want because it gets difficult for fiftyonefifty and I to come up with topics all the time). We have also gotten the reputation of being a safe for work podcast. This is why episode 102 is being posted here. Between the not safe for work language and the fact that after a few drinks during the podcast I get a little rambly we thought it best not to publish it on the regular LinuxLUGcast feed, but I thought there was some good conversation here that would be lost if it did not go somewhere. After some discussion we at the LinuxLUGcast decided that we would publish it here so that it could be heard by the HPR community.\r\n<br/>\r\nWe have also done some website remodeling which has screwed up the .ogg feed, and wanted to let people know that we are still podcasting and to please check out\r\n<a href=\"https://www.linuxlugcast.com/\">https://www.linuxlugcast.com/</a> for the new .ogg feed.\r\n<br/>\r\nEnjoy\r\n</p>\r\n<p>\r\np.s. please forgive my rambling\r\n</p>\r\n',269,0,1,'CC-BY-SA','linux, computing',0,0,1),
(2585,'2018-06-29','Check to see if a Remote Control is working',99,'Yet another amazing life hack from Ken','<p>\r\nEver have a remote control that didn\'t seem to be working ? With this AMAZING LIFE HACK you can see the unseen</p>\r\n<p>\r\n<small>\r\nOK all it is is looking at the remote using your camera - but still...\r\n</small>\r\n</p>\r\n',30,0,1,'CC-BY-SA','remote control, life hack',0,0,1),
(2581,'2018-06-25','My new 3D printer - impressions of the Creality Ender 3',1239,'I bought a Creality Ender 3 3D printer in June 2018. Here are my first impressions of it','<h1 id=\"my-new-3d-printer---impressions-of-the-creality-ender-3\">My new 3D printer - impressions of the Creality Ender 3</h1>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>I have been thinking of buying a 3D printer for a year or so. I had thought of getting a <a href=\"https://www.prusaprinters.org/prusa-i3/\" title=\"Prusa i3 MK3\">Prusa i3 MK3</a> in kit form, but although it\'s cheaper than the built form this printer is not cheap, and I doubted my ability to build it. I was also unsure whether there was a real need for the capabilities of a 3D printer in my life, and whether such a purchase was justified.</p>\r\n<p>I had noticed the Chinese <a href=\"https://www.creality3d.cn/creality-cr-10-3d-printer-p00096p1.html\" title=\"Creality CR10\">Creality CR10</a> printer in the recent past, and wondered about buying one of these at about half the price of the Prusa. This is a good-sized printer which comes fully-assembled as I understand, and it has had many good reviews.</p>\r\n<p>When the <a href=\"https://www.creality3d.cn/creality-ender-3-3d-printer-p00095p1.html\" title=\"Creality Ender 3\">Creality Ender 3</a> was released in April 2018 for around half the price of the CR10 it looked worth the risk to see if I really needed a 3D printer. So I bought one (from Amazon) in June.</p>\r\n<p>As I write this (2018-06-10) it\'s been less than a week since it was delivered, so this is a very preliminary look at the printer.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>For the rest of the notes for this episode <a href=\"https://hackerpublicradio.org/eps/hpr2581/full_shownotes.html\">look here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/3D_printing\">Wikipedia definition of 3D printing</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Bowden_extruder\">Wikipedia article on the <em>Bowden extruder</em></a></li>\r\n<li>Printers mentioned:\r\n<ul>\r\n<li><a href=\"https://www.prusaprinters.org/prusa-i3/\">Prusa i3 MK3</a></li>\r\n<li>Creality CR10\r\n<ul>\r\n<li><a href=\"https://www.creality3d.cn/creality-cr-10-3d-printer-p00096p1.html\">Website</a></li>\r\n<li><a href=\"https://www.banggood.com/DIY-Creality-CR-10-3D-Printer-300300400mm-Printing-Size-1_75mm-0_4mm-Nozzle-p-1085645.html?cur_warehouse=USA\">Buy on Banggood</a></li>\r\n</ul></li>\r\n<li>Creality Ender 3\r\n<ul>\r\n<li><a href=\"https://www.creality3d.cn/creality-ender-3-3d-printer-p00095p1.html\">Website</a></li>\r\n<li><a href=\"https://www.banggood.com/Creality-3D-Ender-3-V-slot-Prusa-I3-DIY-3D-Printer-Kit-220x220x250mm-Printing-Size-p-1278399.html?cur_warehouse=CN\">Buy on Banggood</a></li>\r\n<li><a href=\"https://all3dp.com/1/creality-ender-3-3d-printer-review/\">All3DP Review</a></li>\r\n</ul></li>\r\n</ul></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/DIN_rail\">Wikipedia article on DIN Rails</a></li>\r\n<li>Thingiverse items:\r\n<ul>\r\n<li><a href=\"https://www.thingiverse.com/thing:2874536\">Ender 3 bed levelling GCode</a></li>\r\n<li><a href=\"https://www.thingiverse.com/thing:2610621/files\">DIN Rail fittings</a></li>\r\n<li><a href=\"https://www.thingiverse.com/3DMakerFun/collections/creality-3d-ender-3-upgrades\">Printable upgrades for the Ender 3</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','3D printer',0,0,1),
(2582,'2018-06-26','3 Contribution case studies',2699,'How easy is it for your potential contributors to contribute?','<p><em>How easy is it for your potential contributors to contribute?\r\nKlaatu looks at three open source and open culture projects to determine how easy they make it for your potential contributors to contribute?\r\n</em></p> ',78,0,0,'CC-BY-SA','FLOSS contributions',0,0,1),
(2590,'2018-07-06','Blowing a PC Power Supply',229,'Just a short show on how I managed to blow the power supply on my desktop PC','<p>Greetings Hacker Public Radio listeners, Tony Hughes again coming all the way from Blackpool in the North West of the UK. Originally this show was going to be about some new kit that I have recently bought at my favourite computer auction. However as luck or actually bad luck should have it I fried the power supply on my Desktop machine yesterday as I was setting it up again after moving back to my office.</p>\r\n<p>The PC is a HP Compaq Elite 8300 micro Desk top tower with a i7 3rd generation 3770 3.4Ghz CPU and since upgrades now has 16Gig Ram and a Primary 256Gig SSD. This is my daily driver and I\'ve been running it for a couple of years since I bought it at the said auction. It is the best PC I\'ve ever owned; the full specifications are here:</p>\r\n<p><a href=\"https://www.cnet.com/products/hp-compaq-elite-8300-cmt-core-i7-3770-3-4-ghz-4-gb-1-tb-b2d12utaba/specs/\" class=\"uri\">https://www.cnet.com/products/hp-compaq-elite-8300-cmt-core-i7-3770-3-4-ghz-4-gb-1-tb-b2d12utaba/specs/</a></p>\r\n<p>As I said I was re setting up my full rig after moving it back to the office upstairs after a temporary move while we had a house guest. As I was plugging in the power cable there was a flash and crack, and a few expletives were uttered, sure enough when I switched of the power at the plug and reconnected the power cable and then tried to power on the PC, it was dead. I was hoping that it was the power supply that had blown and as I had a spare I was not too concerned. However on investigation HP have done the dirty with the design of the motherboard and power supply and neither are standard ATX configuration, yes propriety hardware for this baby.</p>\r\n<p>I was lucky as a few months ago I had picked up a i3 HP using the same case, so I pulled out the power supply from this and fitted it into the i7 PC and luckily that did turn out to be the issue, and the PC sprang into life when I hit the power button. I’m now left with a PC that works, but another one that unless I can find a power supply to match is next to useless except for spares.</p>\r\n<p>Lessons learned, never connect the power cable when the socket is live, if your plug socket doesn\'t have a switch connect the kettle end to the PC first to reduce the risk of a short like mine. Also never assume that 2nd hand PC’s are standard case/motherboard format as you may have a problem sourcing spares if anything goes wrong as in my case. It’s not the first PC disaster I\'ve had over the years and I can as in this case usually get round them, although not when I bricked the BIOS on a Lenovo x200 one time trying to clear a BIOS password, again I was left with a box of spares which actually came in very handy.</p>\r\n<p>Well that\'s the end of my tale of woe. I’ll do another episode on the recent trip to the auction and my new laptops shortly. This is Tony Hughes for Hacker Public Radio signing off for now.</p>\r\n',338,57,0,'CC-BY-SA','Computers, Repair, safety',0,0,1),
(2595,'2018-07-13','New laptop bargain?',252,'This is a short show about another trip to the computer auction and one of my purchases','<p>Greetings HPR listeners this is Tony Hughes again coming from Blackpool in the UK. Well, as you heard on my last episode I recently visited the computer auction I frequent here in the UK. If you want to drool over the catalogue at any time their website is here:</p>\r\n<p><a href=\"https://www.realnorth.co.uk/\" class=\"uri\">https://www.realnorth.co.uk/</a></p>\r\n<p>So at the sale in June they had some really good 3-4 year old laptops for sale so I decided to take a trip and see if I could liberate a few bargains, and one of the items I came away with was 3 Toshiba Z30a Ultra Books of the i5 4th generation. The basic specs are:</p>\r\n<ul>\r\n<li>i5-4300U CPU</li>\r\n<li>128GB mSATA solid state drive</li>\r\n<li>13.3 inch display</li>\r\n<li>8Gig DDR Ram</li>\r\n<li>3 x USB3 ports</li>\r\n<li>VGA and HDMI video out</li>\r\n<li>Full Ethernet Port</li>\r\n<li>Combined Audio in/out jack</li>\r\n<li>SD card reader</li>\r\n<li>Mobile Intel ® HD Graphics with up to 1792MB dynamically allocated</li>\r\n<li>shared graphics memory.</li>\r\n</ul>\r\n<p>There will be a link in the show notes to the full specifications</p>\r\n<p><a href=\"https://www.toshiba.co.uk/discontinued-products/portege-z30-a-1fd/\" class=\"uri\">https://www.toshiba.co.uk/discontinued-products/portege-z30-a-1fd/</a></p>\r\n<p>I had also picked up some 240Gig SSD\'s and had planned to upgrade the storage but this is not possible with a 2.5 inch drive as it doesn\'t have a bay for this format. However it does support up to 128Gig High capacity SD cards so this could be an option if you don\'t want to go to the expense of upgrading the mSATA drive, however as luck would have it one of my other purchases had a 256Gig mSATA drive in a 2.5 inch caddy so that was quickly swapped out and both laptops got an upgrade. More of that in another show.</p>\r\n<p>So after doing the hardware upgrade I proceeded to install Ubuntu 18.04 MATE onto the PC. The install worked flawlessly and after completion and configuring the machine to my liking everything seems to be working just fine. The battery condition for a 4 year old laptop is excellent at over 90%, however a replacement can be had on Ebay for around £30 if needed and I always factor this into any second hand laptops I buy.</p>\r\n<p>Since I got it running I\'ve installed Windows 7 in a Virtual Machine, in this case Virtual Box as I have a preconfigured Virtual Box HDD image that makes it less of a hassle to install as I don’t have to spend days waiting for all the updates to come through. When this is running in the background it doesn\'t over tax the host machine, and for Linux users it does mean you have access to that occasional bit of light weight MS software that you may need without the need to lug around 2 PC\'s.</p>\r\n<p>So did I bag a bargain, well 4 years ago on release these laptops went for £1100+ in the UK and even today they fetch £160 in good order on the likes of Ebay for a model with the specification as I originally purchased it. I would never have been in the market to spend £1000+ on a laptop now or then so the only way I can enjoy these types of machines is after they have been pre loved by someone else. Lets just say £160 is quite a bit more than I paid but with the upgrade to 256Gig mSATA drive I have a better machine for a little less than that, I personally think I bagged a bargain which will do me good service in the coming months/years.</p>\r\n',338,57,0,'CC-BY-SA','computer auction,laptop',0,0,1),
(2584,'2018-06-28','Plot Twists In Storytelling',719,'Lostnbronx examines plot twists, including the different types, and how they can be used.','<p>Plot twists come in several varieties, and can produce different effects in stories. They can be powerful tools, done correctly, but quickly become trite and predictable if over-used, or used poorly. What\'s the best way to include them? And when might it be a mistake to even try?</p>',107,105,0,'CC-0','storytelling,plot twists,lostnbronx',0,0,1),
(2587,'2018-07-03','Cleaning out your Digital Gutters',1519,'Knightwise talks about being a geek and his quest to curate the library of his mind','<p>While cleaning out the gutters, Knightwise talks about cleaning out the digital gutters of his information consumption and looking for geeky ways to get his information fix.</p>\r\n',111,0,1,'CC-BY-SA','geek, life, lifestyle',0,0,1),
(2588,'2018-07-04','Miniature painting',1740,'Tuula rambles about how to paint miniatures while painting some toy soldiers','<p>Tuula rambles about miniature painting while painting some ancient British units (horses for chariots to be specific) for De Bellis Antiquitatis.</p>\r\n<ul>\r\n<li><p>De Bellis Antiquitatis is a quick to learn, quick to play war game for ancient period (and a bit more) - <a href=\"https://en.wikipedia.org/wiki/De_Bellis_Antiquitatis\" class=\"uri\">https://en.wikipedia.org/wiki/De_Bellis_Antiquitatis</a></p></li>\r\n<li><p>Army Painter is paint, brush and basing manufacturer - <a href=\"https://www.thearmypainter.com/\" class=\"uri\">https://www.thearmypainter.com/</a></p></li>\r\n<li><p>Osprey Publishing specializes in publishing books on modeling and history - <a href=\"https://ospreypublishing.com/\" class=\"uri\">https://ospreypublishing.com/</a></p></li>\r\n</ul>',364,114,0,'CC-BY-SA','miniatures painting',0,0,1),
(2583,'2018-06-27','Random Rant',917,'Rant on how US sound recordings copyright laws are weird & how I miss Juiced Penguin','<h3 id=\"citations\">Citations</h3>\r\n<ul>\r\n<li><a href=\"https://www.copyright.gov/docs/sound/\" class=\"uri\">https://www.copyright.gov/docs/sound/</a></li>\r\n<li><a href=\"https://www.infotoday.com/searcher/sep12/Hirtle--When-Is-1923-Going-to-Arrive-and-Other-Complications-of-the-U.S.-Public-Domain.shtml\" class=\"uri\">https://www.infotoday.com/searcher/sep12/Hirtle--When-Is-1923-Going-to-Arrive-and-Other-Complications-of-the-U.S.-Public-Domain.shtml</a></li>\r\n</ul>\r\n',354,0,1,'CC-BY-SA','Juiced Penguin,copyright,public domain',0,0,1),
(2599,'2018-07-19','Fitting a 3.5mm adapter to a bluetooth receiver.',489,'Ken cobbles together a bluetooth adapter for any 3.5mm headphone','<p>\r\nThere was a time when the perfect lightweight podcast listening station was a <a href=\"https://en.wikipedia.org/wiki/SanDisk_Sansa#Sansa_Clip\">sansa clip</a> running <a href=\"https://www.rockbox.org/\">Rockbox</a> connected to a set of <a href=\"https://www.download.p4c.philips.com/files/s/she3600_97/she3600_97_pss_aenid.pdf\">SHE3600/97 Philips In-Ear Headphones</a>.</p>\r\n<p>\r\nAlas Philips stopped producing the SHE3600/97. SanDisk reduced the specs of the clips, so Rockbox is no longer supported. We\'re left without a flexible option to listening to podcasts.\r\n</p>\r\n<p>\r\nOn the other hand the price of Android phones have fallen to sub €50 range, and <a href=\"https://www.hema.nl/winkel/vrije-tijd-kantoor/school-kantoor/media-computer/elektronica-accessoires/bluetooth-sport-oortelefoon-(39620015)?variant=39620015\">blue tooth headsets</a> can be had for €25, there is a possibility to have the portability while keeping the cost low.\r\n</p>\r\n<p>\r\nI set out to convert the bluetooth headset to a accept generic 3.5mm sockets.\r\n</p>\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2599/hema-earbud-before-and-during.jpg\" /><br />\r\nA new ear bud set with crappy in ear buds, and the hacked set.\r\n</p>\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2599/bluetooth-enabled-philips-shp2500.jpg\" /><br />\r\nPlays fine with large over ear headphones.\r\n</p>\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2599/bluetooth-with-patent-pending-earbuds.jpg\" /><br />\r\nAlso with small in ear buds, complete with <a href=\"https://hackerpublicradio.org/eps.php?id=1801\">Patent Pending</a> ear identifier\r\n</p>\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2599/motherload.jpg\" /><br />\r\nSomething to read <a href=\"https://www.amazon.com/dp/1549676938?tag=viglink20248-20\">Motherload</a>\r\n</p>\r\n',30,0,1,'CC-BY-SA','life hack, earphone, bluetooth',0,0,1),
(2589,'2018-07-05','Saving Money: a response to Klaatu\'s Personal Finance Series',867,'A response to Klaatu\'s very nice series about personal finance.','<h2>Links</h2>\r\n\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/403(b)\">403(b) Tax-Sheltered Annuity Plans</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/United_States_Savings_Bonds\">United States Savings Bonds</a></li>\r\n<li><a href=\"https://www.classicguitar.com/robert-ruck-usarobert-ruck-usa/\">Guitar Maker Robert Ruck</a></li>\r\n</ul>\r\n',238,0,0,'CC-BY-SA','personal finance, money, saving, retirement',0,0,1),
(2593,'2018-07-11','Intro to De Bellis Antiquitatis',1648,'Short intro to tabletop wargame called DBA','<p>In this episode Tuula paints rambles about De Bellis Antiquitatis while painting more toy soldiers, so expect long pauses and missing thoughts as he tries to do two things at the same time.</p>\r\n<p>De Bellis Antiquitatis (or DBA for short): <a href=\"https://en.wikipedia.org/wiki/De_Bellis_Antiquitatis\" class=\"uri\">https://en.wikipedia.org/wiki/De_Bellis_Antiquitatis</a></p>\r\n<p>While the original site seems to be gone, WADBAG unofficial guide to DBA can be found at: <a href=\"https://www.wargames-romania.ro/wordpress/wargames/de-bellis-antiquitatis-dba/the-unofficial-guide-to-dba/\" class=\"uri\">https://www.wargames-romania.ro/wordpress/wargames/de-bellis-antiquitatis-dba/the-unofficial-guide-to-dba/</a></p>\r\n',364,95,0,'CC-BY-SA','tabletop gaming',0,0,1),
(2591,'2018-07-09','International Troubleshooting',1815,'﻿NYbill troubleshoots a DIY kit of Ken Fallon’s.','<p>NYbill troubleshoots a DIY kit of Ken Fallon\'s.</p>\r\n<p>The new toy:</p>\r\n<p>AmScope SE400-Z<br />\r\n(The microscope has a nice working height underneath it so you can get your hands and tools in there.)</p>\r\n<p>The offending chip:</p>\r\n<p><a href=\"https://www.mccsemi.com/up_pdf/SRV05-4L(SOT23-6L).pdf\" class=\"uri\">https://www.mccsemi.com/up_pdf/SRV05-4L(SOT23-6L).pdf</a></p>\r\n<p>Pics for the episode:</p>\r\n<p><a href=\"https://media.gunmonkeynet.net/u/nybill/collection/international-troubleshooting/\" class=\"uri\">https://media.gunmonkeynet.net/u/nybill/collection/international-troubleshooting/</a></p>\r\n',235,103,0,'CC-BY-SA','DIY, Kit, Electronics, Troubleshooting',0,0,1),
(2605,'2018-07-27','The Eyes Have It',599,'My history with vision issues and how I have dealt with them.','<p>My history with vision issues started when I was 3 years old, and I am still dealing with some issues. Fortunately, things are well-controlled and I am doing well.</p>\r\n<ul>\r\n<li><a href=\"https://www.mayoclinic.org/diseases-conditions/diabetic-retinopathy/symptoms-causes/syc-20371611\" class=\"uri\">https://www.mayoclinic.org/diseases-conditions/diabetic-retinopathy/symptoms-causes/syc-20371611</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=338\" class=\"uri\">https://www.palain.com/?page_id=338</a></li>\r\n<li><a href=\"https://www.webmd.com/eye-health/tc/posterior-vitreous-detachment-topic-overview\" class=\"uri\">https://www.webmd.com/eye-health/tc/posterior-vitreous-detachment-topic-overview</a></li>\r\n<li><a href=\"https://nei.nih.gov/health/maculardegen/armd_facts\" class=\"uri\">https://nei.nih.gov/health/maculardegen/armd_facts</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=340\" class=\"uri\">https://www.palain.com/?page_id=340</a></li>\r\n</ul>',198,100,0,'CC-BY-SA','Health, Medicine, Eye Care, Vision',0,0,1),
(2592,'2018-07-10','Tech Talk With Allison',3010,'This is a talk with Allison about webites, ruby, os design and other such things. ','<p>\r\n<img src=\"https://theadesilva.com/hpr_allison.jpg\"/><br/><br/>\r\n\r\nCome join us and listen to Allison talk about her tech!!!  This talk includes subjects like websites, ruby, os design and other such things.<br/>\r\n</p>\r\n<p>Allison\'s email address: <a href=\"mailto:allison@isams.net\" target=\"_top\">allison@isams.net</a></p>\r\n',115,0,0,'CC-BY-SA','os, ruby, webdev',0,0,1),
(2615,'2018-08-10','Cancer',1043,'My history with cancer and how I have dealt with it.','<p>I had surgery for cancer in 2010, and family history of cancer, which means certain things have had to be done.</p>\r\n<ul>\r\n<li><a href=\"https://www.palain.com/?page_id=338\" class=\"uri\">https://www.palain.com/?page_id=338</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Gleason_grading_system\" class=\"uri\">https://en.wikipedia.org/wiki/Gleason_grading_system</a></li>\r\n<li><a href=\"https://www.cancer.org/cancer/prostate-cancer/treating.html\" class=\"uri\">https://www.cancer.org/cancer/prostate-cancer/treating.html</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=344\" class=\"uri\">https://www.palain.com/?page_id=344</a></li>\r\n</ul>',198,100,0,'CC-BY-SA','Health, Medicine, Cancer, Prostate, Colon, Lungs',0,0,1),
(2598,'2018-07-18','Calculating planetary orbits in Haskell',1711,'Tuula talks about calculating planetary orbits','<p>Function signatures (it might or might not be helpful to have these at hand while listening):</p>\r\n<ul>\r\n<li>Helpers:</li>\r\n</ul>\r\n<pre><code>    radToDeg :: Floating a =&gt; a -&gt; a\r\n    degToRad :: Floating a =&gt; a -&gt; a\r\n    clamp :: Float -&gt; Float</code></pre>\r\n<ul>\r\n<li><p>Time:</p></li>\r\n</ul>\r\n<pre><code>    day :: Int -&gt; Int -&gt; Int -&gt; Float -&gt; Day Float</code></pre>\r\n<ul>\r\n<li>Orbital parameters:</li>\r\n</ul>\r\n<pre><code>    longitudeOfAscendingNode :: Orbit body center =&gt; body -&gt; center -&gt; Day d -&gt; LongAscNode body center\r\n    inclinationToEcliptic :: Orbit body center =&gt; body -&gt; center -&gt; Day d -&gt; InclToEcl body center\r\n    argumentOfPeriapsis :: Orbit body center =&gt; body -&gt; center -&gt; Day d -&gt; ArgPeri body center\r\n    semiMajorAxis :: Orbit body center =&gt; body -&gt; center -&gt; Day d -&gt; SemiMajor body center\r\n    eccentricity :: Orbit body center =&gt; body -&gt; center -&gt; Day d -&gt; Ecc body center\r\n    meanAnomaly :: Orbit body center =&gt; body -&gt; center -&gt; Day d -&gt; MeanAno body center</code></pre>\r\n<ul>\r\n<li>Calculating location on orbital plane:</li>\r\n</ul>\r\n<pre><code>    eccAnomaly :: MeanAno a b -&gt; Ecc a b -&gt; EccAnomaly a b\r\n    trueAnomaly :: EccAnomaly a b -&gt; Ecc a b -&gt; TrueAnomaly a b\r\n    dist :: EccAnomaly a b -&gt; Ecc a b -&gt; SemiMajor a b -&gt; Distance a b</code></pre>\r\n<ul>\r\n<li>Translating between coordinate systems:</li>\r\n</ul>\r\n<pre><code>    toEclCoord :: TrueAnomaly a b -&gt; Distance a b -&gt; LongAscNode a b -&gt; ArgPeri a b -&gt; InclToEcl a b -&gt; EclCoord a b\r\n    toEqCoordinates :: EclCoord body Earth -&gt; Day Float -&gt; EqCoord body</code></pre>\r\n<p>Some helpful links:</p>\r\n<ul>\r\n<li>Guide by Paul Schlyter - <a href=\"https://www.stjarnhimlen.se/comp/ppcomp.html\" class=\"uri\">https://www.stjarnhimlen.se/comp/ppcomp.html</a></li>\r\n<li>Sample calculations by Paul Schlyter - <a href=\"https://www.stjarnhimlen.se/comp/tutorial.html\" class=\"uri\">https://www.stjarnhimlen.se/comp/tutorial.html</a></li>\r\n<li>Tuula\'s blog post - <a href=\"https://engineersjourney.wordpress.com/2018/06/29/planetary-orbits-and-haskell/\" class=\"uri\">https://engineersjourney.wordpress.com/2018/06/29/planetary-orbits-and-haskell/</a></li>\r\n<li>Definition of orbital elements in Wikipedia - <a href=\"https://en.wikipedia.org/wiki/Orbital_elements\" class=\"uri\">https://en.wikipedia.org/wiki/Orbital_elements</a></li>\r\n<li>Units of angle in Wikipedia - <a href=\"https://en.wikipedia.org/wiki/Degree_(angle)\" class=\"uri\">https://en.wikipedia.org/wiki/Degree_(angle)</a> and <a href=\"https://en.wikipedia.org/wiki/Radian\" class=\"uri\">https://en.wikipedia.org/wiki/Radian</a></li>\r\n</ul>\r\n',364,107,0,'CC-BY-SA','haskell,astronomy',0,0,1),
(2601,'2018-07-23','Liverpool Makerfest 2018',634,'This is an interview with Chris Dell','<p>This is the first in a series of interviews carried out at Liverpool Makefest 2018</p>\r\n<p>This first interview is with Chris Dell about EduBlocks</p>\r\n<ul>\r\n<li><p><a href=\"https://lpoolmakefest.org/\" class=\"uri\">https://lpoolmakefest.org/</a></p></li>\r\n<li><p><a href=\"https://edublocks.org/\" class=\"uri\">https://edublocks.org/</a></p></li>\r\n</ul>\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, EduBlocks',0,0,1),
(2606,'2018-07-30','Liverpool Makefest 2018 - interview with Dan Lynch',520,'This is an interview with Dan Lynch one of this year\'s Makefest organisers','<p>Another interview from Liverpool Makefest 2018 this time with Dan Lynch of Linux Outlaws and Floss Weekly</p>\r\n<ul>\r\n<li><p><a href=\"https://lpoolmakefest.org/\" class=\"uri\">https://lpoolmakefest.org/</a></p></li>\r\n<li><p><a href=\"https://makefest.podfactory.org/\" class=\"uri\">https://makefest.podfactory.org/</a></p></li>\r\n<li><p><a href=\"https://twit.tv/shows/floss-weekly\" class=\"uri\">https://twit.tv/shows/floss-weekly</a></p></li>\r\n<li><p><a href=\"https://sixgun.org/linuxoutlaws/\" class=\"uri\">https://sixgun.org/linuxoutlaws/</a></p></li>\r\n</ul>\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, Dan Lynch, Linux Outlaws, Floss Weekly',0,0,1),
(2871,'2019-08-05','HPR Community News for July 2019',3794,'HPR Volunteers talk about shows released and comments posted in July 2019','<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/0379.html\" target=\"_blank\">mightbemike</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=2846\" target=\"_blank\">2846</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-07-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2846\" target=\"_blank\">HPR Community News for June 2019</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=2847\" target=\"_blank\">2847</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-07-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2847\" target=\"_blank\">earbuds</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=2848\" target=\"_blank\">2848</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-07-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2848\" target=\"_blank\">Random numbers in 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=2849\" target=\"_blank\">2849</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-07-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2849\" target=\"_blank\">HPR NYE Show 2018-2019 part 5</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2850\" target=\"_blank\">2850</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-07-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2850\" target=\"_blank\">NIST Cybersecurity Framework</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=2851\" target=\"_blank\">2851</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-07-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2851\" target=\"_blank\">An introduction to the work of fire fighters</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2852\" target=\"_blank\">2852</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-07-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2852\" target=\"_blank\">Gnu Awk - Part 16</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=2853\" target=\"_blank\">2853</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-07-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2853\" target=\"_blank\">Feeding the beast</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=2854\" target=\"_blank\">2854</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-07-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2854\" target=\"_blank\">Telling myself something In The Morning</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=2855\" target=\"_blank\">2855</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-07-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2855\" target=\"_blank\">HPR NYE Show 2018-2019 part 6</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2856\" target=\"_blank\">2856</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-07-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2856\" target=\"_blank\">Mint Mobile Security Rant</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=2857\" target=\"_blank\">2857</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-07-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2857\" target=\"_blank\">Creating CounterParty Collectible Tokens for the Bitcorn Game</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0379.html\" target=\"_blank\">mightbemike</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2858\" target=\"_blank\">2858</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-07-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2858\" target=\"_blank\">Vehicle designer for a space game</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=2859\" target=\"_blank\">2859</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-07-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2859\" target=\"_blank\">HPR NYE Show 2018-2019 part 7</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2860\" target=\"_blank\">2860</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-07-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2860\" target=\"_blank\">Encryption and Quantum Computing</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=2861\" target=\"_blank\">2861</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-07-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2861\" target=\"_blank\">Safety Razors</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=2862\" target=\"_blank\">2862</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-07-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2862\" target=\"_blank\">Art vs. Commerce In Storytelling</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2863\" target=\"_blank\">2863</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-07-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2863\" target=\"_blank\">Simplified application architectures for improved security</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=2864\" target=\"_blank\">2864</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-07-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2864\" target=\"_blank\">One weird trick to add a --help option to your awk scripts</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=2865\" target=\"_blank\">2865</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-07-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2865\" target=\"_blank\">The YouTube channels I really like</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2866\" target=\"_blank\">2866</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-07-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2866\" target=\"_blank\">Intro to Bitcoin for techies</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0379.html\" target=\"_blank\">mightbemike</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2867\" target=\"_blank\">2867</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-07-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2867\" target=\"_blank\">The Kenwood TS940S Automatic Tuning Unit</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=2868\" target=\"_blank\">2868</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-07-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2868\" target=\"_blank\">Custom data with Persistent</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</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 13 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 2 comments on\n2 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2787#comments\" target=\"_blank\">hpr2787</a></strong>\n(2019-04-09) \"<em>NodeJS Part 1</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=2787#2\" target=\"_blank\">Comment 2</a>:\noperat0r on 2019-07-09:\n\"Part2 ?\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=438#comments\" target=\"_blank\">hpr438</a></strong>\n(2009-09-05) \"<em>Podcasts I Listen To</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0077.html\" target=\"_blank\">Dave Yates</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=438#1\" target=\"_blank\">Comment 1</a>:\nViper on 2019-07-03:\n\"Archive of podcasts\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 11 comments on 4 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2851#comments\" target=\"_blank\">hpr2851</a></strong>\n(2019-07-08) \"<em>An introduction to the work of fire fighters</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2851#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2019-07-08:\n\"Cars parked over the put\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2851#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2019-07-08:\n\"I loved the show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2852#comments\" target=\"_blank\">hpr2852</a></strong>\n(2019-07-09) \"<em>Gnu Awk - Part 16</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=2852#1\" target=\"_blank\">Comment 1</a>:\nTuula on 2019-07-09:\n\"thanks\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2852#2\" target=\"_blank\">Comment 2</a>:\nHipstre on 2019-07-09:\n\"Thank You!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2852#3\" target=\"_blank\">Comment 3</a>:\nnorrist on 2019-07-09:\n\"HPR Epic\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2852#4\" target=\"_blank\">Comment 4</a>:\nDave Morriss on 2019-07-13:\n\"Many thanks for the kind words\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2854#comments\" target=\"_blank\">hpr2854</a></strong>\n(2019-07-11) \"<em>Telling myself something In The Morning</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=2854#1\" target=\"_blank\">Comment 1</a>:\nTuula on 2019-07-11:\n\"Bagpipes for the win!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2854#2\" target=\"_blank\">Comment 2</a>:\nDave Beck on 2019-07-18:\n\"Rusted Pipes\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2854#3\" target=\"_blank\">Comment 3</a>:\njezra on 2019-07-18:\n\"pipes up!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2859#comments\" target=\"_blank\">hpr2859</a></strong>\n(2019-07-18) \"<em>HPR NYE Show 2018-2019 part 7</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2859#1\" target=\"_blank\">Comment 1</a>:\ndodddummy on 2019-07-29:\n\"I disagree with just about all the opinions expressed in this episode.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2859#2\" target=\"_blank\">Comment 2</a>:\ndodddummy on 2019-07-29:\n\"1st hour, that is.\"</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/2019-July/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2019-July/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=\"ohio-linuxfest-conference-cfp\">Ohio LinuxFest Conference CFP</h3>\n<p>From Susan Rose, Social Media Manager for OLF:</p>\n<blockquote>\n<p>Dear Open Source Fans, Students and Professionals:</p>\n<p>The 2019 Ohio LinuxFest is looking for presentations on Friday and Saturday, November 1 and 2. Please visit the CFP page <a href=\"https://ohiolinux.org/call-for-presentations/\" class=\"uri\">https://ohiolinux.org/call-for-presentations/</a> for full details about submitting a proposal. The deadline is Friday, August 17, but the sooner you can submit a talk, the better.</p>\n<p>Started in 2003, the Ohio LinuxFest <a href=\"https://ohiolinux.org/\" class=\"uri\">https://ohiolinux.org/</a> is an annual grassroots conference in Columbus, Ohio dedicated to open access for all. Presentations relating to any free and open source software, not just Linux, are welcome. Areas where we’ve had talks in the past include networking, system administration, development, and community building. A preliminary pdf brochure is attached.</p>\n<p>Our audience consists of people at all skill levels. Prior speaking experience is a plus, although we do try to provide opportunities for first-time speakers. If you have any questions, please contact us at <a href=\"mailto:speakers@ohiolinux.org\">speakers@ohiolinux.org</a>. We look forward to hearing from you! Thank you for your kind attention and for sharing.</p>\n</blockquote>\n<p>The PDF Brochure mentioned is available at <a href=\"https://hackerpublicradio.org/eps/hpr2871/olf2019.pdf\" class=\"uri\">https://hackerpublicradio.org/eps/hpr2871/olf2019.pdf</a>.</p>\n<h3 id=\"problem-with-show-2855\">Problem with show 2855</h3>\n<p>We upload all HPR shows to the Internet Archive (archive.org). Shows downloaded via the HPR RSS feeds actually come from there, though they are also available on the HPR site.</p>\n<p>Unfortunately, on Friday July 12<sup>th</sup> the archive.org copy of the show <em>hpr2855 :: HPR NYE Show 2018-2019 part 6</em> was found to have been truncated and to consist only of the introduction and final part; no actual content.</p>\n<p>The problem was detected during the morning of Friday and was rectified during the afternoon (UK time). The RSS feeds were adjusted to ensure the show was re-downloaded and all <em>podcatchers</em> should have received the correct version the next time they checked the feed.</p>\n<h3 id=\"tags-and-summaries\">Tags and Summaries</h3>\n<p>Thanks to the following contributor for sending in updates in the past month: <b><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></b></p>\n<p>Over the period tags and/or summaries have been added to 11 shows which were without them.</p>\n<p>If you would like to contribute to the tag/summary project visit the summary page at <a href=\"https://hackerpublicradio.org/report_missing_tags.php\" class=\"uri\">https://hackerpublicradio.org/report_missing_tags.php</a> and follow the instructions there.</p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3991,'2023-11-20','YOU ARE A PIRATE ',1539,'I rant I think about piracy ','<h2 id=\"xgp-save-extractor\">XGP-save-extractor</h2>\n<p>Python script to extract/backup savefiles out of Xbox Game Pass for\nPC games.</p>\n<p>When run, the script produces a ZIP file for each supported game save\nfound in the system.</p>\n<p>In most cases the files in the ZIP can be copied to the save\ndirectory of the Steam/Epic version of the game. To find out the save\nfile location, check <a\nhref=\"https://www.pcgamingwiki.com/\">PCGamingWiki</a>.</p>\n<p><a href=\"https://github.com/Z1ni/XGP-save-extractor/releases\"\nclass=\"uri\">https://github.com/Z1ni/XGP-save-extractor/releases</a></p>\n',36,0,1,'CC-BY-SA','hacking, piracy ',0,0,1),
(2891,'2019-09-02','HPR Community News for August 2019',2224,'HPR Volunteers talk about shows released and comments posted in August 2019','<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=2869\" target=\"_blank\">2869</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-08-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2869\" target=\"_blank\">building a bike, following in John Kulp\'s footsteps</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=2870\" target=\"_blank\">2870</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-08-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2870\" target=\"_blank\">Hierarchy of Evidence</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=2871\" target=\"_blank\">2871</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-08-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2871\" target=\"_blank\">HPR Community News for July 2019</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=2872\" target=\"_blank\">2872</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-08-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2872\" target=\"_blank\">Shoe Lace Tips</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=2873\" target=\"_blank\">2873</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-08-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2873\" target=\"_blank\">Death Angel - Card game</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=2874\" target=\"_blank\">2874</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-08-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2874\" target=\"_blank\">Repair of G.E. Variable Speed Cassette Recorder</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=2875\" target=\"_blank\">2875</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-08-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2875\" target=\"_blank\">cutting up the frames</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=2876\" target=\"_blank\">2876</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-08-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2876\" target=\"_blank\">Sausage Orzotto</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=2877\" target=\"_blank\">2877</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-08-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2877\" target=\"_blank\">Using Zenity with Pdmenu</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=2878\" target=\"_blank\">2878</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-08-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2878\" target=\"_blank\">Type classes in 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=2879\" target=\"_blank\">2879</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-08-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2879\" target=\"_blank\">Describing how I listen to podcasts PART 1</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=2880\" target=\"_blank\">2880</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-08-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2880\" target=\"_blank\">Evaluating a Study</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=2881\" target=\"_blank\">2881</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-08-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2881\" target=\"_blank\">Automatically split album into tracks in Audacity</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=2882\" target=\"_blank\">2882</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-08-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2882\" target=\"_blank\">ONICS Part 1:  Basic Commands</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0259.html\" target=\"_blank\">Gabriel Evenfire</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2883\" target=\"_blank\">2883</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-08-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2883\" target=\"_blank\">Pass the pigs</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=2884\" target=\"_blank\">2884</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-08-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2884\" target=\"_blank\">TASCAM Porta 02 MiniStudio 4-Track Cassette Recorder Demonstration</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=2885\" target=\"_blank\">2885</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-08-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2885\" target=\"_blank\">ONICS Part 2: Filtering and Extraction</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0259.html\" target=\"_blank\">Gabriel Evenfire</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2886\" target=\"_blank\">2886</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-08-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2886\" target=\"_blank\">INFOSECOND</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=2887\" target=\"_blank\">2887</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-08-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2887\" target=\"_blank\">Stardrifter RPG Playtest Part 01</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2888\" target=\"_blank\">2888</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-08-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2888\" target=\"_blank\">Pattern matching in 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=2889\" target=\"_blank\">2889</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-08-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2889\" target=\"_blank\">Describing how I listen to podcasts PART 2</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=2890\" target=\"_blank\">2890</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-08-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2890\" target=\"_blank\">Penguicon 2019 Report</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 24 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 7 comments on\n2 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2859#comments\" target=\"_blank\">hpr2859</a></strong>\n(2019-07-18) \"<em>HPR NYE Show 2018-2019 part 7</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2859#3\" target=\"_blank\">Comment 3</a>:\nMike Ray on 2019-08-05:\n\"First hour\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2859#4\" target=\"_blank\">Comment 4</a>:\nMrsXoke on 2019-08-05:\n\"To Mike Ray\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2859#5\" target=\"_blank\">Comment 5</a>:\nMike Ray on 2019-08-06:\n\"To Mike Ray\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2859#6\" target=\"_blank\">Comment 6</a>:\nMike Ray on 2019-08-06:\n\"Active shooter drills\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2859#7\" target=\"_blank\">Comment 7</a>:\nMike Ray on 2019-08-06:\n\"Faith and values\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2859#8\" target=\"_blank\">Comment 8</a>:\nfolky on 2019-08-08:\n\"You can fastforward\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2863#comments\" target=\"_blank\">hpr2863</a></strong>\n(2019-07-24) \"<em>Simplified application architectures for improved security</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0246.html\" target=\"_blank\">Beeza</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2863#1\" target=\"_blank\">Comment 1</a>:\nclacke on 2019-08-14:\n\"Dynamic vs static linking doesn\'t matter\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 17 comments on 7 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2869#comments\" target=\"_blank\">hpr2869</a></strong>\n(2019-08-01) \"<em>building a bike, following in John Kulp\'s footsteps</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0326.html\" target=\"_blank\">Brian in Ohio</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2869#1\" target=\"_blank\">Comment 1</a>:\nJon Kulp on 2019-08-01:\n\"Recycled Recumbents\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2876#comments\" target=\"_blank\">hpr2876</a></strong>\n(2019-08-12) \"<em>Sausage Orzotto</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=2876#1\" target=\"_blank\">Comment 1</a>:\nBookewyrmm on 2019-08-12:\n\"Salt\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2876#2\" target=\"_blank\">Comment 2</a>:\nWindigo on 2019-08-17:\n\"Re: Salt\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2876#3\" target=\"_blank\">Comment 3</a>:\nDave Morriss on 2019-08-20:\n\"Loved this. I was right there with you in the kitchen\"</li></ul><br/>\n</li><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><li><a href=\"https://hackerpublicradio.org/eps.php?id=2881#1\" target=\"_blank\">Comment 1</a>:\nJonathan Kulp on 2019-08-22:\n\"Automation is nice\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2882#comments\" target=\"_blank\">hpr2882</a></strong>\n(2019-08-20) \"<em>ONICS Part 1:  Basic Commands</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0259.html\" target=\"_blank\">Gabriel Evenfire</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2882#1\" target=\"_blank\">Comment 1</a>:\nDave Morriss on 2019-08-22:\n\"Great project and excellent show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2882#2\" target=\"_blank\">Comment 2</a>:\nGabriel Evenfire on 2019-08-25:\n\"Good to hear\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2884#comments\" target=\"_blank\">hpr2884</a></strong>\n(2019-08-22) \"<em>TASCAM Porta 02 MiniStudio 4-Track Cassette Recorder Demonstration</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=2884#1\" target=\"_blank\">Comment 1</a>:\nClinton Roy on 2019-08-22:\n\"fantastic\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2884#2\" target=\"_blank\">Comment 2</a>:\nTuula on 2019-08-22:\n\"awesome\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2884#3\" target=\"_blank\">Comment 3</a>:\njezra on 2019-08-22:\n\"super fun!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2884#4\" target=\"_blank\">Comment 4</a>:\nJon Kulp on 2019-08-22:\n\"By ear\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2884#5\" target=\"_blank\">Comment 5</a>:\nmcnalu on 2019-08-24:\n\"4tracks4TW\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2884#6\" target=\"_blank\">Comment 6</a>:\nJon Kulp on 2019-08-24:\n\"Can&rsquo;t bounce\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2884#7\" target=\"_blank\">Comment 7</a>:\njohanv on 2019-08-29:\n\"great show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2887#comments\" target=\"_blank\">hpr2887</a></strong>\n(2019-08-27) \"<em>Stardrifter RPG Playtest Part 01</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2887#1\" target=\"_blank\">Comment 1</a>:\nTuula on 2019-08-27:\n\"Eagerly waiting for more\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2887#2\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2019-08-28:\n\"A future podcast in the future feed\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2890#comments\" target=\"_blank\">hpr2890</a></strong>\n(2019-08-30) \"<em>Penguicon 2019 Report</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=2890#1\" target=\"_blank\">Comment 1</a>:\nDave Morriss on 2019-08-31:\n\"solder/\"sodder\"/souder\"</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/2019-August/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2019-August/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=\"tags-and-summaries\">Tags and Summaries</h3>\n<p>Thanks to the following contributor for sending in updates in the past month: <b><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></b></p>\n<p>Over the period tags and/or summaries have been added to 10 shows which were without them.</p>\n<p>If you would like to contribute to the tag/summary project visit the summary page at <a href=\"https://hackerpublicradio.org/report_missing_tags.php\" class=\"uri\">https://hackerpublicradio.org/report_missing_tags.php</a> and follow the instructions there.</p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2612,'2018-08-07','Liverpool Makefest 2018 - interview with Joe aka Concrete Dog',353,'An interview with Joe from Liverpool makefest','<p>In this episode I talk to Joe aka Concrete dog about amateur Rocketry</p>\r\n<ul>\r\n<li><p><a href=\"https://concretedog.blogspot.com/2018/\" class=\"uri\">https://concretedog.blogspot.com/2018/</a></p></li>\r\n<li><p><a href=\"https://twitter.com/concreted0g\" class=\"uri\">https://twitter.com/concreted0g</a></p></li>\r\n</ul>\r\n\r\n<p>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2612/hpr2612_IMG_20180630_094936.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2612/hpr2612_IMG_20180630_094936_small.jpg\" /></a><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2612/hpr2612_IMG_20180630_095644.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2612/hpr2612_IMG_20180630_095644_small.jpg\" /></a><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2612/hpr2612_IMG_20180630_100342.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2612/hpr2612_IMG_20180630_100342_small.jpg\" /></a><br />\r\n</p>\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018',0,0,1),
(2616,'2018-08-13','Liverpool Makefest 2018 - interview with Josh - A.K.A - All About Code',310,'An interview with Josh recorded at Liverpool makefest','<p>This is another short interview recorded at this year\'s Liverpool Makefest, this time with Josh who developed EduBlocks.</p>\r\n<ul>\r\n<li><p><a href=\"https://lpoolmakefest.org/\" class=\"uri\">https://lpoolmakefest.org/</a></p></li>\r\n<li><p><a href=\"https://edublocks.org/\" class=\"uri\">https://edublocks.org/</a></p></li>\r\n<li><p><a href=\"https://allaboutcode.co.uk/\" class=\"uri\">https://allaboutcode.co.uk/</a></p></li>\r\n<li><p><a href=\"https://github.com/AllAboutCode\" class=\"uri\">https://github.com/AllAboutCode</a></p></li>\r\n<li><p><a href=\"https://twitter.com/all_about_code?lang=en\" class=\"uri\">https://twitter.com/all_about_code?lang=en</a></p></li>\r\n</ul>',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, EduBlocks, computing, young coders',0,0,1),
(2621,'2018-08-20','Liverpool Makefest 2018 - Chan\'nel Thomas a.k.a little pink maker',293,'In this episode I talk to Chan\'nel Thomas aka little pink maker','<p>In this episode recorded at Liverpool Makefest 2018 I talk to Chan\'nel Thomas aka little pink maker. Chan\'nel has an amazing web site; the link is below. I was going to include a couple of pictures taken on the day but they don\'t do her work the justice it deserves.</p>\r\n<ul>\r\n<li><p><a href=\"https://lpoolmakefest.org/\" class=\"uri\">https://lpoolmakefest.org/</a></p></li>\r\n<li><p><a href=\"https://www.littlepinkmaker.com/about\" class=\"uri\">https://www.littlepinkmaker.com/about</a></p></li>\r\n<li><p>Mail: <a href=\"mailto:makeit@littlepinkmaker.com\">makeit@littlepinkmaker.com</a></p></li>\r\n</ul>',338,78,0,'CC-BY-SA','Liverpool Makefest 2018,Making, hacking, creativity, inventions',0,0,1),
(2626,'2018-08-27','Liverpool Makefest 2018 - interviews with Helen and Chris',510,'Interviews about Manchester Hackspace and Wirral Code Club','<p>In this episode I talk to Helen from Manchester Hackspace and Chris from Wirral Code Club</p>\r\n<ul>\r\n<li><p><a href=\"https://lpoolmakefest.org\" class=\"uri\">https://lpoolmakefest.org</a></p></li>\r\n<li><p><a href=\"https://hacman.org.uk/\" class=\"uri\">https://hacman.org.uk/</a></p></li>\r\n<li><p><a href=\"https://www.wirralcodeclub.org/\" class=\"uri\">https://www.wirralcodeclub.org/</a></p></li>\r\n</ul>',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, computing, young coders, hackers, makers, crafts',0,0,1),
(2632,'2018-09-04','Liverpool Makefest 2018 - interviews with Robert and Carl',376,'In this episode I talk to Robert from Roberts Workshop and Carl from Edgehill University','<p>In this episode I talk to Robert from Roberts Workshop and Carl from Edgehill University</p>\r\n<p>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2632/D2632.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2632/D2632_small.jpg\" /></a>\r\n</p>\r\n<ul>\r\n<li><p><a href=\"https://www.robertsworkshop.co.uk/contact\" class=\"uri\">https://www.robertsworkshop.co.uk/contact</a></p></li>\r\n<li><p><a href=\"https://www.edgehill.ac.uk/\" class=\"uri\">https://www.edgehill.ac.uk/</a></p></li>\r\n</ul>\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, computing, young coders, hackers, makers, crafts',0,0,1),
(2636,'2018-09-10','Liverpool Makefest 2018 - interviews with Noel from JMU FabLab',603,'In this episode I talk to Noel Baker from the JMU FabLab.','<p>In this episode I talk to Noel Baker from the JMU FabLab.</p>\r\n<p>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2636/Cila2636.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2636/Cila2636_small.jpg\" /></a>\r\n</p>\r\n<ul>\r\n<li><a href=\"https://buyonline.ljmu.ac.uk/product-catalogue/ljmu/art-materials/digital-fabrication-lab\" class=\"uri\">https://buyonline.ljmu.ac.uk/product-catalogue/ljmu/art-materials/digital-fabrication-lab</a></li>\r\n<li><a href=\"https://lpoolmakefest.org/\" class=\"uri\">https://lpoolmakefest.org/</a></li>\r\n</ul>\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, Making, hacking, creativity',0,0,1),
(2594,'2018-07-12','Using nmtui, the Network Manager Terminal User interface',638,'A use case for nmtui and general discussion about how to use it','<p>This is my first show and I am happy to be here!</p>\r\n<p><code>nmtui</code>\'s documentation can be found <a href=\"https://developer.gnome.org/NetworkManager/stable/nmtui.html\">here</a>.</p>\r\n<p>You can reach me on the freenode irc network at <code>blu3r4d0n</code>.</p>',366,0,0,'CC-BY-SA','nmtui, networkmanager, linux',0,0,1),
(2596,'2018-07-16','Battling with English - part 2',1282,'Misunderstandings about English grammar, spelling, punctuation, etc.','<h1 id=\"battling-with-english---part-2\">Battling with English - part 2</h1>\r\n<h2 id=\"further-notes-about-then-and-than\">Further notes about <code>\'then\'</code> and <code>\'than\'</code></h2>\r\n<p>In the last episode I mentioned the confusion between <b><em>then</em></b> and <b><em>than</em></b>. I referred to the etymology of the two words, but I didn\'t go into detail.</p>\r\n<p>Reading the <em>Online Etymology Dictionary</em>, one interesting point in the <a href=\"https://www.etymonline.com/word/than\" title=\"Online Etymology Dictionary: \'than\'\">page about <b><em>than</em></b></a> is that it was:</p>\r\n<blockquote>\r\n<p>Developed from the adverb <em>then</em>, and not distinguished from it by spelling until c. 1700.</p>\r\n</blockquote>\r\n<p>So, it would seem that the two words are related and historically were the same! However, I\'d guess that it is unlikely that people using them interchangeably now are making reference to usage in the 1700\'s.</p>\r\n<hr />\r\n<h2 id=\"problems-with-apostrophes\">Problems with apostrophes</h2>\r\n<p>Let us now examine the apostrophe, which is a punctuation mark. It is used for:</p>\r\n<ul>\r\n<li><p>Indicating that letters have been omitted, such as in a contracted form of words. For example when the phrase <b><em>they are</em></b> is contracted to <b><em>they\'re</em></b>.</p></li>\r\n<li><p>Turning a word into a possessive form such as in <b><em>the cat\'s paw</em></b></p></li>\r\n<li><p>When the plural of <u>a single letter</u> (or digit) is required such as in <b><em>dot your i\'s and cross your t\'s</em></b>.</p></li>\r\n</ul>\r\n<p>There are other uses but you can look at the <a href=\"https://en.wikipedia.org/wiki/Apostrophe\" title=\"Wikipedia article on the Apostrophe\">Wikipedia</a> article for them if you want to dig deeper. I may well revisit this topic in a later show in this series.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2596/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Apostrophe\r\n<ul>\r\n<li>Wikipedia page: <a href=\"https://en.wikipedia.org/wiki/Apostrophe\">Apostrophe</a></li>\r\n<li>Cambridge Dictionary: <a href=\"https://dictionary.cambridge.org/grammar/british-grammar/determiners/possession-john-s-car-a-friend-of-mine\">Possession</a></li>\r\n</ul></li>\r\n<li>Grammar Girl\'s items on apostrophes:\r\n<ul>\r\n<li><a href=\"https://www.quickanddirtytips.com/education/grammar/apostrophe-catastrophe-part-one\">Apostrophe Catastrophe (Part One)</a></li>\r\n<li><a href=\"https://www.quickanddirtytips.com/education/grammar/apostrophe-catastrophe-part-two\">Apostrophe Catastrophe (Part Two)</a></li>\r\n</ul></li>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/cant\">Definition of \'cant\'</a></li>\r\n<li>Grammar Monster:\r\n<ul>\r\n<li><a href=\"https://www.grammar-monster.com/punctuation/using_apostrophes.htm\">Using Apostrophes</a></li>\r\n<li><a href=\"https://www.grammar-monster.com/plurals/plural_of_amoeba.htm\">Plural of amoeba</a></li>\r\n</ul></li>\r\n<li>Grammarbook.com:\r\n<ul>\r\n<li><a href=\"https://data.grammarbook.com/blog/pronouns/1-grammar-error/\">Its vs It\'s</a></li>\r\n</ul></li>\r\n<li>Previous episode in this series:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2558\">Battling with English - part 1</a></li>\r\n</ul></li>\r\n</ul>',225,120,1,'CC-BY-SA','grammar,spelling,punctuation,word misuse,English,apostrophe',0,0,1),
(2641,'2018-09-17','Liverpool Makefest 2018 - interview with Rachel from the MicroBit Foundation',564,'This is a short interview recorded at this years Liverpool Makefest with Rachel from MicroBit','<p>In this episode I talk to Rachel Lancaster from the Micro:Bit foundation.</p>\r\n<ul>\r\n<li><p><a href=\"https://microbit.org/\" class=\"uri\">https://microbit.org/</a></p></li>\r\n<li><p><a href=\"https://lpoolmakefest.org/\" class=\"uri\">https://lpoolmakefest.org/</a></p></li>\r\n</ul>',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, computing, young coders, hackers, makers, crafts, microbit',0,0,1),
(2646,'2018-09-24','Liverpool Makefest 2018 - Interview with Steve and Gerrard from the Liverpool Astronomical society.',355,'In this Episode I talk to Steve and Gerrard from the Liverpool Astronomical society.','<p>In this episode I talk to Steve and Gerard from the Liverpool Astronomical society.</p>\r\n<ul>\r\n<li><p><a href=\"https://liverpoolas.org/event/weekly-public-meeting-at-the-leighton-observatory-pex-hill-4/2018-09-26/\" class=\"uri\">https://liverpoolas.org/event/weekly-public-meeting-at-the-leighton-observatory-pex-hill-4/2018-09-26/</a></p></li>\r\n<li><p><a href=\"https://liverpoolas.org/\" class=\"uri\">https://liverpoolas.org/</a></p></li>\r\n<li><p><a href=\"https://lpoolmakefest.org/\" class=\"uri\">https://lpoolmakefest.org/</a></p></li>\r\n</ul>\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, Astronomy, History, Science',0,0,1),
(2597,'2018-07-17','How to Fix a Remote with Buttons that Don\'t Work',392,'A response to Ken Fallon\'s episode about how to check whether your remote is working or not.','<p>After listening to Ken Fallon’s episode about how to check whether your remote is working or not, I checked one of our remotes that had been giving us problems and found that only a couple of the buttons produced the light. Then I found a video on YouTube showing how to fix non-working buttons and this is my report.</p>',238,0,0,'CC-BY-SA','Repairs, Remote Controls, Fixing things, Cleaning',0,0,1),
(2602,'2018-07-24','HPR Quick Tips July 2018',1474,'SpiderOAK Backup and Trekking the AT','<p>Don’t use GOOGLE DRIVE ! They flag personal content and backups as malware and will not let you download or share your own backups!!!!!</p>\r\n',36,0,1,'CC-BY-SA','SpiderOAK,Backups,DR,Trekking,Hiking',0,0,1),
(2604,'2018-07-26','Restoration of a Fasco L55A Hassock Fan',1074,'I talk about my recent restoration project of a mid-century modern hassock fan','<h2>The Fasco L55A Hassock Fan</h2>\r\n\r\n<p>Click the image to view my Flickr slideshow of the restoration process.</p>\r\n\r\n<p><a data-flickr-embed=\"true\" href=\"https://www.flickr.com/photos/137675441@N05/albums/72157697860079274\" title=\"Fasco L55A Hassock Fan Restoration\"><img src=\"https://farm1.staticflickr.com/883/42280247534_18fd9bd408_c.jpg\" width=\"800\" height=\"450\" alt=\"Fasco L55A Hassock Fan Restoration\"/></a></p>\r\n\r\n<p>A video showing my restored fan in action!</p>\r\n\r\n<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/K_N0bjR3EwU\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen></iframe>\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n<li><a href=\"https://www.google.com/search?q=hassock+fan&hs=Qy7&tbm=isch&tbo=u&source=univ&sa=X&ved=0ahUKEwji0cLju4rcAhUB4IMKHYCKA9cQsAQInwI&biw=1600&bih=761\" target=\"_blank\">Hassock Fans on Google image search</a></li>\r\n<li><a href=\"https://www.flickr.com/photos/137675441@N05/albums/72157697860079274\" title=\"Fasco L55A Hassock Fan Restoration\">Flickr photographs</a></li>\r\n<li><a href=\"https://www.youtube.com/embed/K_N0bjR3EwU\" target=\"_blank\">YouTube video</a></li>\r\n\r\n</ul>\r\n',238,0,0,'CC-BY-SA','Fans, vintage stuff, restoration, staying cool, mid-century modern',0,0,1),
(2608,'2018-08-01','BattleTech',1108,'Quick introduction to BattleTech tabletop game by Tuula','<p>Following links might help you to get more familiar with the game.</p>\r\n<ul>\r\n<li><p>Manufacturer’s website: <a href=\"https://bg.battletech.com/\" class=\"uri\">https://bg.battletech.com/</a></p></li>\r\n<li><p>Forums, where fans have discussions about the game: <a href=\"https://bg.battletech.com/forums/\" class=\"uri\">https://bg.battletech.com/forums/</a></p></li>\r\n<li><p>Sarna, extensive wiki: <a href=\"https://www.sarna.net/wiki/Main_Page\" class=\"uri\">https://www.sarna.net/wiki/Main_Page</a></p></li>\r\n</ul>\r\n',364,95,0,'CC-BY-SA','BattleTech',0,0,1),
(2600,'2018-07-20','Special episode on 2600, Blue Boxes, Phreaking',3173,'We celebrate the history of hackers, with a nod to the old skool phreak community.','<p>\r\n2600 Hz is a frequency in hertz (cycles per second) that was used by AT&amp;T as a steady signal to mark currently unused long-distance telephone lines.<br />\r\nA blue box is an electronic device that generates the in-band signaling audio tones formerly used to control long-distance telephone exchanges.<br />\r\nPhreaking is a slang term coined to describe the activity of a culture of people who study, experiment with, or explore telecommunication systems, such as equipment and systems connected to public telephone networks. The term phreak is a sensational spelling of the word freak with the ph- from phone, and may also refer to the use of various audio frequencies to manipulate a phone system. Phreak, phreaker, or phone phreak are names used for and by individuals who participate in phreaking.<br />\r\n</p>\r\n<h3>Radio FreeK America 1</h3>\r\n<p>\r\n02/20/02 - Trashing live, dual was \"slammed,\" trouble with Qwest, Qwest releasing customer info then backing off, Rax discusses VOMIT and subsequent fun, start your own telco or isp, Onebox.com, Slingshot pre-paid Internet access, Kondor\'s Trios tribulations, fun with the phone, and more.\r\n</p>\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/2600_hertz\">https://en.wikipedia.org/wiki/2600_hertz</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Blue_box\">https://en.wikipedia.org/wiki/Blue_box</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Phreaking\">https://en.wikipedia.org/wiki/Phreaking</a></li>\r\n<li><a href=\"https://oldskoolphreak.com/\">https://oldskoolphreak.com/</a></li>\r\n<li><a href=\"https://oldskoolphreak.com/radio.html\">https://oldskoolphreak.com/radio.html</a></li>\r\n</ul>\r\n',30,0,1,'CC-BY-SA','2600, Blue Box, Phreaking, Radio FreeK America',0,0,1),
(2603,'2018-07-25','Dummy shares a tip and a tip/rant about asking and answering questions',1503,'Those blasted rubber coffee mug seals and \"Let me Google that for you.\"','<p>A quick tip on using paper towel or dish rag to easily remove stubborn travel coffee mug rubber seals followed by a semi ranty discussion on asking and responding to questions in the context of “Let me google that for you.”</p>\r\n<p>As a bonus, this is part of a series-ish set of shows I’m going to do recording with different equipment to give you the feel of the quality of shows possible with low cost equipment by someone who doesn’t know how to edit audio or speak to audiences.</p>\r\n',151,0,1,'CC-BY-SA','travel mug seal,asking questions',0,0,1),
(2607,'2018-07-31','Processing',1777,'Klaatu introduces Processing, a Java subset and IDE suitable for graphical programming projects','<p>Get Processing from <a href=\"https://processing.org\">processing.org</a>. Download, extract, and launch. On Linux, just click the <code>processing</code> file.</p>\r\n<p>Processing requires that <em>either</em> OpenJDK or Java to be installed.</p>\r\n<p>Processing requires a <code>void setup()</code> function, which is a function that Processing expects whenever an application is launched. If you don\'t have a <code>setup</code> function, your application still launches, but with basic Processing defaults. Try this to start with:</p>\r\n<pre><code>void setup() {\r\n    size(480,720);\r\n}</code></pre>\r\n<p>Click the <strong>Run</strong> button in the top left corner to launch your [very simple] application: an empty window that is 480 pixels wide and 720 pixels tall.</p>\r\n<p>Draw a rectangle on your canvas by invoking Processing\'s <code>void draw()</code> function:</p>\r\n<pre><code>void draw() {\r\n    rect(10,10,80,80);\r\n}</code></pre>\r\n<p>Click the <strong>Run</strong> button in the top left corner to launch your application.</p>\r\n<p>Add some colour to your rectangle:</p>\r\n<pre><code>void draw() {\r\n    fill(8,120,90);\r\n    rect(10,10,80,80);\r\n}</code></pre>\r\n<p>Click the <strong>Run</strong> button in the top left corner to launch your application.</p>\r\n<p>Make a simple painting app:</p>\r\n<pre><code>void setup() {\r\n    size(480,720);\r\n}\r\n\r\nvoid draw() {\r\n    if (mousePressed) {\r\n        fill(20,120,90);\r\n        ellipse(mouseX,mouseY,25,25);\r\n    } else {\r\n        fill(random(10,120),random(10,80),random(20,200));\r\n    }\r\n}</code></pre>\r\n<p>More Processing tricks: you can export your application as a standalone Java app, or as an Android <code>.apk</code> as long as you have the Android SDK installed.</p>\r\n<p>Processing\'s <a href=\"https://processing.org/reference\">documentation</a> is excellent. It has examples for all functions, <em>with pictures</em>.</p>\r\n',78,25,0,'CC-BY-SA','java,processing',0,0,1),
(2609,'2018-08-02','SparkleShare',1460,'Klaatu demonstrates SparkleShare','<p>\r\nClacke mentioned SparkleShare in <a href=\"https://hackerpublicradio.org/eps.php?id=2542\" target=\"_blank\">episode 2542</a>, and it occurred to me that not everyone knows what Sparkleshare is. So here&#39;s a show about it.\r\n</p>\r\n\r\n<p>\r\nTo setup SparkleShare, refer to <a href=\"https://sparkleshare.org\" target=\"_blank\">SparkleShare.org</a>. It\'s available for Linux, Windows, and Mac; great for cross-platform collaboration.\r\n</p>\r\n\r\n<p>\r\nThe Linux installer uses <a href=\"https://flatpak.org\" target=\"_blank\">FlatPak</a>, so you do need to install that.\r\n</p>\r\n\r\n<p>\r\nOnce installed, launch SparkleShare in the usual way. If you have no usual way, you can use this command&#58;</p>\r\n\r\n<pre>\r\n$ flatpak run org.sparkleshare.SparkleShare\r\n</pre>\r\n\r\n<p>\r\nThe first screen asks for your name and email. This doesn&#39;t have to be your real name and email, but it is what SparkleShare will use when making commits on your behalf. This name and email will be visible to anyone who can see your online Git repository.\r\n</p>\r\n\r\n<p>\r\nThe next screen displays the <strong>Sync Remote Project</strong> screen. You use this screen any time you want to add another share to your sparkle.\r\n</p>\r\n\r\n<img src=\"https://slackermedia.info/host/setup1.png\" alt=\"image showing the Sync Remote Project window of SparkleShare\" />\r\n\r\n<p>\r\nIn this episode, I set up two projects&#58; one brand new one using my home server as host, and one that mirrors an existing project on Gitlab.com.\r\n</p>\r\n\r\n<p><strong>Adding a project from Gitlab</strong></p>\r\n\r\n<p>\r\nThe first thing you must do is give SparkleShare permission to access Gitlab. To do this, click on the SparkleShare icon in your system tray &#62; SparkleShare &#62; Client ID and copy your ID to your clipboard.\r\n</p>\r\n\r\n<img src=\"https://slackermedia.info/host/clientid.png\" alt=\"image describing the menu selection as listed in the above text\" />\r\n\r\n<p>\r\nNow go to your online Git host and add this &#34;Client ID&#34; to your approved SSH Keys. Where this is located depends on your Git host, but in Gitlab, it&#39;s located in the left column of the <strong>Settings</strong> screen. When your SSH Key has been added, Gitlab displays a key fingerprint &#40;actually just a string of numbers&#41; as confirmation.\r\n</p>\r\n\r\n<p>\r\nThe path to your remote Git repository is the part of an URL after the host. It usually starts with your username. For example, if I have a project on Gitlab located at <code>gitlab.com/notklaatu/foo.git</code> then the path that SparkleShare needs is <code>notklaatu/foo.git</code>\r\n</p>\r\n\r\n<p>\r\nClick the <strong>Add</strong> button to add the project to your local SparkleShare folder.\r\n</p>\r\n\r\n\r\n<p><strong>Adding a project hosted on your own server</strong></p>\r\n\r\n<p>\r\nThere are a lot more variables if you&#39;re hosting a Git repository on your own server. These are the things that you may need to account for&#58;\r\n</p>\r\n\r\n<ul>\r\n<li><p>Is your local .ssh/config file setting some &#34;invisible&#34; defaults for when you SSH to your server? If so, you may need to modify or add an entry for SparkleShare.</p></li>\r\n<li><p>Your SparkleShare auto-generated &#34;Client ID&#34; is located in <code>$HOME/.config/org.sparkleshare.SparkleShare/ssh</code></p></li>\r\n<li><p>Is your SparkleShare SSH key &#40;the &#34;Client ID&#34; in SparkleShare lingo&#41; in your authorized_hosts file?\r\n</p></li>\r\n<li><p>Does a Git repository exist on your remote server in the location you think it exists?</p></li>\r\n</ul>\r\n\r\n<p><strong>Using SparkleShare</strong></p>\r\n\r\n<p>\r\nUse SparkleShare exactly as you would DropBox or the <a href=\"https://nextcloud.com/\" target=\"_blank\">NextCloud Desktop Client</a>&#58; drag-and-drop a file to add it, drag it to the Trash to delete it. All SparkleShare folders sync\'d with any given project syncs automatically through the magickalfulness of Git hooks.\r\n</p>\r\n\r\n\r\n\r\n',78,104,0,'CC-BY-SA','git,sparkleshare',0,0,1),
(2613,'2018-08-08','Quick Awk Tip',459,'This is a tip about awk scripts.','<p>\r\nThis is obvious, but it tripped me up a few times after listening to the excellent Awk series by Dave and B-yeezi, so I though I\'d share it here to save others the trouble.\r\n</p>\r\n\r\n<p>\r\nWhen moving from simple awk commands to proper awk scripts, you put a shebang line at the top of your script. It\'s pretty common to many of us, because we do it for Python and Bash all the time.\r\n</p>\r\n\r\n<p>\r\nBut if you just put:\r\n</p>\r\n\r\n<pre>\r\n#!/usr/bin/awk\r\n</pre>\r\n<p>\r\nThen your awk script won\'t work the way you expect.</p>\r\n\r\n<p>\r\nYou must provide the <code>-f</code> flag:\r\n</p>\r\n<pre>\r\n#!/usr/bin/awk -f\r\n</pre>\r\n\r\n<p>\r\nNow you can pipe things to your awk script as expected. \r\n</p>\r\n\r\n\r\n',78,94,0,'CC-BY-SA','tip,awk,shebang',0,0,1),
(2614,'2018-08-09','My 1948 Truetone D1835 Tube Radio',657,'I talk about my \"new\" 1948 D1835 Tube-powered radio.','<h2>The 1948 Truetone D1835 Tube Radio</h2>\r\n\r\n<p>I recently bought a vintage tube powered radio at an estate sale and in this episode I talk about it and let you hear it. Click the image to view my Flickr pictures.</p>\r\n\r\n<p><a data-flickr-embed=\"true\" href=\"https://www.flickr.com/photos/137675441@N05/albums/72157699014674225\" title=\"1948 Truetone Tube Radio\"><img src=\"https://farm1.staticflickr.com/836/28515366987_03ca2d6a84_c.jpg\" width=\"450\" height=\"800\" alt=\"1948 Truetone Tube Radio\"/></a></p>\r\n\r\n<p>Watch <a href=\"https://youtu.be/-I8GEjiBf0g\">A video showing the radio in action</a>!</p>\r\n',238,0,0,'CC-BY-SA','Vintage audio, legacy technology, radio, antiques',0,0,1),
(2610,'2018-08-03','Gnu Awk - Part 12',2050,'Advanced use of arrays','<h1 id=\"gnu-awk---part-12\">Gnu Awk - Part 12</h1>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>This is the twelfth episode of the “<a href=\"https://hackerpublicradio.org/series/0094.html\" title=\"Learning Awk\">Learning Awk</a>” series which is being produced by <a href=\"https://hackerpublicradio.org/correspondents/0300.html\" title=\"b-yeezi\">b-yeezi</a> and myself.</p>\r\n<p>In this episode I want to continue with the subject I started in episode 10, an advanced-level look at arrays in Awk. This episode covers <code>patsplit</code> which can split a string into an array, the built-in array <code>PROCINFO</code> which can be used to control how <code>awk</code> sorts arrays, as well as <code>asort</code> and <code>asorti</code>, built-in functions for sorting arrays.</p>\r\n<p>In case it might be of interest I have also included a section describing a recent use I made of <code>awk</code> to solve a problem.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2610/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/gawk/manual/html_node/index.html\"><em>GNU Awk User’s Guide</em></a></li>\r\n<li>Previous shows in this series on HPR:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2114\">“<em>Gnu Awk - Part 1</em>”</a> - episode 2114</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2129\">“<em>Gnu Awk - Part 2</em>”</a> - episode 2129</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2143\">“<em>Gnu Awk - Part 3</em>”</a> - episode 2143</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2163\">“<em>Gnu Awk - Part 4</em>”</a> - episode 2163</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2184\">“<em>Gnu Awk - Part 5</em>”</a> - episode 2184</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2238\">“<em>Gnu Awk - Part 6</em>”</a> - episode 2238</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2330\">“<em>Gnu Awk - Part 7</em>”</a> - episode 2330</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2438\">“<em>Gnu Awk - Part 8</em>”</a> - episode 2438</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2476\">“<em>Gnu Awk - Part 9</em>”</a> - episode 2476</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2526\">“<em>Gnu Awk - Part 10</em>”</a> - episode 2526</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2554\">“<em>Gnu Awk - Part 11</em>”</a> - episode 2554</li>\r\n</ul></li>\r\n<li>Resources:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2610/full_shownotes.epub\">ePub version of these notes</a></li>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex1.awk\">awk12_ex1.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex2.awk\">awk12_ex2.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex3.awk\">awk12_ex3.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex4.awk\">awk12_ex4.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex5.awk\">awk12_ex5.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex6.awk\">awk12_ex6.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex7.awk\">awk12_ex7.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex8.awk\">awk12_ex8.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex9.awk\">awk12_ex9.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex10.awk\">awk12_ex10.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_extra.awk\">awk12_extra.awk</a></li>\r\n</ul></li>\r\n</ul>',225,94,1,'CC-BY-SA','Awk utility, Awk Language, gawk, arrays, sorting',0,0,1),
(2617,'2018-08-14','Exposing a Raspberry Pi database through a REST API',1219,'In this episode, I discuss how I used python to make my speedtest data available across my network','<h2>Links from the episode</h2>\r\n\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Representational_state_transfer\">Wikipedia - REST API</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Web_Server_Gateway_Interface\">Wikipedia - WSGI</a></li>\r\n<li><a href=\"https://bottlepy.org/docs/dev/\">Bottle Framework</a></li>\r\n<li><a href=\"https://sqlite.org/index.html\">SQLite</a></li>\r\n</ul>\r\n',300,0,0,'CC-BY-SA','python,development',0,0,1),
(2618,'2018-08-15','Yesod - First Impressions',1385,'Tuula talking about their first impressions of Yesod web framework','<p>First place to start is probably Yesod’s web site at: <a href=\"https://www.yesodweb.com/\" class=\"uri\">https://www.yesodweb.com/</a></p>\r\n<p>Often recommended environment for developing Haskell programs is Stack: <a href=\"https://docs.haskellstack.org/en/stable/README/\" class=\"uri\">https://docs.haskellstack.org/en/stable/README/</a></p>\r\n<p>My road to Haskell started with Learn You a Haskell for Great Good: <a href=\"https://learnyouahaskell.com/\" class=\"uri\">https://learnyouahaskell.com/</a> and going through lecture notes of CIS 194: <a href=\"https://www.seas.upenn.edu/%7Ecis194/spring13/lectures.html\">https://www.seas.upenn.edu/%7Ecis194/spring13/lectures.html</a></p>\r\n',364,107,0,'CC-BY-SA','haskell,yesod,web',0,0,1),
(2619,'2018-08-16','A Gentle Introduction to Quilt',1225,'Quilt - the patch manager.  Introduction and tutorial.','<h1 id=\"a-gentle-introduction-to-quilt\">A gentle introduction to quilt</h1>\r\n<p>Or, patch management for software.</p>\r\n<h2 id=\"speaker-intro\">Speaker Intro</h2>\r\n<p>Hi, I\'m bjb. I\'m a programmer.</p>\r\n<h2 id=\"motivation-and-topic-intro\">Motivation and topic intro</h2>\r\n<p>I needed to learn how to use the software tool &quot;quilt&quot;, so you get to listen to my podcast about an introduction to quilt.</p>\r\n<p>People collaborating on a project must edit the same set of source files. After one person commits some changes, then the other people must rebase their own changes on the new version of the shared files before they can push their changes.</p>\r\n<p>A minor fix for some old typo should not be in the same patch as a new feature; a comment correction should also be in its own patch. Essentially, two new features and some bug fixes should not all be smushed together in one patch. Each feature should be in its own patch (or patch series), and each bug fix should be in its own patch. This allows others to be able to review the proposed changes easily, and even lets them pick and choose which patches they want to apply. It becomes a chore to manage all these patches. That\'s where quilt comes in.</p>\r\n<p>Sadly, I hadn\'t learned quilt till this weekend ... well one way to ensure I learn it fairly well is to write a HPR episode about it! Here goes.</p>\r\n<p>I have written this episode to be understandable by anyone - you don\'t have to be a coder. You could use this tool to keep track of any plain-text files - recipes, todo lists, html, hpr show notes, poetry, what-have-you.</p>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>First let\'s describe what a patch is. No, first let\'s describe what source code looks like. Source code is a plain text file full of computer instructions. It is a plain text file, as opposed to a word processing file. Plain text files do not have any formatting codes or styles in them (such as which font should be used, or what colour, and so on). They just contain the characters that make up words of the content.</p>\r\n<p>A key feature of these source code files is that a new section of the file starts on a new line. The source code is almost never &quot;reflowed&quot; like prose might be. It is sort of like poetry - the more formal poetry, not prose poetry. There are a lot of really small sections in source code files (called &quot;statements&quot; and &quot;expressions&quot;). Most of these sections fit on one line. This is useful for the tools we\'re going to discuss because when one line changes it does not affect the following lines, as it might when text is reflowed after a change.</p>\r\n<p>People have been coding with plain text files in various languages for decades. Thus a large set of tooling has grown around this format. One of those tools is called &quot;diff&quot; and another one is called &quot;patch&quot;.</p>\r\n<p>Diff is a way to compare two text files. Typically it would be used to compare the &quot;before&quot; and &quot;after&quot; of a source code file undergoing changes. So you could find out what was done to the source code file by running diff on the before and after versions of that file.</p>\r\n<p>A diff file is a series of excerpts from the original and changed files. There are various kinds of diffs. Some of them show only the changed lines. Some of them show a few lines before and a few lines after in addition to the changed lines themselves. That second kind is called a &quot;context diff&quot; and helps the automated machinery (and humans too) find the correct part of the file to which the change must be applied.</p>\r\n<p>By default there are 3 lines of context before and after the changed lines.</p>\r\n<p>The changed part is represented by including the old AND new line. In order to distinguish which lines are old and which are the replacements, all the lines (context lines, removed lines and added lines) are shifted over to the right by one character. The context lines start with a space in the extra left-most character, the original removed lines have a minus sign in the left-most character and the new added lines have a plus sign.</p>\r\n<p>Thus if any character on a line in the source file has changed, been added or removed, then the whole line will be replaced with a new line in the new file. The diff will show both the removed line and the new one.</p>\r\n<p>The patch utility takes the &quot;diff&quot; output and applies it to the original file to produce the later version of that file. You can apply it in reverse mode to the later version to get the original version. So patch is also a really useful program, and these two tools, diff and patch, are the basis of most of the version control systems out there. It is the existence of these text-based diff and patch tools that makes revision control systems work really well on plain-text files that are naturally structured in a line-by-line format.</p>\r\n<p>A note about terminology: the diff program produces a diff. This diff is also called a patch. The patch program takes the diff (aka patch) and applies it to the original file to produce the changed file.</p>\r\n<p>So if you have a timeline of adding a few features and making a few fixes on a code-base, it can be fully described by the original file plus a set of patches that had been produced with diff. You can get the final source code by taking the original file, applying the patches one by one, and voila, the final version of the file has been recreated.</p>\r\n<p>Now we know enough to give a concise description of quilt:</p>\r\n<p>Quilt lets you work with patches, creating them, applying them, un-applying them, and moving some things from one patch to another with a minimum of effort.</p>\r\n<h2 id=\"how-to-use-quilt\">How to use quilt</h2>\r\n<p>Now a tutorial on how to get started using quilt.</p>\r\n<p>This tutorial will start with a buggy program, create a few bad patches, and fix them up into good patches. I make no claims as to the quality of the final code though. The reason for starting with bad code and patches is to illustrate how to use quilt.</p>\r\n<h3 id=\"starting-to-use-quilt-on-a-project\">Starting to use quilt on a project</h3>\r\n<p>To start using quilt, create a directory called &quot;patches&quot; at the top of your code or just above.</p>\r\n<pre class=\"sourceCode \"><code>$ mkdir patches</code></pre>\r\n<p>If you don\'t do this, quilt will create it for you. However, first it will look for a directory called &quot;patches&quot; in the current working directory, its parent, and all the way up ... if it finds one, it will use it. If not, it will create one in the current directory.</p>\r\n<p>So, to keep it from finding some unrelated directory with the name &quot;patches&quot;, just create a patches directory yourself in the right place.</p>\r\n<h3 id=\"quilt-first-patch-including-a-new-file\">Quilt first patch, including a new file!</h3>\r\n<p>You must tell quilt before you make any changes to your source code. Then it can store the original versions of the files that will change, so it can produce the diffs that will become that patch once you change the files.</p>\r\n<p>Create a directory called example, and create a file in it like this, called hello.c (don\'t fix the errors):</p>\r\n<pre class=\"sourceCode \"><code>#include &quot;stdio.h&quot;\r\n\r\nint main (int argc, char *argv[], char *env[])\r\n{\r\n    print (&quot;Hello, world!n&quot;)\r\n    return 0;\r\n}</code></pre>\r\n<p>Now create a new patch - that is, give it a name - before you change any code. This will create (or find) a couple of directories, &quot;patches&quot; and &quot;.pc&quot;, and populate them with some files to start.</p>\r\n<pre class=\"sourceCode \"><code>$ quilt new fix-typo</code></pre>\r\n<p>And now you can fix the typo and generate the patch. First start by telling quilt that you want hello.c to be in the patch. Quilt saves a copy of it aside for comparing with the later versions:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt add hello.c</code></pre>\r\n<p>You can get quilt to tell you what files it knows about:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt files</code></pre>\r\n<p>Edit the file - add a semicolon at the end of the print line, and change the double-quotes on the #include line to angle brackets:</p>\r\n<pre class=\"sourceCode \"><code>#include &lt;stdio.h&gt;\r\nprint (&quot;Hello, world!n&quot;);</code></pre>\r\n<p>Save the file and exit the editor. Next generate the patch:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt refresh</code></pre>\r\n<p>The oddly named &quot;refresh&quot; command creates the patch itself. It is called &quot;refresh&quot; because it can also be used to update the patch.</p>\r\n<p>Now you can see the current set of patches by giving the command:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt series</code></pre>\r\n<p>The single patch is called fix-typo, and its name in the list is coloured brownish. That is because it is the &quot;current&quot; patch, and it is the one that will be updated if you &quot;quilt refresh&quot; again with more changes.</p>\r\n<p>One thing I did not find in the quilt documentation is how to add a new file. When adding a new file, there is no existing file that you can name in the quilt add command. Of course, the very first patch I wanted to manage with quilt, I had introduced a new file. It turns out that the quilt edit command can be used to add a file to the patch, even if the file does not yet exist:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt edit header.h</code></pre>\r\n<p>Add content to header.h (see below) using the plain-text editor that quilt has started up for you. Save the file.</p>\r\n<pre class=\"sourceCode \"><code>#ifndef HEADER_HH__\r\n#define HEADER_HH__\r\n\r\n#define NAME &quot;bjb&quot;\r\n\r\n#endif</code></pre>\r\n<p>Regenerate the patch with the new changes:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt refresh</code></pre>\r\n<p>Now you can list the patch series again with quilt series. So far there is one patch. You can see what the patch consists of with the</p>\r\n<pre class=\"sourceCode \"><code>$ quilt diff</code></pre>\r\n<p>command.</p>\r\n<pre class=\"sourceCode \"><code>$ quilt diff\r\nIndex: hello/hello.c\r\n===================================================================\r\n--- hello.orig/hello.c\r\n+++ hello/hello.c\r\n@@ -1,8 +1,8 @@\r\n-#include &quot;stdio.h&quot;\r\n+#include &lt;stdio.h&gt;\r\n\r\n int main (int argc, char *argv[], *env[])\r\n {\r\n-    print (&quot;Hello, world!n&quot;)\r\n+    print (&quot;Hello, world!n&quot;);\r\n     return 0;\r\n }\r\n\r\nIndex: hello/header.h\r\n===================================================================\r\n--- /dev/null\r\n+++ hello/header.h\r\n@@ -0,0 +1,7 @@\r\n+#ifndef HEADER_HH__\r\n+#define HEADER_HH__\r\n+\r\n+#define NAME &quot;bjb\r\n+\r\n+#endif\r\n+\r\n$</code></pre>\r\n<h3 id=\"quilt-second-patch\">Quilt second patch</h3>\r\n<p>Now it is time to make a second patch. First we tell quilt we are moving to a new patch:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt new prototype\r\n$ quilt edit header.h</code></pre>\r\n<p>Edit this file again - add a function prototype.</p>\r\n<pre class=\"sourceCode \"><code>int do_output(const char *name);</code></pre>\r\n<p>Create the patch and look at the list of patches:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt refresh\r\n$ quilt series</code></pre>\r\n<p>Now when we give the quilt series command, we see two patches. The first one is green, meaning it has been applied, and the second one is brown, meaning this is the one that quilt refresh will change if you call it.</p>\r\n<p>Again you can see what latest diff looks like by giving the quilt diff command.</p>\r\n<pre class=\"sourceCode \"><code>$ quilt diff</code></pre>\r\n<p>Now let\'s unapply the latest diff:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt pop\r\n$ quilt series</code></pre>\r\n<p>We see that the list of patches has the same patches in it, but now the second patch is white (meaning unapplied) and the first patch is brown (meaning it is the one that would change if we edited a file and typed quilt refresh.</p>\r\n<pre class=\"sourceCode \"><code>$ quilt files</code></pre>\r\n<p>That first patch has two files in it, hello.c and header.h.</p>\r\n<p>Now unapply the first diff:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt pop\r\n$ quilt series</code></pre>\r\n<p>Both patches are listed, and both are shown as white.</p>\r\n<p>We can see what files quilt knows about before any patches are applied:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt files</code></pre>\r\n<p>No files.</p>\r\n<p>Apply all the patches at once:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt push -a\r\n$ quilt series</code></pre>\r\n<p>And look at what files quilt knows about:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt files</code></pre>\r\n<p>Now quilt reports on only one file, while in the first patch it knew about two files. You must be careful to &quot;add&quot; each file to each patch, or it will not put the changes in those files into the patch. Luckily, quilt edit will put the files in the patch for you, so if you always start your editor with quilt edit fname, then you will have your changed files added to your patches without having to take any other action. But, if you are adding an existing file to the patch, you can add it without having to open your editor with the quilt add command:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt add fname</code></pre>\r\n<p>In order to avoid forgetting to add a file in a patch as I was editing, I just added all the files in the directory each time I created a new patch, whether I edited them or not.</p>\r\n<h3 id=\"split-a-patch-in-two-parts\">Split a patch in two parts</h3>\r\n<p>We are going to split the first patch in two parts. We had fixed a typo and added a new file in one patch. They should be two separate patches.</p>\r\n<p>First make the first patch current:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt pop</code></pre>\r\n<p>Then make a copy of that patch:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt fork</code></pre>\r\n<p>This makes a copy of the first patch called fix-typo-2. But, it removes the first patch fix-typo and puts fix-typo-2 in the series. We need to put the first patch back, and then edit each of the two fix-typo patches so each one contains one part of the original patch.</p>\r\n<pre class=\"sourceCode \"><code># edit patches/series file and put the first patch back\r\n# The file should contain:\r\n\r\nfix-typo\r\nfix-typo-2\r\nprototype</code></pre>\r\n<p>Now edit the first patch using a plain-text editor. It is in patches/fix-typo. Remove the part about the new file, header.h. It should now look like:</p>\r\n<pre class=\"sourceCode \"><code>Index: hello/hello.c\r\n===================================================================\r\n--- hello.orig/hello.c\r\n+++ hello/hello.c\r\n@@ -1,4 +1,4 @@\r\n-#include &quot;stdio.h&quot;\r\n+#include &lt;stdio.h&gt;\r\n\r\n int main (int argc, char *argv[], *env[])\r\n {</code></pre>\r\n<p>Save this file. Now edit the second patch patches/fix-typo-2 using a plain-text editor. Remove the part about the file hello.c. It should now look like:</p>\r\n<pre class=\"sourceCode \"><code>Index: hello/header.h\r\n===================================================================\r\n--- /dev/null\r\n+++ hello/header.h\r\n@@ -0,0 +1,7 @@\r\n+#ifndef HEADER_HH__\r\n+#define HEADER_HH__\r\n+\r\n+#define NAME &quot;bjb\r\n+\r\n+#endif\r\n+</code></pre>\r\n<p>If you give a quilt series command now, you will see that fix-typo-2 is the current patch and quilt thinks fix-typo has been applied.</p>\r\n<p>We have to fix up quilts idea of reality.</p>\r\n<p>Pop the current patch. Things have changed under quilts feet so we have to force this with the -f option:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt pop -f</code></pre>\r\n<p>Now, because quilt thought the original state of fix-typo-2 is the unchanged file, quilt shows the series as being completely un-applied.</p>\r\n<pre class=\"sourceCode \"><code>$ quilt series\r\npatches/fix-typo\r\npatches/fix-typo-2\r\npatches/prototype</code></pre>\r\n<p>Now we can push the patches:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt push -a</code></pre>\r\n<h3 id=\"rename-a-patch\">Rename a patch</h3>\r\n<p>Here we rename a patch from fix-typo-2 to add-header. The quilt rename command acts on the current patch, so make fix-typo-2 current first:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt pop fix-typo-2\r\n$ quilt rename add-header\r\n$ quilt series\r\n$ quilt push -a</code></pre>\r\n<h3 id=\"reorder-the-patch-series\">Reorder the patch series</h3>\r\n<p>We will make a new patch, then move it earlier in the series:</p>\r\n<p>First make the new patch:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt new printf\r\n$ quilt edit hello.c</code></pre>\r\n<p>And change the print statement to:</p>\r\n<pre class=\"sourceCode \"><code>printf(&quot;Hello, world!n&quot;);</code></pre>\r\n<p>Save the patch:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt refresh</code></pre>\r\n<p>Now to demonstrate the reordering.</p>\r\n<p>Unapply all the patches, edit the patches series file patches/series so the patches are in the order you like, and then re-apply the patches. If you are lucky, they will re-apply with no conflicts.</p>\r\n<pre class=\"sourceCode \"><code>$ quilt pop -a\r\n$ vi patches/series\r\n# move &quot;printf&quot; between fix-typo and add-header.\r\n# now all the bug-fixes are at the beginning of the series\r\n$ quilt push -a</code></pre>\r\n<h3 id=\"merge-two-patches-into-one\">Merge two patches into one</h3>\r\n<p>Make another new patch:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt new output-function\r\n$ quilt edit hello.c</code></pre>\r\n<p>Change the c file to this:</p>\r\n<pre class=\"sourceCode \"><code>#include &lt;stdio.h&gt;\r\n\r\nint do_output(const char *name)\r\n{\r\n    return printf(&quot;Hello, %s!n&quot;, name);\r\n}\r\n\r\nint main (int argc, char *argv[], char *env[])\r\n{\r\n    /* ignoring the return code for do_output */\r\n    do_output(NAME);\r\n    return 0;\r\n}</code></pre>\r\n<pre class=\"sourceCode \"><code>$ quilt refresh</code></pre>\r\n<p>Now, to merge two patches into one:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt pop prototype\r\n$ quilt fold &lt; patches/output-function</code></pre>\r\n<p>We have merged the prototype and output-function patches, because they describe a related change.</p>\r\n<p>Save the patch.</p>\r\n<pre class=\"sourceCode \"><code>$ quilt refresh</code></pre>\r\n<h3 id=\"throw-away-a-patch\">Throw away a patch</h3>\r\n<p>Now we no longer need the last patch, output-function, as it has been included into the prototype patch. But we might want to rename the prototype patch.</p>\r\n<pre class=\"sourceCode \"><code>$ quilt delete output-function\r\n# we have to clean up a bit for quilt or the rename won&#39;t work\r\n$ rm patches/output-function\r\n$ quilt rename output-function</code></pre>\r\n<p>Deleting will not work on a patch that has been applied before the current patch.</p>\r\n<p>You are ready to contribute your patches ... go forth and code.</p>\r\n<h2 id=\"summary\">Summary</h2>\r\n<p>We have seen that quilt can help you manage your contributions to any project that is written in plain-text files. It can generate patch files (usually needed for contributions to open source projects) and can help you manage and update them as the tip of the development branch moves forward with other peoples\' contributions.</p>\r\n<p>To use quilt successfully, you need to remember to add files to each patch with quilt add/or quilt edit before editing, and to generate the patch with quilt refresh once all the editing of each patch is done. The rest is easy.</p>\r\n<p>Commands that edit the patches:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt new patch-name\r\n$ quilt add fname\r\n$ quilt edit fname\r\n$ quilt refresh\r\n$ quilt pop [-a]\r\n$ quilt push [-a]\r\n$ quilt rename [-P oldname] newname\r\n$ quilt delete [-P patchname]\r\n$ quilt fold &lt; patch_to_merge</code></pre>\r\n<p>Commands that view the state of the patches:</p>\r\n<pre class=\"sourceCode \"><code>$ quilt series\r\n$ quilt files\r\n$ quilt diff [-P patchname]\r\n$ quilt graph [--all]\r\n$ quilt patches fname\r\n$ quilt annotate fname\r\n$ quilt applied\r\n$ quilt unapplied</code></pre>\r\n<h2 id=\"hpr-exhortation\">HPR exhortation</h2>\r\n<p>You\'ve been listening to Hacker Public Radio. Anyone can make a show -if I can do it, so can you.</p>\r\n',357,0,0,'CC-BY-SA','quilt, patch, diff, plain-text, editor',0,0,1),
(2627,'2018-08-28','Home Phone Setup!!',1402,'This episode we set up a small phone system.','<p>I’m not sure what the echoing is about. It could be picked up from my cell phone’s speaker. Also, I call ftp “tiny ftp” It actually stands for “trivial ftp”</p>\r\n<p><img src=\"https://theadesilva.com/hpr_phone1.jpg\" alt=\"https://theadesilva.com/hpr_phone1.jpg\" /> <img src=\"https://theadesilva.com/hpr_phone2.jpg\" alt=\"https://theadesilva.com/hpr_phone2.jpg\" /> <img src=\"https://theadesilva.com/hpr_phone3.jpg\" alt=\"https://theadesilva.com/hpr_phone3.jpg\" /> <img src=\"https://theadesilva.com/hpr_phone4.jpg\" alt=\"https://theadesilva.com/hpr_phone4.jpg\" /></p>\r\n<p>tftp file for xinetd:</p>\r\n<pre><code>service tftp\r\n{\r\n protocol = udp\r\n port = 69\r\n socket_type = dgram\r\n wait = yes\r\n user = nobody\r\n server = /usr/sbin/in.tftpd\r\n server_args = /tftpboot\r\n disable = no\r\n per_source = 11\r\n cps = 100 2\r\n flags = IPv4\r\n}</code></pre>\r\n<p>voipbuster config files look like this:</p>\r\n<pre><code>SIPDefault.cnf:\r\n  nat_enable: 1\r\n\r\nSIP&lt;mac address&gt;.cnf:\r\nproxy1_address: sip.voipbuster.com\r\nline1_name: outside\r\nline1_authname: &lt;user&gt;\r\nline1_displayname: outside\r\nline1_password: &lt;password&gt;</code></pre>\r\n<p>github projects:</p>\r\n<ul>\r\n<li><p>SIP_Pi: <code>github.com/fabianhu/SIP_Pi (PjSIP: https://www.pjsip.org/release/2.1/pjproject-2.1.tar.bz2 )</code></p></li>\r\n<li><p>Messenger-CLI: <code>github.com/AstroCB/Messenger-CLI</code></p></li>\r\n</ul>\r\n<p>scripts:</p>\r\n<pre><code>=============================\r\nconst login = require(&quot;facebook-chat-api&quot;);\r\n\r\nlogin({email: &quot;FB_EMAIL&quot;, password &quot;FB_PASSWORD&quot;}, (err, api) =&gt;\r\n{\r\n  if(err) return console.error(err);\r\n  api.listen((err,message) =&gt; {\r\n   api.sendMessage(message.body, message.threadID);\r\n  });\r\n});\r\n\r\n=============================\r\n\r\n#!/bin/sh\r\nlame &quot;$2&quot; -o &quot;$2&quot;.mp3\r\n\r\nscp &quot;$2.mp3&quot; planetearth.us:\r\nssh planetearth.us ./runner &quot;&quot;$2.mp3&quot;&quot;\r\n\r\n==============================\r\n\r\n#!/bin/sh\r\n\r\necho &quot;$@&quot; | sed -e s/ /_/g &gt; runner_tmp\r\ndoas mv &quot;$1&quot; /var/www/theadesilva.com/html/$cat runner_tmp)\r\nnode ./oo.js\r\n\r\n==============================\r\n\r\nfs= require(&#39;fs&#39;);\r\nlogin = require(&#39;facebook-chat-api&#39;);\r\n\r\nfs.readFile(&#39;runner_tmp&#39;, &#39;utf8&#39;, function (err, data) {\r\n login({email: &quot;FB_EMAIL&quot;, password: &quot;FB_PASSWORD&quot;}) =&gt; {\r\n  if(err) return console.error(err);\r\n\r\n  api.sendMessage(&quot;New voicemail at 1109&#39;s front door &quot;https://theadesilva.com/&quot; + data + &quot;&quot;&quot; , THREAD_ID);\r\n });\r\n});\r\n\r\n===============================</code></pre>\r\n',115,0,0,'CC-BY-SA','sip kamailio ',0,0,1),
(2637,'2018-09-11','Convert it to Text',981,'This episode will make you want to TXT all the things.','<h2 id=\"why-use-plain-text\">Why use plain text?</h2>\n<ul>\n<li>Portability</li>\n<li>Use with Unix tools</li>\n<li>Use with Ranger</li>\n</ul>\n<h2 id=\"ranger-for-the-win\">Ranger for the win</h2>\n<ul>\n<li><a href=\"https://savannah.nongnu.org/projects/ranger\">Ranger</a> is a free console file manager that gives you greater flexibility and a good overview of your files without having to leave your *nix console. It visualizes the directory tree in two dimensions: the directory hierarchy on one, lists of files on the other, with a preview to the right so you know where you’ll be going.</li>\n<li>The scope functionality is where converting to text pays off. Located at <code>$HOME/.config/ranger/scope.sh</code>, scope is the feature that allows for file preview from inside the console. Text files are highlighted based on their file extension, for non-text files, different converters can be used to coerce the file into a text representation. Some items are available out of the box, but the configuration is written in such a way that any text can be presented in the preview screen.</li>\n<li>The basic format of the scope switch statement is as follows:</li>\n</ul>\n<pre><code>case &quot;$extension&quot; in\n    odt|odp)\n        try odt2txt &quot;$path&quot; &amp;&amp; { dump | trim | fmt -s -w $width; exit 0; };;</code></pre>\n<h2 id=\"tools-in-the-toolset\">Tools in the toolset</h2>\n<ul>\n<li>atool</li>\n<li>caca-utils</li>\n<li>poppler-utils</li>\n<li>catdoc</li>\n<li>catppt</li>\n<li>odt2txt</li>\n<li>ods2tsv</li>\n<li>docx2txt</li>\n<li>xlsx2csv</li>\n<li>mediainfo</li>\n<li>lynx/w3m/elinks</li>\n<li>highlight</li>\n</ul>\n<h2 id=\"bonus-tools\">Bonus tools</h2>\n<ul>\n<li>q</li>\n<li>jq</li>\n<li>xmlstarlet</li>\n</ul>\n',300,0,0,'CC-BY-SA','Unix,text,portability,ranger',0,0,1),
(2628,'2018-08-29','UK Telephone Network Exploration',589,'I describe the process of finding interesting phone numbers on the UK telephone network.','<p>If you have any questions regarding the show. Please leave them on the show page, or email me at <a href=\"mailto:james@jamesdotcom.com\">james@jamesdotcom.com</a> or twitter <code>@Xtrato</code>.</p>\r\n<p>My PGP key can be found here: <a href=\"https://jamesdotcom.com/pub.txt\" class=\"uri\">https://jamesdotcom.com/pub.txt</a></p>\r\n',368,0,0,'CC-BY-SA','UK telephone network,British Telecom,BT',0,0,1),
(2630,'2018-08-31','Open Source Gaming: Revisiting Meridian 59',229,'Discussing the  steam release of Meridian 59 (recorded before release)','<ul>\r\n<li><p>The game’s steam page<br />\r\n<a href=\"https://store.steampowered.com/app/893390/Meridian_59/\" class=\"uri\">https://store.steampowered.com/app/893390/Meridian_59/</a></p></li>\r\n<li><p>Community group on steam<br />\r\n<a href=\"https://steamcommunity.com/groups/m59\" class=\"uri\">https://steamcommunity.com/groups/m59</a></p></li>\r\n<li><p>Game website and source code<br />\r\n<a href=\"https://www.meridian59.com/\" class=\"uri\">https://www.meridian59.com/</a></p></li>\r\n<li><p>Article on the steam launch<br />\r\n<a href=\"https://www.mmobomb.com/news/meridian-59-game-launched-90s-finally-decides-hop-steam/\" class=\"uri\">https://www.mmobomb.com/news/meridian-59-game-launched-90s-finally-decides-hop-steam/</a></p></li>\r\n<li><p>Meridian 59 facebook group<br />\r\n<a href=\"https://www.facebook.com/groups/40338181227/?ref=br_rs\" class=\"uri\">https://www.facebook.com/groups/40338181227/?ref=br_rs</a></p></li>\r\n</ul>\r\n',354,0,1,'CC-BY-SA','Meridian 59,Steam',0,0,1),
(2633,'2018-09-05','Elm - First Impressions',1819,'My first impressions on Elm programming language','<ul>\r\n<li>Official site: <a href=\"https://elm-lang.org/\" class=\"uri\">https://elm-lang.org/</a></li>\r\n<li>Online package repository: <a href=\"https://package.elm-lang.org/\" class=\"uri\">https://package.elm-lang.org/</a></li>\r\n<li>please-focus (package for writing lenses): <a href=\"https://package.elm-lang.org/packages/SwiftsNamesake/please-focus/latest\" class=\"uri\">https://package.elm-lang.org/packages/SwiftsNamesake/please-focus/latest</a></li>\r\n<li>json-extra (for working with json): <a href=\"https://package.elm-lang.org/packages/elm-community/json-extra/latest\" class=\"uri\">https://package.elm-lang.org/packages/elm-community/json-extra/latest</a></li>\r\n<li>elm-decode-pipeline (another library for decoding json): <a href=\"https://package.elm-lang.org/packages/NoRedInk/elm-decode-pipeline/latest\" class=\"uri\">https://package.elm-lang.org/packages/NoRedInk/elm-decode-pipeline/latest</a></li>\r\n</ul>\r\n',364,0,1,'CC-BY-SA','elm, first impressions, programming language',0,0,1),
(2634,'2018-09-06','Git tag and metadata',1149,'An intro to git tags and how to view metadata about your Git repository.','<p>Tag a commit:</p>\r\n\r\n<pre>\r\n$ git tag 0.1\r\n$ git tag\r\n0.1\r\n</pre>\r\n\r\n<p>\r\nDelete a tag:\r\n</p>\r\n\r\n<pre>\r\n$ git tag -d 0.1\r\n</pre>\r\n\r\n<p>\r\nGet the latest commit hash:\r\n</p>\r\n\r\n<pre>\r\n$ git rev-list --tags --max-count=1\r\n94c5715694c5715687a962008dd71191460fc4e32370425a\r\n</pre>\r\n\r\n<p>\r\nGet any tag on a commit:\r\n</p>\r\n\r\n<pre>\r\n$ git describe --tags 94c5715\r\n0.1\r\n</pre>\r\n\r\n',78,104,0,'CC-BY-SA','git',0,0,1),
(2635,'2018-09-07','Running your own mainframe on Linux (for fun and profit)',3321,'This talk is about running your own mainframe on your own hardware.','<p>Yes, this talk is about running your own mainframe on your own hardware. Mainframes are old, yes, but they are still very much alive. New hardware is still being developed and there are a lot of fresh jobs in this area too. A lot of mainframes run COBOL workloads. COBOL is far from a dead language. It processes an estimated 85% of all business transactions, and 5 billion lines of new COBOL code are written every year. In this session the speaker will help you in take your first steps towards running your own mainframe. If you like then after this session you can continue to build your knowledge of mainframe systems using the links provided during the talk. Come on in and learn the basics of a completely different computer system! And it will take you less than an hour to do that!</p>',369,0,0,'CC-BY-SA','hercules,linux',0,0,1),
(2660,'2018-10-12','Installing a bootloader on an Arduino',399,'Ken uses a Arduino Uno to load a bootloader on an Arduino Nano','<p>\r\nIn this show you will learn how to install a bootloader on an Arduino using another Arduino via In-Circuit Serial Programming (ICSP)\r\n</p>\r\n\r\n<p>\r\nAll credit goes to <a href=\"https://www.sparkfun.com/users/150033\">M-SHORT</a> over at <a href=\"https://learn.sparkfun.com/tutorials/installing-an-arduino-bootloader\">SparkFun</a> for the excellent tutorial.\r\n</p>\r\n\r\n<ol>\r\n<li>Arduino IDE &gt; File &gt; Examples &gt; 11.ArduinoISP &gt; ArduinoISP</li>\r\n<li>Tools &gt; Board &gt; {your board}</li>\r\n<li>Tools &gt; Programmer &gt; Arduino as ISP</li>\r\n<li>Tools &gt; Burn Bootloader</li>\r\n</ol>',30,0,1,'CC-BY-SA','Arduino, Boot Loader, ISP, ICSP',0,0,1),
(2620,'2018-08-17','Thoughts on language learning part 1',1471,'My thoughts on an approach to language learning which makes sense to me.','<p>This is the first part of a 3 part series in which I ramble on about my thoughts on language learning. I’m no expert and I barely know one language well. In a nutshell:</p>\r\n<ol type=\"1\">\r\n<li>Teach as much as possible in the new language, focusing on vocabulary.</li>\r\n<li>Rather than starting with baby books, which might not be a bad idea, try to use a similar approach but assume the learners know a bit about how the world works.</li>\r\n<li>The goal is to get to about age 5-6 level in vocabulary so the learner can then switch to language books in the new language which already exist.</li>\r\n</ol>',151,0,0,'CC-0','spoken language learning',0,0,1),
(2622,'2018-08-21','Raspberry Pi Temperaturator',272,'I invite my 6 year-old daughter on to discuss how we setup a temperature monitor on her pi','<h2>Items used</h2>\r\n<ul>\r\n<li>Raspberry pi 3 B</li>\r\n<li>0.25 watt resistors</li>\r\n<li>Reusable breadboard</li>\r\n<li>One Wire thermal probe</li>\r\n<li>Various jump wires</li>\r\n</ul>\r\n',300,103,1,'CC-BY-SA','raspberry pi',0,0,1),
(2625,'2018-08-24','My thoughts on language learning communication applications.',980,'I discuss some of my thoughts regarding using chat programs in language learning','<p>This is the second in the series of my thoughts on language learning. In this episode I talk about it might be useful to modify existing chat programs to use two spell checking databases, one for the native language and one for the new language and have words removed from the native language dictionary as the learner advances.</p>\r\n<p>I did forget to mention that something similar might be done with the grammar checkers, too.</p>\r\n',151,0,0,'CC-0','spoken language learning',0,0,1),
(2647,'2018-09-25','More Quick Tips',1010,'More Quick Tips For July - Only Key and Nerf Guns','<p><a href=\"https://onlykey.io/collections/all/products/onlykey-color-secure-password-manager-and-2-factor-token-u2f-yubikey-otp-google-auth-make-password-hacking-obsolete?variant=469626486828\" class=\"uri\">https://onlykey.io/collections/all/products/onlykey-color-secure-password-manager-and-2-factor-token-u2f-yubikey-otp-google-auth-make-password-hacking-obsolete?variant=469626486828</a></p>\r\n<p>Nerf</p>\r\n<ul>\r\n<li><a href=\"https://smile.amazon.com/gp/product/B00BXM6KFS\" class=\"uri\">https://smile.amazon.com/gp/product/B00BXM6KFS</a></li>\r\n<li><a href=\"https://smile.amazon.com/gp/product/B00DW1JT5G\" class=\"uri\">https://smile.amazon.com/gp/product/B00DW1JT5G</a></li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','Nerf gun,dart,OnlyKey,password',0,0,1),
(2652,'2018-10-02','Liverpool Makefest 2018 - Interview with Caroline and John',440,'This is the final interview from this years Liverpool Makefest','<p>This is the final interview from this years Makefest in Liverpool. In this interview I interview one of the founder members of Makefest, Caroline Keep, and the Head Teacher of the school where she works, John Carling.</p>\r\n<p><a href=\"https://lpoolmakefest.org/\" class=\"uri\">https://lpoolmakefest.org/</a></p>\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, computing, young coders, hackers, makers, crafts',0,0,1),
(2629,'2018-08-30','Thoughts on language learning part 3 - game/story mode.',1564,'I discuss some of my thoughts on how games might help in language learning.','<p>This is the last of 3 parts on my thoughts on language learning. This one introduces my thoughts on how games might be used in language learning. More or less the same concepts from the first two episodes only applied to game/story design.</p>\r\n<p>NOTE: I’m not a game designer.</p>\r\n<p>On the off chance this sounds interesting to you, hpr2620 and hpr2625 are the other two.</p>',151,0,0,'CC-BY-SA','spoken language learning',0,0,1),
(2623,'2018-08-22','Actors and Agents, Sprites and Fractals',3426,'In which I sit down with cwebber and try to keep it short, but end up with an hour of tangents','<p>Plugs:</p>\r\n<ul>\r\n<li><p>Chris works on <a href=\"https://w3c-ccg.github.io/ocap-ld/\">Object Capabilities for Linked Data</a> (OCAP-LD) and other things for a living, at <a href=\"https://digitalbazaar.com/\" class=\"uri\">https://digitalbazaar.com/</a> .</p></li>\r\n<li><p>clacke works at <a href=\"https://fractalide.com/\" class=\"uri\">https://fractalide.com/</a> making better tools for future programmers.</p></li>\r\n<li><p>We’re both fortunate enough to have the chance to get paid for creating all Free Software.</p></li>\r\n<li><p>Christopher Lemmer Webber and Morgan Lemmer Webber will be speaking at <a href=\"https://con.racket-lang.org/\">RacketCon 2018</a> on the topic <em>Racket for Everyone (Else)</em>, how non-programmers can do &quot;programmable publishing&quot; using Scribble when writing humanities papers, and how Racket could better target not just beginner programmers and hard-core language theorists, but also the huge space in between.</p></li>\r\n</ul>\r\n<p>More information on the topics covered:</p>\r\n<ul>\r\n<li><p>For my last show with Chris, see <a href=\"https://hackerpublicradio.org/eps.php?id=2198\">hpr2198 :: How awesome is Guix and why will it take over the world</a></p></li>\r\n<li><p>His Actors library for Guile Scheme is <a href=\"https://www.gnu.org/software/8sync/\">8sync</a>. A video of him playing in front of an audience with the Multi-User Dungeon (MUD) on top of 8sync is available on the front page.</p></li>\r\n<li><p>Spritely, the media sharing platform that may or may not be the next MediaGoblin, is currently vaporware, but the underlying <a href=\"https://gitlab.com/spritely/goblins/\">Goblins</a> Actors library for Racket is real and works.</p></li>\r\n<li><p>Wikipedia has more on the <a href=\"https://en.wikipedia.org/wiki/Actor_model\">Actor Model</a>, <a href=\"https://en.wikipedia.org/wiki/Flow-based_programming\">Flow-Based Programming</a> and <a href=\"https://en.wikipedia.org/wiki/Object-capability_model\">Object Capabilities</a> (OCap).</p></li>\r\n<li><p>We also mentioned in passing <a href=\"https://en.wikipedia.org/wiki/Communicating_sequential_processes\">Communicating Sequential Processes</a>.</p></li>\r\n<li><p>I knew that OCap grew up in the context of <a href=\"https://en.wikipedia.org/wiki/E_(programming_language)\">E</a>, but I didn’t know that E itself actually grew out of the needs of a form of MUD, built by Electric Communities (EC). I’m guessing this is the graphical MMORPG <a href=\"https://en.wikipedia.org/wiki/Habitat_(video_game)\">Habitat</a> that EC built for Lucasfilm back in 1986, for the Commodore 64. Some writing about EC and the philosophy and experience around what they did is collected at <a href=\"https://www.crockford.com/ec/\" class=\"uri\">https://www.crockford.com/ec/</a>.</p></li>\r\n<li><p><a href=\"https://en.wikipedia.org/wiki/Language-oriented_programming\">Language-oriented programming</a> (LOP) is an old LISP methodology: Understand the problem, write a language for describing and solving the problem, write the solution in that language. Racket (itself a LISP) is heavily focused on this, and comes with a whole slew of languages out of the box. The Racket slogan on <a href=\"https://racket-lang.org/\" class=\"uri\">https://racket-lang.org/</a> is &quot;solve problems — make languages&quot;.</p></li>\r\n<li><p><a href=\"https://cacm.acm.org/magazines/2018/3/225475-a-programmable-programming-language/fulltext\">A recent ACM article</a> describes in depth what the challenges of good LOP are, and how Racket helps the programmer work with it.</p></li>\r\n</ul>\r\n',311,0,0,'CC-BY-SA','flow-based, actors, fractalide, racket, ocap, mud, programming',0,0,1),
(2624,'2018-08-23','Cycling through Brussels',1327,'On a hot day Knightwise rides his bike through Brussels.','<h2 id=\"cycling-through-brussels\">Cycling Through Brussels</h2>\r\n<ul>\r\n<li><p>Apple Store at the Guldenvlieslaan: <a href=\"https://www.apple.com/benl/retail/brussels/\" class=\"uri\">https://www.apple.com/benl/retail/brussels/</a></p></li>\r\n<li><p>Matonge District: <a href=\"https://en.wikipedia.org/wiki/Ixelles#Matong%C3%A9\">https://en.wikipedia.org/wiki/Ixelles#Matong%C3%A9</a></p></li>\r\n<li><p>René Magritte: <a href=\"https://en.wikipedia.org/wiki/Ren%C3%A9_Magritte\">https://en.wikipedia.org/wiki/Ren%C3%A9_Magritte</a></p></li>\r\n<li><p>Musee des Instruments: <img src=\"https://brusselsmuseums.imgix.net/covers/MIM-Hofberg_pano_170522_110758.jpg?w=730&amp;h=496&amp;fit=crop&amp;q=40&amp;auto=format%2Cenhance%2Ccompress\" alt=\"https://brusselsmuseums.imgix.net/covers/MIM-Hofberg_pano_170522_110758.jpg?w=730&amp;h=496&amp;fit=crop&amp;q=40&amp;auto=format%2Cenhance%2Ccompress\" /></p></li>\r\n<!-- <li><p>Musee des Instruments: <img src=\"https://brusselsmuseums.imgix.net/covers/MIM-Hofberg_pano_170522_110758.jpg\" width=\"730\" height=\"496\" alt=\"https://brusselsmuseums.imgix.net/covers/MIM-Hofberg_pano_170522_110758.jpg?w=730&amp;h=496&amp;fit=crop&amp;q=40&amp;auto=format%2Cenhance%2Ccompress\" /></p></li> -->\r\n<li><p>Victor Horta: <a href=\"https://en.wikipedia.org/wiki/Victor_Horta\" class=\"uri\">https://en.wikipedia.org/wiki/Victor_Horta</a></p></li>\r\n<li><p>Belgian Waffles: 2 kinds: <a href=\"https://www.ottsworld.com/blogs/a-tale-of-two-waffles/\" class=\"uri\">https://www.ottsworld.com/blogs/a-tale-of-two-waffles/</a></p></li>\r\n<li><p>He who saves the world in Shindlers list: <a href=\"https://www.youtube.com/watch?v=49aQb7VZ6F8\" class=\"uri\">https://www.youtube.com/watch?v=49aQb7VZ6F8</a></p></li>\r\n<li><p>Central Station<br />\r\n<a href=\"https://www.google.be/maps?rlz=1C1GCEA_enBE808BE808&amp;q=brussels+central+station&amp;um=1&amp;ie=UTF-8&amp;sa=X&amp;ved=0ahUKEwiP7Z7WodDcAhXOyKQKHTgZC0QQ_AUICigB\" class=\"uri\">https://www.google.be/maps?rlz=1C1GCEA_enBE808BE808&amp;q=brussels+central+station&amp;um=1&amp;ie=UTF-8&amp;sa=X&amp;ved=0ahUKEwiP7Z7WodDcAhXOyKQKHTgZC0QQ_AUICigB</a></p></li>\r\n</ul>\r\n',111,0,1,'CC-BY-SA','cycling,Brussels',0,0,1),
(2638,'2018-09-12','Dirt cheap Magic',2410,'Magic the Gathering for cheapskates','<p>In this episode, Klaatu talks about playing <strong>Magic: The Gathering</strong> for cheap.\r\n</p>\r\n\r\n<p>\r\nSee <a href=\"https://rpggeek.com/thread/532036/how-build-deck-magic-gathering\" target=\"_blank\">rpggeek.com&#47;thread&#47;532036&#47;how-build-deck-magic-gathering</a> by Eric Jome for a good deck building formula.\r\n</p>',78,95,0,'CC-BY-SA','magic,mtg',0,0,1),
(2639,'2018-09-13','Some ancillary Bash tips - 9',1305,'Making decisions in Bash (part 1)','<h1 id=\"some-ancillary-bash-tips---9\">Some ancillary Bash tips - 9</h1>\r\n<h2 id=\"making-decisions-in-bash\">Making decisions in Bash</h2>\r\n<p>This is my ninth contribution to the <a href=\"https://hackerpublicradio.org/series/0042.html\" title=\"*Bash Scripting* series\"><em>Bash Scripting</em></a> series under the heading of <em>Bash Tips</em>. The previous episodes are listed below in the <a href=\"#links\">Links</a> section.</p>\r\n<p>It seems to me that it would be worthwhile looking at how Bash can be used to make decisions, such as how many times a loop should cycle (<em>looping constructs</em>) or to choose between multiple choices (<em>conditional constructs</em>). Of course we need to look at some of the expressions used in conjunction with the commands that do these tasks – the tests themselves – and we’ll do this in this episode.</p>\r\n<p>This is a complex area which I had some trouble with when I first started using Bash, and there is a lot to say about it all. I have prepared a group of HPR shows about this subject, in order to do it justice, and this is the first of the group.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2639/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bash-Conditional-Expressions\">“Bash Conditional Expressions”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins\">“Bourne Shell Builtins”</a></li>\r\n</ul></li>\r\n<li><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n</ol></li>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2639/bash9_ex1.sh\">bash9_ex1.sh</a></li>\r\n</ul></li>\r\n</ul>',225,42,1,'CC-BY-SA','Bash,test,true,false',0,0,1),
(2649,'2018-09-27','More ancillary Bash tips - 10',1372,'Making decisions in Bash (part 2)','<h1 id=\"more-ancillary-bash-tips---10\">More ancillary Bash tips - 10</h1>\r\n<h2 id=\"making-decisions-in-bash\">Making decisions in Bash</h2>\r\n<p>This is my tenth contribution to the <a href=\"https://hackerpublicradio.org/series/0042.html\" title=\"*Bash Scripting* series\"><em>Bash Scripting</em></a> series under the heading of <em>Bash Tips</em>. The previous episodes are listed below in the <a href=\"#links\">Links</a> section.</p>\r\n<p>We are currently looking at decision making in Bash, and in the last episode we examined the tests themselves. In this episode we’ll look at the constructs that use these tests: looping constructs, conditional constructs and lists of commands.</p>\r\n<p><strong>Note</strong>: this episode and the preceding one were originally recorded as a single episode, but because it was so long it was split into two. As a consequence the audio contains references to examples such as <code>bash9_ex2.sh</code> where the true name is <code>bash10_ex1.sh</code>. The notes have been updated as necessary but not the audio.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2649/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Looping-Constructs\">“Bash Looping Constructs”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Conditional-Constructs\">“Bash Conditional Constructs”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins\">“Bourne Shell Builtins”</a></li>\r\n</ul></li>\r\n<li><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n</ol></li>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2649/bash10_ex1.sh\">bash10_ex1.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2649/bash10_ex2.sh\">bash10_ex2.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2649/bash10_ex3.sh\">bash10_ex3.sh</a></li>\r\n</ul></li>\r\n</ul>',225,42,1,'CC-BY-SA','Bash,test,while,until,if,case',0,0,1),
(2659,'2018-10-11','Further ancillary Bash tips - 11',1702,'Making decisions in Bash (part 3)','<h1 id=\"further-ancillary-bash-tips---11\">Further ancillary Bash tips - 11</h1>\r\n<p>This is the eleventh episode in the <em>Bash Tips</em> sub-series. It is the third of a group of shows about making decisions in Bash.</p>\r\n<p>In the last two episodes we saw the types of test Bash provides, and we looked briefly at some of the commands that use these tests. Now we want to start examining the expressions that can be used in these tests, and how to combine them. We will also start looking at string comparisons in extended tests.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2659/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Conditional-Constructs\">“Bash Conditional Constructs”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bash-Conditional-Expressions\">“Bash Conditional Expressions”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins\">“Bourne Shell Builtins”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin\">“The <code>set</code> Builtin”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Pattern-Matching\">“Bash Pattern Matching”</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html\">“<em>POSIX Shell Command Language</em>”</a> - documentation of all of the POSIX features mentioned in this series.</p></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n</ol></li>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2659/bash11_ex1.sh\">bash11_ex1.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2659/bash11_ex2.sh\">bash11_ex2.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2659/bash11_ex3.sh\">bash11_ex3.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2659/bash11_ex4.sh\">bash11_ex4.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2659/bash11_ex5.sh\">bash11_ex5.sh</a></li>\r\n</ul></li>\r\n</ul>',225,42,1,'CC-BY-SA','Bash,test,conditional expression,string comparison,pattern',0,0,1),
(2645,'2018-09-21','Blinking LED',1390,'In this live show, Ken sees if he can follow simple instructions','<p>\r\nDuring the New Year Show Ken soldered a component tester. Unfortunately this did not work. \r\n</p>\r\n<p>\r\nNYBill offered to fix it and he succeeded in his show <a href=\"https://hackerpublicradio.org/eps.php?id=2591\">hpr2591 :: International Troubleshooting</a>. When he shipped it back he included two 555 timers with the message: <em>Now, figure out how to make LED\'s blink\r\nwith those 555\'s! </em> \r\n</p>\r\n<p>\r\n\r\nIn this show Ken uses the online guide <a href=\"https://www.instructables.com/id/Flashing-LED-using-555-Timer/\">FLASHING L.E.D. USING 555 TIMER</a> By <a href=\"https://www.instructables.com/member/Trilesto/\">Trilesto</a> to do this. \r\n</p>',30,103,1,'CC-BY-NC-SA','555, NYBill, pico, nano',0,0,1),
(2640,'2018-09-14','Another Rambling Drive Into Work',835,'An second attempt at making a show on the way into work','<p>It’s been a while since I posted my first attempt at recording a show in my car, this attempt was recorded not that long after that but I’d forgotten to post it, hopefully, it’s not too boring.</p>\r\n<p>This is the previously mentioned dictation device I used<br />\r\n<a href=\"https://www.amazon.co.uk/HccToo-Multifunctional-Rechargeable-Dictaphone-Conversation/dp/B015H9JP6S/ref=sr_1_1?ie=UTF8&amp;qid=1502381150&amp;sr=8-1&amp;keywords=dictation+machines\" class=\"uri\">https://www.amazon.co.uk/HccToo-Multifunctional-Rechargeable-Dictaphone-Conversation/dp/B015H9JP6S/ref=sr_1_1?ie=UTF8&amp;qid=1502381150&amp;sr=8-1&amp;keywords=dictation+machines</a></p>\r\n<p>An article that explains how to remove noise using Audacity, which was what dodddummy was talking about when he commented on my first show on <a href=\"https://hackerpublicradio.org/eps.php?id=2377\">HPR2377</a> <a href=\"https://www.podfeet.com/blog/recording/how-to-remove-noise-with-audacity/\" class=\"uri\">https://www.podfeet.com/blog/recording/how-to-remove-noise-with-audacity/</a></p>\r\n<p>Link to Dave’s (<code>thelovebug</code>) page and the original John Kulp’s $2 microphone show that kicked all this off. Looking forward to getting a chance to catch up with Dave’s drive into work show. Refer to Dave’s episode <a href=\"https://hackerpublicradio.org/eps.php?id=2400\">HPR2400</a> and John Kulp’s original $2 microphone show <a href=\"https://hackerpublicradio.org/eps.php?id=1812\">HPR1812</a></p>\r\n<p>Link to the microphone originally recommended By John Kulp<br />\r\n<a href=\"https://www.amazon.co.uk/Neewer-3-5mm-Hands-Computer-Microphone/dp/B005DOTSM4/\" class=\"uri\">https://www.amazon.co.uk/Neewer-3-5mm-Hands-Computer-Microphone/dp/B005DOTSM4/</a></p>\r\n<p>A link from StackExchange that details the wiring diagram for Kenwood style microphone used in many portable Amateur radios<br />\r\n<a href=\"https://ham.stackexchange.com/questions/1891/whats-the-pinout-for-kenwood-2-5mm-trs-3-5-mm-trs-connector\" class=\"uri\">https://ham.stackexchange.com/questions/1891/whats-the-pinout-for-kenwood-2-5mm-trs-3-5-mm-trs-connector</a></p>\r\n<p>This is a small article in Wikipedia that covers the Electret Microphone which is the type used in the microphone recommended by John Kulp, Dave (<code>thelovebug</code>) and now me.<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Electret_microphone\" class=\"uri\">https://en.wikipedia.org/wiki/Electret_microphone</a></p>\r\n',201,0,1,'CC-BY-SA','recording, podcasting, audio, microphone, car, Audacity',0,0,1),
(2642,'2018-09-18','My swedish and german Podcasts Part 2',318,'I talk about 6 more podcasts in swedish and german. This time no radio network involved.','<ul>\r\n<li><strong>Helt sant</strong> <a href=\"https://api.sr.se/api/rss/pod/20447\" class=\"uri\">https://api.sr.se/api/rss/pod/20447</a></li>\r\n<li><strong>Brysselbubblan</strong> <a href=\"https://brysselbubblan.libsyn.com/rss\" class=\"uri\">https://brysselbubblan.libsyn.com/rss</a></li>\r\n<li><strong>Fri tanke podcast</strong> <a href=\"https://fritanke.podbean.com/feed/\" class=\"uri\">https://fritanke.podbean.com/feed/</a></li>\r\n<li><strong>Chaosradio</strong> <a href=\"https://chaosradio.ccc.de/chaosradio-latest.rss\" class=\"uri\">https://chaosradio.ccc.de/chaosradio-latest.rss</a></li>\r\n<li><strong>Radio Tux</strong> <a href=\"https://radiotux.de/podcast/rss/radiotux-all_ogg.xml\" class=\"uri\">https://radiotux.de/podcast/rss/radiotux-all_ogg.xml</a></li>\r\n<li><strong>Heiseshow</strong> <a href=\"https://www.heise.de/heiseshow.rss\" class=\"uri\">https://www.heise.de/heiseshow.rss</a></li>\r\n</ul>\r\n',309,75,1,'CC-BY-SA','podcast,swedish,german,ccc',0,0,1),
(2916,'2019-10-07','HPR Community News for September 2019',4081,'HPR Volunteers talk about shows released and comments posted in September 2019','<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=2891\" target=\"_blank\">2891</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-09-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2891\" target=\"_blank\">HPR Community News for August 2019</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=2892\" target=\"_blank\">2892</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-09-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2892\" target=\"_blank\">Stardrifter RPG Playtest Part 02</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2893\" target=\"_blank\">2893</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-09-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2893\" target=\"_blank\">Whats in the box! Part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0235.html\" target=\"_blank\">NYbill</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2894\" target=\"_blank\">2894</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-09-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2894\" target=\"_blank\">Repairing a Musical Instrument Case</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=2895\" target=\"_blank\">2895</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-09-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2895\" target=\"_blank\">The work of fire fighters, part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2896\" target=\"_blank\">2896</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-09-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2896\" target=\"_blank\">Orange PI Zero LTS version</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=2897\" target=\"_blank\">2897</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-09-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2897\" target=\"_blank\">Stardrifter RPG Playtest Part 03</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2898\" target=\"_blank\">2898</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-09-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2898\" target=\"_blank\">Modeling people in space game</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=2899\" target=\"_blank\">2899</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-09-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2899\" target=\"_blank\">Endeavour OS</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=2900\" target=\"_blank\">2900</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-09-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2900\" target=\"_blank\">Better Social Media 01 - Introduction</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=2901\" target=\"_blank\">2901</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-09-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2901\" target=\"_blank\">Describing how I listen to podcasts PART 3</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=2902\" target=\"_blank\">2902</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-09-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2902\" target=\"_blank\">Stardrifter RPG Playtest Part 04</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2903\" target=\"_blank\">2903</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-09-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2903\" target=\"_blank\">What is PMEM</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=2904\" target=\"_blank\">2904</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-09-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2904\" target=\"_blank\">DIY URL shortening</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=2905\" target=\"_blank\">2905</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-09-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2905\" target=\"_blank\">Two HPR hosts living in the same region finally meet up!</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=2906\" target=\"_blank\">2906</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-09-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2906\" target=\"_blank\">Feature Engineering for Data-Driven Decision Making</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0300.html\" target=\"_blank\">b-yeezi</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2907\" target=\"_blank\">2907</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-09-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2907\" target=\"_blank\">Stardrifter RPG Playtest Part 05</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2908\" target=\"_blank\">2908</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-09-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2908\" target=\"_blank\">Modeling opinions in space game</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=2909\" target=\"_blank\">2909</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-09-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2909\" target=\"_blank\">ONICS Basics Part 3:  Networking Fundamentals</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0259.html\" target=\"_blank\">Gabriel Evenfire</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2910\" target=\"_blank\">2910</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-09-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2910\" target=\"_blank\">Better Social Media 02 - Pluspora</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=2911\" target=\"_blank\">2911</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-09-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2911\" target=\"_blank\">my internet connection</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</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 17 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 3 comments on\n3 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=1328#comments\" target=\"_blank\">hpr1328</a></strong>\n(2013-09-04) \"<em>A Hacker\'s Perspective On Schizophrenia </em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0115.html\" target=\"_blank\">sigflup</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=1328#6\" target=\"_blank\">Comment 6</a>:\nVegewurst on 2019-09-06:\n\"Insightful\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2844#comments\" target=\"_blank\">hpr2844</a></strong>\n(2019-06-27) \"<em>The Sony TC-222-A Portable Reel-To-Reel Tape Recorder</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>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2844#1\" target=\"_blank\">Comment 1</a>:\nMichael on 2019-09-29:\n\"Muffled sound because of low path filtering.\"</li></ul><br/>\n</li><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#2\" target=\"_blank\">Comment 2</a>:\nHipstre on 2019-09-01:\n\"2881 - Audacity: Split Album into Tracks\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 14 comments on 9 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2891#comments\" target=\"_blank\">hpr2891</a></strong>\n(2019-09-02) \"<em>HPR Community News for August 2019</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=2891#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2019-09-02:\n\"Where was Ken ?\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2891#2\" target=\"_blank\">Comment 2</a>:\nJon Kulp on 2019-09-03:\n\"Heroic effort!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2891#3\" target=\"_blank\">Comment 3</a>:\nDave Morriss on 2019-09-04:\n\"Thanks Jon\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2893#comments\" target=\"_blank\">hpr2893</a></strong>\n(2019-09-04) \"<em>Whats in the box! Part 2</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0235.html\" target=\"_blank\">NYbill</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2893#1\" target=\"_blank\">Comment 1</a>:\ntimttmy on 2019-09-05:\n\"Trem pedal\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2893#2\" target=\"_blank\">Comment 2</a>:\nJon Kulp on 2019-09-06:\n\"No delay\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2893#3\" target=\"_blank\">Comment 3</a>:\nNYbill on 2019-09-07:\n\"Hit and Miss\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2895#comments\" target=\"_blank\">hpr2895</a></strong>\n(2019-09-06) \"<em>The work of fire fighters, part 2</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2895#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2019-09-06:\n\"Very dissapointed\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2895#2\" target=\"_blank\">Comment 2</a>:\nSteve on 2019-09-10:\n\"Volunteer Firefighters\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2903#comments\" target=\"_blank\">hpr2903</a></strong>\n(2019-09-18) \"<em>What is PMEM</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=2903#1\" target=\"_blank\">Comment 1</a>:\narcher72 on 2019-09-27:\n\"Awesome\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2904#comments\" target=\"_blank\">hpr2904</a></strong>\n(2019-09-19) \"<em>DIY URL shortening</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=2904#1\" target=\"_blank\">Comment 1</a>:\nTuula on 2019-09-23:\n\"clever\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2906#comments\" target=\"_blank\">hpr2906</a></strong>\n(2019-09-23) \"<em>Feature Engineering for Data-Driven Decision Making</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0300.html\" target=\"_blank\">b-yeezi</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2906#1\" target=\"_blank\">Comment 1</a>:\narcher72 on 2019-09-27:\n\"Nice show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2907#comments\" target=\"_blank\">hpr2907</a></strong>\n(2019-09-24) \"<em>Stardrifter RPG Playtest Part 05</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2907#1\" target=\"_blank\">Comment 1</a>:\narcher72 on 2019-09-27:\n\"Nice series\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2909#comments\" target=\"_blank\">hpr2909</a></strong>\n(2019-09-26) \"<em>ONICS Basics Part 3:  Networking Fundamentals</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0259.html\" target=\"_blank\">Gabriel Evenfire</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2909#1\" target=\"_blank\">Comment 1</a>:\narcher72 on 2019-09-27:\n\"Interesting\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2910#comments\" target=\"_blank\">hpr2910</a></strong>\n(2019-09-27) \"<em>Better Social Media 02 - Pluspora</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=2910#1\" target=\"_blank\">Comment 1</a>:\narcher72 on 2019-09-27:\n\"Nice 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/2019-September/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2019-September/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=\"tags-and-summaries\">Tags and Summaries</h3>\n<p>Thanks to the following contributor for sending in updates in the past month: <b><a href=\"https://hackerpublicradio.org/correspondents/0215.html\">windigo</a></b></p>\n<p>Over the period tags and/or summaries have been added to 1 show which was without them.</p>\n<p>If you would like to contribute to the tag/summary project visit the summary page at <a href=\"https://hackerpublicradio.org/report_missing_tags.php\" class=\"uri\">https://hackerpublicradio.org/report_missing_tags.php</a> and follow the instructions there.</p>\n<h3 id=\"change-to-the-missing-tags-document\">Change to the Missing Tags document</h3>\n<p>The section of this document which lists all of the tags currently in the system has been made more accessible. If you know of a tag in the system and you want to find out how many instances there are and which shows use them you can construct a query of the form:</p>\n<pre><code>https://hackerpublicradio.org/report_missing_tags.php#vim</code></pre>\n<p>This would look for the tag <code>\'vim\'</code> and position the page at the relevant place.</p>\n<p>If the tag you are looking for contains spaces, you need to replace them with underscores. So to look for the tag <code>\'vietnamese stringed instruments\'</code> your query would have to be:</p>\n<pre><code>https://hackerpublicradio.org/report_missing_tags.php#vietnamese_stringed_instruments</code></pre>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2936,'2019-11-04','HPR Community News for October 2019',2514,'Ken discusses last months shows and talks about OggCamp, FLOSS Weekly, FOSDEM, and Star Wars.','<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/0380.html\" target=\"_blank\">Carl</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=2912\" target=\"_blank\">2912</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-10-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2912\" target=\"_blank\">Stardrifter RPG Playtest Part 06</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2913\" target=\"_blank\">2913</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-10-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2913\" target=\"_blank\">Windows, SDN, and Firewalls</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0231.html\" target=\"_blank\">Beto</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2914\" target=\"_blank\">2914</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-10-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2914\" target=\"_blank\">Describing how I listen to podcasts PART 4</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=2915\" target=\"_blank\">2915</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-10-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2915\" target=\"_blank\">Intro - My Recording Setup</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0380.html\" target=\"_blank\">Carl</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2916\" target=\"_blank\">2916</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-10-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2916\" target=\"_blank\">HPR Community News for September 2019</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=2917\" target=\"_blank\">2917</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-10-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2917\" target=\"_blank\">Stardrifter RPG Playtest Part 07</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2918\" target=\"_blank\">2918</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-10-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2918\" target=\"_blank\">Selecting random item from weighted list</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=2919\" target=\"_blank\">2919</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-10-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2919\" target=\"_blank\">hosting software in HPR show notes</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=2920\" target=\"_blank\">2920</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-10-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2920\" target=\"_blank\">Better Social Media 03 - MeWe</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=2921\" target=\"_blank\">2921</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-10-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2921\" target=\"_blank\">Geocaching with the family</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=2922\" target=\"_blank\">2922</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-10-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2922\" target=\"_blank\">Stardrifter RPG Playtest Part 08</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2923\" target=\"_blank\">2923</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-10-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2923\" target=\"_blank\">Describing how I listen to podcasts PART 5</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=2924\" target=\"_blank\">2924</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-10-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2924\" target=\"_blank\">Hacking an Alarm Clock to Make it Quieter</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=2925\" target=\"_blank\">2925</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-10-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2925\" target=\"_blank\">LinuxLugCast\'s Memorial for FiftyOneFifty </a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2926\" target=\"_blank\">2926</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-10-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2926\" target=\"_blank\">Full Circle Magazine</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=2927\" target=\"_blank\">2927</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-10-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2927\" target=\"_blank\">Stardrifter RPG Playtest Part 09</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2928\" target=\"_blank\">2928</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-10-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2928\" target=\"_blank\">Building markov chains with 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=2929\" target=\"_blank\">2929</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-10-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2929\" target=\"_blank\">Recovering Files from a Dead MacBook Air</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=2930\" target=\"_blank\">2930</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-10-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2930\" target=\"_blank\">Better Social Media 04 - Diaspora</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=2931\" target=\"_blank\">2931</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-10-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2931\" target=\"_blank\">Wallabag for on premises article aggregation</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0300.html\" target=\"_blank\">b-yeezi</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2932\" target=\"_blank\">2932</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-10-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2932\" target=\"_blank\">Stardrifter RPG Playtest Part 10</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2933\" target=\"_blank\">2933</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-10-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2933\" target=\"_blank\">A walk through my PifaceCAD Python code – Part 1</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=2934\" target=\"_blank\">2934</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-10-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2934\" target=\"_blank\">Server Basics 106: Namespaces and containers</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</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 7 comments on\n5 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2895#comments\" target=\"_blank\">hpr2895</a></strong>\n(2019-09-06) \"<em>The work of fire fighters, part 2</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2895#3\" target=\"_blank\">Comment 3</a>:\nDon on 2019-10-20:\n\"great podcast\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2900#comments\" target=\"_blank\">hpr2900</a></strong>\n(2019-09-13) \"<em>Better Social Media 01 - Introduction</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=2900#1\" target=\"_blank\">Comment 1</a>:\nJeroen baten on 2019-10-05:\n\"Hope you will find time to discuss Okuna\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2900#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2019-10-05:\n\"No plans for now\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2906#comments\" target=\"_blank\">hpr2906</a></strong>\n(2019-09-23) \"<em>Feature Engineering for Data-Driven Decision Making</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0300.html\" target=\"_blank\">b-yeezi</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2906#2\" target=\"_blank\">Comment 2</a>:\nGabriel Evenfire on 2019-10-08:\n\"Love the idea here...\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2909#comments\" target=\"_blank\">hpr2909</a></strong>\n(2019-09-26) \"<em>ONICS Basics Part 3:  Networking Fundamentals</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0259.html\" target=\"_blank\">Gabriel Evenfire</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2909#2\" target=\"_blank\">Comment 2</a>:\nGabriel Evenfire on 2019-10-08:\n\"Thanks for the feedback\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2909#3\" target=\"_blank\">Comment 3</a>:\ngerryk on 2019-10-17:\n\"Yet another top episode\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2911#comments\" target=\"_blank\">hpr2911</a></strong>\n(2019-09-30) \"<em>my internet connection</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=2911#1\" target=\"_blank\">Comment 1</a>:\nBeeza on 2019-10-05:\n\"HPR 2911\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 7 comments on 5 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2913#comments\" target=\"_blank\">hpr2913</a></strong>\n(2019-10-02) \"<em>Windows, SDN, and Firewalls</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0231.html\" target=\"_blank\">Beto</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2913#1\" target=\"_blank\">Comment 1</a>:\nClaudioM on 2019-10-02:\n\"+1 on Chocolatey Recommendation\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2915#comments\" target=\"_blank\">hpr2915</a></strong>\n(2019-10-04) \"<em>Intro - My Recording Setup</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0380.html\" target=\"_blank\">Carl</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2915#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2019-10-04:\n\"More shows on ....\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2921#comments\" target=\"_blank\">hpr2921</a></strong>\n(2019-10-14) \"<em>Geocaching with the family</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=2921#1\" target=\"_blank\">Comment 1</a>:\njezra on 2019-10-17:\n\"what a fun adventure\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2921#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2019-10-17:\n\"I loved the show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2925#comments\" target=\"_blank\">hpr2925</a></strong>\n(2019-10-18) \"<em>LinuxLugCast\'s Memorial for FiftyOneFifty </em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2925#1\" target=\"_blank\">Comment 1</a>:\nlostnbronx on 2019-10-19:\n\"I Never Met Fifty, But I Knew Him\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2928#comments\" target=\"_blank\">hpr2928</a></strong>\n(2019-10-23) \"<em>Building markov chains with 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=2928#1\" target=\"_blank\">Comment 1</a>:\nb-yeezi on 2019-10-29:\n\"Thanks for this episode\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2928#2\" target=\"_blank\">Comment 2</a>:\nTuula on 2019-10-31:\n\"thanks for the feedback!\"</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/2019-October/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2019-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=\"floss-weekly\">FLOSS Weekly</h3>\n<p><a href=\"https://hackerpublicradio.org/correspondents/0030.html\">Ken Fallon</a> and <a href=\"https://hackerpublicradio.org/correspondents/0198.html\">Ahuka</a> appeared on FLOSS Weekly <a href=\"https://twit.tv/shows/floss-weekly/episodes/553?autostart=false\">Episode 553</a> on October 30<sup>th</sup> 2019 to talk about Hacker Public Radio.</p>\n<h3 id=\"oggcamp-2019\">OggCamp 2019</h3>\n<p>There was an HPR presence at OggCamp 2019. This was held at The Manchester Conference Centre during the weekend of October 19<sup>th</sup> and 20<sup>th</sup> 2019. We had an HPR table, which was manned by many HPR hosts and received many visitors. Ken recorded interviews which will be released later in November.</p>\n<h3 id=\"fosdem-2020\">FOSDEM 2020</h3>\n<p>A request has been made to get a Podcasters table at FOSDEM 2020.</p>\n<h3 id=\"hpr-on-podcast-networks\">HPR on podcast networks</h3>\n<p>We need some help getting HPR on Google Podcasts, Stitcher, Soundcloud, etc.</p>\n<h3 id=\"ken-versus-espeak\">Ken versus <em>espeak</em></h3>\n<p>Which is preferable, the <em>espeak</em> show summary or Ken’s new reading of the information?</p>\n<h3 id=\"watching-star-wars-for-the-first-time\">Watching Star Wars for the first time</h3>\n<p>A question: should it be watched in Episode or Production Order?</p>\n<h3 id=\"tags-and-summaries\">Tags and Summaries</h3>\n<p>There were no tag or summary updates in the past month.</p>\n<p>If you would like to contribute to the tag/summary project visit the summary page at <a href=\"https://hackerpublicradio.org/report_missing_tags.php\" class=\"uri\">https://hackerpublicradio.org/report_missing_tags.php</a> and follow the instructions there.</p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2643,'2018-09-19','The Payoff In Storytelling',677,'A brief look at the emotional structure of story endings.','<p>Lostnbronx takes a quick look at how story endings need to be structured in order to be satisfying. Lots of endings are possible, but they don’t all require the same treatment. Some can be abrupt, some can be sad, but all of them need to meet certain emotional expectations.</p>\r\n',107,105,0,'CC-0','stories,storytelling,endings,lostnbronx',0,0,1),
(2644,'2018-09-20','Error on show 2642',59,'Error error','<p>The right podcast is:</p>\r\n<ul>\r\n<li><strong>Kvalificerat Hemligt</strong> <a href=\"https://feeds.soundcloud.com/users/soundcloud:users:167287536/sounds.rss\" class=\"uri\">https://feeds.soundcloud.com/users/soundcloud:users:167287536/sounds.rss</a></li>\r\n</ul>',309,75,0,'CC-BY-SA','podcast, swedish, correction',0,0,1),
(2648,'2018-09-26','Explaining the controls on my Amateur HF Radio Part 1',1646,'I attempt to explain the controls on my Kenwood TS940S HF Amateur Radio.','<p>In this episode, I cover the transmit section controls.</p>\r\n<h2 id=\"related-links-for-the-ts940s-amateur-hf-radio\">Related links for the TS940S Amateur HF Radio</h2>\r\n<ul>\r\n<li><p>TS940 Overview<br />\r\n<a href=\"https://www.universal-radio.com/catalog/hamhf/ts940s.html\" class=\"uri\">https://www.universal-radio.com/catalog/hamhf/ts940s.html</a></p></li>\r\n<li><p>TS940 Review<br />\r\n<a href=\"https://www.eham.net/reviews/detail/239\" class=\"uri\">https://www.eham.net/reviews/detail/239</a></p></li>\r\n<li><p>TS940 User Manual<br />\r\n<a href=\"https://www.radiomanual.info/schemi/TS940_user.pdf\" class=\"uri\">https://www.radiomanual.info/schemi/TS940_user.pdf</a></p></li>\r\n</ul>\r\n<h3 id=\"further-info-and-clarification\">Further info and clarification</h3>\r\n<p>Below I’ll cover some of the items I missed or didn’t understand when I recorded my off the cuff episode. If I miss something you may find it in the user manual link above.</p>\r\n<p>Full and Semi break-in mode is used when operating in CW mode (Morse Code). In full break-in mode the radio jumps back into receive the moment the mores key is released this way you can hear if the station is trying to contact in-between each press of the key. This is very demanding on the radio as it must switch very quickly back into receive mode it can also be distracting for the operator hearing hissing noise between each dot and dash. Semi break-in mode is a bit like using VOX mode in speech the radio goes silent between each dot and dash but will return to receive after the mores key is released for a predetermined time interval.</p>\r\n<p>The digital display used on the main display of the TS940S is apparently a Vacuum Fluorescent Display not the more usual LED of the time.</p>\r\n<p>The TS 940S was manufactured around 1986, so unbelievably that means my wonderful radio that to me looks fairly modern is around 30 years Old! I believe this HF radio was top of the line for Kenwood back then.</p>\r\n<p>The Auto and thru button is used to connect the auto tuner in line with the antenna. When AUTO is selected the radio is connected to the Auto internal tuner and then to the antenna. In THRU the radio bypasses the auto tuner and connects the radio directly to the antenna.</p>\r\n<h3 id=\"the-speech-compressor\">The Speech Compressor</h3>\r\n<p>During SSB operation it is desirable to increase the relative “talk power” of the transceiver by using speech processor circuitry. The speech processor control is set by using the in and out rotary control. The in control level is set by putting the meter into Comp and adjusting the in control to no more than 10 dB of compression. The out control level is set by putting the meter into ALC and adjusting the out control to ensure the meter stays within the ALC section of the meter.</p>\r\n<p>IC meter position indicates the power transistor collector current</p>\r\n<p>VC meter position indicates the power transistor collector voltage</p>\r\n<p>Noise Blanker 1 (NB1)<br />\r\nFor pulse type noise, such as generated by automatic ignition systems.</p>\r\n<p>Noise Blanker 2 (NB2)<br />\r\nFor long duration pulse noise, like the Russian woodpecker.</p>',201,43,1,'CC-BY-SA','Amateur, Radio, Ham',0,0,1),
(2650,'2018-09-28','My Pocket Knife',505,'Shane talks about his pocket knife for a few minutes.','<p>\r\nThe pocket knife Shane talks about is the Number 6 knife made by the French company Opinel, It costs about $20 (Canadian). This version has a walnut handle.\r\n</p>\r\n<p>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2650.jpg\">\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2650-small.jpg\" alt=\"Opinel pocket knife with ham and cheese sandwich\"/>\r\n</a>\r\n</p>\r\n',250,23,0,'CC-BY-SA','lock knife,Opinel knife',0,0,1),
(2653,'2018-10-03','Using the EXACT Function in Excel',199,'Shane explains that he just learned a simple and useful Excel function.','<p>The function looks like <code>=EXACT(A1,D1)</code> and its purpose is to tell you if <code>A1</code> contains the exact same value as <code>D1</code> or not.</p>\r\n',250,0,0,'CC-BY-SA','Excel',0,0,1),
(2654,'2018-10-04','Making Crepes',767,'Shane makes crepes from a simple recipe. ','<h2 id=\"crepe-recipe\">Crepe Recipe:</h2>\r\n<ul>\r\n<li>1 cup of flour</li>\r\n<li>1 cup of milk</li>\r\n<li>1 egg</li>\r\n<li>1 pinch of salt</li>\r\n</ul>\r\n<h3 id=\"cinnamon-sugar-mixture-recipe\">Cinnamon Sugar Mixture Recipe:</h3>\r\n<ul>\r\n<li>1 part cinnamon (or less)</li>\r\n<li>8 parts sugar</li>\r\n</ul>\r\n',250,93,0,'CC-BY-SA','crepes, cooking, parenting',0,0,1),
(2655,'2018-10-05','Sleep Apnea and Afib',705,'How Sleep Apnea and Atrial Fibrillation entered my life','<p>The last of my personal health issue shows covers two related issues, Sleep Apnea and Atrial Fibrillation. They are related because Sleep Apnea is a cause of Atrial Fibrillation. Fortunately both can be controlled if you follow medical directions.</p>\r\n<ul>\r\n<li><a href=\"https://www.mayoclinic.org/diseases-conditions/sleep-apnea/symptoms-causes/syc-20377631\" class=\"uri\">https://www.mayoclinic.org/diseases-conditions/sleep-apnea/symptoms-causes/syc-20377631</a></li>\r\n<li><a href=\"https://www.heart.org/en/health-topics/atrial-fibrillation/what-is-atrial-fibrillation-afib-or-af\" class=\"uri\">https://www.heart.org/en/health-topics/atrial-fibrillation/what-is-atrial-fibrillation-afib-or-af</a></li>\r\n<li><a href=\"https://www.mayoclinic.org/diseases-conditions/sleep-apnea/symptoms-causes/syc-20377631\" class=\"uri\">https://www.mayoclinic.org/diseases-conditions/sleep-apnea/symptoms-causes/syc-20377631</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=352\" class=\"uri\">https://www.palain.com/?page_id=352</a></li>\r\n</ul>\r\n',198,100,0,'CC-BY-SA','Health, Medicine, Apnea, Heart, Afib, Atrial Fibrillation',0,0,1),
(2656,'2018-10-08','Explaining the controls on my Amateur HF Radio Part 2',844,'In this episode I cover the mode and frequency selection controls of my Kenwood TS 940S','<h2 id=\"radio-mode-and-frequency-controls-on-amateur-hf-radio-ts940s\">Radio Mode and frequency controls on Amateur HF Radio TS940S</h2>\r\n<ul>\r\n<li><p>UK HF band plan information<br />\r\n<a href=\"https://rsgb.org/main/operating/band-plans/hf/\" class=\"uri\">https://rsgb.org/main/operating/band-plans/hf/</a></p></li>\r\n<li><p>Morse code (CW), Carrier Wave<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Morse_code\" class=\"uri\">https://en.wikipedia.org/wiki/Morse_code</a></p></li>\r\n<li><p>Article about Sideband, including Lower Side Band (LSB) and Upper Side Band (USB)<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Sideband\" class=\"uri\">https://en.wikipedia.org/wiki/Sideband</a></p></li>\r\n<li><p>Amplitude Modulation (AM)<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Amplitude_modulation\" class=\"uri\">https://en.wikipedia.org/wiki/Amplitude_modulation</a></p></li>\r\n<li><p>Frequency Modulation (FM)<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Frequency_modulation\" class=\"uri\">https://en.wikipedia.org/wiki/Frequency_modulation</a></p></li>\r\n<li><p>Frequency Shift Keying (FSK)<br />\r\nNote the CW ident di da dit or dot dash dot is not as I thought the letter “K” in Morse code, silly me, it’s actually the letter “R”. Told you I wasn’t great at Morse.<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Frequency-shift_keying\" class=\"uri\">https://en.wikipedia.org/wiki/Frequency-shift_keying</a></p></li>\r\n</ul>\r\n<p>The “T-F Set” button is used to set the Transmit frequency when working in split mode. In split mode, you can set the radio to transmits on one frequency and receives on a different frequency.</p>',201,43,1,'CC-BY-SA','Amateur, Radio, Ham',0,0,1),
(2665,'2018-10-19','Exercise and Diet',1041,'Exercise and Diet are primary to health','<p>The best things you can do to maximize your health are to watch what you eat and make sure you get exercise. These are some of the primary tools in my kit for staying healthy and living a long life.</p>\r\n<ul>\r\n<li><a href=\"https://www.amazon.com/Dr-Bernsteins-Diabetes-Solution-Achieving-ebook/dp/B004QZ9PC4/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1483459301&amp;sr=1-1&amp;keywords=dr+bernstein+diabetes+solution\" class=\"uri\">https://www.amazon.com/Dr-Bernsteins-Diabetes-Solution-Achieving-ebook/dp/B004QZ9PC4/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1483459301&amp;sr=1-1&amp;keywords=dr+bernstein+diabetes+solution</a></li>\r\n<li><a href=\"https://www.diabetes-book.com/\" class=\"uri\">https://www.diabetes-book.com/</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=354\" class=\"uri\">https://www.palain.com/?page_id=354</a></li>\r\n</ul>\r\n',198,100,0,'CC-BY-SA','Health, Medicine, Exercise, Diet',0,0,1),
(2675,'2018-11-02','YouTube Playlists',767,'How to solve a problem with following YouTube channels','<p>I am subscribed to a number of YouTube channels, and I found a need to be able to watch all of the videos in order for certain channels. This describes how to do it.</p>\r\n<ul>\r\n<li><a href=\"https://chrome.google.com/webstore/detail/iridium-for-youtube/gbjmgndncjkjfcnpfhgidhbgokofegbl?hl=en\" class=\"uri\">https://chrome.google.com/webstore/detail/iridium-for-youtube/gbjmgndncjkjfcnpfhgidhbgokofegbl?hl=en</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=372\" class=\"uri\">https://www.palain.com/?page_id=372</a></li>\r\n</ul>\r\n',198,0,0,'CC-BY-SA','YouTube, Channels, Playlists',0,0,1),
(2685,'2018-11-16','Scientific and Medical Reports',854,'We need to be careful about evaluating news reports about medical studies','<p>We get bombarded with breathless news stories about medical breakthroughs that may not be as reliable as they are presented. This begins our look at what is reliable and what you need to watch out for.</p>\r\n<ul>\r\n<li><a href=\"https://journalistsresource.org/studies/society/news-media/health-research-misinformation-tips\" class=\"uri\">https://journalistsresource.org/studies/society/news-media/health-research-misinformation-tips</a></li>\r\n<li><a href=\"https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0196346\" class=\"uri\">https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0196346</a></li>\r\n<li><a href=\"https://journals.plos.org/\" class=\"uri\">https://journals.plos.org/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/ArXiv\" class=\"uri\">https://en.wikipedia.org/wiki/ArXiv</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=356\" class=\"uri\">https://www.palain.com/?page_id=356</a></li>\r\n</ul>',198,100,0,'CC-BY-SA','Health, Medicine, Medical Studies, News Reports',0,0,1),
(2695,'2018-11-30','Problems with Studies',798,'Some principles for evaluating medical studies','<p>All medical studies are not alike. Some are of higher quality than others, and the conclusions they reach need to be evaluated based on some principles of good research. Here we take a look at some warning signs of bad or unreliable studies.</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Replication_crisis\" class=\"uri\">https://en.wikipedia.org/wiki/Replication_crisis</a></li>\r\n<li><a href=\"https://www.wired.com/story/social-science-reproducibility\" class=\"uri\">https://www.wired.com/story/social-science-reproducibility</a></li>\r\n<li><a href=\"https://www.sciencemag.org/news/2017/01/rigorous-replication-effort-succeeds-just-two-five-cancer-papers\" class=\"uri\">https://www.sciencemag.org/news/2017/01/rigorous-replication-effort-succeeds-just-two-five-cancer-papers</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Andrew_Wakefield\" class=\"uri\">https://en.wikipedia.org/wiki/Andrew_Wakefield</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Hwang_Woo-suk#Controversies\" class=\"uri\">https://en.wikipedia.org/wiki/Hwang_Woo-suk#Controversies</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Yoshiki_Sasai\" class=\"uri\">https://en.wikipedia.org/wiki/Yoshiki_Sasai</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Data_dredging\" class=\"uri\">https://en.wikipedia.org/wiki/Data_dredging</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=Gx0fAjNHb1M\" class=\"uri\">https://www.youtube.com/watch?v=Gx0fAjNHb1M</a></li>\r\n<li><a href=\"https://journals.plos.org/plosbiology/article?id=10.1371/journal.pbio.1002106\" class=\"uri\">https://journals.plos.org/plosbiology/article?id=10.1371/journal.pbio.1002106</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=358\" class=\"uri\">https://www.palain.com/?page_id=358</a></li>\r\n</ul>',198,100,0,'CC-BY-SA','Health, Medicine, Medical Studies, Evaluating Studies',0,0,1),
(2705,'2018-12-14','Evidence-based Medicine',1013,'Medicine should be based on objective scientific evidence','<p>Basing medical care and treatment on the scientific evidence should be the norm, but frequently it is not. Doctors may treat based on how they have always done it, or how other doctors do it (i.e. best practices), but there is a movement now to reorient medicine to follow the best scientific guidelines.</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Evidence-based_medicine\" class=\"uri\">https://en.wikipedia.org/wiki/Evidence-based_medicine</a></li>\r\n<li><a href=\"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3789163/\" class=\"uri\">https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3789163/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/N_ray\" class=\"uri\">https://en.wikipedia.org/wiki/N_ray</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=360\" class=\"uri\">https://www.palain.com/?page_id=360</a></li>\r\n</ul>\r\n',198,100,0,'CC-BY-SA','Health, Medicine, Evidence, Science',0,0,1),
(2669,'2018-10-25','Additional ancillary Bash tips - 12',1702,'Making decisions in Bash (part 4)','<h1 id=\"additional-ancillary-bash-tips---12\">Additional ancillary Bash tips - 12</h1>\r\n<h2 id=\"making-decisions-in-bash\">Making decisions in Bash</h2>\r\n<p>This is the twelfth episode in the <em>Bash Tips</em> sub-series. It is the fourth of a group of shows about making decisions in Bash.</p>\r\n<p>In the last three episodes we saw the types of test Bash provides, and we looked briefly at some of the commands that use these tests. We looked at conditional expressions and all of the operators Bash provides to do this. We concentrated particularly on string comparisons which use <em>glob</em> and <em>extended glob</em> patterns.</p>\r\n<p>Now we want to look at the other form of string comparison, using <em>regular expressions</em>.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2669/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Conditional-Constructs\">“Bash Conditional Constructs”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bash-Conditional-Expressions\">“Bash Conditional Expressions”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins\">“Bourne Shell Builtins”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Pattern-Matching\">“Bash Pattern Matching”</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html\">“<em>POSIX Shell Command Language</em>”</a> - documentation of all of the POSIX features mentioned in this series.</p></li>\r\n<li><a href=\"https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04\">“Extended Regular Expressions”</a></li>\r\n<li><p><a href=\"https://tldp.org/LDP/abs/html/x17129.html\">“A Brief Introduction to Regular Expressions”</a></p></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2659\">HPR episode 2659 “<em>Further ancillary Bash tips - 11</em>”</a></li>\r\n</ol></li>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2669/bash12_ex1.sh\">bash12_ex1.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2669/bash12_ex2.sh\">bash12_ex2.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2669/bash12_ex3.sh\">bash12_ex3.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2669/bash12_ex4.sh\">bash12_ex4.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2669/bash12_ex5.sh\">bash12_ex5.sh</a></li>\r\n</ul></li>\r\n</ul>',225,42,1,'CC-BY-SA','Bash,test,regular expression',0,0,1),
(2657,'2018-10-09','Why we are all going to shit in 30 years due to computers',1555,'Some thoughts about the increasing impact of automation','<p>Now, this is not a doom and gloom lecture.</p>\r\n<p>Actually it is a talk about what is going to happen in the next 30 years.</p>\r\n<p>It is a talk about what is called “postcapitalism”.</p>\r\n<p>It is a talk about how almost all jobs are going to disappear due to automation. But also how we are going to think about this this and come up with solutions.</p>\r\n<p>It talks about the three big challenges we need to face.</p>\r\n<p>And yes, this involves you as well!</p>\r\n',369,0,1,'CC-BY-SA','prediction,post-capitalism',0,0,1),
(2658,'2018-10-10','Questions on podcast production',2784,'Al asks Dave questions about podcast production','<h1>HPR Chat with Al</h1>\r\n<p>Al asks Dave a number of questions about podcast audio recording and post-production.</p>\r\n<h2>Al is thinking of doing National Podcast Post Month in November</h2>\r\n<p>National Podcast Post Month (or <a href=\"https://napodpomo.org/\">NaPodPoMo</a>) is a challenge in a similar vein to National Novel Writing Month (or <a href=\"https://nanowrimo.org/\">NaNoWriMo</a>) in which participants are challenged to produce and publish a piece of audio as a podcast, every day for the month of November.</p>\r\n<h2>Bad podcast audio</h2>\r\n<p>Audio quality is as important as the content that\'s being presented. Bad audio is going to be what causes new podcasters the most damage in subscriber numbers. An example of good audio is the true crime podcast, <a href=\"https://oneeyeopen.podbean.com/\">One Eye Open</a>, which Dave started listening to a couple of weeks ago. He also picked up a couple of other true crime podcasts as a result of listening to One Eye Open where the audio quality is so bad, that they can\'t be heard!</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Loudness\">Loudness</a> is a measurement of how loud something is perceived to be. Levelling is a process of ensuring that individual tracks in a podcasts are an an equivalent level, but also the podcast overall is at an equivalent level to other podcasts that have been levelled the same way.</p>\r\n<h2>Our setups</h2>\r\n<p>Al and Dave have a very similar microphone setup.</p>\r\n<ul>\r\n<li><a href=\"https://www.amazon.co.uk/Samson-SAQ2U-Microphone-Recording-Pack/dp/B001R747SG/\">Samson Q2U</a> - XLR and USB capable microphone</li>\r\n<li>Pop filters and wind screens</li>\r\n<li>Boom arm</li>\r\n<li>Shock mount</li>\r\n</ul>\r\n<h2>What is a compressor</h2>\r\n<p>The non-technical definition is that it brings up the quiet bits and brings down the louder bits so that your voice has less of a variance if you shout or whisper.</p>\r\n<h2>Different microphone types</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Microphone#Cardioid\">Cardioid</a> - focuses on sounds coming from in front of the mic</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Microphone#Omnidirectional\">Omnidirectional</a> - can theoretically pick up sound from all directions</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Microphone#Dynamic_microphone\">Dynamic</a> - well suited for vocal use</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Microphone#Condenser_microphone\">Condenser</a> - overall better quality sound than dynamic, but more susceptible to background noise, so requires a really quiet studio environment</li>\r\n</ul>\r\n<h2>Your level</h2>\r\n<p>You can measure your own level in <a href=\"https://www.audacityteam.org/\">Audacity</a> - make sure you stay in the green! If you stray into yellow or even red, either lower your level or move slightly away from the mic.</p>\r\n<h2>Other people\'s levels</h2>\r\n<p>Concentrate on your own, get others to manage theirs. If you\'re recording multiple tracks, it <em>can</em> be managed in post-production, but once it\'s been merged into a single track it\'s virtually impossible.</p>\r\n<h2>File formats</h2>\r\n<ul>\r\n<li>FLAC/ALAC - <a href=\"https://en.wikipedia.org/wiki/Lossless_compression#Audio\">lossless</a> formats</li>\r\n<li>MP3/OGG/M4A - <a href=\"https://en.wikipedia.org/wiki/Data_compression#Audio\">lossy</a> formats</li>\r\n</ul>\r\n<p>Record in a lossless format, and do your edits and post-production in a lossless format. Only <a href=\"https://en.wikipedia.org/wiki/Transcoding\">transcode</a> to a lossy format once you\'re ready to publish your final file.</p>\r\n<h2>Monitoring</h2>\r\n<p>If you\'re recording yourself, and you don\'t want to hear yourself through headphones, take the headphones off.</p>\r\n<p>If you\'re recording with someone else who is not in the same room, you are better off hearing yourself through your headphones at the same level as the person you\'re talking to.</p>\r\n<h2>Post-production</h2>\r\n<ul>\r\n<li>Use <a href=\"https://www.audacityteam.org/\">Audacity</a> to:\r\n<ul>\r\n<li>align the tracks so that everyone is in the right place</li>\r\n<li>convert coughs, sneezes, burps, keyboard sounds, mouse clicks, etc to silence</li>\r\n</ul></li>\r\n<li>Use <a href=\"https://auphonic.com\">Auphonic</a> to:\r\n<ul>\r\n<li>level the individual tracks so that everyone sounds as &quot;<a href=\"https://en.wikipedia.org/wiki/Loudness\">loud</a>&quot; as anyone else</li>\r\n<li>merge the individual tracks into a single output file (a Multitrack production)</li>\r\n</ul></li>\r\n<li>Dave also gives a specific use case for adding music into the final mix.</li>\r\n</ul>\r\n<h2>NaPodPoMo revisited</h2>\r\n<p>This will be Al\'s first attempt at NaPodPoMo, but not for Dave. Dave wants to make sure that he plans for this year, so he doesn\'t run out of material on day 7!!</p>\r\n<p>Dave will interview another NaPodPoMo participant at least once a week during November. Looks like Al will be one of them!</p>\r\n<ul>\r\n<li>Al\'s NaPodPoMo <a href=\"https://al.christman.co.uk/\">website</a> and <a href=\"https://al.christman.co.uk/feed/mp3/\">RSS feed</a></li>\r\n<li>Dave\'s NaPodPoMo <a href=\"https://thelovebug.org/napodpomo-2018/\">website</a> and <a href=\"https://thelovebug.org/feed/podcast/napodpomo-2018\">RSS feed</a></li>\r\n</ul>\r\n<h2>Dave\'s final thought</h2>\r\n<p>Podcasting isn\'t rocket science. You don\'t need lots of expensive equipment to produce a podcast. You just need something to record into (e.g. a mobile phone or portable recorder) and somewhere to host it. You can host on your own website or on one of a number of free services, like <a href=\"https://anchor.fm\">Anchor</a>, <a href=\"https://audioboom.com/\">AudioBoom</a>, or indeed <a href=\"https://hackerpublicradio.org\">Hacker Public Radio</a>!</p>\r\n<h2>The obligatory podcast plug</h2>\r\n<ul>\r\n<li><a href=\"https://www.adminadminpodcast.co.uk\">Admin Admin Podcast</a></li>\r\n<li><a href=\"https://thebugcast.org\">The Bugcast</a></li>\r\n</ul>\r\n<h2>Errata</h2>\r\n<ul>\r\n<li>Dave originally said that the pickup pattern that picks up 360 degrees was &quot;unidirectional&quot; - it should have been &quot;omnidirectional&quot; and has been fixed in the edit, but it sounds like it was added in afterwards... which, of course, it was!!</li>\r\n</ul>\r\n',290,0,0,'CC-BY-SA','Admin Admin Podcast',0,0,1),
(2661,'2018-10-15','My Music Production Setup',679,'ClaudioM shares his music production setup.','<h2 id=\"previous-music-production-setup\">Previous Music Production Setup</h2>\r\n<ul>\r\n<li>Master Tracks Pro: <a href=\"https://en.wikipedia.org/wiki/Master_Tracks_Pro\" class=\"uri\">https://en.wikipedia.org/wiki/Master_Tracks_Pro</a></li>\r\n<li>Kawai K4 synthesizer: <a href=\"https://www.polynominal.com/site/studio/gear/synth/kawai-k4/kawai-k4.html\" class=\"uri\">https://www.polynominal.com/site/studio/gear/synth/kawai-k4/kawai-k4.html</a></li>\r\n<li>Apple GarageBand: <a href=\"https://en.wikipedia.org/wiki/GarageBand\" class=\"uri\">https://en.wikipedia.org/wiki/GarageBand</a></li>\r\n</ul>\r\n<h2 id=\"current-music-production-setup\">Current Music Production Setup</h2>\r\n<ul>\r\n<li>Qtractor: <a href=\"https://en.wikipedia.org/wiki/Qtractor\" class=\"uri\">https://en.wikipedia.org/wiki/Qtractor</a></li>\r\n<li>JACK: <a href=\"https://en.wikipedia.org/wiki/JACK_Audio_Connection_Kit\" class=\"uri\">https://en.wikipedia.org/wiki/JACK_Audio_Connection_Kit</a></li>\r\n<li>QJackCtl: <a href=\"https://en.wikipedia.org/wiki/Qjackctl\" class=\"uri\">https://en.wikipedia.org/wiki/Qjackctl</a></li>\r\n<li>Hydrogen Drum Machine: <a href=\"https://en.wikipedia.org/wiki/Hydrogen_(software)\" class=\"uri\">https://en.wikipedia.org/wiki/Hydrogen_(software)</a></li>\r\n<li>Yoshimi: <a href=\"https://en.wikipedia.org/wiki/Yoshimi_(synthesizer)\" class=\"uri\">https://en.wikipedia.org/wiki/Yoshimi_(synthesizer)</a></li>\r\n<li>Amsynth: <a href=\"https://en.wikipedia.org/wiki/Amsynth\" class=\"uri\">https://en.wikipedia.org/wiki/Amsynth</a></li>\r\n<li>Fluidsynth: <a href=\"https://en.wikipedia.org/wiki/FluidSynth\" class=\"uri\">https://en.wikipedia.org/wiki/FluidSynth</a></li>\r\n<li>WhySynth: <a href=\"https://linuxsynths.com/WhySynthBanksDemos/whysynth.html\" class=\"uri\">https://linuxsynths.com/WhySynthBanksDemos/whysynth.html</a></li>\r\n<li>QMidiArp: <a href=\"https://qmidiarp.sourceforge.net/\" class=\"uri\">https://qmidiarp.sourceforge.net/</a></li>\r\n<li>Hexter: <a href=\"https://linuxsynths.com/HexterPatchesDemos/hexter.html\" class=\"uri\">https://linuxsynths.com/HexterPatchesDemos/hexter.html</a></li>\r\n<li>Calf Plugins: <a href=\"https://en.wikipedia.org/wiki/Calf_Studio_Gear\" class=\"uri\">https://en.wikipedia.org/wiki/Calf_Studio_Gear</a></li>\r\n<li>Audacity: <a href=\"https://en.wikipedia.org/wiki/Audacity_(audio_editor)\" class=\"uri\">https://en.wikipedia.org/wiki/Audacity_(audio_editor)</a></li>\r\n</ul>\r\n<h2 id=\"notable-mentions\">Notable Mentions</h2>\r\n<ul>\r\n<li>LMMS: <a href=\"https://en.wikipedia.org/wiki/LMMS\" class=\"uri\">https://en.wikipedia.org/wiki/LMMS</a></li>\r\n</ul>\r\n<h2 id=\"linux-oriented-links\">Linux-oriented Links</h2>\r\n<ul>\r\n<li>Debian Ports page: <a href=\"https://www.ports.debian.org\" class=\"uri\">https://www.ports.debian.org</a></li>\r\n<li>Debian Ports PowerPC64: <a href=\"https://wiki.debian.org/PPC64\" class=\"uri\">https://wiki.debian.org/PPC64</a></li>\r\n<li>Fedora: <a href=\"https://getfedora.org\" class=\"uri\">https://getfedora.org</a></li>\r\n</ul>\r\n',152,0,0,'CC-BY-SA','music, multimedia, audio, linux, musicproduction, foss, floss',0,0,1),
(2679,'2018-11-08','Extra ancillary Bash tips - 13',2202,'Making decisions in Bash (part 5)','<h1 id=\"extra-ancillary-bash-tips---13\">Extra ancillary Bash tips - 13</h1>\r\n<h2 id=\"making-decisions-in-bash\">Making decisions in Bash</h2>\r\n<p>This is the thirteenth episode in the <em>Bash Tips</em> sub-series. It is the fifth and final of a group of shows about making decisions in Bash.</p>\r\n<p>In the last four episodes we saw the types of test Bash provides, and we looked briefly at some of the commands that use these tests. We looked at conditional expressions and all of the operators Bash provides to do this. We concentrated particularly on string comparisons which use <em>glob</em> and <em>extended glob</em> patterns then we devoted an episode to Bash <em>regular expressions</em>.</p>\r\n<p>Now we want to look at the final topic within regular expressions, the use of <em>capture groups</em>.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2679/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Conditional-Constructs\">“Bash Conditional Constructs”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bash-Conditional-Expressions\">“Bash Conditional Expressions”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins\">“Bourne Shell Builtins”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin\">“The <code>set</code> Builtin”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Pattern-Matching\">“Bash Pattern Matching”</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html\">“<em>POSIX Shell Command Language</em>”</a> - documentation of all of the POSIX features mentioned in this series.</p></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2659\">HPR episode 2659 “<em>Further ancillary Bash tips - 11</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2669\">HPR episode 2669 “<em>Additional ancillary Bash tips - 12</em>”</a></li>\r\n</ol></li>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2679/bash13_ex1.sh\">bash13_ex1.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2679/bash13_ex2.sh\">bash13_ex2.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2679/bash13_ex3.sh\">bash13_ex3.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2679/bash13_ex4.sh\">bash13_ex4.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2679/bash13_ex4.txt\">bash13_ex4.txt</a></li>\r\n</ul></li>\r\n</ul>',225,42,1,'CC-BY-SA','Bash,extended test,regular expression,capture group,BASH_REMATCH,back reference',0,0,1),
(2690,'2018-11-23','A chat about the HiveMQ Broker',425,'Ken talks with Florian Raschbichler and Anja Helmbrecht-Schaar about HiveMQ','<p>\r\nI had the opportunity to chat with Florian Raschbichler and Anja Helmbrecht-Schaar from the company <a href=\"https://www.dc-square.de/en/\">dc-square GmbH</a>, who are developers of the <a href=\"https://www.hivemq.com/\">HiveMQ</a> Broker.\r\n</p>\r\n<p>\r\nIf you are new to <a href=\"https://en.wikipedia.org/wiki/MQTT\">MQTT</a> they have <a href=\"https://www.hivemq.com/blog/mqtt-essentials/page/2/\">the ultimate kickstart for MQTT beginners</a>. They also maintain an <a href=\"https://www.hivemq.com/mqtt-client-library-encyclopedia\">MQTT Client Library Encyclopedia</a>\r\n</p>\r\n\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"https://www.hivemq.com/\">https://www.hivemq.com/</a></li>\r\n<li><a href=\"https://www.dc-square.de/en/\">https://www.dc-square.de/en/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Comparison_of_MQTT_Implementations\">https://en.wikipedia.org/wiki/Comparison_of_MQTT_Implementations</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/MQTT\">https://en.wikipedia.org/wiki/MQTT</a></li>\r\n<li><a href=\"https://www.hivemq.com/blog/mqtt-essentials/page/2/\">https://www.hivemq.com/blog/mqtt-essentials/page/2/</a></li>\r\n<li><a href=\"https://github.com/hivemq\">https://github.com/hivemq</a></li>\r\n<li><a href=\"https://www.hivemq.com/mqtt-client-library-encyclopedia\">https://www.hivemq.com/mqtt-client-library-encyclopedia</a></li>\r\n</ul>',30,78,0,'CC-BY-SA','MQTT, HiveMQ, dc-square GmbH',0,0,1),
(2662,'2018-10-16','Repairing a motherboard',196,'I repair a motherboard and get a old tower working again.','<h2 id=\"continued-from-hpr2549-dvd-ripping-using-old-hardware\">Continued from hpr2549 :: DVD ripping using old hardware</h2>\r\n<p>Acquired new user tower, replaced old tower with blown caps<br />\r\nDell Pentium 4 CPU 3.20GHz, 2Gb RAM</p>\r\n<pre><code>sudo shred -n 5 -vz /dev/sdX\r\n\r\n  -n, --iterations=N \r\n  -v, --verbose\r\n    show progress \r\n  -z, --zero\r\n    add a final overwrite with zeros to hide shredding</code></pre>\r\n<p>Used same Slackware USB from old tower</p>\r\n<p>Used soldering iron from Amazon - Weller WLC100 40-Watt Soldering Station<br />\r\n<a href=\"https://www.amazon.com/gp/product/B000AS28UC/ref=oh_aui_detailpage_o02_s00?ie=UTF8&amp;psc=1\" class=\"uri\">https://www.amazon.com/gp/product/B000AS28UC/ref=oh_aui_detailpage_o02_s00?ie=UTF8&amp;psc=1</a></p>\r\n<p><a href=\"https://photos.app.goo.gl/VpRxvZLBy49PCo5DA\" class=\"uri\">https://photos.app.goo.gl/VpRxvZLBy49PCo5DA</a></p>\r\n',318,0,1,'CC-BY-SA','hardware, circuit board, repair',0,0,1),
(2663,'2018-10-17','Short review on a 2.5 inch SSD/HDD caddy',202,'Tony reviews a Short review on a 2.5 inch SSD/HDD caddy from ebay','<p>Well Ken made another call for shows and as my recent interview series has come to an end by the time you listen to this here is a short review of a USB3 2.5inch HDD/SSD caddy I got from E-bay a few weeks ago.</p>\r\n<p>As many of you who have listened to my previous ramblings know I frequent a local Computer auction and recently they have had some cheap 128Gig SSD’s for sale and I managed to pick several up at a good price. After using some to upgrade some desktop PC’s to SSD I had a couple of these spare and as I have USB3 on my main laptop thought it would be good to be able to use one or two of these as portable storage or even for boot drives to test out odd Linux distro or 2.</p>\r\n<p>So I purchased a caddy off that font of all things techie E-bay for £5.50, link here:<br />\r\n<a href=\"https://www.ebay.co.uk/itm/USB-3-0-to-SATA-Hard-Drive-Enclosure-Caddy-Case-For-2-5-Inch-HDD-SSD-External/282930148654?ssPageName=STRK%3AMEBIDX%3AIT&amp;_trksid=p2057872.m2749.l2648\">https://www.ebay.co.uk/itm/USB-3-0-to-SATA-Hard-Drive-Enclosure-Caddy-Case-For-2-5-Inch-HDD-SSD-External/282930148654?ssPageName=STRK%3AMEBIDX%3AIT&amp;_trksid=p2057872.m2749.l2648</a></p>\r\n<p>So after it arrived I plugged in one of the drives and tested it out. The first thing to notice is that SSD’s being 7mm in depth flop about a bit in the case but this is easily resolved by a bit of card under the drive to help it fit snug in the case and it does mean that the case will support the larger 9mm 2.5inch spinners if needed. I’ve not tested a larger older spinner but I suspect they will not fit as 9mm ones are very snug in the case.</p>\r\n<p>Anyway the drive was detected by the PC/Laptop and works flawlessly and as it is so quick to swap drives in the caddy means I can carry large data files and my music and video library when on the move with the advantage that it is less likely to be damaged if accidentally dropped or knocked off a surface, which is quite likely with a portable spinner HDD.</p>\r\n<p>I am very happy with this purchase and it has already become a regular part of my travelling tool kit/laptop bag.</p>\r\n',338,23,0,'CC-BY-SA','Computers, Tool Bag',0,0,1),
(2668,'2018-10-24','Explaining the controls on my Amateur HF Radio Part 3',1090,'In this episode I cover the Main / sub displays meter memory and band keys of the TS940S.','<ul>\r\n<li><p>Main display is a fluorescent display<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Vacuum_fluorescent_display\" class=\"uri\">https://en.wikipedia.org/wiki/Vacuum_fluorescent_display</a></p></li>\r\n<li><p>Hertz and Kilohertz<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Hertz\" class=\"uri\">https://en.wikipedia.org/wiki/Hertz</a></p></li>\r\n<li><p>Example of an old type tuning dial with moving needle display.<br />\r\n<img src=\"https://i.ytimg.com/vi/YBCuNkdP4M0/maxresdefault.jpg\" alt=\"https://i.ytimg.com/vi/YBCuNkdP4M0/maxresdefault.jpg\" /></p></li>\r\n<li><p>Example of AVO meter<br />\r\n<img src=\"https://www.richardsradios.co.uk/AVO/AVO8mk2.jpg\" alt=\"https://www.richardsradios.co.uk/AVO/AVO8mk2.jpg\" /></p></li>\r\n<li><p>Standing Wave Ration Scale<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Standing_wave_ratio\" class=\"uri\">https://en.wikipedia.org/wiki/Standing_wave_ratio</a></p></li>\r\n<li><p>Explanation of Auto Limiter Control (ALC)<br />\r\n<a href=\"https://www.robkalmeijer.nl/techniek/electronica/radiotechniek/hambladen/radcom/1995/07/page61/index.html\" class=\"uri\">https://www.robkalmeijer.nl/techniek/electronica/radiotechniek/hambladen/radcom/1995/07/page61/index.html</a></p></li>\r\n</ul>\r\n<h3 id=\"sub-display\">Sub Display</h3>\r\n<p>Used either to display the time or in graph mode gives a representation of the receiver bandwidth setting when using CW or SSB.</p>\r\n<h3 id=\"memories-and-band-keys\">Memories and band keys</h3>\r\n<p>Ten memory and band keys to switch either between ten stored memories or to switch between the ten pre-set amateur HF bands when in VFO mode. Up / Down step keys jumps in 1Mhz step.</p>\r\n<h3 id=\"antenna-tuner\">Antenna Tuner</h3>\r\n<p>I tried and failed to find a simple explanation of an antenna tuner it’s a complicated topic, I can at least have a go at explaining how to use a simple manual antenna tuner, hope this makes some sense.</p>\r\n<p>A typical manual Antenna Tuner has two rotatable knobs both interact with each other. The Tuner is used to match a badly tuned antenna to your transmitter. The Tuner is placed in-between the transmitter and antenna. To use it you typically hold down the transmit key while looking at the VSWR meter and rotating one knob at a time in turn repeating this operation until the minimum VSWR is achieved.</p>\r\n<p>If you really want to dive into more detail feel free to follow this link in wikipedia. <a href=\"https://en.wikipedia.org/wiki/Antenna_tuner\" class=\"uri\">https://en.wikipedia.org/wiki/Antenna_tuner</a></p>\r\n',201,43,1,'CC-BY-SA','HF, Ham, Amateur Radio',0,0,1),
(2674,'2018-11-01','Raspberry pi3 open media server',616,'JWP emails in this episode','<ul>\r\n<li>Use Gparted for the SD card</li>\r\n<li>Use <a href=\"https://etcher.io/\">Etcher</a> from Resin.Io</li>\r\n<li>Use the normal external hard drive file os.</li>\r\n</ul>\r\n',129,0,1,'CC-BY-SA','Raspberry Pi,open media,Etcher',0,0,1),
(2664,'2018-10-18','My git workflow',495,'In this episode I talk about the workflow I use to contribute to opensource project using git','<h2 id=\"my-git-workflow\">My git workflow</h2>\r\n<p>In this episode of HPR I present the workflow I use to contribute to opensource projects using git. I have no idea if this workflow is something that is commonly used, but it is working for me, so I thought I’d share it with the HPR community.</p>\r\n<p>The first thing I do is fork the project I want to contribute to. This is done on github most of the time, although this workflow can work on gitlab, bitbucket, or even some self hosted git platform.</p>\r\n<p>Once the project is forked, I clone it on my machine :</p>\r\n<pre><code>$ git clone git://server/path/to/myproject.git</code></pre>\r\n<p>Git automatically names my remote project <code>origin</code>.</p>\r\n<p>Then I add a reference to the original project :</p>\r\n<pre><code>$ git remote add upstream https://server/path/to/originalproject.git</code></pre>\r\n<p>Now my local repository references my fork under the name <code>origin</code> and the original project under the name <code>upstream</code>.</p>\r\n<p>In this workflow, I never work on the master branch. So, when I need to fix a bug for example, I create a new branch :</p>\r\n<pre><code>$ git checkout -b bugfix</code></pre>\r\n<p>I can then make changes, test my code, make sure everything is ok, stage and commit my changes :</p>\r\n<pre><code>$ git add .\r\n$ git commit -m &quot;commit message&quot;</code></pre>\r\n<p>Now I need to push this local branch to my repository on github :</p>\r\n<pre><code>$ git push -u origin bugfix</code></pre>\r\n<p>Since I forked the original project, github knows that <code>origin</code> and <code>upstream</code> are linked. If there are no conflicts, github will show me a big green button to create a pull request. Once the pull request is created, I just have to wait for the maintainer to merge it in <code>upstream</code>’s master branch. Then, I need to sync both my local copy and my fork on github with the original project. In order to do that, on my local copy, I checkout my master branch, fetch <code>upstream</code>’s changes, and merge them :</p>\r\n<pre><code>$ git checkout master\r\n$ git fetch upstream\r\n$ git merge upstream/master</code></pre>\r\n<p>Now my local master branch is ahead of <code>origin</code>’s master branch, so I push those changes to github :</p>\r\n<pre><code>$ git push</code></pre>\r\n<p>I don’t need the <code>bugfix</code> branches (the local one and the github one), so I can delete those :</p>\r\n<pre><code>$ git branch -d bugfix\r\n$ git push origin -d bugfix</code></pre>\r\n<p>And now, my local repository is even with both <code>origin</code> and <code>upstream</code>, and I can start again.</p>\r\n<p>To summarize, here’s the complete workflow :</p>\r\n<pre><code>$ git checkout -b myawesomefeature\r\n$ git add .\r\n$ git commit -m &quot;Awesome commit message&quot;\r\n$ git push -u origin myawesomefeature</code></pre>\r\n<p>Create a pull request, wait for the maintainer to merge it.</p>\r\n<pre><code>$ git checkout master\r\n$ git fetch upstream\r\n$ git merge upstream/master\r\n$ git push\r\n$ git branch -d myawesomefeature\r\n$ git push origin -d myawesomefeature</code></pre>\r\n',370,104,0,'CC-0','git,github,workflow',0,0,1),
(2689,'2018-11-22','Bash Tips - 14',1688,'More about loops - the \'for\' loop, \'break\' and \'continue\'','<h1 id=\"bash-tips---14\">Bash Tips - 14 <small><small>(Some auxiliary Bash tips)</small></small></h1>\r\n<h2 id=\"more-about-loops\">More about loops</h2>\r\n<p>This is the fourteenth episode covering useful tips about using Bash. Episodes 9-13 covered <em>Making Decisions in Bash</em> and in these episodes we looked at <code>while</code> and <code>until</code> loops, but not <code>for</code> loops. This episode is making good this deficiency, and is also looking at <code>break</code> and <code>continue</code> which are very useful when using loops.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2689/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Looping-Constructs\">“Bash Looping Constructs”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Shell-Arithmetic\">“Bash Shell Arithmetic”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins\">“Bourne Shell Builtins”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Brace-Expansion\">“Bash Brace Expansion”</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2659\">HPR episode 2659 “<em>Further ancillary Bash tips - 11</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2669\">HPR episode 2669 “<em>Additional ancillary Bash tips - 12</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2679\">HPR episode 2679 “<em>Extra ancillary Bash tips - 13</em>”</a></li>\r\n</ol></li>\r\n</ul>\r\n<ul>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2689/bash14_ex1.sh\">bash14_ex1.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2689/bash14_ex2.sh\">bash14_ex2.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2689/bash14_ex3.sh\">bash14_ex3.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2689/bash14_ex4.sh\">bash14_ex4.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2689/bash14_ex5.sh\">bash14_ex5.sh</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,42,1,'CC-BY-SA','Bash,loop,for,break,continue',0,0,1),
(2666,'2018-10-22','Slackware Post-Install',1826,'A quick and dirty guide to getting Slack up and running after it\'s installed.','<p>This episode started out as just some thoughts on why I decided to move back to Slackware after having been away from it for a few years, and wound up being a short set of notes on the post install configuration of Slackware 14.2</p>\r\n<p>This is by no means a definitive or exhaustive in its scope. It’s just a few thoughts and tips on the post-install process that might not be completely clear to a new user.</p>\r\n<ul>\r\n<li>Website - <a href=\"https://www.slackware.com/\" class=\"uri\">https://www.slackware.com/</a></li>\r\n<li>Slackware Install Guide - <a href=\"https://docs.slackware.com/slackware:install\" class=\"uri\">https://docs.slackware.com/slackware:install</a></li>\r\n<li>Slackware Post Install Beginner’s Guide - <a href=\"https://docs.slackware.com/slackware:beginners_guide\" class=\"uri\">https://docs.slackware.com/slackware:beginners_guide</a></li>\r\n<li>Wikipedia Slackware Page - <a href=\"https://en.wikipedia.org/wiki/Slackware\" class=\"uri\">https://en.wikipedia.org/wiki/Slackware</a></li>\r\n</ul>\r\n',325,0,1,'CC-BY-SA','Slackware, Slackware post-install',0,0,1),
(2671,'2018-10-29','Algae farming with Desearcher',2379,'Desearcher edumacates us all on the benefits of algae farming.','<p>Apologies for the sound quality. We recorded in a small apartment with only one mic. :-</p>\r\n<ul>\r\n<li><p>Wikipedia Articles - <a href=\"https://en.m.wikipedia.org/wiki/Nannochloropsis\" class=\"uri\">https://en.m.wikipedia.org/wiki/Nannochloropsis</a><br />\r\n<a href=\"https://en.m.wikipedia.org/wiki/Phytoplankton\" class=\"uri\">https://en.m.wikipedia.org/wiki/Phytoplankton</a></p></li>\r\n<li><p>Amazon - <a href=\"https://www.amazon.com/nannochloropsis/s?page=1&amp;rh=i%3Aaps%2Ck%3Anannochloropsis\">https://www.amazon.com/nannochloropsis/s?page=1&amp;rh=i%3Aaps%2Ck%3Anannochloropsis</a></p></li>\r\n<li><p>Algae Research Supply - <a href=\"https://algaeresearchsupply.com/pages/f-2-media\" class=\"uri\">https://algaeresearchsupply.com/pages/f-2-media</a></p></li>\r\n<li><p>Blogs - <a href=\"https://www.nannochloropsis.org/blog/\" class=\"uri\">https://www.nannochloropsis.org/blog/</a></p></li>\r\n<li><p>Album of Desearcher’s setup - <a href=\"https://imgur.com/a/Cwqd7m9\" class=\"uri\">https://imgur.com/a/Cwqd7m9</a></p></li>\r\n</ul>\r\n',325,0,1,'CC-BY-SA','Phytoplankton,algae,Nannochloropsis',0,0,1),
(2678,'2018-11-07','Explaining the controls on my Amateur HF Radio Part 4',984,'In this episode I cover the first four Receiver section controls of the TS940S','<h2 id=\"the-three-dual-function-controls-covered-are\">The three dual function controls covered are</h2>\r\n<h3 id=\"squelchnotch\">Squelch/Notch</h3>\r\n<ul>\r\n<li>(1A) Squelch <a href=\"https://en.wikipedia.org/wiki/Squelch\" class=\"uri\">https://en.wikipedia.org/wiki/Squelch</a></li>\r\n<li>(1B) Notch filter <a href=\"https://en.wikipedia.org/wiki/Band-stop_filter\" class=\"uri\">https://en.wikipedia.org/wiki/Band-stop_filter</a></li>\r\n</ul>\r\n<h3 id=\"pitchaf-tune\">Pitch/AF Tune</h3>\r\n<ul>\r\n<li><p>(2A) Pitch (From the Kenwood manual)<br />\r\nThe CW PITCH control is provided so that you may adjust the pitch or tone of the incoming CW signal so that the tone is pleasing to you. The TS-940S accomplishes this without shifting the actual transmitter or receiver frequency, by shifting the 100kHz IF frequency, just prior to Product detection.</p></li>\r\n<li><p>(2B) AF Tune (From the Kenwood manual)<br />\r\nThe AF TUNE circuit is just the opposite of the NOTCH circuit. With this control, it is possible to accentuate the desired signal by providing additional rejection of noise and interfering signals whose pitch (tone) falls outside the audio passband. Turn the AF TUNE switch ON and adjust the AF TUNE control to peak the desired signal.</p></li>\r\n</ul>\r\n<h3 id=\"ritxit\">RIT/XIT</h3>\r\n<ul>\r\n<li><p>(3A) RIT – Receiver incremental Tune<br />\r\nThe RIT control allows shifting the receive frequency without effecting the transmit frequency</p></li>\r\n<li><p>(3B) XIT – Transmitter incremental Tune<br />\r\nThe XIT control allows shifting the transmit frequency without effecting the receive frequency</p></li>\r\n</ul>',201,43,1,'CC-BY-SA','HF, Ham, Amateur Radio',0,0,1),
(2667,'2018-10-23','Create PDF bookmarks with Pdftk',1313,'Basic intro to a few pdftk functions','<p>\r\nPdftk is a command that lets you manipulate PDFs outside of a GUI PDF creation tool.\r\nThere are several GUI tools you can use to create PDFs with valid bookmarks and other fancy features, but pdftk is often more convenient.\r\n</p>\r\n\r\n<p>\r\nExtract pages 1 through 2, and pages 5-21, and page 261 from a big PDF into a new PDF:\r\n</p>\r\n<pre><code>\r\n$ pdftk big.pdf cat 1-2 5-21 261 output small.pdf\r\n</code></pre>\r\n\r\n<p>\r\nExtract bookmarks from original PDF:\r\n</p>\r\n\r\n<pre><code>\r\n$ pdftk big.pdf dump_data output book.mark\r\n</code></pre>\r\n\r\n<p>\r\nHere is what a bookmark file looks like:\r\n</p>\r\n\r\n<pre><code>\r\nInfoBegin\r\nInfoKey: ModDate\r\nInfoValue: D:20181010181951-05\'00\'\r\nInfoBegin\r\nInfoKey: CreationDate\r\nInfoValue: D:20181010181934-05\'00\'\r\nInfoBegin\r\nInfoKey: Creator\r\nInfoValue: pdftk (Linux)\r\nInfoBegin\r\nInfoKey: Producer\r\nInfoValue: pdftk 2.02-x86_64\r\nPdfID0: d8deadbeeff34211ba60d80fda7611da\r\nPdfID1: 39186170c6134566884b79c0ffee7d59\r\nNumberOfPages: 261\r\nBookmarkBegin\r\nBookmarkTitle: Cover\r\nBookmarkLevel: 1\r\nBookmarkPageNumber: 1\r\nBookmarkBegin\r\nBookmarkTitle: Credits\r\nBookmarkLevel: 1\r\nBookmarkPageNumber: 2\r\nBookmarkBegin\r\nBookmarkTitle: Chapter One\r\nBookmarkLevel: 1\r\nBookmarkPageNumber: 3\r\nBookmarkBegin\r\nBookmarkTitle: Foo Section\r\nBookmarkLevel: 2\r\nBookmarkPageNumber: 5\r\nBookmarkBegin\r\nBookmarkTitle: Bar Baz\r\nBookmarkLevel: 3\r\nBookmarkPageNumber: 7\r\nBookmarkBegin\r\nBookmarkTitle: Back cover\r\nBookmarkLevel: 1\r\nBookmarkPageNumber: 19\r\n</code></pre>\r\n\r\n<p>\r\nApply the bookmark data back to the PDF:\r\n</p>\r\n\r\n<pre><code>\r\n$ pdftk small.pdf update_info book.mark output final.pdf\r\n</code></pre>\r\n\r\n',78,0,0,'CC-BY-SA','pdf',0,0,1),
(2670,'2018-10-26','Character Arcs In Storytelling',893,'Lostnbronx looks character arcs, and their role in storytelling.','<p>Characters are intrinsic to stories of all types, and they often have journeys, referred to as arcs. What, exactly is the character arc? Does everybody in a tale have one? Do they even need one? How do arcs affect the plot, and vice-versa? Lostnbronx shares some off-the-cuff thoughts about this often misunderstood aspect of storytelling.</p>\r\n',107,105,0,'CC-BY-SA','stories,storytelling,character arcs,lostnbronx',0,0,1),
(2672,'2018-10-30','Porteus',3477,'Installing Porteus and the cool things you can do with thumbdrive installation','<p><a href=\"https://porteus.org\" target=\"_blank\">Porteus</a> is a portable Live Linux distro, based on Slackware, intended for use on thumbdrives or optical media.  It is, more or less, the new <a href=\"https://hackerpublicradio.org/eps.php?id=0055\" target=\"_blank\">Slax</a>, now that Slax has switched to Debian.</p>\r\n\r\n<h2>Install</h2>\r\n\r\n<p>The official means of installation is to burn Porteus to disc, and then (optionally) install Porteus onto a thumbdrive from within Porteus. To install Porteus to a thumbdrive, you need a thumbdrive with an EXT4 partition. You can try other filesystems and partition schemes, but EXT4 definitely works well.</p>\r\n<p>\r\nFrom either Porteus or Slackware (you can try other distros, but results <em>will</em> vary), you can do a manual install, and here are the correct commands (as of this writing, the docs on porteus.org are not accurate). Assuming you have discovered, using <code>lsblk</code>, that your target device (the thumbdrive) is <code>/dev/sdx</code>:\r\n</p>\r\n\r\n<pre><code>$ sudo bash\r\n# mkdir -p /mnt/loop /mnt/drive\r\n# mount --options loop /path/to/Porteus*iso /mnt/loop\r\n# mount /dev/sdx1 /mnt/drive\r\n# rsync -av /mnt/loop/ /mnt/drive/\r\n# cd /mnt/drive/boot\r\n# chmod +x Porteus-installer-for-Linux.com\r\n# ./Porteus*com\r\n</code></pre>\r\n\r\n<p>\r\nAlternately, you can use Porteus from a virtual machine and install to a thumbdrive, as long as your virtualisation software redirects USB. I have used <a href=\"https://virt-manager.org/\" target=\"_blank\">virt-manager</a> running on Fedora successfully for this.\r\n</p>\r\n\r\n<p>The other alternative, of course, is to run Porteus off of an optical disc. That means your system is unwritable, so nothing you do is persistent across reboots, but you can save your work to a thumbdrive. I\'ve worked with Slax this way before, and it\'s quite manageable.</p>\r\n\r\n<h2>Boot</h2>\r\n\r\n<p>\r\nBooting to Porteus depends a lot on the firmware of the computer you\'re booting. Almost every Linux distro in existence has accurate docs on the changes you may or may not need to make to your BIOS or [U]EFI in order to boot to Linux, so you can find more detail on this if you need. Here\'s some text I borrowed from Linux Mint:\r\n</p>\r\n\r\n<p> Insert your USB stick (or DVD) into the computer.</p>\r\n<p>Restart the computer.</p>\r\n<p>Before your computer boots your current operating system (Windows, Mac, Linux) you should see your BIOS or UEFI loading screen. Check the screen or your computer’s documentation to know which key to press and instruct your computer to boot on USB (or DVD). Most BIOS or UEFI have a special key you can press to select the boot device and all of them have a special key to enter a configuration screen (from which you can define the boot order). Depending on the firmware, these special keys can be Escape, F1, F2, F8, F10, F11, F12, or Delete. That information is usually briefly displayed on screen during the boot sequence.\r\n</p>\r\n<p>\r\nOn Macs, keep your finger pressed on the Alt or Option key after hearing the boot sound.\r\n</p>\r\n\r\n<h2>Boot modes</h2>\r\n\r\n<p>Porteus can boot to its default persistent modes: graphical or text. Both of these modes auto load any Porteus modules you\'ve installed and also read any changes you made since the previous boot.\r\n</p>\r\n<p>It can also boot to ephemeral modes: Copy to RAM and Always Fresh. These modes act as if you\'ve never booted into Porteus before, loading a completely fresh version of the file system. They also do not load Porteus modules automatically.</p>\r\n\r\n<h2>Installing software</h2>\r\n\r\n<p>Porteus modules are Slackware packages converted to .xzm files, a highly-compressed SquashFS filesystem. When a Porteus module is activated, the application and other files contained in the module appear in your environment. You can think of it as a layered filesystem.</p>\r\n\r\n<p>\r\nTo install software, you must sync up your package manager with upstream repositories:</p>\r\n\r\n<pre><code>$ sudo usm -u all\r\n</code></pre>\r\n\r\n<p>\r\nOnce everything is updated, you can search for packages using the <code>-k</code> (for keyword) option&#58;</p>\r\n\r\n<pre><code>$ sudo usm -k foo\r\n</code></pre>\r\n\r\n<p>\r\nAnd then install it&#58;</p>\r\n\r\n<pre><code>$ sudo usm -g foo\r\n</code></pre>\r\n\r\n<p>\r\nYou are prompted to either install or download the module. If you install it, then it becomes part of the filesystem. However, since changes to the filesystem are NOT read by the Copy to RAM or Always Fresh modes, this is probably not what you want. Instead, download the module so that you can have Porteus load it dynamically regardless of what mode you\'re running.</p>\r\n\r\n<p>\r\nModules are downloaded, by default, to /tmp/usm/ and then converted from their native format of .t?z to .xzm files. You can copy the .xzm files to an external device if you\'re running off of optical media, or into a persistent area on the thumbdrive running Porteus. Modules can be made permanently available in the /mnt/sdx1/porteus/modules or /mnt/sdx1/porteus/optianal directories.\r\n</p>\r\n\r\n<p>Modules in the ../modules path are loaded at boot in the Graphical and Text modes, and are available to load manually in the Copy to RAM and Always Fresh modes.</p><p>Modules in the ../optional path are never auto loaded.</p>\r\n\r\n<p>Modules can be activated or deactivated with this command&#58;</p>\r\n\r\n<pre><code>$ sudo activate foo\r\n</code></pre>\r\n\r\n<h2>Miscellany</h2>\r\n\r\n<p><a href=\"https://flatpak.org/\" target=\"_blank\">Flatpak</a> works on Porteus, too. I have found this to be convenient for applications like GIMP and Inkscape and Kdenlive and many others that are complex enough to warrant special attention.\r\n</p>\r\n\r\n<p>\r\nFlatpak does require the <code>glib-networking</code> package. You will not be warned about this, because all upstream Slackware repositories assume a full install of Slackware (and glib-networking is included on Slackware, but not on Porteus). Once you install glib-networking, you can use flatpak as described, for instance, on the GIMP downloads page.\r\n</p>\r\n\r\n<p>\r\nOver-customizing the \"hard-coded\" parts of Porteus is unwise. For instance, keep the default user (guest), don\'t try to change the UID (I tried and failed), and so on. Treat the system, more or less, as if though you were a guest on someone else\'s multi-user system. Install and customise stuff locally and through modules when possible. That\'s what Porteus expects, and things can break if you try to treat it too much like a traditional Linux system.\r\n</p>\r\n',78,0,0,'CC-BY-SA','porteus,slax,installation,howto,tutorial,usbdrive,thumbdrive',0,0,1),
(2673,'2018-10-31','Urandom - Ohio Linux Fest 2-18 Podcaster Roundtable',2043,'The Urandom crew gathers the podcasters at Ohio Linux Fest for a chat.','<p>Hosts: Lyle, Thaj, Kevin O’Brian (Ahuka), Tony Beamus, FiftyOneFifty</p>\r\n<ul>\r\n<li><a href=\"https://asciinema.org/\" class=\"uri\">https://asciinema.org/</a></li>\r\n<li>HPR saves lives</li>\r\n<li>Green scooters, but not on fire</li>\r\n<li>North Market <a href=\"https://www.northmarket.com/\" class=\"uri\">https://www.northmarket.com/</a></li>\r\n<li>LIKE SHARE SUBSCRIBE!</li>\r\n<li>Urandom <a href=\"https://urandom-podcast.info\" class=\"uri\">https://urandom-podcast.info</a></li>\r\n<li>SMLR <a href=\"https://smlr.us/\" class=\"uri\">https://smlr.us/</a></li>\r\n<li>LinuxLugcast <a href=\"https://www.linuxlugcast.com/\" class=\"uri\">https://www.linuxlugcast.com/</a></li>\r\n<li>HPR <a href=\"https://hackerpublicradio.org/\" class=\"uri\">https://hackerpublicradio.org/</a></li>\r\n</ul>\r\n<p>** Record Scratch audio sample <a href=\"https://freesound.org/people/luffy/sounds/3536/\" class=\"uri\">https://freesound.org/people/luffy/sounds/3536/</a></p>\r\n',270,0,1,'CC-BY-SA','Ohio Linux Fest,Urandom,Sunday Morning Linux Review,Linux Lug Cast',0,0,1),
(2677,'2018-11-06','Thoughts on language learning part 4 - RPG.',1090,'I ponder the idea of an RPG with players not speaking the same language.','<p>I thought I was done with this topic, but got to thinking about bringing a game to life it occurred to me it was a lot of work. So I thought about it some more and hit upon the idea of an RPG probably mostly played online where a key point of the game is that the players needn’t know the same language.</p>\r\n<p>At first this seems like an odd thing for an RPG because the talking to each other is sort of a requirement. By now you’ve guessed that what I mean is that the game could be designed so that it assumes the players will have limited ability to communicate. And that drives how the game progresses.</p>\r\n<p>I see two kinds of approaches. One is that players sort of team up by the their native languages so you might have people knowing different native languages working in smaller teams while the whole game has the goal of everyone learning the new language.</p>\r\n<p>The other is that everyone could know a different native language and many or may nor cooperate with others but the goal of the game is everyone learning the same new language.</p>\r\n<p>Submitting this show mostly because I’m curious what the community thinks of the idea.</p>\r\n',151,0,1,'CC-0','spoken language learning',0,0,1),
(2681,'2018-11-12','DerbyCon Interview - Hackers for Charity',273,'Xoke interviews the amazing Hackers for Charity people','<p><a href=\"https://www.hackersforcharity.org/\" class=\"uri\">https://www.hackersforcharity.org/</a></p>',79,78,0,'CC-0','DerbyCon, Charity, Interview',0,0,1),
(2684,'2018-11-15','Making a remote control visible',77,'Yet another amazing life hack !!!','<h2>The problem</h2>\r\n<p>\r\nA black remote control on a black couch.\r\n</p>\r\n<h2>The solution</h2>\r\n<p>\r\nCover it in Earth <a href=\"https://en.wikipedia.org/wiki/Electrical_tape\">Insulating Tape</a>.\r\n</p>\r\n<p>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2684_front.jpg\">\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2684_front_small.jpg\" alt=\"Remote control front\"/>\r\n</a>\r\n</p>\r\n<p>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2684_back.jpg\">\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2684_back_small.jpg\" alt=\"Remote control rear\"/>\r\n</a>\r\n</p>\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Electrical_tape\">https://en.wikipedia.org/wiki/Electrical_tape</a></li>\r\n</ul>\r\n',30,0,1,'CC-BY-SA','Life hacks',0,0,1),
(2680,'2018-11-09','Some Additional Talk About Characters -- 01',746,'Lostnbronx takes a look at what sorts of characters work best for certain types of tales. Part 01.','<p>Some characters are simple, some are complex, and some are entirely unknowable. What sorts of characters work best for grand, sweeping good vs. evil tales? Which types work best for simple character dramas? And how do characters interact with the setting and story? Lostnbronx offers some off-the-cuff observations.</p>\r\n',107,105,0,'CC-0','stories,storytelling,characters,lostnbronx',0,0,1),
(2682,'2018-11-13','(NOT) All About Blender',2753,'A meandering conversation to sooth the nerves, and warm the soul.','<p>The first part of what began a serious attempt to sit down and discuss Blender, a free and open-source piece of awesome, that slowly (rapidly) devolved into a meandering discussion. Mostly about video games.</p>\r\n<ul>\r\n<li><a href=\"https://openmw.org/en/\" class=\"uri\">https://openmw.org/en/</a></li>\r\n<li><a href=\"https://www.blender.org/\" class=\"uri\">https://www.blender.org/</a></li>\r\n<li><a href=\"https://www.blender.org/support/tutorials/\" class=\"uri\">https://www.blender.org/support/tutorials/</a></li>\r\n<li><a href=\"https://danielpocock.com/quick-start-blender-video-editing\" class=\"uri\">https://danielpocock.com/quick-start-blender-video-editing</a></li>\r\n<li><a href=\"https://m.youtube.com/user/BlenderFoundation\" class=\"uri\">https://m.youtube.com/user/BlenderFoundation</a></li>\r\n<li><a href=\"https://m.youtube.com/watch?v=_lGfeS050Xw\" class=\"uri\">https://m.youtube.com/watch?v=_lGfeS050Xw</a></li>\r\n<li><a href=\"https://zombiemud.org/\" class=\"uri\">https://zombiemud.org/</a></li>\r\n</ul>\r\n<h3 id=\"bloodpong\">BloodPong</h3>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/watch?v=GHrg48sa4ZA\" class=\"uri\">https://www.youtube.com/watch?v=GHrg48sa4ZA</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=vqZQFbKxkxg\" class=\"uri\">https://www.youtube.com/watch?v=vqZQFbKxkxg</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=VCYrErmTIjA\" class=\"uri\">https://www.youtube.com/watch?v=VCYrErmTIjA</a></li>\r\n</ul>\r\n',325,0,1,'CC-BY-SA','Blender',0,0,1),
(2686,'2018-11-19','(NOT) All About Blender - Part the Second',2413,'A meandering conversation to sooth the nerves, and warm the soul - part 2!!','<p>The second part of what began as a serious attempt to sit down and discuss Blender, a free and open-source piece of awesome, that slowly (rapidly) devolved into a meandering discussion. Mostly about video games.</p>\r\n<ul>\r\n<li><a href=\"https://openmw.org/en/\" class=\"uri\">https://openmw.org/en/</a></li>\r\n<li><a href=\"https://www.blender.org/\" class=\"uri\">https://www.blender.org/</a></li>\r\n<li><a href=\"https://www.blender.org/support/tutorials/\" class=\"uri\">https://www.blender.org/support/tutorials/</a></li>\r\n<li><a href=\"https://danielpocock.com/quick-start-blender-video-editing\" class=\"uri\">https://danielpocock.com/quick-start-blender-video-editing</a></li>\r\n<li><a href=\"https://m.youtube.com/user/BlenderFoundation\" class=\"uri\">https://m.youtube.com/user/BlenderFoundation</a></li>\r\n<li><a href=\"https://m.youtube.com/watch?v=_lGfeS050Xw\" class=\"uri\">https://m.youtube.com/watch?v=_lGfeS050Xw</a></li>\r\n<li><a href=\"https://zombiemud.org/\" class=\"uri\">https://zombiemud.org/</a></li>\r\n</ul>\r\n<h3 id=\"bloodpong\">BloodPong</h3>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/watch?v=GHrg48sa4ZA\" class=\"uri\">https://www.youtube.com/watch?v=GHrg48sa4ZA</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=vqZQFbKxkxg\" class=\"uri\">https://www.youtube.com/watch?v=vqZQFbKxkxg</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=VCYrErmTIjA\" class=\"uri\">https://www.youtube.com/watch?v=VCYrErmTIjA</a></li>\r\n</ul>',325,0,1,'CC-BY-SA','Blender',0,0,1),
(2688,'2018-11-21','Explaining the controls on my Amateur HF Radio Part 5',1039,'In this episode I cover the remaining Receiver section controls of the TS940S.','<ul>\r\n<li><p>The controls covered are</p>\r\n<ul>\r\n<li>AF / RF gain\r\n<ul>\r\n<li>(1A) AF, Audio frequency gain control (Volume)<br />\r\nTurns the volume up and down</li>\r\n<li>(1B) RF, Radiofrequency gain control (From the Kenwood manual)<br />\r\nRF GAIN is controlled by changing the AGC (Auto Gain Control) threshold voltage. Adjusting the RF GAIN so that the S-meter reading increases to a point just lower than speech peaks. This also reduces noise during reception. For normal operation, this control should be turned fully clockwise for maximum sensitivity.</li>\r\n</ul></li>\r\n<li>CW VBT (From the Kenwood manual)\r\n<ul>\r\n<li>Carrier Wave Variable Bandwidth Tuning Control<br />\r\nThis control is very similar to the SSB Slope tuning controls. However, with the CW VBT control, both sides of the IF passband are narrowed at the same time.</li>\r\n</ul></li>\r\n<li>SSB Slope Tune (High pass low pass audio filter)\r\n<ul>\r\n<li>High pass filter<br />\r\n<a href=\"https://en.wikipedia.org/wiki/High-pass_filter\" class=\"uri\">https://en.wikipedia.org/wiki/High-pass_filter</a></li>\r\n<li>Low-pass filter<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Low-pass_filter\" class=\"uri\">https://en.wikipedia.org/wiki/Low-pass_filter</a></li>\r\n</ul></li>\r\n</ul></li>\r\n<li><p>I mention that the radio uses phase locked loop technologies.<br />\r\nBelow is an article in Wikipedia about PLL (Phase locked loop)<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Phase-locked_loop\" class=\"uri\">https://en.wikipedia.org/wiki/Phase-locked_loop</a></p></li>\r\n<li><p>I mention that the radio doesn’t use valves.<br />\r\nBelow is an article in Wikipedia about valves (Vacuum tubes)<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Vacuum_tube\" class=\"uri\">https://en.wikipedia.org/wiki/Vacuum_tube</a></p></li>\r\n<li><p>Dry joint<br />\r\nI mention that the radio developed a dry joint<br />\r\nBelow is an article in Wikipedia about soldering that covers dry joints<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Soldering#Dry_joint\" class=\"uri\">https://en.wikipedia.org/wiki/Soldering#Dry_joint</a></p></li>\r\n</ul>\r\n',201,43,1,'CC-BY-SA','HF, Ham, Amateur Radio',0,0,1),
(2683,'2018-11-14','Using Open source tools to visualize the heartrate and blood oxygen saturation level of my stepchild',1911,'Using Open source tools to visualize the heartrate and blood oxygen saturation level of my stepchild','<h2 id=\"using-python-php-jquery-and-linux-to-visualize-the-heartrate-and-blood-oxygen-saturation-level-of-my-stepdaughter.\">Using Python, PHP, JQuery and Linux to visualize the heartrate and blood oxygen saturation level of my stepdaughter.</h2>\r\n<p>Jeroen Baten talks about how he used his knowledge of a couple of open source tools to visualize the heartrate and oxygen saturation in the blood of one of his children and how this aided a pediatrician at the Wilhelmina childrens hospital to come to the right conclusion and treatment. This talk is a mix of tech and 43 surgery sessions on one single human being.</p>\r\n<h2>Links</h2>\r\n<ul><li>Details, including source code, graphs and all can be found\r\nhere:<br/>\r\n<a href=\"https://www.jeroenbaten.nl/cardio-oxygen-saturation-monitoring-home/\">https://www.jeroenbaten.nl/cardio-oxygen-saturation-monitoring-home/</a></li></ul>\r\n\r\n<p>\r\n<small><small><b>Editor\'s Note</b><br/>\r\nJeroen\'s link above was added after the show had been aired.</small></small>\r\n</p>\r\n',369,0,0,'CC-BY-SA','python, php, jquery, linux',0,0,1),
(2687,'2018-11-20','Some Additional Talk About Characters -- 02',750,'Lostnbronx takes a look at what sorts of characters work best for certain types of tales. Part 02.','<p>What are some typical ways to create characters in your stories? Should you create the plot first, or the characters first? Should we think of characters in terms of heroes and villains, or protagonists and antagonists? What is the value of character depth, and is it the same as the character arc? Lostnbronx offers up even more off-the-cuff thoughts about this complicated subject.</p>\r\n',107,105,0,'CC-0','stories,storytelling,characters,lostnbronx',0,0,1),
(2956,'2019-12-02','HPR Community News for November 2019',5211,'Dave, Jeroen and Ken talk about shows released and comments posted in November 2019','<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/0381.html\" target=\"_blank\">Nihilazo</a>, \n    <a href=\"https://hackerpublicradio.org/correspondents/0382.html\" target=\"_blank\">Daniel Persson</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=2935\" target=\"_blank\">2935</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-11-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2935\" target=\"_blank\">The work of fire fighters, part 3</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2936\" target=\"_blank\">2936</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-11-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2936\" target=\"_blank\">HPR Community News for October 2019</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=2937\" target=\"_blank\">2937</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-11-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2937\" target=\"_blank\">Lord D\'s Film Reviews: His Girl Friday</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2938\" target=\"_blank\">2938</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-11-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2938\" target=\"_blank\">Naming pets in space game</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=2939\" target=\"_blank\">2939</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-11-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2939\" target=\"_blank\">Submit a show to Hacker Public Radio in 10 easy steps</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0300.html\" target=\"_blank\">b-yeezi</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2940\" target=\"_blank\">2940</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-11-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2940\" target=\"_blank\">Better Social Media 05 - Mastodon</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=2941\" target=\"_blank\">2941</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-11-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2941\" target=\"_blank\">Server Basics 107: Minishift and container management</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=2942\" target=\"_blank\">2942</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-11-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2942\" target=\"_blank\">Why I love lisps</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=2943\" target=\"_blank\">2943</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-11-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2943\" target=\"_blank\">Music as Life</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0329.html\" target=\"_blank\">brian</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2944\" target=\"_blank\">2944</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-11-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2944\" target=\"_blank\">ONICS Basics Part 4: Network Flows and Connections</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0259.html\" target=\"_blank\">Gabriel Evenfire</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2945\" target=\"_blank\">2945</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-11-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2945\" target=\"_blank\">Saturday at OggCamp Manchester 2019</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=2946\" target=\"_blank\">2946</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-11-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2946\" target=\"_blank\">Sunday at OggCamp Manchester 2019</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=2947\" target=\"_blank\">2947</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-11-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2947\" target=\"_blank\">The Mimblewimble Protocol</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0379.html\" target=\"_blank\">mightbemike</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2948\" target=\"_blank\">2948</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-11-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2948\" target=\"_blank\">Testing with 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=2949\" target=\"_blank\">2949</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-11-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2949\" target=\"_blank\">Grin and Beam: The 2 major mimblewimble blockchains</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0379.html\" target=\"_blank\">mightbemike</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2950\" target=\"_blank\">2950</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-11-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2950\" target=\"_blank\">NotPetya and Maersk: An Object Lesson</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=2951\" target=\"_blank\">2951</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-11-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2951\" target=\"_blank\">A walk through my PifaceCAD Python code – Part 2</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=2952\" target=\"_blank\">2952</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-11-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2952\" target=\"_blank\">Publishing your book using open source tools</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2953\" target=\"_blank\">2953</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-11-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2953\" target=\"_blank\">How I got started in Linux</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=2954\" target=\"_blank\">2954</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-11-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2954\" target=\"_blank\">Wrestling As You Like It episode 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0354.html\" target=\"_blank\">TheDUDE</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2955\" target=\"_blank\">2955</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-11-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2955\" target=\"_blank\">Machine Learning / Data Analysis Basics</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0382.html\" target=\"_blank\">Daniel Persson</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 16 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 2 comments on\n1 previous show:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=1585#comments\" target=\"_blank\">hpr1585</a></strong>\n(2014-08-29) \"<em>36 - LibreOffice Calc - Financial Functions - Loan Payments</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=1585#1\" target=\"_blank\">Comment 1</a>:\ntimttmy on 2019-11-30:\n\"Thanks\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=1585#2\" target=\"_blank\">Comment 2</a>:\nAhuka on 2019-11-30:\n\"I\'m glad it helped\"</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=2935#comments\" target=\"_blank\">hpr2935</a></strong>\n(2019-11-01) \"<em>The work of fire fighters, part 3</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2935#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2019-11-05:\n\"That sucks\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2935#2\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2019-11-05:\n\"That blows\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2935#3\" target=\"_blank\">Comment 3</a>:\nKen Fallon on 2019-11-05:\n\"You\'re Fired\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2936#comments\" target=\"_blank\">hpr2936</a></strong>\n(2019-11-04) \"<em>HPR Community News for October 2019</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=2936#1\" target=\"_blank\">Comment 1</a>:\nlostnbronx on 2019-11-04:\n\"Ken\'s Voice Is Better Than espeak\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2936#2\" target=\"_blank\">Comment 2</a>:\nJon Kulp on 2019-11-05:\n\"Pots\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2936#3\" target=\"_blank\">Comment 3</a>:\nclacke on 2019-11-19:\n\"Release order or episode order?\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2939#comments\" target=\"_blank\">hpr2939</a></strong>\n(2019-11-07) \"<em>Submit a show to Hacker Public Radio in 10 easy steps</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0300.html\" target=\"_blank\">b-yeezi</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2939#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2019-11-07:\n\"Clarification\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2940#comments\" target=\"_blank\">hpr2940</a></strong>\n(2019-11-08) \"<em>Better Social Media 05 - Mastodon</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=2940#1\" target=\"_blank\">Comment 1</a>:\nClaudioM on 2019-11-08:\n\"Simple Mastodon Timeline View Option\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2942#comments\" target=\"_blank\">hpr2942</a></strong>\n(2019-11-12) \"<em>Why I love lisps</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=2942#1\" target=\"_blank\">Comment 1</a>:\nTuula on 2019-11-12:\n\"welcome\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2942#2\" target=\"_blank\">Comment 2</a>:\nCarl on 2019-11-21:\n\"Well Done\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2942#3\" target=\"_blank\">Comment 3</a>:\ngerryk on 2019-11-22:\n\"loved it\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2943#comments\" target=\"_blank\">hpr2943</a></strong>\n(2019-11-13) \"<em>Music as Life</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0329.html\" target=\"_blank\">brian</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2943#1\" target=\"_blank\">Comment 1</a>:\nCarl on 2019-11-21:\n\"Interesting Episode\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2944#comments\" target=\"_blank\">hpr2944</a></strong>\n(2019-11-14) \"<em>ONICS Basics Part 4: Network Flows and Connections</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0259.html\" target=\"_blank\">Gabriel Evenfire</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2944#1\" target=\"_blank\">Comment 1</a>:\nDave Morriss on 2019-11-27:\n\"This is wonderful\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2955#comments\" target=\"_blank\">hpr2955</a></strong>\n(2019-11-29) \"<em>Machine Learning / Data Analysis Basics</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><li><a href=\"https://hackerpublicradio.org/eps.php?id=2955#1\" target=\"_blank\">Comment 1</a>:\nb-yeezi on 2019-11-29:\n\"Great first episode\"</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/2019-November/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2019-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=\"stand-at-fosdem\">Stand at FOSDEM</h3>\n<p>Our proposal for a “Free Culture Podcasts” stand at FOSDEM was accepted for the Sunday 2nd February. This is fantastic news as this is the largest FLOSS event in Europe and is absolutely thronged the whole day.</p>\n<p><a href=\"https://fosdem.org/2020/news/2019-11-19-accepted-stands/\" class=\"uri\">https://fosdem.org/2020/news/2019-11-19-accepted-stands/</a></p>\n<p>Anyone going to FOSDEM, and who would like to help staff the booth on Sunday please get in touch.</p>\n<h3 id=\"tags-and-summaries\">Tags and Summaries</h3>\n<p>Thanks to the following contributor for sending in updates in the past month: <b><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></b></p>\n<p>Over the period tags and/or summaries have been added to 5 shows which were without them.</p>\n<p>If you would like to contribute to the tag/summary project visit the summary page at <a href=\"https://hackerpublicradio.org/report_missing_tags.php\" class=\"uri\">https://hackerpublicradio.org/report_missing_tags.php</a> and follow the instructions there.</p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2981,'2020-01-06','HPR Community News for December 2019',4671,'HPR Volunteers talk about shows released and comments posted in December 2019','<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/0383.html\" target=\"_blank\">Paul Quirk</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=2956\" target=\"_blank\">2956</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-12-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2956\" target=\"_blank\">HPR Community News for November 2019</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=2957\" target=\"_blank\">2957</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-12-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2957\" target=\"_blank\">Lord D\'s Film Reviews: Ever</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2958\" target=\"_blank\">2958</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-12-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2958\" target=\"_blank\">Haskell modules</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=2959\" target=\"_blank\">2959</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-12-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2959\" target=\"_blank\">Interview with Josh Clements about gpodder.net </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=2960\" target=\"_blank\">2960</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-12-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2960\" target=\"_blank\">Dehydrated Foods</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=2961\" target=\"_blank\">2961</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-12-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2961\" target=\"_blank\">Kubernetics / Cloud - Terminology</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=2962\" target=\"_blank\">2962</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-12-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2962\" target=\"_blank\">Bespoke bike building</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=2963\" target=\"_blank\">2963</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-12-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2963\" target=\"_blank\">A walk through my PifaceCAD Python code – Part 3</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=2964\" target=\"_blank\">2964</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-12-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2964\" target=\"_blank\">Bolos and Bowties: Neckwear for Nerds</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=2965\" target=\"_blank\">2965</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-12-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2965\" target=\"_blank\">instant feedback for students in maths</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=2966\" target=\"_blank\">2966</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-12-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2966\" target=\"_blank\">World of Commodore 2019 Episode 1: The Interviews</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2967\" target=\"_blank\">2967</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-12-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2967\" target=\"_blank\">Wrestling As You Like It Episode 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0354.html\" target=\"_blank\">TheDUDE</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2968\" target=\"_blank\">2968</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-12-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2968\" target=\"_blank\">Life and Times of a Geek part 3</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=2969\" target=\"_blank\">2969</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-12-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2969\" target=\"_blank\">Crewing a spaceship in 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=2970\" target=\"_blank\">2970</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-12-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2970\" target=\"_blank\">The Fediverse</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=2971\" target=\"_blank\">2971</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-12-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2971\" target=\"_blank\">World of Commodore 2019 Episode 2: Hacking GeckOS</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2972\" target=\"_blank\">2972</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-12-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2972\" target=\"_blank\">The foot of the ski slope</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=2973\" target=\"_blank\">2973</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-12-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2973\" target=\"_blank\">Introduction to Advent of Code</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=2974\" target=\"_blank\">2974</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-12-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2974\" target=\"_blank\">Guitar Setup pt. 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0235.html\" target=\"_blank\">NYbill</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2975\" target=\"_blank\">2975</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-12-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2975\" target=\"_blank\">SimpleScreenRecorder and Vidcutter</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=2976\" target=\"_blank\">2976</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-12-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2976\" target=\"_blank\">A walk through my PifaceCAD Python code – Part 4</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=2977\" target=\"_blank\">2977</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-12-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2977\" target=\"_blank\">World of Commodore 2019 Episode 3: Life after Commodore</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</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 22 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 6 comments on\n6 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2924#comments\" target=\"_blank\">hpr2924</a></strong>\n(2019-10-17) \"<em>Hacking an Alarm Clock to Make it Quieter</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>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2924#1\" target=\"_blank\">Comment 1</a>:\nGabriel Evenfire on 2019-12-24:\n\"Fun to listen to as always\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2932#comments\" target=\"_blank\">hpr2932</a></strong>\n(2019-10-29) \"<em>Stardrifter RPG Playtest Part 10</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2932#1\" target=\"_blank\">Comment 1</a>:\nGabriel Evenfire on 2019-12-24:\n\"Loved the series\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2942#comments\" target=\"_blank\">hpr2942</a></strong>\n(2019-11-12) \"<em>Why I love lisps</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>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2942#4\" target=\"_blank\">Comment 4</a>:\nGabriel Evenfire on 2019-12-24:\n\"Great first episode\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2944#comments\" target=\"_blank\">hpr2944</a></strong>\n(2019-11-14) \"<em>ONICS Basics Part 4: Network Flows and Connections</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0259.html\" target=\"_blank\">Gabriel Evenfire</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2944#2\" target=\"_blank\">Comment 2</a>:\nGabriel Evenfire on 2019-12-23:\n\"Glad you liked it!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2947#comments\" target=\"_blank\">hpr2947</a></strong>\n(2019-11-19) \"<em>The Mimblewimble Protocol</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0379.html\" target=\"_blank\">mightbemike</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2947#1\" target=\"_blank\">Comment 1</a>:\nGabriel Evenfire on 2019-12-24:\n\"Enjoying this series\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2955#comments\" target=\"_blank\">hpr2955</a></strong>\n(2019-11-29) \"<em>Machine Learning / Data Analysis Basics</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=2955#2\" target=\"_blank\">Comment 2</a>:\ngerryk on 2019-12-06:\n\"great! clear and informational\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 16 comments on 10 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2956#comments\" target=\"_blank\">hpr2956</a></strong>\n(2019-12-02) \"<em>HPR Community News for November 2019</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=2956#1\" target=\"_blank\">Comment 1</a>:\njezra on 2019-12-10:\n\"No more postcards?\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2957#comments\" target=\"_blank\">hpr2957</a></strong>\n(2019-12-03) \"<em>Lord D\'s Film Reviews: Ever</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2957#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2019-12-03:\n\"Great series but ...\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2957#2\" target=\"_blank\">Comment 2</a>:\nlostnbronx on 2019-12-04:\n\"Links\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2957#3\" target=\"_blank\">Comment 3</a>:\nKen Fallon on 2019-12-04:\n\"Good point\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2959#comments\" target=\"_blank\">hpr2959</a></strong>\n(2019-12-05) \"<em>Interview with Josh Clements about gpodder.net </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=2959#1\" target=\"_blank\">Comment 1</a>:\nb-yeezi on 2019-12-05:\n\"No problem. I\'ll do it\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2962#comments\" target=\"_blank\">hpr2962</a></strong>\n(2019-12-10) \"<em>Bespoke bike building</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0326.html\" target=\"_blank\">Brian in Ohio</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2962#1\" target=\"_blank\">Comment 1</a>:\npetard on 2019-12-11:\n\"I really enjoyed this\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2962#2\" target=\"_blank\">Comment 2</a>:\nJon Kulp on 2019-12-12:\n\"Excellent progress\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2963#comments\" target=\"_blank\">hpr2963</a></strong>\n(2019-12-11) \"<em>A walk through my PifaceCAD Python code – Part 3</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0201.html\" target=\"_blank\">MrX</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2963#1\" target=\"_blank\">Comment 1</a>:\nGabriel Evenfire on 2019-12-24:\n\"Great series\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2963#2\" target=\"_blank\">Comment 2</a>:\nMrX on 2019-12-27:\n\"Re: Great series\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2964#comments\" target=\"_blank\">hpr2964</a></strong>\n(2019-12-12) \"<em>Bolos and Bowties: Neckwear for Nerds</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=2964#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2019-12-12:\n\"Yes it is of interest to Hackers\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2964#2\" target=\"_blank\">Comment 2</a>:\nJon Kulp on 2019-12-12:\n\"the model\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2965#comments\" target=\"_blank\">hpr2965</a></strong>\n(2019-12-13) \"<em>instant feedback for students in maths</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=2965#1\" target=\"_blank\">Comment 1</a>:\nDave Morriss on 2019-12-19:\n\"Cool project!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2966#comments\" target=\"_blank\">hpr2966</a></strong>\n(2019-12-16) \"<em>World of Commodore 2019 Episode 1: The Interviews</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2966#1\" target=\"_blank\">Comment 1</a>:\nJon Kulp on 2019-12-19:\n\"Legacy Tech\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2966#2\" target=\"_blank\">Comment 2</a>:\nDave Morriss on 2019-12-19:\n\"Great show!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2967#comments\" target=\"_blank\">hpr2967</a></strong>\n(2019-12-17) \"<em>Wrestling As You Like It Episode 2</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0354.html\" target=\"_blank\">TheDUDE</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2967#1\" target=\"_blank\">Comment 1</a>:\nBRonaldo on 2019-12-17:\n\"WWE\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2974#comments\" target=\"_blank\">hpr2974</a></strong>\n(2019-12-26) \"<em>Guitar Setup pt. 2</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0235.html\" target=\"_blank\">NYbill</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2974#1\" target=\"_blank\">Comment 1</a>:\nNYbill on 2019-12-26:\n\"Heh, editing...\"</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/2019-December/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2019-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=\"tags-and-summaries\">Tags and Summaries</h3>\n<p>There were no tag or summary updates in the past month.</p>\n<p>If you would like to contribute to the tag/summary project visit the summary page at <a href=\"https://hackerpublicradio.org/report_missing_tags.php\" class=\"uri\">https://hackerpublicradio.org/report_missing_tags.php</a> and follow the instructions there.</p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(2691,'2018-11-26','DerbyCon Interview - John Strand',160,'John Strand talks about behavoural analytics and blockchain','<p>John Strand (<a href=\"https://twitter.com/strandjs\" class=\"uri\">https://twitter.com/strandjs</a>) from Black Hills Information Security (<a href=\"https://www.blackhillsinfosec.com/\" class=\"uri\">https://www.blackhillsinfosec.com/</a>)</p>\r\n<p>Download RITA (it’s free!) - Real Intelligence Threat Analytics - <a href=\"https://www.blackhillsinfosec.com/projects/rita/\" class=\"uri\">https://www.blackhillsinfosec.com/projects/rita/</a></p>',79,78,0,'CC-BY-SA','DerbyCon, Interview, Blockchain',0,0,1),
(2699,'2018-12-06','Bash Tips - 15',1794,'Some of the pitfalls when using loops in Bash','<h1 id=\"bash-tips---15\">Bash Tips - 15 <small><small>(More auxiliary Bash tips)</small></small></h1>\r\n<h2 id=\"pitfalls-for-the-unwary-bash-loop-user\">Pitfalls for the unwary Bash loop user</h2>\r\n<p>This is the fifteenth episode covering useful tips for Bash users. In the last episode we looked at the <code>\'for\'</code> loop, and prior to that we looked at <code>\'while\'</code> and <code>\'until\'</code> loops. In this one I want to look at some of the loop-related issues that can trip up the unwary user.</p>\r\n<p>Loops in Bash are extremely useful, and they are not at all difficult to use in their basic forms. However, there are some perhaps less than obvious issues that can result in unexpected behaviour.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2699/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Process-Substitution\">“Bash Process Substitution”</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://www.gnu.org/software/findutils/manual/html_mono/find.html\">“<em>GNU Findutils</em>”</a></p></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2659\">HPR episode 2659 “<em>Further ancillary Bash tips - 11</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2669\">HPR episode 2669 “<em>Additional ancillary Bash tips - 12</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2679\">HPR episode 2679 “<em>Extra ancillary Bash tips - 13</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2689\">HPR episode 2689 “<em>Bash Tips - 14 (Some auxiliary Bash tips)</em>”</a></li>\r\n</ol></li>\r\n</ul>\r\n<ul>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2699/bash15_ex1.sh\">bash15_ex1.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2699/bash15_ex2.sh\">bash15_ex2.sh</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,42,1,'CC-BY-SA','Bash,loop,ls,pipe,pipeline,find,extglob',0,0,1),
(2710,'2018-12-21','Youtube downloader for channels',844,'A followup to hpr2675 how you can download an entire youtube channel for local playout','<p>\r\nI had a very similar problem to Ahuka aka Kevin, in <a href=\"https://hackerpublicradio.org/eps.php?id=2675\">hpr2675 :: YouTube Playlists</a>. I wanted to be able to download an entire youtube channel and store them so that I could play them in the order that they were posted.\r\n</p>\r\n<p>\r\nAdd the url\'s to a file called <em>subscriptions.txt</em>.\r\n</p>\r\n<pre>\r\n#LASTRUN: 20181030\r\n# /home/ken/sourcecode/personal/bestofyoutube/youtube-channel-watcher.bash\r\n#\r\n# Big Clive \r\nhttps://www.youtube.com/channel/UCtM5z2gkrGRuWd0JQMx76qA	20181030\r\n# Essential Craftsman\r\nhttps://www.youtube.com/channel/UCzr30osBdTmuFUS8IfXtXmg\r\n</pre>\r\n<p>\r\nThen run the script\r\n</p>\r\n<pre>\r\n#!/bin/bash\r\n# Downloads videos from youtube based on selection from https://thebestofyoutube.com\r\n# (c) Ken Fallon https://kenfallon.com\r\n# Released under the CC-0\r\n\r\nsavepath=\"/mnt/media/Videos/channels\"\r\nsubscriptions=\"${savepath}/subscriptions.txt\"\r\nYOUNGERTHAN=\"20010101\"\r\nRUNDATE=$(date +%Y%m%d)\r\nyoutubedl=\"/home/ken/sourcecode/youtube-dl/youtube-dl\"\r\n#DRYRUN=\"echo DEBUG: \"\r\n\r\nif [ ! -e \"${subscriptions}\" ]\r\nthen\r\n	echo \"Cannot find subscription file \"${subscriptions}\"\"\r\n	exit 1\r\nfi\r\n\r\nif [ \"$(grep \"#LASTRUN: \" \"${subscriptions}\" | wc -l )\" -eq 0 ]\r\nthen\r\n	sed --follow-symlinks \'1s/^/#LASTRUN: n/\' -i \"${subscriptions}\"\r\nfi\r\n\r\n# Read the subscriptions\r\ncat \"${subscriptions}\" | grep -v \'#\' | while read channel_info\r\ndo\r\n	if [ \"$(echo \"${channel_info}\" | grep -P \'t\' | wc -l )\" -eq 0 ]\r\n	then\r\n		DATEAFTER=\"--dateafter ${YOUNGERTHAN}\"\r\n	else\r\n		DATEAFTER=\"--dateafter $(echo \"${channel_info}\" | awk \'{print $NF}\' )\"\r\n	fi\r\n	channel=\"$(echo \"${channel_info}\" | awk \'{print $1}\' )\"\r\n	echo \"Processing Channel \"${channel}\" since ${DATEAFTER}\"\r\n	${DRYRUN} ${youtubedl} ${DATEAFTER} --ignore-errors --no-mtime --restrict-filenames --format mp4 -o ${savepath}\'/%(uploader)s/%(upload_date)s-%(title)s⋄%(id)s.%(ext)s\' ${channel}\r\n	${DRYRUN} sed --follow-symlinks \"s,${channel}.*$,${channel}t${RUNDATE},g\" -i \"${subscriptions}\"\r\ndone\r\n\r\n${DRYRUN} sed --follow-symlinks \"s/#LASTRUN: .*$/#LASTRUN: ${RUNDATE}/\" -i \"${subscriptions}\"\r\n</pre>\r\n',30,0,1,'CC-BY-SA','youtube, youtube-dl',0,0,1),
(2720,'2019-01-04','Download youtube channels using the rss feeds',1447,'Ken shares a script that will allow you to quickly keep up to date on your youtube subscriptions','<p>\r\nI had a very similar problem to Ahuka aka Kevin, in <a href=\"https://hackerpublicradio.org/eps.php?id=2675\">hpr2675 :: YouTube Playlists</a>. I wanted to be able to download an entire youtube channel and store them so that I could play them in the order that they were posted.<br />\r\nSee previous episode <a href=\"https://hackerpublicradio.org/eps.php?id=2710\">hpr2710 :: Youtube downloader for channels</a>.\r\n</p>\r\n<p>\r\nThe problem with the original script is that it needs to download and check each video in each channel and it can crawl to a halt on large channels like <a href=\"https://www.eevblog.com/\">EEEVblog</a>.\r\n</p>\r\n<p>\r\nThe solution was given in <a href=\"https://hackerpublicradio.org/eps.php?id=2544\">hpr2544 :: How I prepared episode 2493: YouTube Subscriptions - update</a> with more details in the <a href=\"https://hackerpublicradio.org/eps/hpr2544/full_shownotes.html\">full-length</a> notes.\r\n</p>\r\n\r\n<ol>\r\n<li>Subscribe:<br />Subscriptions are the currency of YouTube creators so don\'t be afraid to create an account to subscribe to the creators. Here is my current <a href=\"https://hackerpublicradio.org/eps/hpr2720/subscription_manager.opml\">subscription_manager.opml</a> to give you some ideas.</li>\r\n<li>Export:<br />Login to <a href=\"https://www.youtube.com/subscription_manager\">https://www.youtube.com/subscription_manager</a> and at the bottom you will see the option to <strong>Export subscriptions</strong>. Save the file and alter the script to point to it.</li>\r\n<li>Download: Run the script <a href=\"https://hackerpublicradio.org/eps/hpr2720/youtube-rss.bash\">youtube-rss.bash</a></li>\r\n</ol>\r\n\r\n<h3>How it works</h3>\r\n<p>\r\nThe first part allows you to define where you want to save your files. It also allows you to set what videos to skip based on length and strings in their titles.\r\n</p>\r\n<pre>\r\nsavepath=\"/mnt/media/Videos/channels\"\r\nsubscriptions=\"${savepath}/subscription_manager.opml\"\r\nlogfile=\"${savepath}/log/downloaded.log\"\r\nyoutubedl=\"/mnt/media/Videos/youtube-dl/youtube-dl\"\r\nDRYRUN=\"echo DEBUG: \"\r\nmaxlength=7200 # two hours\r\nskipcrap=\"fail |react |live |Best Pets|BLOOPERS|Kids Try\"\r\n</pre>\r\n\r\n<p>\r\nAfter some checks and cleanup, we can then parse the <a href=\"https://en.wikipedia.org/wiki/OPML\">opml</a> file. This is an example of the top of mine.\r\n</p>\r\n<pre>\r\n&lt;?xml version=\"1.0\"?&gt;\r\n&lt;opml version=\"1.1\"&gt;\r\n  &lt;body&gt;\r\n    &lt;outline text=\"YouTube Subscriptions\" title=\"YouTube Subscriptions\"&gt;\r\n      &lt;outline text=\"Wintergatan\" title=\"Wintergatan\" type=\"rss\" xmlUrl=\"https://www.youtube.com/feeds/videos.xml?channel_id=UCcXhhVwCT6_WqjkEniejRJQ\"/&gt;\r\n      &lt;outline text=\"Primitive Technology\" title=\"Primitive Technology\" type=\"rss\" xmlUrl=\"https://www.youtube.com/feeds/videos.xml?channel_id=UCAL3JXZSzSm8AlZyD3nQdBA\"/&gt;\r\n      &lt;outline text=\"John Ward\" title=\"John Ward\" type=\"rss\" xmlUrl=\"https://www.youtube.com/feeds/videos.xml?channel_id=UC2uFFhnMKyF82UY2TbXRaNg\"/&gt;\r\n</pre>\r\n\r\n<p>\r\nNow we use the xmlstarlet tool to extract each of the urls and also the title. The title is just used to give some feedback, while the url needs to be stored for later. Now we have a complete list of all the current urls, in all the feeds. \r\n</p>\r\n<pre>\r\nxmlstarlet sel -T -t -m \'/opml/body/outline/outline\' -v \'concat( @xmlUrl, \" \", @title)\' -n \"${subscriptions}\" | while read subscription title\r\ndo\r\n  echo \"Getting \"${title}\"\"\r\n  wget -q \"${subscription}\" -O - | xmlstarlet sel -T -t -m \'/_:feed/_:entry/media:group/media:content\' -v \'@url\' -n - | awk -F \'?\' \'{print $1}\'  >> \"${logfile}_getlist\"\r\ndone\r\n</pre>\r\n\r\n<p>\r\nThe main part of the script then counts the total so we can have some feedback while we are running it. It then pumps the list from the previous step into a loop which first checks to make sure we have not already downloaded it.\r\n</p>\r\n<pre>\r\ncount=1\r\ntotal=$( sort \"${logfile}_getlist\" | uniq | wc -l )\r\n\r\nsort \"${logfile}_getlist\" | uniq | while read thisvideo\r\ndo \r\n  if [ \"$( grep \"${thisvideo}\" \"${logfile}\" | wc -l )\" -eq 0 ];\r\n  then\r\n</pre>\r\n<p>\r\nThe next part takes advantage of the <strong>youtube-dl --dump-json</strong> command which downloads all sorts of information about the video which we store to query later.\r\n</p>\r\n<pre>\r\n    metadata=\"$( ${youtubedl} --dump-json ${thisvideo} )\"\r\n    uploader=\"$( echo $metadata | jq \'.uploader\' | awk -F \'\"\' \'{print $2}\' )\"\r\n    title=\"$( echo $metadata | jq \'.title\' | awk -F \'\"\' \'{print $2}\' )\"\r\n    upload_date=\"$( echo $metadata | jq \'.upload_date\' | awk -F \'\"\' \'{print $2}\' )\"\r\n    id=\"$( echo $metadata | jq \'.id\' | awk -F \'\"\' \'{print $2}\' )\"\r\n    duration=\"$( echo $metadata | jq \'.duration\' )\"\r\n</pre>\r\n<p>\r\nHaving the duration, we can skip long episodes.\r\n</p>\r\n<pre>\r\n\r\n    if [[ -z ${duration} || ${duration} -le 0 ]]\r\n    then\r\n      echo -e \"nError: The duration \"${length}\" is strange. \"${thisvideo}\".\"\r\n      continue\r\n    elif [[ ${duration} -ge ${maxlength} ]]\r\n    then\r\n      echo -e \"nFilter: You told me not to download titles over ${maxlength} seconds long \"${title}\", \"${thisvideo}\"\"\r\n      continue\r\n    fi\r\n</pre>\r\n<p>\r\nOr videos that don\'t interest us.\r\n</p>\r\n<pre>\r\n\r\n    if [[ ! -z \"${skipcrap}\" &amp;&amp; $( echo ${title} | egrep -i \"${skipcrap}\" | wc -l ) -ne 0 ]]\r\n    then\r\n      echo -e \"nSkipping: You told me not to download this stuff. ${uploader}: \"${title}\", \"${thisvideo}\"\"\r\n      continue\r\n    else\r\n      echo -e \"n${uploader}: \"${title}\", \"${thisvideo}\"\"\r\n    fi\r\n</pre>\r\n<p>\r\nNow we have a filtered list of urls we do want to keep. These we also save the description in a text file with the video id if we want to refer to it later. \r\n</p>\r\n<pre>\r\n    echo ${thisvideo} &gt;&gt; \"${logfile}_todo\"\r\n    echo -e $( echo $metadata | jq \'.description\' ) &gt; \"${savepath}/description/${id}.txt\"\r\n  else\r\n    echo -ne \"rProcessing ${count} of ${total}\"\r\n  fi\r\n  count=$((count+1))\r\ndone\r\necho \"\"\r\n</pre>\r\n<p>\r\nAnd finally we download the actual videos saving each channel in its own directory. The file names is first an <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO8601</a> date, then the title stored as ASCII with no space or ampersands. I then use a \"⋄\" as a delimiter before the video id.\r\n</p>\r\n<pre>\r\n\r\n# Download the list\r\nif [ -e \"${logfile}_todo\" ];\r\nthen\r\n  cat \"${logfile}_todo\" | ${youtubedl} --batch-file - --ignore-errors --no-mtime --restrict-filenames --format mp4 -o \"${savepath}\"\'/%(uploader)s/%(upload_date)s-%(title)s⋄%(id)s.%(ext)s\'\r\n  cat \"${logfile}_todo\" &gt;&gt; ${logfile}\r\nfi\r\n</pre>\r\n<p>\r\nNow you have a fast script that keeps you up to date with your feeds.\r\n</p>\r\n',30,0,1,'CC-BY-SA','youtube, youtube-dl, channels, playlists, xmlstarlet',0,0,1),
(2693,'2018-11-28','Getting started with web based game in Haskell and Elm',1146,'First steps in writing 4x space exploration game','<p>Haskell Stack: <a href=\"https://docs.haskellstack.org/en/stable/README/\">https://docs.haskellstack.org/en/stable/README/</a></p>\r\n<p>Stack is a build tool for Haskell with focus on reproducible build plans, multi-package projects, and a consistent, easy-to-learn interface. With stack, one can create new project: <kbd>stack new my-project yesod-sqlite</kbd> (more in the quick start guide: <a href=\"https://www.yesodweb.com/page/quickstart\">https://www.yesodweb.com/page/quickstart</a>)</p>\r\n\r\n<p><a href=\"https://github.com/Tuula/deep-sky/blob/baa0807dd36b61fd02174b17c10013862af4ec18/config/models\">models</a> is used to define shape of the data and Yesod uses it to generate datatypes and database for you. For example, to define a Star that has name, spectral type, luminosity class and link to StarSystem, one can write:</p>\r\n\r\n<pre><code>\r\nStar json\r\n    name Text\r\n    starSystemId StarSystemId\r\n    spectralType SpectralType\r\n    luminosityClass LuminosityClass\r\n</code></pre>\r\n\r\n<p>Custom types, like LuminosityClass, need mapping between datatype and database. In simple cases like this, Yesod can do that:\r\n\r\n<pre><code>\r\ndata LuminosityClass = Iap | Ia | Iab | Ib | II | III | IV | V | VI | VII\r\n    deriving (Show, Read, Eq)\r\nderivePersistField \"LuminosityClass\"\r\n</code></pre>\r\n\r\n<p>The \"derivePersistField\" part is template haskell call that will generate mapping needed.</p>\r\n\r\n<p>For those interested seeing some code, source is available at <a href=\"https://github.com/Tuula/deep-sky/\">https://github.com/Tuula/deep-sky/</a> (<a href=\"https://github.com/Tuula/deep-sky/tree/baa0807dd36b61fd02174b17c10013862af4ec18\">https://github.com/Tuula/deep-sky/tree/baa0807dd36b61fd02174b17c10013862af4ec18</a> is situation before lots of Elm related changes that I mentioned in passing in the episode)</p>\r\n\r\n',364,107,0,'CC-BY-SA','haskell, yesod',0,0,1),
(2703,'2018-12-12','Fog of war in Yesod based game',1515,'How to implement fog of war system in turn based web game','<p>Duality of the universe: there\'s true state of the universe used in simulation and there\'s state the the players perceive. These most likely will always be in conflict. One possible solution is to separate these completely. Perform simulation in one system and record what players see in other.</p>\r\n\r\n<p>For every type of entity in the game, there\'s two sets of data: real and reported. Reports are tied to time and faction. Examples are given for planets. Thus, we have <em>Planet</em>, <em>PlanetReport</em> and <em>CollatedPlanetReport</em>. First is the real entity, second is report of that entity tied in time and faction. Third one is aggregated information a faction has of given entity. In database two first ones are:</p>\r\n\r\n<pre><code>\r\nPlanet json\r\n    name Text\r\n    position Int\r\n    starSystemId StarSystemId\r\n    ownerId FactionId Maybe\r\n    gravity Double\r\n    SystemPosition starSystemId position\r\n    deriving Show\r\n\r\nPlanetReport json\r\n    planetId PlanetId\r\n    ownerId  FactionId Maybe\r\n    starSystemId StarSystemId\r\n    name Text Maybe\r\n    position Int Maybe\r\n    gravity Double Maybe\r\n    factionId FactionId\r\n    date Int\r\n    deriving Show\r\n</code></pre>\r\n<p>Third one is defined as a datatype:</p>\r\n\r\n<pre><code>\r\ndata CollatedPlanetReport = CollatedPlanetReport\r\n    { cprPlanetId :: Key Planet\r\n    , cprSystemId :: Key StarSystem\r\n    , cprOwnerId  :: Maybe (Key Faction)\r\n    , cprName     :: Maybe Text\r\n    , cprPosition :: Maybe Int\r\n    , cprGravity  :: Maybe Double\r\n    , cprDate     :: Int\r\n    } deriving Show\r\n</code></pre>\r\n\r\n<p>Data from database need to be transformed before working on it. Usually it\'s 1:1 mapping, but sometimes it makes sense to enrich it (turning IDs into names for example). For this we use <em>ReportTransform</em> type class:</p>\r\n\r\n<pre><code>\r\n-- | Class to transform a report stored in db to respective collated report\r\nclass ReportTransform a b where\r\n    fromReport :: a -&gt; b\r\n\r\ninstance ReportTransform PlanetReport CollatedPlanetReport where\r\n    fromReport report =\r\n	CollatedPlanetReport (planetReportPlanetId report)\r\n			     (planetReportStarSystemId report)\r\n			     (planetReportOwnerId report)\r\n			     (planetReportName report)\r\n			     (planetReportPosition report)\r\n			     (planetReportGravity report)\r\n			     (planetReportDate report)\r\n</code></pre>\r\n\r\n<p>To easily combine bunch of collated reports together, we define instances\r\n    of <em>semigroup</em> and <em>monoid</em> for collated report data.\r\n    Semigroup defines an associative binary operation (&lt;&gt;) and monoid defines a zero or empty item (mempty). My explanation about Monoid and Semigroup were a bit rambling, so maybe have a look at <a href=\"https://wiki.haskell.org/Monoid\">https://wiki.haskell.org/Monoid</a> which explains it in detail.</p>\r\n\r\n<pre><code>\r\ninstance Semigroup CollatedPlanetReport where\r\n    (&lt;&gt;) a b = CollatedPlanetReport (cprPlanetId a)\r\n				    (cprSystemId a)\r\n				    (cprOwnerId a &lt;|&gt; cprOwnerId b)\r\n				    (cprName a &lt;|&gt; cprName b)\r\n				    (cprPosition a &lt;|&gt; cprPosition b)\r\n				    (cprGravity a &lt;|&gt; cprGravity b)\r\n				    (max (cprDate a) (cprDate b))\r\n\r\ninstance Monoid CollatedPlanetReport where\r\n    mempty = CollatedPlanetReport (toSqlKey 0) (toSqlKey 0) Nothing Nothing Nothing Nothing 0\r\n</code></pre>\r\n\r\n<p>In some cases there might be a list of collated reports that are about different entities of same type (several reports for every planet in solar system). For those cases, we need a way to tell what reports belong together:</p>\r\n\r\n<pre><code>\r\n-- | Class to indicate if two reports are about same entity\r\nclass Grouped a where\r\n    sameGroup :: a -&gt; a -&gt; Bool\r\n\r\ninstance Grouped PlanetReport where\r\n    sameGroup a b =\r\n	planetReportPlanetId a == planetReportPlanetId b\r\n</code></pre>\r\n\r\n<p>After this, processing a list of reports for same entity is short amount of very general code:</p>\r\n\r\n<pre><code>\r\n-- | Combine list of reports and form a single collated report\r\n--   Resulting report will have facts from the possibly partially empty reports\r\n--   If a fact is not present for a given field, Nothing is left there\r\ncollateReport :: (Monoid a, ReportTransform b a) =&gt; [b] -&gt; a\r\ncollateReport reports = mconcat (map fromReport reports)\r\n</code></pre>\r\n\r\n<p>For reports of multiple entities is bit more complex, as they need to be sorted first, but the code is similarly general:</p>\r\n\r\n<pre><code>\r\n-- | Combine list of reports and form a list of collated reports\r\n--   Each reported entity is given their own report\r\ncollateReports :: (Grouped b, Monoid a, ReportTransform b a) =&gt; [b] -&gt; [a]\r\ncollateReports [] = []\r\ncollateReports s@(x:_) = collateReport itemsOfKind : collateReports restOfItems\r\n    where split = span (sameGroup x) s\r\n	  itemsOfKind = fst split\r\n	  restOfItems = snd split\r\n</code></pre>\r\n\r\n<p>Final step is to either render reports as HTML or send them as JSON back to client. For JSON case we need one more type class instance (ToJSON) that can be automatically generated. After that handler function can be defined. After authenticating the user and checking that they are member of a faction, reports of specific planet (defined by its primary key) are retrieved from database, collated, turned into JSON and sent back to client:</p>\r\n\r\n<pre><code>\r\n$(deriveJSON defaultOptions {fieldLabelModifier = drop 3} \'\'CollatedPlanetReport)\r\n\r\ngetApiPlanetR :: Key Planet -&gt; Handler Value\r\ngetApiPlanetR planetId = do\r\n    (_, _, fId) &lt;- apiRequireFaction\r\n    loadedPlanetReports &lt;- runDB $ selectList [ PlanetReportPlanetId ==. planetId\r\n					      , PlanetReportFactionId ==. fId ] [ Asc PlanetReportDate ]\r\n    let planetReport = collateReport $ map entityVal loadedPlanetReports :: CollatedPlanetReport\r\n    return $ toJSON planetReport\r\n</code></pre>\r\n\r\n<p>For those interested seeing some code, source is available at <a href=\"https://github.com/Tuula/deep-sky/\">https://github.com/Tuula/deep-sky/</a> (<a href=\"https://github.com/Tuula/deep-sky/tree/baa0807dd36b61fd02174b17c10013862af4ec18\">https://github.com/Tuula/deep-sky/tree/baa0807dd36b61fd02174b17c10013862af4ec18</a> is situation before lots of Elm related changes that I mentioned in passing in the previous episode)</p>\r\n\r\n',364,107,0,'CC-BY-SA','haskell, yesod',0,0,1),
(2692,'2018-11-27','YouTube URL tricks',436,'URL tricks for YouTube to enhance viewing experience and an overview of my viewing methodology','<h2>YouTube URL Tricks by Desearcher</h2>\r\n<br/><table><tr><th>Recommended Episode</th></tr><tr><td><a href=\"https://hackerpublicradio.org/eps.php?id=2675\">YouTube Playlists</a> by <a href=\"https://hackerpublicradio.org/correspondents/0198.html\">Ahuka</a></td></tr></table>\r\n<br/><table><tr><th colspan=\"2\">User Upload playlist</th></tr><tr><td>BEFORE</td><td><code>https://www.youtube.com/channel/UCAL3JXZSzSm8AlZyD3nQdBA</code></td></tr><tr><td>AFTER</td><td><code>https://www.youtube.com/playlist?list=UUAL3JXZSzSm8AlZyD3nQdBA</code></td></tr></table>\r\n<br/><table><tr><th colspan=\"2\">Embeded Player</th></tr><tr><td>BEFORE</td><td><code>https://www.youtube.com/playlist?list=UUAL3JXZSzSm8AlZyD3nQdBA</code></td></tr><tr><td>AFTER</td><td><code>https://www.youtube.com/embed?list=UUAL3JXZSzSm8AlZyD3nQdBA</code></td></tr></table>\r\n<br/><table><tr><th colspan=\"2\">Watch Later</th></tr><tr><td>NORMAL</td><td><code>https://www.youtube.com/playlist?list=WL</code></td></tr><tr><td>EMBED</td><td><code>https://www.youtube.com/embed?list=WL</code></td></tr></table>\r\n<br/><table><tr><th>Show \"Remove Watched\" Button in Watch Later queue</th></tr><tr><td><code>https://www.youtube.com/playlist?list=WL&amp;disable_polymer=true</code></td></tr></table>\r\n<br/><table><tr><th colspan=\"2\">Chrome App trick to maximize viewing area</th></tr><tr><td>Watch Later</td><td><code>chrome -app=\"https://www.youtube.com/embed?list=WL\"</code></td></tr><tr><td>Playlist</td><td><code>chrome -app=\"https://www.youtube.com/embed?list=PLZHQObOWTQDMsr9K-rj53DwVRMYO3t5Yr\"</code></td></tr></table>\r\n<br/><table><tr><th>Play On TV</th></tr><tr><td><code>https://www.youtube.com/pair</code></td></tr></table>\r\n<br/><table><tr><th>TCL Roku TV</th></tr><tr><td><a href=\"https://www.roku.com/products/finder/roku-tv\">Roku Product List</a></td></tr></table>\r\n',371,0,0,'CC-BY-SA','YouTube,URL,Chrome,Roku,Smart TV',0,0,1),
(2709,'2018-12-20','Bash Tips - 16',1440,'Arrays in Bash (part 1)','<h1 id=\"bash-tips---16\">Bash Tips - 16 <small><small>(Further auxiliary Bash tips)</small></small></h1>\r\n<h2 id=\"arrays-in-bash\">Arrays in Bash</h2>\r\n<p>This is the first of a small group of shows on the subject of arrays in Bash. It is also the sixteenth show in the <em>Bash Tips</em> sub-series.</p>\r\n<p>We have encountered Bash arrays at various points throughout this sub-series, and have even seen a number of examples, but the subject has never been examined in detail. This group of shows intends to make good this deficiency.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2709/full_shownotes.html\">viewed here</a>.</p>\r\n<h2>Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li>Section on <a href=\"https://www.gnu.org/software/bash/manual/bash.html#Arrays\">“Bash Arrays”</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Linux Documentation Project: <a href=\"https://www.tldp.org/LDP/abs/html/index.html\">Advanced Bash-Scripting Guide</a>\r\n<ul>\r\n<li><a href=\"https://www.tldp.org/LDP/abs/html/arrays.html\">Chapter 27: Arrays</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2659\">HPR episode 2659 “<em>Further ancillary Bash tips - 11</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2669\">HPR episode 2669 “<em>Additional ancillary Bash tips - 12</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2679\">HPR episode 2679 “<em>Extra ancillary Bash tips - 13</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2689\">HPR episode 2689 “<em>Bash Tips - 14 (Some auxiliary Bash tips)</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2699\">HPR episode 2699 “<em>Bash Tips - 15 (More auxiliary Bash tips)</em>”</a></li>\r\n</ol></li>\r\n</ul>\r\n<ul>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2709/bash16_ex1.sh\">bash16_ex1.sh</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,42,1,'CC-BY-SA','Bash,array,indexed array,associative array',0,0,1),
(2713,'2018-12-26','Resources in 4x game',1252,'One way to implement data types for raw resources in Haskell','<p>Raw resources are integral part for most 4x games. Here’s one way of modeling them in Haskell. I wanted a system that is easy to use, doesn’t require too much typing and is type safe.</p>\r\n<p>RawResource is basic building block:</p>\r\n<pre><code>newtype RawResource a = RawResource { unRawResource :: Int }\r\n    deriving (Show, Read, Eq)</code></pre>\r\n<p>It can be parametrised with anything, but I’m using three different types:</p>\r\n<pre><code>data Biological = Biological\r\ndata Mechanical = Mechanical\r\ndata Chemical = Chemical</code></pre>\r\n<p>Example of defining harvest being 100 units of biological raw resources:</p>\r\n<pre><code>  harvest :: RawResource Biological\r\n  harvest = RawResource 100</code></pre>\r\n<p>Raw resources are often manipulated (added and subtracted mostly). Defining Num instance allows us to use them as numbers:</p>\r\n<pre><code>instance Num (RawResource t) where\r\n    (+) (RawResource a) (RawResource b) = RawResource $ a + b\r\n    (-) (RawResource a) (RawResource b) = RawResource $ a - b\r\n    (*) (RawResource a) (RawResource b) = RawResource $ a * b\r\n    abs (RawResource a) = RawResource $ abs a\r\n    signum (RawResource a) = RawResource $ signum a\r\n    fromInteger a = RawResource $ fromInteger a</code></pre>\r\n<p>For example, adding harvest to stock pile:</p>\r\n<pre><code>  stock :: RawResource Biological\r\n  stock = RawResource 1000\r\n\r\n  harvest :: RawResource Biological\r\n  harvest = RawResource 100\r\n\r\n  newStock = stock + harvest</code></pre>\r\n<p>Comparing size of two resource piles is common operation. Ord instance has methods we need for comparing:</p>\r\n<pre><code>instance Ord (RawResource t) where\r\n    (&lt;=) (RawResource a) (RawResource b) = a &lt;= b</code></pre>\r\n<p>One function is enough, as rest is defined in terms of it. Sometimes (usually for reasons of optimization), one might want to define other functions too.</p>\r\n<p>Another way to add bunch of resources of same type together is defining Monoid instance:</p>\r\n<pre><code>instance Semigroup (RawResource t) where\r\n    (&lt;&gt;) a b = a + b\r\n\r\ninstance Monoid (RawResource t) where\r\n    mempty = RawResource 0</code></pre>\r\n<p>For example, combining harvests of many fields can be achieved as:</p>\r\n<pre><code>  harvests :: [RawResource Biological]\r\n  harvests = [RawResource 20, RawResource 50, RawResource 25]\r\n\r\n  total :: RawResource Biological\r\n  total = mappend harvests</code></pre>\r\n<p>All these functions keep track of type of resources being manipulated. Compiler will emit an error if two different types of resources are being mixed together.</p>\r\n<p>Raw resources are often grouped together for specific purpose. This again uses phantom types to keep track the intended usage:</p>\r\n<pre><code>data RawResources a = RawResources\r\n    { ccdMechanicalCost :: RawResource Mechanical\r\n    , ccdBiologicalCost :: RawResource Biological\r\n    , ccdChemicalCost :: RawResource Chemical\r\n    } deriving (Show, Read, Eq)\r\n\r\ndata ResourceCost = ResourceCost\r\ndata ConstructionSpeed = ConstructionSpeed\r\ndata ConstructionLeft = ConstructionLeft\r\ndata ConstructionDone = ConstructionDone\r\ndata ResourcesAvailable = ResourcesAvailable</code></pre>\r\n<p>And in order to be able to combine piles of RawResources, we’ll define Semigroup and Monoid instances. Notice how both instances make use of Semigroup and Monoid instances of RawResource:</p>\r\n<pre><code>instance Semigroup (RawResources t) where\r\n    (&lt;&gt;) a b = RawResources\r\n        { ccdMechanicalCost = ccdMechanicalCost a &lt;&gt; ccdMechanicalCost b\r\n        , ccdBiologicalCost = ccdBiologicalCost a &lt;&gt; ccdBiologicalCost b\r\n        , ccdChemicalCost = ccdChemicalCost a &lt;&gt; ccdChemicalCost b\r\n        }\r\n\r\ninstance Monoid (RawResources t) where\r\n    mempty = RawResources\r\n        { ccdMechanicalCost = mempty\r\n        , ccdBiologicalCost = mempty\r\n        , ccdChemicalCost = mempty\r\n        }</code></pre>\r\n<p>For those interested seeing some code, source is available at <a href=\"https://github.com/Tuula/deep-sky/\" class=\"uri\">https://github.com/Tuula/deep-sky/</a> (<a href=\"https://github.com/Tuula/deep-sky/tree/baa0807dd36b61fd02174b17c10013862af4ec18\" class=\"uri\">https://github.com/Tuula/deep-sky/tree/baa0807dd36b61fd02174b17c10013862af4ec18</a> is situation before lots of Elm related changes that I mentioned in passing in the previous episode)</p>\r\n',364,107,0,'CC-BY-SA','haskell',0,0,1),
(2719,'2019-01-03','Bash Tips - 17',2056,'Arrays in Bash (part 2)','<h1 id=\"bash-tips---17\">Bash Tips - 17 <small><small>(Additional auxiliary Bash tips)</small></small></h1>\r\n<h2 id=\"arrays-in-bash\">Arrays in Bash</h2>\r\n<p>This is the second of a small group of shows on the subject of arrays in Bash. It is also the seventeenth show in the <em>Bash Tips</em> sub-series.</p>\r\n<p>In the last show we saw the two types of arrays, and learned about the multiple ways of creating them and populating them. We also looked at how array elements and entire arrays are accessed.</p>\r\n<p>Now we want to continue looking at array access and some of the various parameter expansion operations available.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2719/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li>Section on <a href=\"https://www.gnu.org/software/bash/manual/bash.html#Arrays\">“Bash Arrays”</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Linux Documentation Project: <a href=\"https://www.tldp.org/LDP/abs/html/index.html\">Advanced Bash-Scripting Guide</a>\r\n<ul>\r\n<li><a href=\"https://www.tldp.org/LDP/abs/html/arrays.html\">Chapter 27: Arrays</a></li>\r\n</ul></li>\r\n<li><p>Wikipedia article entitled <a href=\"https://en.wikipedia.org/wiki/Fibonacci_number\">“<em>Fibonacci Number</em>”</a></p></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2659\">HPR episode 2659 “<em>Further ancillary Bash tips - 11</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2669\">HPR episode 2669 “<em>Additional ancillary Bash tips - 12</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2679\">HPR episode 2679 “<em>Extra ancillary Bash tips - 13</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2689\">HPR episode 2689 “<em>Bash Tips - 14 (Some auxiliary Bash tips)</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2699\">HPR episode 2699 “<em>Bash Tips - 15 (More auxiliary Bash tips)</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2709\">HPR episode 2709 “<em>Bash Tips - 16 (Further auxiliary Bash tips)</em>”</a></li>\r\n</ol></li>\r\n</ul>\r\n<ul>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2719/bash17_ex1.sh\">bash17_ex1.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2719/bash17_ex2.sh\">bash17_ex2.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2719/bash17_ex3.sh\">bash17_ex3.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2719/bash17_ex4.sh\">bash17_ex4.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2719/bash17_ex5.sh\">bash17_ex5.sh</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,42,1,'CC-BY-SA','Bash,array,indexed array,associative array',0,0,1),
(2694,'2018-11-29','Bandit Update',699,'NYbill does a quick episode to mention there are new Over the Wire, Bandit levels out.','<p>(No Spoilers)</p>\r\n<p>NYbill does a quick episode to mention there are new Over the Wire, Bandit levels out.</p>\r\n<p><a href=\"https://overthewire.org/wargames/bandit/bandit0.html\" class=\"uri\">https://overthewire.org/wargames/bandit/bandit0.html</a></p>\r\n<p>Original Episode:</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=2138\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2138</a></p>\r\n',235,0,0,'CC-BY-SA','Hacking, War games, Linux',0,0,1),
(2697,'2018-12-04','The Linux Shutdown Command Explained',402,'A short pod cast about the linux shutdown command','<p>\r\nA short podcast about the shutdown command \r\n</p>\r\n<p>\r\n<a href=\"https://linuxhandbook.com/linux-shutdown-command/\">https://linuxhandbook.com/linux-shutdown-command/</a>\r\n</p>',129,0,0,'CC-BY-SA','Linux,shutdown',0,0,1),
(2698,'2018-12-05','XSV for fast CSV manipulations - Part 1',1837,'Written in Rust, xsv is my new favorite tool for manipulating csv files','<h1 id=\"xsv-for-fast-csv-manipulations---part-1-basic-usage\">XSV for fast CSV manipulations - Part 1: Basic Usage</h1>\r\n<blockquote>\r\n<p><a href=\"https://github.com/BurntSushi/xsv\" class=\"uri\">https://github.com/BurntSushi/xsv</a></p>\r\n</blockquote>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>xsv is a command line program for indexing, slicing, analyzing, splitting and joining CSV files. Commands should be simple, fast and composable:</p>\r\n<ol>\r\n<li>Simple tasks should be easy.</li>\r\n<li>Performance trade offs should be exposed in the CLI interface.</li>\r\n<li>Composition should not come at the expense of performance.</li>\r\n</ol>\r\n<p>We will be using the CSV file provided in the <a href=\"https://burntsushi.net/stuff/worldcitiespop.csv\">documentation</a>.</p>\r\n<h2 id=\"commands-covered-in-this-episode\">Commands covered in this episode</h2>\r\n<ul>\r\n<li>count - Count the rows of CSV data</li>\r\n<li>headers - Show the headers of CSV data, or show the intersection of all headers between many CSV files</li>\r\n<li>index - Create an index for a CSV file. This is very quick and provides constant time indexing into the CSV file.</li>\r\n<li>frequency - Build frequency tables of each column in CSV data.</li>\r\n<li>stats - Show basic types and statistics of each column in the CSV file. (i.e., mean, standard deviation, median, range, etc.)</li>\r\n<li>sort - Sort CSV data</li>\r\n<li>select - Select or re-order columns from CSV data.</li>\r\n<li>slice - Slice rows from any part of a CSV file. When an index is present, this only has to parse the rows in the slice (instead of all rows leading up to the start of the slice).</li>\r\n<li>search - Run a regex over CSV data. Applies the regex to each field individually and shows only matching rows.</li>\r\n<li>table - Show aligned output of any CSV data using elastic tabstops.</li>\r\n<li>flatten - A flattened view of CSV records. Useful for viewing one record at a time.</li>\r\n</ul>\r\n',300,0,0,'CC-BY-SA','CSV,XSV',0,0,1),
(2700,'2018-12-07','Episode 3000',26830,'We commemorate the 300 Today with a Techie and 2700 Hacker Public Radio shows','<p>\r\nOn the 19th of September 2005 a group of individuals got together to release their first show on the podcast network \"Today with a Techie\".\r\n</p>\r\n<p>\r\nThe idea was to share knowledge through podcasting. Now 13 years, 2 months, 19 days later the project is still going strong, and you dear listener are a part of it.\r\n</p>\r\n<p>\r\nToday marks the 2700th episode of \"Hacker Public Radio\" and coupled with the 300 shows from \"Today with a Techie\", marks the 3000th episode of this project.\r\n</p>\r\n<p>\r\nA big thanks goes out to all 354 individual hosts who together contributed 1452 hours of shows to the archive. \r\n</p>\r\n<p>\r\nThere is about 50 giga bytes of mp3 files alone. \r\n</p>\r\n<p>\r\nWhich played back to back gives 60 days 11 hours 40 minutes 21 seconds of continuous play. \r\n</p>\r\n<p>\r\nIf you started listening today and played the shows 24 x 7 you wouldn\'t be finished listening until Monday, February 5th, 2019.\r\n</p>\r\n<p>\r\nOf course by then there would be 39 additional shows released, so you still wouldn\'t be finished.\r\n</p>\r\n<p>\r\nDespite all this we still don\'t have a wikipedia page. If you can, please take the time to create one for us. There is plenty of supporting information in the \"In the Press\" section of our about page.\r\n</p>\r\n<p>\r\nSo to mark the 3000th episode we are going to do nothing more than list the shows, host and summary where available.\r\n</p>\r\n<p>\r\nJust doing that alone creates a whopping 7 and a half hour episode. \r\n</p>\r\n<p>\r\nAre you l33t enough to listen to it all ?\r\n</p>\r\n<p>\r\nLet\'s go.\r\n</p>',30,0,0,'CC-BY-SA','TWaT, HPR, 3000',0,0,1),
(2701,'2018-12-10','First impressions of the Odroid-go',1926,'I ramble on about my first impressions of the odroid-go','<p>I ramble on about my impressions of the Odroid-go, a 32 USD handheld system similar to a gameboy built to run game system emulators and various other free software. It’s also built to be harcked.</p>\r\n<p><a href=\"https://wiki.odroid.com/odroid_go/odroid_go\" class=\"uri\">https://wiki.odroid.com/odroid_go/odroid_go</a></p>\r\n<p>The summary is this is an easy to put together kit requiring no soldering, and runs classic console emulators pretty well. Well worth the 32 USD plus shipping in my opinion. Claims 10 hours of game play and that seems about right so far for me.</p>\r\n<p>The systems emulated out of the box are:</p>\r\n<p>NES, Game Gear, Gameboy, Gameboy Color, Sega Master System, ColecoVision. Other systems of similar or earlier vintages have emulators that you have to install separately and boot into to run. I don’t think it will emulate newer systems. No Gameboy Advance emulator and I don’t see a Mame emulator. However, I do think this ‘might’ support Mame for some of the early arcade games like Asteroids and Space Invaders.</p>',151,103,0,'CC-0','Odroid-go',0,0,1),
(2702,'2018-12-11','Audacity set up and response to episode 2658',107,'Just a quick response to Ep2658','<p>Hi Guys and Girls in HPR land.</p>\r\n<p>This is Tony Hughes in Blackpool in the UK back for another show. I normally talk about my own stuff but while it is related to what I have been doing lately this is a response to Al’s interview with Dave in Episode 2658 and how to setup Audacity to record and edit audio for best sound quality when podcasting.</p>\r\n<p>I’ve recently joined the mintCast podcast team and have been editing and doing the post production of the audio recording for the last couple of episodes. The information that Dave provided during the show was invaluable in helping me in this task, I also have to give a shout out to Rob the previous host who also spent an hour and a half giving a tutorial on his post production work flow, but the additional information given by Dave in this show was also a big help.</p>\r\n<p>I’ve now purchased a boom arm and pop filter for my mic to reduce any artefacts in the recording although as it is still attached to my desk I think I may need to invest in a shock mount although I’m not sure how it will attach to my current Boom arm. Ah well that’s a problem for another day.</p>\r\n<p>As I said this was just a shout out to Al and Dave to say thanks for the show and I will save it for another day to do a show on my new post production work flow on the mintCast audio.</p>\r\n<p>This is Tony Hughes saying goodbye for now.</p>\r\n<p><a href=\"https://mintcast.org/about-the-authors/tonyh/\" class=\"uri\">https://mintcast.org/about-the-authors/tonyh/</a><br />\r\n<a href=\"mailto:th@mintcast.org\">th@mintcast.org</a></p>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=2658\">https://hackerpublicradio.org/eps.php?id=2658</a></p>',338,0,0,'CC-BY-SA','audio,Audacity',0,0,1),
(2715,'2018-12-28','About ONAP',618,'The Linux foundations ONAP project all about it','<p>So I went to the open networking trade show sponsored by the Linux Foundation with Ken Fallon’s help.</p>\r\n<p>The first thing they talked about was ONAP.</p>\r\n<p><a href=\"https://www.onap.org/\" class=\"uri\">https://www.onap.org/</a><br />\r\n<a href=\"https://en.wikipedia.org/wiki/ONAP\" class=\"uri\">https://en.wikipedia.org/wiki/ONAP</a></p>\r\n',129,61,1,'CC-BY-SA','Networking,ONAP,Open Networking Automation Platform',0,0,1),
(2722,'2019-01-08','RAID 6 a short description',150,'How Raid 6 works','<p>Raid 6 is a take of raid 5 but with support for 2 drive protection.</p>',129,0,1,'CC-BY-SA','Raid6',0,0,1),
(2742,'2019-02-05','SAP Hana Certification Directory',1085,'How the SAP Hana certification works','<p>SAP Hana certification is a long and hard process covered at<br />\r\n<a href=\"https://www.sap.com/dmc/exp/2014-09-02-hana-hardware/enEN/index.html\" class=\"uri\">https://www.sap.com/dmc/exp/2014-09-02-hana-hardware/enEN/index.html</a></p>',129,0,0,'CC-BY-SA','SAP HANA,certification',0,0,1),
(3001,'2020-02-03','HPR Community News for January 2020',2649,'HPR Volunteers Dave and Ken talk about shows released and comments posted in January 2020','<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=2978\" target=\"_blank\">2978</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-01-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2978\" target=\"_blank\">GARAGE DOOR</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=2979\" target=\"_blank\">2979</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-01-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2979\" target=\"_blank\">Bicycle Freewheel 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=2980\" target=\"_blank\">2980</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-01-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2980\" target=\"_blank\">FLOSS Weekly 553 - Hacker Public Radio</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=2981\" target=\"_blank\">2981</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-01-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2981\" target=\"_blank\">HPR Community News for December 2019</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=2982\" target=\"_blank\">2982</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-01-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2982\" target=\"_blank\">World of Commodore 2019 Episode 4: Bare metal c64 Emulation on Raspberry Pi</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2983\" target=\"_blank\">2983</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-01-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2983\" target=\"_blank\">my phone</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=2984\" target=\"_blank\">2984</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-01-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2984\" target=\"_blank\">RHEL 8 Workstation first looks </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=2985\" target=\"_blank\">2985</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-01-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2985\" target=\"_blank\">Firefox Update</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=2986\" target=\"_blank\">2986</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-01-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2986\" target=\"_blank\">Onlykey Updated</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=2987\" target=\"_blank\">2987</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-01-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2987\" target=\"_blank\">World of Commodore 2019 Episode 5: New games from Double Sided Games</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2988\" target=\"_blank\">2988</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-01-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2988\" target=\"_blank\">A tale of two hackers in the same system</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=2989\" target=\"_blank\">2989</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-01-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2989\" target=\"_blank\">Hacker Public Radio 2019-20 New Year Show Episode 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0265.html\" target=\"_blank\">Kevin Wisher</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2990\" target=\"_blank\">2990</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-01-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2990\" target=\"_blank\">JDK14 - Wrap up edition</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=2991\" target=\"_blank\">2991</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-01-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2991\" target=\"_blank\">Fix yer fog machine</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=2992\" target=\"_blank\">2992</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-01-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2992\" target=\"_blank\">World of Commodore 2019 Episode 6: Introduction to C64 OS</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2993\" target=\"_blank\">2993</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-01-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2993\" target=\"_blank\">Hacker Public Radio 2019-20 New Year Show Episode 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0265.html\" target=\"_blank\">Kevin Wisher</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2994\" target=\"_blank\">2994</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-01-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2994\" target=\"_blank\">Wrestling As You Like It Episode 3</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0354.html\" target=\"_blank\">TheDUDE</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2995\" target=\"_blank\">2995</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-01-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2995\" target=\"_blank\">ActivityPub Conference 2019 - ActivityPub: past, present, future</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=2996\" target=\"_blank\">2996</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-01-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2996\" target=\"_blank\">Spideroak Update</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=2997\" target=\"_blank\">2997</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-01-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2997\" target=\"_blank\">World of Commodore 2019 Episode 7: Video Playback with 1541 Ultimate</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2998\" target=\"_blank\">2998</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-01-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2998\" target=\"_blank\">Hacker Public Radio 2019-20 New Year Show Episode 3</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0265.html\" target=\"_blank\">Kevin Wisher</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2999\" target=\"_blank\">2999</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-01-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2999\" target=\"_blank\">SQRL - Secure Quick Reliable Login</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=3000\" target=\"_blank\">3000</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-01-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3000\" target=\"_blank\">Chopin Free project</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</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 is 1 comment on\n1 previous show:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=95#comments\" target=\"_blank\">hpr95</a></strong>\n(2008-05-12) \"<em>Security Wow!</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0086.html\" target=\"_blank\">rowinggolfer</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=95#1\" target=\"_blank\">Comment 1</a>:\npokey on 2020-01-01:\n\"A long overdue thank you.\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 8 comments on 6 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2979#comments\" target=\"_blank\">hpr2979</a></strong>\n(2020-01-02) \"<em>Bicycle Freewheel Maintenance</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=2979#1\" target=\"_blank\">Comment 1</a>:\nDave on 2020-01-02:\n\"Like the show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2988#comments\" target=\"_blank\">hpr2988</a></strong>\n(2020-01-15) \"<em>A tale of two hackers in the same system</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0115.html\" target=\"_blank\">sigflup</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2988#1\" target=\"_blank\">Comment 1</a>:\nClaudioM on 2020-01-15:\n\"Welcome Back!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2988#2\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2020-01-20:\n\"Condolences on behalf of HPR\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2989#comments\" target=\"_blank\">hpr2989</a></strong>\n(2020-01-16) \"<em>Hacker Public Radio 2019-20 New Year Show Episode 1</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0265.html\" target=\"_blank\">Kevin Wisher</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2989#1\" target=\"_blank\">Comment 1</a>:\nbeian on 2020-01-18:\n\"silence?\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=2989#2\" target=\"_blank\">Comment 2</a>:\nbrian on 2020-01-18:\n\"oops\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2991#comments\" target=\"_blank\">hpr2991</a></strong>\n(2020-01-20) \"<em>Fix yer fog machine</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=2991#1\" target=\"_blank\">Comment 1</a>:\nKen on 2020-01-20:\n\"Bigclive\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2992#comments\" target=\"_blank\">hpr2992</a></strong>\n(2020-01-21) \"<em>World of Commodore 2019 Episode 6: Introduction to C64 OS</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=2992#1\" target=\"_blank\">Comment 1</a>:\nGreg Nacu on 2020-01-29:\n\"Thanks for the episode!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3000#comments\" target=\"_blank\">hpr3000</a></strong>\n(2020-01-31) \"<em>Chopin Free project</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3000#1\" target=\"_blank\">Comment 1</a>:\nClaudioM on 2020-01-31:\n\"Wow...just, WOW!\"</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/2020-January/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2020-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=\"tags-and-summaries\">Tags and Summaries</h3>\n<p>Thanks to the following contributors for sending in updates in the past month: <b><a href=\"https://hackerpublicradio.org/correspondents/0215.html\">Windigo</a>, <a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></b></p>\n<p>Over the period tags and/or summaries have been added to 9 shows which were without them.</p>\n<p>If you would like to contribute to the tag/summary project visit the summary page at <a href=\"https://hackerpublicradio.org/report_missing_tags.php\" class=\"uri\">https://hackerpublicradio.org/report_missing_tags.php</a> and follow the instructions there.</p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3021,'2020-03-02','HPR Community News for February 2020',3272,'Call for shows is open. Ken and eventually Dave discuss the shows, media and development plans.','<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/0384.html\" target=\"_blank\">monochromec</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=3001\" target=\"_blank\">3001</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-02-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3001\" target=\"_blank\">HPR Community News for January 2020</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=3002\" target=\"_blank\">3002</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-02-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3002\" target=\"_blank\">World of Commodore 2019 Episode 8: Vote of thanks</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3003\" target=\"_blank\">3003</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-02-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3003\" target=\"_blank\">Hacker Public Radio 2019 2020 New Year Show Episode 4</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0265.html\" target=\"_blank\">Kevin Wisher</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3004\" target=\"_blank\">3004</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-02-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3004\" target=\"_blank\">Fixing simple audio problems with Audacity</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=3005\" target=\"_blank\">3005</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-02-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3005\" target=\"_blank\">Is ActivityPub Paving The Way to Web 3.0?</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=3006\" target=\"_blank\">3006</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-02-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3006\" target=\"_blank\">Hijack Auxiliary Input of your car!</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=3007\" target=\"_blank\">3007</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-02-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3007\" target=\"_blank\">Photography 101</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3008\" target=\"_blank\">3008</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-02-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3008\" target=\"_blank\">Hacker Public Radio 2019-20 New Year Show Episode 5</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0265.html\" target=\"_blank\">Kevin Wisher</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3009\" target=\"_blank\">3009</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-02-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3009\" target=\"_blank\">Linux Inlaws S01 E01</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=3010\" target=\"_blank\">3010</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-02-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3010\" target=\"_blank\">FOSDEM first impressions</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=3011\" target=\"_blank\">3011</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-02-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3011\" target=\"_blank\">Linux is HARD rant with Intel graphics</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=3012\" target=\"_blank\">3012</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-02-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3012\" target=\"_blank\">Sample episode from Wikipediapodden</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=3013\" target=\"_blank\">3013</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-02-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3013\" target=\"_blank\">Bash Tips - 21</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=3014\" target=\"_blank\">3014</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-02-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3014\" target=\"_blank\">A Headless Raspberry Pi Streaming Radio</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=3015\" target=\"_blank\">3015</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-02-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3015\" target=\"_blank\">ActivityPub Conference 2019 - The Semantic Social Network</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=3016\" target=\"_blank\">3016</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-02-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3016\" target=\"_blank\">Nixie tube clock and friends!</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=3017\" target=\"_blank\">3017</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-02-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3017\" target=\"_blank\">Developing Black and White Film</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3018\" target=\"_blank\">3018</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-02-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3018\" target=\"_blank\">Encrypted edit</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=3019\" target=\"_blank\">3019</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-02-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3019\" target=\"_blank\">Linux Inlaws S01E02 FOSDEM shenanigans</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=3020\" target=\"_blank\">3020</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-02-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3020\" target=\"_blank\">Validating data in Haskell</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</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 16 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 3 comments on\n2 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2999#comments\" target=\"_blank\">hpr2999</a></strong>\n(2020-01-30) \"<em>SQRL - Secure Quick Reliable Login</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=2999#1\" target=\"_blank\">Comment 1</a>:\nAhuka on 2020-02-06:\n\"Great show!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3000#comments\" target=\"_blank\">hpr3000</a></strong>\n(2020-01-31) \"<em>Chopin Free project</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3000#2\" target=\"_blank\">Comment 2</a>:\nAhuka on 2020-02-02:\n\"Great show!\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3000#3\" target=\"_blank\">Comment 3</a>:\nmcnalu on 2020-02-02:\n\"Great!\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 13 comments on 6 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3002#comments\" target=\"_blank\">hpr3002</a></strong>\n(2020-02-04) \"<em>World of Commodore 2019 Episode 8: Vote of thanks</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3002#1\" target=\"_blank\">Comment 1</a>:\nWindigo on 2020-02-18:\n\"Thanks for the series\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3003#comments\" target=\"_blank\">hpr3003</a></strong>\n(2020-02-05) \"<em>Hacker Public Radio 2019 2020 New Year Show Episode 4</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0265.html\" target=\"_blank\">Kevin Wisher</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3003#1\" target=\"_blank\">Comment 1</a>:\nfolky on 2020-02-20:\n\"Dark reader\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3008#comments\" target=\"_blank\">hpr3008</a></strong>\n(2020-02-12) \"<em>Hacker Public Radio 2019-20 New Year Show Episode 5</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0265.html\" target=\"_blank\">Kevin Wisher</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3008#1\" target=\"_blank\">Comment 1</a>:\nnorrist on 2020-02-26:\n\"These 2 guys should get together more often\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3009#comments\" target=\"_blank\">hpr3009</a></strong>\n(2020-02-13) \"<em>Linux Inlaws S01 E01</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=3009#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2020-02-15:\n\"Mailing list Discussion\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3009#2\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2020-02-15:\n\"Murmer/Mumble\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3009#3\" target=\"_blank\">Comment 3</a>:\nPeter Mortensen on 2020-02-19:\n\"The predecessor?\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3009#4\" target=\"_blank\">Comment 4</a>:\nChris on 2020-02-19:\n\"LinuxInlaws\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3013#comments\" target=\"_blank\">hpr3013</a></strong>\n(2020-02-19) \"<em>Bash Tips - 21</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=3013#1\" target=\"_blank\">Comment 1</a>:\ncrvs on 2020-02-24:\n\"So that\'s how you use shebangs!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3013#2\" target=\"_blank\">Comment 2</a>:\nDave Morriss on 2020-02-24:\n\"Writing awk scripts\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3014#comments\" target=\"_blank\">hpr3014</a></strong>\n(2020-02-20) \"<em>A Headless Raspberry Pi Streaming Radio</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=3014#1\" target=\"_blank\">Comment 1</a>:\nb-yeezi on 2020-02-20:\n\"Trying this tonight\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3014#2\" target=\"_blank\">Comment 2</a>:\nJon Kulp on 2020-02-20:\n\"Still Streaming with URL Update\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3014#3\" target=\"_blank\">Comment 3</a>:\nb-yeezi on 2020-02-20:\n\"Issue with mpg123\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3014#4\" target=\"_blank\">Comment 4</a>:\nJon Kulp on 2020-02-21:\n\"HTTP not HTTPS\"</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/2020-February/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2020-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=\"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/0152.html\">Claudio Miranda</a>, <a href=\"https://hackerpublicradio.org/correspondents/0215.html\">Windigo</a>, <a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></b></p>\n<p>Over the period tags and/or summaries have been added to 16 shows which were without them.</p>\n<p>If you would like to contribute to the tag/summary project visit the summary page at <a href=\"https://hackerpublicradio.org/report_missing_tags.php\" class=\"uri\">https://hackerpublicradio.org/report_missing_tags.php</a> and follow the instructions there.</p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
