(3039,'2020-03-26','Making a Raspberry Pi status display',1608,'A project making use of my Pi 3A+, an old monitor and MagicMirror2','<h2 id=\"introduction\">Introduction</h2>\n<p>I have had a project on my <em>To Do</em> list for a while: to make a status display from a Raspberry Pi. My vision was to show the state of various things including some HPR stuff, and I had imagined setting up a Pi with a monitor and controlling it over SSH.</p>\n<p>I started on the project over the Christmas period 2019. I have a Raspberry Pi 3A+, which is a sort of souped-up Pi Zero, which I bought on a whim and hadn’t found a use for (Yannick reviewed this RPi model in show <a href=\"https://hackerpublicradio.org/eps/hpr2711\" title=\"hpr2711 :: Raspberry Pi 3A+ Review\">2711</a>). I also had an old square Dell monitor from about 15 years ago which still worked (at least to begin with).</p>\n<p>I had imagined I’d write some software of my own with a web front end which ran various tasks to monitor things.</p>\n<p>However, in my researches I came across <em>MagicMirror<sup>2</sup></em> which I thought I might be able to use instead of writing my own thing.</p>\n<h2 id=\"long-notes\">Long notes</h2>\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"hpr3039_full_shownotes.html\">viewed here</a>.</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li>JavaScript programming language:\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/JavaScript\">Wikipedia entry</a></li>\n</ul></li>\n<li>Node.js JavaScript runtime environment:\n<ul>\n<li><a href=\"https://nodejs.org/en/\">Website</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Node.js\">Wikipedia entry</a></li>\n</ul></li>\n<li>Electron software framework:\n<ul>\n<li><a href=\"https://www.electronjs.org/\">Website</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Electron_%28software_framework%29\">Wikipedia entry</a></li>\n</ul></li>\n<li>MagicMirror<sup>2</sup>:\n<ul>\n<li><a href=\"https://github.com/MichMich/MagicMirror\">GitHub page</a></li>\n<li><a href=\"https://magicmirror.builders/\">Website</a></li>\n<li><a href=\"https://github.com/MichMich/MagicMirror/wiki/3rd-party-modules\">List of third-party modules</a></li>\n</ul></li>\n<li>Resources:\n<ul>\n<li>Example files:\n<ul>\n<li><a href=\"hpr3039_config.js\">config.js</a></li>\n<li><a href=\"hpr3039_custom.css\">custom.css</a></li>\n</ul></li>\n</ul></li>\n</ul>\n',225,0,1,'CC-BY-SA','Raspberry Pi,VGA monitor,MagicMirror2,MQTT,Node.js,Electron',0,0,1),
(3042,'2020-03-31','The COVID-19 Work From Home Stream - Day 0',4021,'A couple of HPR characters decide to spend some of their social distancing time being social','<p>Tuesday 17.03.2020</p>\r\n<p>Guests: honkeymagoo, crvs, and Thaj</p>\r\n<ul>\r\n<li>How likely we are to get COVID-19</li>\r\n<li>Should we invest while the market is down</li>\r\n<li>How bad is the internet infrastructure in the US</li>\r\n<li>Learning Python\r\n<ul>\r\n<li><a href=\"https://grasshopper.app/\">Grasshopper</a></li>\r\n<li><a href=\"https://github.com/ubarredo/LearnPythonTheHardWay\">Learn Python tne Hard Way</a></li>\r\n<li><a href=\"https://exercism.io\">Excercism</a></li>\r\n<li>Klaatu\'s <a href=\"https://www.amazon.com/Programming-Book-S-Kenlon/dp/098478425X/ref=sr_1_1?dchild=1&amp;keywords=9780984784257&amp;linkCode=qs&amp;qid=1584490615&amp;s=books&amp;sr=1-1\">Programming Book</a></li>\r\n</ul></li>\r\n<li>Growing plants</li>\r\n<li>That Audiobook Club though...</li>\r\n<li>Video games</li>\r\n<li>Single Board Computers\r\n<ul>\r\n<li>OpenBSD on <a href=\"https://www.openbsd.org/arm64.html\">Raspberry Pi</a></li>\r\n</ul></li>\r\n<li>Why haven\'t you done a show about that Thaj?</li>\r\n<li>Emacs and org-mode</li>\r\n<li>Nano for the win</li>\r\n</ul>\r\n',270,0,1,'CC-BY-SA','COVID-19, Stock Markets, Emacs, Python, Programming, Audiobooks, Growing Food, Video Games, SBCs',0,0,1),
(3043,'2020-04-01','How I record for HPR',119,'The tools I use to record a show for HPR','<ol type=\"1\">\r\n<li><p>Sentry BT250 Bluetooth Headphones w/ mic<br />\r\n<a href=\"https://www.amazon.com/Wireless-Rechargeable-Stereo-Earbuds-Bluetooth/dp/B015NFWDX8\" class=\"uri\">https://www.amazon.com/Wireless-Rechargeable-Stereo-Earbuds-Bluetooth/dp/B015NFWDX8</a></p></li>\r\n<li><p>F-Droid - free open source apps for Android<br />\r\n<a href=\"https://f-droid.org/en/\" class=\"uri\">https://f-droid.org/en/</a></p></li>\r\n<li>Audio Recorder from F-Droid<br />\r\n<a href=\"https://f-droid.org/en/packages/com.github.axet.audiorecorder/\" class=\"uri\">https://f-droid.org/en/packages/com.github.axet.audiorecorder/</a><br />\r\nFeatures:\r\n<ul>\r\n<li>Mute incoming call audio while recording</li>\r\n<li>Variety of format encoding\r\n<ul>\r\n<li>ogg (default)</li>\r\n<li>wav</li>\r\n<li>flac</li>\r\n<li>m4a</li>\r\n<li>mp3</li>\r\n<li>opus</li>\r\n</ul></li>\r\n</ul></li>\r\n<li><p>X-plore Android file explorer<br />\r\n<a href=\"https://play.google.com/store/apps/details?id=com.lonelycatgames.Xplore&amp;hl=en_US\" class=\"uri\">https://play.google.com/store/apps/details?id=com.lonelycatgames.Xplore&amp;hl=en_US</a></p></li>\r\n<li>Audacity\r\n<ul>\r\n<li>Amplify tool</li>\r\n<li>Bass and Treble tool</li>\r\n</ul></li>\r\n</ol>\r\n',318,0,0,'CC-BY-SA','recording, bluetooth, android',0,0,1),
(3047,'2020-04-07','The COVID-19 Work From Home Stream - Day 1',2449,'A couple of HPR characters decide to spend some of their social distancing time being social','<p>Wednesday 18.03.2020 (2020-03-18)</p>\r\n<p>Guests: honkeymagoo, crvs, Lyle, Thaj</p>\r\n<ul>\r\n<li><a href=\"https://obsproject.com\">Open Broadcaster Studio</a></li>\r\n<li>A grocery store trip is a sign of the apocalypse?</li>\r\n<li>Bidets are the fix for TP shortages</li>\r\n<li>Insider details on the grocery business</li>\r\n<li>My beard is NOT negotiable</li>\r\n<li>Long term impacts of social distance\r\n<ul>\r\n<li>How are schools handling this?</li>\r\n</ul></li>\r\n<li>Matrix, IRC, and Microsoft Teams...OH MY!!</li>\r\n<li>Do you need another person for your HPR episode, call Thaj.</li>\r\n<li>Lyle has a <a href=\"https://i.imgur.com/GVEOiIB.jpg\">meme</a></li>\r\n<li>Lyle makes a <a href=\"https://cooking.nytimes.com/recipes/1018203-simple-crusty-bread-\">bread</a></li>\r\n<li>More Python</li>\r\n<li>ffmpeg</li>\r\n</ul>',270,0,1,'CC-BY-SA','OBS, Bidets, Grocery',0,0,1),
(3048,'2020-04-08','Alternatives to toilet paper',702,'A non-satirical and non-sarcastic review of alternatives to toilet paper.','<p>In some countries, people seem to be legitimately concerned about the availability of toilet paper. This episode offers alternatives to toilet paper in the hope of relieving people of additional stress around hygiene.\r\n</p><p>This is not a joke episode and contains no offensive language, but it is about a potentially sensitive subject, so it has been marked explicit as a precaution.</p>',78,100,1,'CC-BY-SA','hygiene',0,0,1),
(3051,'2020-04-13','The COVID-19 Work From Home Stream - Day 2',2552,'A few HPR characters decide to spend some of their social distancing time being social','<p>Thursday 19.03.2020</p>\r\n<p>Guests: honkeymagoo, Thaj</p>\r\n<ul>\r\n<li>Talk about creating video tutorials for work</li>\r\n<li>Still more talking about Python</li>\r\n<li>Plumble dies</li>\r\n<li>Is being open to technology based on age?</li>\r\n<li>How much farther will this virus shut things down?</li>\r\n<li>Oh no....politics!</li>\r\n<li>Healthcare in the US</li>\r\n</ul>',270,0,1,'CC-BY-SA','Healthcare, Python, COVID-19, Plumble, Politcs, Technology',0,0,1),
(3054,'2020-04-16','Coronavirus Thoughts',1101,'Where we are with this pandemic, and how should we respond.','<p>This is an attempt on my part to pull together what we know about the Coronavirus, and what measures we can take. It emphasizes the importance of social distancing, and evaluates our prospects for conquering the disease. <a href=\"https://www.palain.com/?page_id=731\" class=\"uri\">https://www.palain.com/?page_id=731</a></p>\r\n<ul>\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<li><a href=\"https://www.palain.com/?page_id=358\" class=\"uri\">https://www.palain.com/?page_id=358</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<li><a href=\"https://www.palain.com/?page_id=402\" class=\"uri\">https://www.palain.com/?page_id=402</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=402\" class=\"uri\">https://www.palain.com/?page_id=402</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2685\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2685</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2695\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2695</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2705\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2705</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2870\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2870</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2880\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2880</a></li>\r\n<li><a href=\"https://www.theguardian.com/world/2020/apr/05/when-will-a-coronavirus-vaccine-be-ready\" class=\"uri\">https://www.theguardian.com/world/2020/apr/05/when-will-a-coronavirus-vaccine-be-ready</a></li>\r\n<li><a href=\"https://s2.washingtonpost.com/camp-rw/?e=endpbG5pa0B6d2lsbmlrLmNvbQ%3D%3D&s=5e8b05f4fe1ff6038cf6a56a&linknum=0&linktot=79\" class=\"uri\">https://s2.washingtonpost.com/camp-rw/?e=endpbG5pa0B6d2lsbmlrLmNvbQ%3D%3D&s=5e8b05f4fe1ff6038cf6a56a&linknum=0&linktot=79</a></li>\r\n<li><a href=\"https://www.jci.org/articles/view/138003\" class=\"uri\">https://www.jci.org/articles/view/138003</a></li>\r\n<li><a href=\"https://www.scientificamerican.com/podcast/science-talk/\" class=\"uri\">https://www.scientificamerican.com/podcast/science-talk/</a></li>\r\n<li><a href=\"https://fivethirtyeight.com/videos/why-we-shouldnt-hope-covid-19-is-seasonal-like-the-flu/\" class=\"uri\">https://fivethirtyeight.com/videos/why-we-shouldnt-hope-covid-19-is-seasonal-like-the-flu/</a></li>\r\n<li><a href=\"https://fivethirtyeight.com/features/why-we-still-need-to-test-widely-for-coronavirus/\" class=\"uri\">https://fivethirtyeight.com/features/why-we-still-need-to-test-widely-for-coronavirus/</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=731\" class=\"uri\">https://www.palain.com/?page_id=731</a></li>\r\n</ul>\r\n\r\n<hr />\r\n<small>Show notes added by Ken as they are released under a Creative Commons Attribution-ShareAlike 4.0 International License. </small>\r\n\r\n<p>\r\n   Well, since I am sitting at home maintaining a &#8220;social distance&#8221; I thought I would put down some thoughts about this pandemic and how we will be affected. But a disclaimer to be completely clear: I am not a doctor or a research scientist. I am retired, but I was once a college professor teaching \r\n   <em>\r\n   Statistics\r\n   </em>\r\n   and \r\n   <em>\r\n   Research Methods\r\n   </em>\r\n   . I think this helps me in some way to interpret the information I receive, but when I want authoritative information I look to real doctors, the CDC, and qualified researchers. If you want to know more about what I mean by qualified researchers, you might want to check out my series on interpreting studies:\r\n</p>\r\n<ul>\r\n   <li>\r\n      <a rel=\"noreferrer noopener\" href=\"https://www.palain.com/?page_id=356\" target=\"_blank\">\r\n      Scientific and Medical Reports\r\n      </a>\r\n   </li>\r\n   <li>\r\n      <a rel=\"noreferrer noopener\" href=\"https://www.palain.com/?page_id=358\" target=\"_blank\">\r\n      Problems With Studies\r\n      </a>\r\n   </li>\r\n   <li>\r\n      <a rel=\"noreferrer noopener\" href=\"https://www.palain.com/?page_id=360\" target=\"_blank\">\r\n      Evidence-Based Medicine\r\n      </a>\r\n   </li>\r\n   <li>\r\n      <a rel=\"noreferrer noopener\" href=\"https://www.palain.com/?page_id=402\" target=\"_blank\">\r\n      The Hierarchy of Evidence\r\n      </a>\r\n   </li>\r\n   <li>\r\n      <a rel=\"noreferrer noopener\" href=\"https://www.palain.com/?page_id=402\" target=\"_blank\">\r\n      Evaluating a Study\r\n      </a>\r\n   </li>\r\n</ul>\r\n<p>\r\n   And if you prefer audio to reading, you can download the audio versions at Hacker Public Radio:\r\n</p>\r\n<ul>\r\n   <li>\r\n      <a href=\"https://hackerpublicradio.org/eps.php?id=2685\" target=\"_blank\" rel=\"noreferrer noopener\">\r\n      Scientific and Medical Reports\r\n      </a>\r\n   </li>\r\n   <li>\r\n      <a href=\"https://hackerpublicradio.org/eps.php?id=2695\" target=\"_blank\" rel=\"noreferrer noopener\">\r\n      Problems With Studies\r\n      </a>\r\n   </li>\r\n   <li>\r\n      <a href=\"https://hackerpublicradio.org/eps.php?id=2705\" target=\"_blank\" rel=\"noreferrer noopener\">\r\n      Evidence-Based Medicine\r\n      </a>\r\n   </li>\r\n   <li>\r\n      <a href=\"https://hackerpublicradio.org/eps.php?id=2870\" target=\"_blank\" rel=\"noreferrer noopener\">\r\n      The Hierarchy of Evidence\r\n      </a>\r\n   </li>\r\n   <li>\r\n      <a href=\"https://hackerpublicradio.org/eps.php?id=2880\" target=\"_blank\" rel=\"noreferrer noopener\">\r\n      Evaluating  a Study\r\n      </a>\r\n   </li>\r\n</ul>\r\n<p>\r\n   So, with the preliminaries out of the way, what do we know? We know that this is a virus of a type called coronavirus, which makes it part of the family of viruses that include the common cold, SARS, and MERS. What distinguishes this new virus, technically called SARS-CoV2 (though I usually just call it covid-19, like most reports do) is that it is highly infectious and highly virulent. Highly infectious means it is easily passed from one person to another. Highly virulent means that it can cause death easily. It has been compared in this respect to the 1918 Flu pandemic, which we estimate infected 500 million people worldwide (about 1/3 of the population at that time) and killed at least 20 million to 50 million people, and perhaps more. Note that assigning a cause of death is not a precise science, and medical record keeping in many parts of the world was sketchy at best.\r\n</p>\r\n<h2>\r\n   What Can Help?\r\n</h2>\r\n<p>\r\n   The ultimate answer to this would be a vaccine. Thankfully, the anti-vaxxers have crawled back under whatever rocks they live under for the time being, but a vaccine is not the perfect answer right now. The good news is that coronavirus appears to be one that does not mutate a lot, which means a vaccine is likely to be more effective than the flu vaccine. Influenza virus changes every year and that makes it a bit of guesswork to figure out. \r\n   <a rel=\"noreferrer noopener\" href=\"https://www.theguardian.com/world/2020/apr/05/when-will-a-coronavirus-vaccine-be-ready\" target=\"_blank\">\r\n   Scientists are working on a vaccine right now in a crash program\r\n   </a>\r\n   , and again there is some good news on that front. First, Chinese scientists were able to DNA sequence the virus pretty quickly. They found that this virus shares 80-90% of its DNA with SARS, which is why it is named SARS-CoV2. Unfortunately, we don&#8217;t have a SARS vaccine because that outbreak died off before work was completed, but the work that was done is something we can build on. But in general, most researchers have said that it will take as much as 18 months even with a crash program. \r\n</p>\r\n<p>\r\n   Usually these take much longer. First you do animal studies, both for safety and for efficacy. For example, one of the early candidates for a SARS vaccine was causing harm to the animals who received it, though they think that problem has now been solved. If the animal trials are promising, you can move on to human trials Stage 1 is to test with a small number of healthy volunteers, looking specifically to test safety. You don&#8217;t want to administer a vaccine that kill everyone, or even any significant number of people.   If the candidate passes that test, Stage 2 is to administer the vaccine to a few hundred people in an area where the disease is rampant. If it looks like it is working, and no safety issues have arisen, a final trial can involve several thousand people. If it passes that, it can be approved for medical use and move into production. And that adds even more delays, since producing vaccine in large quantities takes a long time. According to Ronald Klain, Obama Administration&#8217;s Ebola Czar:\r\n</p>\r\n<blockquote>\r\n   <p>\r\n      Developing and testing the vaccine &#8212; hard as it is &#8212; isn&#8217;t the hardest part. Manufacturing hundreds of millions of doses &#8212; and getting people to take the vaccine &#8212; will be harder and take longer.\r\n   </p>\r\n   <cite>\r\n   <a href=\"https://s2.washingtonpost.com/camp-rw/?e=endpbG5pa0B6d2lsbmlrLmNvbQ%3D%3D&amp;s=5e8b05f4fe1ff6038cf6a56a&amp;linknum=0&amp;linktot=79\">\r\n   https://s2.washingtonpost.com/camp-rw/?e=endpbG5pa0B6d2lsbmlrLmNvbQ%3D%3D&amp;s=5e8b05f4fe1ff6038cf6a56a&amp;linknum=0&amp;linktot=79\r\n   </a>\r\n   </cite>\r\n</blockquote>\r\n<p>\r\n   Now, this process can be accelerated to some degree, but not by as much as you might think. Doing the research to find a candidate that might work will take time, and there is no short cut. That is why researchers say a crash program might deliver something in 18 months, as opposed to the decade or more many vaccines require. Sometimes when these studies are done, you get quick results that can lead to dropping some steps. For example, if you have a test group and a control group, and the test group recovers quickly while the control group is dying, any ethical researcher will stop the trial and give the remedy to everyone who needs it. But you are dealing with probabilities in this, and most people are not comfortable with that. They want yes or no answers, and sadly life does not give that all the time. If you are responsible for that decision, if anything goes wrong you will get all of the blame. I&#8217;m glad I don&#8217;t have to make that decision, though also apprehensive that the people who do make that decision may not be sane adults.\r\n</p>\r\n<p>\r\n   OK, if you we wait for the vaccine, what about medicines to cure the infection? Again, there is work being done here. Several different approaches are being studied. One which we know can work is called \r\n   <a rel=\"noreferrer noopener\" href=\"https://www.jci.org/articles/view/138003\" target=\"_blank\">\r\n   Convalescent Plasma\r\n   </a>\r\n   (aka Convalescent Blood). This takes plasma from people who have recovered from the disease, and gives it intravenously to someone seriously ill. It is an old approach, predating vaccines, but it does work. The transfusion of the plasma contains antibodies made by the person who recovered, and those antibodies can help someone with the disease. But the obvious problem is that it does not scale very well when new cases keep increasing. Other approaches are using drugs developed for different illnesses, in the hope that they are sufficiently similar to covid-19 so that the medication would be effective. This is good since those medications have already passed all of the safety tests, but we just don&#8217;t know enough right now. Some reports suggest HIV drugs can help, other reports say they don&#8217;t. And so this may bear fruit, but it may be a while yet. The medicine promoted by Donald Trump, hydroxychloroquine, has not been found effective in any good research, and should not be counted on as a valid cure.\r\n</p>\r\n<p>\r\n   And that brings us back to the things we know are effective at this point, which is preventing people from passing on the virus by \r\n   <em>\r\n   social distancing\r\n   </em>\r\n   , i.e. quarantine, and massive testing. If people stay home and do not interact with other people, they cannot pass the disease along and the outbreak will eventually die off. This will work if done properly. To see this, I will use an example I pulled from Steve Mirsky of the \r\n   <a href=\"https://www.scientificamerican.com/podcast/science-talk/\" target=\"_blank\" rel=\"noreferrer noopener\">\r\n   Scientific American Podcast\r\n   </a>\r\n   , which requires less than a minute of spreadsheet work. This uses the reproduction factor R0, which is the average number of people who get infected by each person with the virus.\r\n</p>\r\n<figure class=\"wp-block-table\">\r\n   <table>\r\n      <tbody>\r\n         <tr>\r\n            <td>\r\n               Round\r\n            </td>\r\n            <td>\r\n               R0=1.3\r\n            </td>\r\n            <td>\r\n               R0=2.5\r\n            </td>\r\n         </tr>\r\n         <tr>\r\n            <td>\r\n               1\r\n            </td>\r\n            <td>\r\n               1.3\r\n            </td>\r\n            <td>\r\n               2.5\r\n            </td>\r\n         </tr>\r\n         <tr>\r\n            <td>\r\n               2\r\n            </td>\r\n            <td>\r\n               1.7\r\n            </td>\r\n            <td>\r\n               6.3\r\n            </td>\r\n         </tr>\r\n         <tr>\r\n            <td>\r\n               3\r\n            </td>\r\n            <td>\r\n               2.2\r\n            </td>\r\n            <td>\r\n               15.6\r\n            </td>\r\n         </tr>\r\n         <tr>\r\n            <td>\r\n               4\r\n            </td>\r\n            <td>\r\n               2.9\r\n            </td>\r\n            <td>\r\n               39.1\r\n            </td>\r\n         </tr>\r\n         <tr>\r\n            <td>\r\n               5\r\n            </td>\r\n            <td>\r\n               3.7\r\n            </td>\r\n            <td>\r\n               97.7\r\n            </td>\r\n         </tr>\r\n         <tr>\r\n            <td>\r\n               6\r\n            </td>\r\n            <td>\r\n               4.8\r\n            </td>\r\n            <td>\r\n               244.1\r\n            </td>\r\n         </tr>\r\n         <tr>\r\n            <td>\r\n               7\r\n            </td>\r\n            <td>\r\n               6.3\r\n            </td>\r\n            <td>\r\n               610.4\r\n            </td>\r\n         </tr>\r\n         <tr>\r\n            <td>\r\n               8\r\n            </td>\r\n            <td>\r\n               8.2\r\n            </td>\r\n            <td>\r\n               1525.9\r\n            </td>\r\n         </tr>\r\n         <tr>\r\n            <td>\r\n               9\r\n            </td>\r\n            <td>\r\n               10.6\r\n            </td>\r\n            <td>\r\n               3814.7\r\n            </td>\r\n         </tr>\r\n         <tr>\r\n            <td>\r\n               10\r\n            </td>\r\n            <td>\r\n               13.8\r\n            </td>\r\n            <td>\r\n               9536.7\r\n            </td>\r\n         </tr>\r\n      </tbody>\r\n   </table>\r\n   <figcaption>\r\n      How the reproduction factor affects the spread\r\n   </figcaption>\r\n</figure>\r\n<p>\r\n   As we can see, with a factor of R0=1.3, which means each person infects on average 1.3 others, after ten rounds of infection it has only spread to 14 other people. But with R0=2.5, which doesn&#8217;t seem that much different, ten rounds means 9,536 people have the disease. Now, there are two primary factors affecting R0. One is the inherent infectiousness of the virus, which is high and out of our control. The other factor is how many people each person interacts with, and that is what we are trying to reduce through social distancing.\r\n</p>\r\n<p>\r\n   Testing is still important, even at this stage, because it does several good things. First, it helps with the allocation of resources if we know exactly where the worst spots are. Second, it saves time and equipment in hospitals if we know exactly who is sick. Third, this gets us data we need to plan for future outbreaks. This pandemic is not the last one we will face, and this one won&#8217;t be over soon either. We need to know everything we can about how it spreads. And finally, we need a robust testing regime in place before we can &#8220;safely&#8221; start to resume our lives. \r\n</p>\r\n<blockquote>\r\n   <p>\r\n      There’s also the fact that, eventually, we’re going to want to go back outside again. As the current protocols start to relax,&nbsp;\r\n      <a href=\"https://fivethirtyeight.com/videos/why-we-shouldnt-hope-covid-19-is-seasonal-like-the-flu/\">\r\n      a second wave of infections may arise,\r\n      </a>\r\n      &nbsp;especially if we don’t have a good grasp on where and how many cases we have in the U.S., said Dr. Eli Perencevich, a professor of medicine and epidemiology at the University of Iowa.\r\n   </p>\r\n   <p>\r\n      “We can’t stay in social distancing forever,” Perencevich said. “So we need to ramp up testing quickly.”\r\n   </p>\r\n   <cite>\r\n   <a href=\"https://fivethirtyeight.com/features/why-we-still-need-to-test-widely-for-coronavirus/\">\r\n   https://fivethirtyeight.com/features/why-we-still-need-to-test-widely-for-coronavirus/\r\n   </a>\r\n   </cite>\r\n</blockquote>\r\n<p>\r\n   So, the bottom line is that a vaccine is most likely 18 months away, medicines may be months away, and right now the best thing we can do as individuals is isolate.\r\n</p>\r\n\r\n',198,100,0,'CC-BY-SA','Health, Coronavirus, COVID-19',0,0,1),
(3049,'2020-04-09','What computers taught me about reality',1451,'Klaatu tells us what computers taught him about reality','<p>Some musings about what computers taught me about reality and perception.</p>',78,0,0,'CC-BY-SA','philosophy,system design',0,0,1),
(3044,'2020-04-02','mocp snooze tip',391,'A quick snooze tip when using mocp','<p>I use cordless headphones, I find this very handy when I want <code>mocp</code> to play for a set time then pause.</p>\r\n<p>Commands used</p>\r\n<ul>\r\n<li><p>Ctrl + r, to quickly find the command</p></li>\r\n<li><p><code>sleep 10m && mocp -G</code></p></li>\r\n<li><p><code>sleep 10m && mocp -M ~/.moc/audiobooks -G</code></p></li>\r\n<li><p><code>sleep 5h && iplayer-url</code></p></li>\r\n</ul>',201,0,1,'CC-BY-SA','Linux, bash, podcasts, audio',0,0,1),
(3056,'2020-04-20','Jitsi',764,'Jitsi is an open-source multiplatform videoconferencing ','<p>Jitsi is a collection of free and open-source multiplatform voice, videoconferencing and instant messaging applications for the web platform, Windows, Linux, Mac OS X and Android</p>\r\n<p>Jitsi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<small><small>(<b>Editor\'s Note</b>: show notes amended 2020-06-13 from comment)</small></small></p>\r\n<pre><code>systemctl stop docker\r\n\r\nrm -Rf /var/lib/docker\r\nrm -Rf ~/.jitsi-meet-cfg\r\n\r\n# change docker-data to your path you want to put images in\r\nmount --rbind /media/moredata/docker-data /var/lib/docker\r\n\r\napt-get remove --purge install docker-ce docker-ce-cli containerd.io\r\napt-get install docker-ce docker-ce-cli containerd.io\r\n\r\ncurl -L &quot;https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose\r\nchmod +x /usr/local/bin/docker-compose\r\n\r\ngit clone https://github.com/jitsi/docker-jitsi-meet &amp;&amp; cd docker-jitsi-meet\r\n\r\nsystemctl restart docker\r\n\r\ncp env.example .env\r\nmkdir -p ~/.jitsi-meet-cfg/{web/letsencrypt,transcripts,prosody,jicofo,jvb}\r\n\r\ndocker-compose --log-level DEBUG up -d --force-recreate --remove-orphans\r\n\r\ntail -f `find /var/lib/docker/containers -iname &quot;*.log&quot; `\r\n\r\ndocker container ls\r\n\r\ndocker exec -it d4c89a799fd7 bash\r\n\r\n# side that will be controlled needs to run\r\nhttps://github.com/jitsi/jitsi-meet-electron/releases/latest</code></pre>\r\n<ul>\r\n<li><p><a href=\"https://rmccurdy.com/.scripts/videos/rmccurdy_com/HPR_Jitsi.mp4\" class=\"uri\">https://rmccurdy.com/.scripts/videos/rmccurdy_com/HPR_Jitsi.mp4</a></p></li>\r\n<li><p><a href=\"https://rmccurdy.com/.scripts/videos/rmccurdy_com/HPR_Jitsi.mp3\" class=\"uri\">https://rmccurdy.com/.scripts/videos/rmccurdy_com/HPR_Jitsi.mp3</a></p></li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','linux,debian,computers,software,internet,Jitsi,video,conferencing,open-source',0,0,1),
(3050,'2020-04-10','Linux Inlaws S01E04 What\'s in a name',4396,'Season 1, Episode 4. The episode where the legacy is revealed','<p>This is Linux Inlaws, a series on free and open source software, black humour, the revolution and freedom in general (this includes ideas and software) and generally having fun.</p>\r\n<p>Linux Inlaws - a podcast about on topics around free and open source software, any associated contraband, communism / the revolution in general and whatever else fancies your tickle.</p>\r\n<p>Please note that this and other episodes may contain strong language, offensive humor and other certainly not politically correct language - you have been warned (our parents insisted on this disclaimer - happy mum?). Thus the content is not suitable for consumption in the workplace (especially when played back on a speaker in an open plan office or similar environments), any minors under the age of 35 or any pets including fluffy little killer bunnies, your trusty guide dog (unless on speed) and cute t-rexes or other associated dinosaurs.</p>\r\n<p>In this show the lads Martin and Chris speak about the legacy, its name and also introduce Tech Support from the Dark Side, a new hotline helping politicians and other users in need of computer support to cope with reality.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Martin’s BBC podcast: <a href=\"https://www.bbc.co.uk/programmes/w13xttx2/episodes/downloads\" class=\"uri\">https://www.bbc.co.uk/programmes/w13xttx2/episodes/downloads</a></li>\r\n<li>Chris’ food for thought: <a href=\"https://en.wikipedia.org/wiki/Moon_landing_conspiracy_theories\" class=\"uri\">https://en.wikipedia.org/wiki/Moon_landing_conspiracy_theories</a></li>\r\n<li>Martin’s new laptop spec: <a href=\"https://www.asus.com/Laptops/ROG-Strix-SCAR-III/Tech-Specs\" class=\"uri\">https://www.asus.com/Laptops/ROG-Strix-SCAR-III/Tech-Specs</a></li>\r\n<li>Chris’ documentary: <a href=\"https://en.wikipedia.org/wiki/Terminator:_The_Sarah_Connor_Chronicles\" class=\"uri\">https://en.wikipedia.org/wiki/Terminator:_The_Sarah_Connor_Chronicles</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','linux inlaws,communism,free and open source software',0,0,1),
(3052,'2020-04-14','Locating computers on a network',1322,'Ken explains some different ways to locate computers on the network','<h1>Locating computers on a network</h1>\r\n\r\n<p>Sometimes you may wish to locate a device on your network. It might be to find rogue devices, or to locate a new device be that a printer, an Internet of Things light bulb, or whatever. In my case I was trying to track down a RaspberryPi. Raspbian now lists the IP Addresses assigned to it when it first starts, but that requires a monitor to be connected.</p>\r\n\r\n<h2 id=\"locating-using-your-router\">Locating using your router.</h2>\r\n\r\n<p>This is by far the easiest way to find a new device but it is also the most manual. If you have access to the (WiFi) Router/<a href=\"https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol\">DHCP</a> server on your network then this should be a matter of logging in and getting the address from the menu area probably called <code>Network</code> or <code>LAN</code> or something like that. So first list all the computers that are on the network. Then turn on your pi, and see if a new one has joined. If you\'re lucky it may even be labeled <em>Raspberry Pi Foundation</em>.</p>\r\n\r\n<p>In my case I want to locate these devices automatically using a script. So below we will explore some ways that you can approach the problem of locating devices on your network. All of them rely on trying to find the mapping between an Ethernet MAC Address, and a IP Address. It will help to understand a little about how Ethernet works. This is a nice short overview, <a href=\"https://www.youtube.com/watch?v=5u52wbqBgEY\">How does Ethernet work? (animated)</a> by <a href=\"https://www.youtube.com/channel/UCXkx8hX8Xo4lb7T0_-yZzVg\">Janos Pasztor</a></p>\r\n\r\n<h2 id=\"arp\">ARP</h2>\r\n\r\n<p>I don\'t know the network device you will be using so I\'d like to share a few ways of doing this using the <a href=\"https://en.wikipedia.org/wiki/Address_Resolution_Protocol\">ARP</a> protocol. This provides a mapping between a device\'s permanent <a href=\"https://en.wikipedia.org/wiki/MAC_address\">MAC address</a> and their, often temporarily, assigned <a href=\"https://en.wikipedia.org/wiki/IP_address\">IP address</a>.</p>\r\n\r\n<p>When your computer <code>192.168.1.1</code> wants to talk to another device it will need to know the Ethernet <a href=\"https://en.wikipedia.org/wiki/MAC_address\">MAC address</a> of the other device. Let\'s assume it wants to connect to the local printer <code>192.168.1.2</code> that is on the same network, and it knows its IP Address. If your computer has already heard the printer communicate on the network, it will have already added the printer\'s IP address and MAC Address to its so called ARP table. Over time older entries will be removed from this table either because they are too old, or there were too many entries.</p>\r\n\r\n<p>Linux has a command called <code>arp</code> which will show you a list of the IP addresses mapped to the MAC/HWaddress address.</p>\r\n<pre><code># arp -n\r\nAddress                  HWtype  HWaddress           Flags Mask            Iface\r\n192.168.1.254            ether   ff:ee:dd:cc:bb:aa   C                     eno1\r\n192.168.1.2              ether   00:11:22:33:44:55   C                     eno1\r\n192.168.1.1              ether   00:aa:bb:cc:dd:ee   C                     eno1\r\n</code></pre>\r\n\r\n<p>From a <a href=\"https://en.wikipedia.org/wiki/Internet_Protocol\">Internet Protocol (IP)</a> point of view all your devices in your house are probably in the same <a href=\"https://en.wikipedia.org/wiki/Subnetwork\">Subnet(work)</a>. But what if you need to communicate outside your network? For example to ping a well known server <code>8.8.8.8</code> to check if you have an Internet Connection. The IP settings also include a <a href=\"https://en.wikipedia.org/wiki/Default_gateway\">Default gateway</a> to send all traffic not intended for the local network.</p>\r\n\r\n<h2 id=\"finding-the-default-gateway\">Finding the Default gateway</h2>\r\n\r\n<p>Your computer will have many IP Addresses configured but it\'s a good bet that the network you and your new pi are on is the same one as the default gateway is on. You can find the default gateway using the following command:</p>\r\n<pre><code>$ route -n | grep -E \'Destination|^0.0.0.0\'\r\nDestination     Gateway         Genmask         Flags Metric Ref    Use Iface\r\n0.0.0.0         192.168.1.254   0.0.0.0         UG    100    0        0 eno1\r\n</code></pre>\r\n\r\n<p>It uses <code>route</code> to show the route table showing IP Addresses and not network names. The first column is <code>Destination</code> and so a <code>0.0.0.0</code> there means <em>route everything else to</em> and the <em>to</em> we get from the second column <code>Gateway</code>, which is our gateway.</p>\r\n\r\n<p>You can also get the same information using the following command:</p>\r\n<pre><code>$ ip route show | grep default\r\ndefault via 192.168.1.254 dev eno1 proto dhcp metric 100\r\n</code></pre>\r\n\r\n<p>And now to just show the IP Address.</p>\r\n\r\n<pre><code>$ route -n | awk &#39;/^0.0.0.0/ {print $2}&#39;\r\n192.168.1.254\r\n</code></pre>\r\n\r\n\r\n<p>From an Ethernet point of view it needs to find the <a href=\"https://en.wikipedia.org/wiki/MAC_address\">MAC address</a> associated with your router/default gateway\'s IP address <code>192.168.1.254</code>, so that it can send Ethernet Frames to it. In our case the address is in the ARP table, but if it wasn\'t then your computer would broadcast to everyone on the network using a special address <code>ff:ff:ff:ff:ff:ff</code>. When the router/default gateway replies that entry will be added to the ARP table.</p>\r\n\r\n<pre><code>\r\n739  5.328679069  00:aa:bb:cc:dd:ee  ff:ff:ff:ff:ff:ff  ARP  42  Who has 192.168.1.254? Tell 192.168.1.1\r\n746  5.328911559  ff:ee:dd:cc:bb:aa  00:aa:bb:cc:dd:ee  ARP  60  192.168.1.254 is at ff:ee:dd:cc:bb:aa\r\n</code></pre>\r\n\r\n<p>Have a play with <a href=\"https://www.wireshark.org/\">WireShark</a> to see what is actually going on on your network. There is a good step by step walk through on <a href=\"https://en.wikiversity.org/wiki/Wireshark/Arp\">Wireshark/Arp</a> on wikiversity.</p>\r\n\r\n<p>All RaspberryPi computers have an Ethernet <a href=\"https://en.wikipedia.org/wiki/MAC_address\">MAC address</a> starting with <a href=\"https://hwaddress.com/company/raspberry-pi-foundation\"><code>b8:27:eb</code> or <code>dc:a6:32</code></a>. So if your computer and the new pi are on the same network you can look for new MAC addresses starting with <code>b8:27:eb</code> or <code>dc:a6:32</code>.</p>\r\n\r\n<h2 id=\"foiled-by-the-switch\">Foiled by the Switch</h2>\r\n\r\n<p>All is not plain sailing as most modern <a href=\"https://en.wikipedia.org/wiki/Local_area_network\">LAN</a>\'s use <a href=\"https://en.wikipedia.org/wiki/Network_switch\">switches</a> to split up the <a href=\"https://en.wikipedia.org/wiki/Broadcast_domain#Further_explanation\">broadcast domain</a>.</p>\r\n\r\n<blockquote cite=\"https://en.wikipedia.org/wiki/Broadcast_domain#Further_explanation\">\r\nSwitches act as buffers, receiving and analyzing the frames from each connected network segment. Frames destined for nodes connected to the originating segment are not forwarded by the switch. Frames destined for a specific node on a different segment are sent only to that segment. Only broadcast frames are forwarded to all other segments. This reduces unnecessary traffic and collisions.\r\n</blockquote>\r\n\r\n<p>What this means is that although all your computers may be on one big IP network, the devices may be connected to different switches. For example a WiFi Router downstairs, a Cabled Switch in the back room, and a network extender in the attic. All are filtering out unnecessary traffic. While that is a good thing, it does mean that it may not ever see the traffic from the new Pi.</p>\r\n\r\n<p>If we try and contact each and every IP Address on the network, that forces ARP \"Who has?\" traffic, and the answers that come back will be added to the arp table. There are a few ways to force this discovery.</p>\r\n\r\n<h2 id=\"discovery-by-ping\">Discovery by ping</h2>\r\n\r\n<p>One way to generate ARP traffic is to use the <a href=\"https://en.wikipedia.org/wiki/Ping_(networking_utility)\">ping</a> utility.</p>\r\n\r\n<blockquote cite=\"https://en.wikipedia.org/wiki/Ping_(networking_utility)n\">\r\nPing measures the round-trip time for messages sent from the originating host to a destination computer that are echoed back to the source. The name comes from active sonar terminology that sends a pulse of sound and listens for the echo to detect objects under water.\r\n</blockquote>\r\n\r\n<p>To ping an IP Address, just type <code>ping 192.168.1.1</code>. That will send out a continuous ping which you can stop by pressing and holding the <em>ctrl</em> key and then pressing the letter <em>c</em>.</p>\r\n\r\n<pre><code>$ ping 192.168.1.1\r\nPING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.\r\n64 bytes from 192.168.1.1: icmp_seq=1 ttl=63 time=0.547 ms\r\n64 bytes from 192.168.1.1: icmp_seq=2 ttl=63 time=0.493 ms\r\n64 bytes from 192.168.1.1: icmp_seq=3 ttl=63 time=0.422 ms\r\n64 bytes from 192.168.1.1: icmp_seq=4 ttl=63 time=0.466 ms\r\n^C\r\n--- 192.168.1.1 ping statistics ---\r\n4 packets transmitted, 4 received, 0% packet loss, time 3105ms\r\nrtt min/avg/max/mdev = 0.422/0.482/0.547/0.045 m\r\n</code></pre>\r\n\r\n<p>We don\'t actually care about the output, as the point here is to generate some traffic to see who is awake. So we can redirect output and errors to <a href=\"https://en.wikipedia.org/wiki/Null_device\">/dev/null</a>. So a good command to do this would be:</p>\r\n\r\n<pre><code>ping -n -c 1 -W 1 192.168.1.1 &gt;/dev/null 2&gt;&amp;1 &amp;</code></pre>\r\n\r\n<p>The options used are to limit the traffic and wait time as much as possible:</p>\r\n\r\n<pre><code>-n Numeric output only.  No attempt will be made to lookup symbolic names for host addresses.\r\n-c count. Stop after sending count ECHO_REQUEST packets. With deadline option, ping waits for count ECHO_REPLY packets, until the timeout expires.\r\n-W timeout. Time to wait for a response, in seconds. The option affects only timeout in absence of any responses, otherwise ping waits for two RTTs.\r\n</code></pre>\r\n\r\n<p>In this solution we will try and <a href=\"https://en.wikipedia.org/wiki/Ping_(networking_utility)\">ping</a> every host on the network. It would be a bit tedious to do each one by one, so we will make a script to do this for us. It\'s a very safe bet that your home network will have a private IP range of 192.168.???.0 to 192.168.???.255. This is not a safe assumption in an Office Environment but we can deal with that later.</p>\r\n\r\n<p>So we will try and find the <em>base</em> part of the subnet <code>192.168.1.1</code> which will be <code>192.168.1</code> and then we will ping each address in turn.</p>\r\n\r\n<pre><code>base=$( ip route show | awk -F &#39;\\\\.|/| &#39; &#39;/default/ {print $3&quot;.&quot;$4&quot;.&quot;$5}&#39; )\r\nfor node in {1..254}\r\ndo\r\n( ping -n -c 1 -W 1 ${base}.${node} &amp; )\r\ndone\r\n</code></pre>\r\n\r\n<p>I\'m assigning the <code>base</code> variable the first three parts of the IP Address and then I am cycling through all possible addresses sending out a <a href=\"https://en.wikipedia.org/wiki/Ping%20%28networking_utility%29\">ping</a> (a sort of hello message) to each. By wrapping the whole thing in <code>()</code> we can <em>fork</em> each to run at the same time.</p>\r\n\r\n<p>This will force some traffic between my computer and every computer on the network, which will fill up the arp table on my pc.</p>\r\n\r\n<pre><code># arp -n\r\nAddress                  HWtype  HWaddress           Flags Mask            Iface\r\n192.168.1.2              ether   00:11:22:33:44:55   C                     eno1\r\n192.168.1.1              ether   00:aa:bb:cc:dd:ee   C                     eno1\r\n192.168.1.10             ether   11:11:11:11:11:11   C                     eno1\r\n192.168.1.25             ether   22:22:22:22:22:22   C                     eno1\r\n192.168.1.3              ether   33:22:22:22:22:22   C                     eno1\r\n192.168.1.5              ether   b8:27:eb:11:11:11   C                     eno1\r\n</code></pre>\r\n\r\n<p>And now we find all the computers that are on, and responding to pings on the network. We can see that there is one that starts with <code>b8:27:eb|dc:a6:32</code>, and it has an IP Address of 192.168.1.5.</p>\r\n\r\n<pre><code># arp -n | grep -Ei &#39;b8:27:eb|dc:a6:32&#39; | awk &#39;{print $1}&#39;\r\n192.168.1.5\r\n</code></pre>\r\n\r\n<p>Putting it all together</p>\r\n\r\n<pre><code>base=$( ip route show | awk -F &#39;\\\\.|/| &#39; &#39;/default/ {print $3&quot;.&quot;$4&quot;.&quot;$5}&#39; )\r\nfor node in {1..254}\r\ndo\r\n  (ping -n -c 1 -W 1 ${base}.${node} &gt;/dev/null 2&gt;&amp;1 &amp;)\r\ndone\r\narp -n | grep -Ei &#39;b8:27:eb|dc:a6:32&#39; | awk &#39;{print $1}&#39;\r\n</code></pre>\r\n\r\n<h2 id=\"discovery-by-nmap\">Discovery by nmap</h2>\r\n\r\n<p>You should have <strong>permission in writing</strong> from your network administrator before you proceed with these steps.</p>\r\n\r\n<p>Here I am going to use some of the commands above together with the tools <a href=\"https://nmap.org/\">nmap</a> and <a href=\"https://github.com/nmav/ipcalc\">ipcalc</a> to locate and scan the network. This has the advantage of dealing with more exotic subnet masks.</p>\r\n\r\n<p>Find the default interface</p>\r\n\r\n<pre><code># route -n\r\nKernel IP routing table\r\nDestination     Gateway         Genmask         Flags Metric Ref    Use Iface\r\n0.0.0.0         192.168.1.254   0.0.0.0         UG    100    0        0 eno1\r\n....\r\n\r\n# route -n | grep -E &#39;^0.0.0.0&#39; | awk &#39;{print $8}&#39;\r\neno1\r\n</code></pre>\r\n\r\n<p>Find the ip and subnetmask for the default interface</p>\r\n<pre><code># ifconfig eno1 | grep &#39;inet &#39;\r\ninet 192.168.1.1  netmask 255.255.255.0  broadcast 192.168.1.255\r\n\r\n# ifconfig eno1 | grep &#39;inet &#39; | awk &#39;{print $2&quot;/&quot;$4}&#39;\r\n192.168.1.1/255.255.255.0\r\n</code></pre>\r\n\r\n<p>Get the network from ipcalc</p>\r\n\r\n<pre><code># ipcalc 192.168.1.1/255.255.255.0\r\nAddress:        192.168.1.1\r\nNetwork:        192.168.1.0/24\r\nNetmask:        255.255.255.0 = 24\r\nBroadcast:      192.168.1.255\r\n\r\nAddress space:  Private Use\r\nAddress class:  Class C\r\nHostMin:        192.168.1.1\r\nHostMax:        192.168.1.254\r\nHosts/Net:      254\r\n\r\n# ipcalc 192.168.1.4/255.255.255.0 | grep &#39;Network&#39; | awk &#39;{print $NF}&#39;\r\n192.168.1.0/24\r\n</code></pre>\r\n<p>Now call nmap to give the ip address and MAC address</p>\r\n<pre><code># nmap -sn 192.168.1.0/24\r\nStarting Nmap 7.40 ( https://nmap.org ) at 2017-07-05 20:57 CEST\r\nNmap scan report for 192.168.1.2\r\nHost is up (0.0012s latency).\r\nMAC Address: 00:11:22:33:44:55 (Acme industries)\r\nNmap scan report for 192.168.1.5\r\nMAC Address: b8:27:eb:11:11:11 (Raspberry Pi Foundation)\r\nNmap scan report for local.lan (192.168.1.254)\r\nHost is up.\r\nNmap done: 256 IP addresses (2 hosts up) scanned in 3.51 seconds\r\n\r\n\r\n-sn (No port scan) This option tells Nmap not to do a port scan after host discovery, and only print out the available hosts that responded to the host discovery probes. This is often known as a “ping scan”, but you can also request that traceroute and NSE host scripts be run. In previous releases of Nmap, -sn was known as -sP.\r\n</code></pre>\r\n\r\n<h2 id=\"discovery-by-arp-scan\">Discovery by arp-scan</h2>\r\n\r\n<p>By far the easiest way to do this is using the dedicated tool called <a href=\"https://github.com/royhills/arp-scan\">arp-scan</a>, (<a href=\"https://linux.die.net/man/1/arp-scan\">Man Page</a>)</p>\r\n\r\n<pre><code># arp-scan --interface eno1 --localnet --numeric --ignoredups\r\nInterface: eno1, type: EN10MB, MAC: 20:47:47:ca:24:a6, IPv4: 192.168.10.14\r\nStarting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)\r\n192.168.1.2     00:11:22:33:44:55       Acme industries\r\n192.168.1.5     dc:a6:32:22:22:22       Raspberry Pi Trading Ltd\r\n192.168.1.233   b8:27:eb:11:11:11       Raspberry Pi Foundation\r\n192.168.1.254   e4:95:6e:00:00:00       IEEE Registration Authority\r\n\r\n12 packets received by filter, 0 packets dropped by kernel\r\nEnding arp-scan 1.9.7: 256 hosts scanned in 1.939 seconds (132.03 hosts/sec). 12 responded\r\n</code></pre>\r\n\r\n<p>Whichever option you chose I hope this helps you become more familiar with your network and the way it works.</p>\r\n',30,61,0,'CC-BY-SA','arp, ethernet, ip address, dhcp, wireshark, nmap, ping, route, router, arp-scan, wikiversity',0,0,1),
(3053,'2020-04-15','AudioBookClub 17 - Blood Witness',9328,'Straight out of the Freezer, the HPR Audiobook Club reviews Blood Witness by David Hitt','<h1 id=\"in-this-episode-the-hpr-audiobook-club-discusses-the-audiobook-blood-witness-by-david-hitt\">In this episode the HPR Audiobook Club discusses the audiobook <a href=\"https://www.scribl.com/books/PA513/blood-witness\">Blood Witness</a> by David Hitt</h1>\r\n<hr />\r\n<h1 id=\"non-spoiler-thoughts\">Non-Spoiler Thoughts</h1>\r\n<hr />\r\n<ul>\r\n<li>This book may or may not be offensive to some. We discuss.</li>\r\n<li>Audio quality was generally good, very few double reads.</li>\r\n<li>Thaj is annoyed by the transition sound.</li>\r\n<li>We generally enjoyed the theme music.</li>\r\n<li>We discuss the characters that we found the most interesting.</li>\r\n<li>Lyle apologizes for being unintentionally offensive.</li>\r\n<li>How do vampires work in this book anyways ?</li>\r\n</ul>\r\n<h1 id=\"beverage-reviews\">Beverage Reviews</h1>\r\n<hr />\r\n<p>As usual, the HPR AudioBook Club took some time to review the beverages that each of us were drinking during the episode</p>\r\n<ul>\r\n<li><strong>Thaj:</strong> Water, and a bit of something different. Thaj has had a rough week so he treated himself to <a href=\"https://www.worldmarket.com/product/daelmans-dutch-caramel-waffles.do\">Daelmans Wafers</a></li>\r\n<li><strong>x1101:</strong> <a href=\"https://redhook.com/beers/redhook-ipa\">Redhook Longhammer IPA</a></li>\r\n<li><strong>pokey:</strong> Pokey’s beverage in this episode is Twisted Cabernet Savaugnon.</li>\r\n<li><strong>FiftyOneFifty:</strong> <a href=\"https://www.beeradvocate.com/beer/profile/37795/147598/\">Mike’s Hard Smashed Apple Ale</a></li>\r\n</ul>\r\n<h1 id=\"things-we-talked-about\">Things We talked about</h1>\r\n<hr />\r\n<ul>\r\n<li>Pokey thinks the ending is not strong.</li>\r\n<li>He also finds some plot holes.</li>\r\n<li>There is a big door for a sequel.</li>\r\n<li>The logistics of becoming a vampire.</li>\r\n<li>Why \"Twilight\" sucks.</li>\r\n<li>How the characters react to becoming a vampire.</li>\r\n<li>The book wasn’t as graphic as we anticipated.</li>\r\n<li>We introduce… OneFiftyOneFifty!</li>\r\n<li>Fire!!!</li>\r\n<li>Sparks vs. allsparks</li>\r\n<li>Link in the shownotes…or not.</li>\r\n<li>Do you need a \"good person\" to cheer on in a story to enjoy it?</li>\r\n<li><a href=\"https://edictzero.wordpress.com/\">Edict Zero:FIS</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=-PSP2Adz5j8\">The Lab Rats - Devil’s Train</a></li>\r\n<li><a href=\"https://monsterjavaguns.com/\">https://monsterjavaguns.com/</a></li>\r\n<li>OK, so we gave up on the book and just talked about games.</li>\r\n</ul>\r\n<h1 id=\"our-next-audiobook\">Our Next Audiobook</h1>\r\n<hr />\r\n<p><a href=\"https://startrekcontinuingmission.com/\">Star Trek: The Continuing Mission</a></p>\r\n<h1 id=\"the-next-audiobook-club-recording\">The Next Audiobook Club Recording</h1>\r\n<hr />\r\n<p>Right now we are working through a backlog of older episode that have already been recorded. Once that ends we fully anticipate recording new episodes with listener participation.</p>\r\n<h1 id=\"further-recommendations\">Further Recommendations</h1>\r\n<hr />\r\n<ul>\r\n<li><a href=\"https://play.google.com/store/apps/details?id=com.watabou.pixeldungeon&amp;hl=en\">Pixel Dungeon</a></li>\r\n<li><a href=\"https://www.canakit.com/raspberry-pi-starter-kit.html\">Raspberry Pi 2 Kit</a></li>\r\n<li><a href=\"https://news.bbcimg.co.uk/media/images/81372000/jpg/_81372893_b_ivlqbu0aesbph.jpglarge.jpg\">Dollar Nemoy</a></li>\r\n</ul>\r\n<h1 id=\"feedback\">Feedback</h1>\r\n<hr />\r\n<p>Thank you very much for listening to this episode of the HPR AudioBookClub. We had a great time recording this show, and we hope you enjoyed it as well. We also hope you’ll consider joining us next time we record a new episode. Please leave a few words in the episode’s comment section.</p>\r\n<p>As always; remember to visit the HPR contribution page HPR could really use your <a href=\"https://hackerpublicradio.org/help_out.php\">help</a> right now.</p>\r\n<p>Sincerely, The HPR Audiobook Club</p>\r\n<p><em>P.S. Some people really like finding mistakes. For their enjoyment, we always include a few.</em></p>\r\n<h1 id=\"our-audio\">Our Audio</h1>\r\n<hr />\r\n<p>This episode was processed using <a href=\"https://audacity.sourceforge.net/\">Audacity</a>. We’ve been making small adjustments to our audio mix each month in order to get the best possible sound. Its been especially challenging getting all of our voices relatively level, because everyone has their own unique setup. Mumble is great for bringing us all together, and for recording, but it’s not good at making everyone’s voice the same volume. We’re pretty happy with the way this month’s show turned out, so we’d like to share our editing process and settings with you and our future selves (who, of course, will have forgotten all this by then).</p>\r\n<p>We use the \"Truncate Silence\" effect with it’s default settings to minimize the silence between people speaking. When used with it’s default (or at least reasonable) settings, Truncate Silence is extremely effective and satisfying. It makes everyone sound smarter, it makes the file shorter without destroying actual content, and it makes a conversations sound as easy and fluid during playback as it was while it was recorded. It can be even more effective if you can train yourself to remain silent instead of saying \"uuuuummmm.\" Just remember to ONLY pass the file through Truncate Silence ONCE. If you pass it through a second time, or if you set it too aggressively your audio may sound sped up and choppy.</p>\r\n<p>Next we use the \"Compressor\" effect with the following settings:</p>\r\n<pre><code>Threshold: -30db\r\nNoise Floor: -50db\r\nRatio: 3:1\r\nAttack Time: 0.2sec\r\nDecay Time: 1.0 sec</code></pre>\r\n<p>\"Make-up Gain for 0db after compressing\" and \"compress based on peaks\" were both left un-checked.</p>\r\n<p>After compressing the audio we cut any pre-show and post-show chatter from the file and save them in a separate file for possible use as outtakes after the closing music.</p>\r\n<p>We adjust the Gain so that the VU meter in Audacity hovers around -12db while people are speaking, and we try to keep the peaks under -6db, and we adjust the Gain on each of the new tracks so that all volumes are similar, and more importantly comfortable. Once this is done we can \"Mix and Render\" all of our tracks into a single track for export to the .FLAC file which is uploaded to the HPR server.</p>\r\n<p>At this point we listen back to the whole file and we work on the shownotes. This is when we can cut out anything that needs to be cut, and we can also make sure that we put any links in the shownotes that were talked about during the recording of the show. We finish the shownotes before exporting the .aup file to .FLAC so that we can paste a copy of the shownotes into the audio file’s metadata.</p>\r\n<p>At this point we add new, empty audio tracks into which we paste the intro, outro and possibly outtakes, and we rename each track accordingly.</p>\r\n<p>Remember to save often when using Audacity. We like to save after each of these steps. Audacity has a reputation for being \"crashy\" but if you remember save after every major transform, you will wonder how it ever got that reputation.</p>\r\n',157,53,1,'CC-BY-SA','HPR Audiobook Club,Audiobooks,Horror',0,0,1),
(3060,'2020-04-24','Running a local imap server',360,'Ken installs courier-imap locally to have a local backup of his mail.','<h1 id=\"setting-up-a-local-imap-server\">Setting up a local imap server</h1>\r\n<p>To install a local imap daemon that will only listen to localhost connections, made via ssh tunneling. This is for use as a local backup of your imap files, or for keeping a remote backup somewhere.</p>\r\n<p>This is not a mail delivery solution but rather a way to keep a backup of your email using to a <code>MailDir</code> directory that you can access using your email client. As each message is stored in its own file, you can also use normal tools like <code>find|sed|awk|grep</code> to find messages.</p>\r\n<p>This setup can be installed locally or remotely on, for example, a raspberry pi. In that case you can enable a portforwarding rule in <code>~/.ssh/config</code> to include something like <code>LocalForward 127.0.0.1:2143 127.0.0.1:143</code></p>\r\n<p>Install using <code>aptitude install courier-imap courier-authdaemon</code></p>\r\n<p>You can check the status using <code>systemctl status courier-imap.service courier-authdaemon.service</code></p>\r\n<p>Edit the file <code>/etc/courier/imapd</code> and modify the following settings:</p>\r\n<p>Address to listen on, can be set to a single IP address.</p>\r\n<pre><code>    &lt; ADDRESS=0\r\n    &gt; ADDRESS=127.0.0.1\r\n</code></pre>\r\n<p>Maximum number of IMAP servers started</p>\r\n<pre><code>    &lt; MAXDAEMONS=40\r\n    &gt; MAXDAEMONS=80\r\n</code></pre>\r\n<p>Maximum number of connections to accept from the same IP address</p>\r\n<pre><code>    &lt; MAXPERIP=20\r\n    &gt; MAXPERIP=40\r\n</code></pre>\r\n<p>The following setting is optional, and causes messages from the given folder to be automatically deleted after the given number of days.</p>\r\n<pre><code>    &lt; IMAP_EMPTYTRASH=Trash:7\r\n    &gt; #IMAP_EMPTYTRASH=Trash:7\r\n</code></pre>\r\n<p>Change the directory name of the maildir directory.</p>\r\n<pre><code>    &lt; MAILDIRPATH=Maildir\r\n    &gt; MAILDIRPATH=/home/pi/MailDir\r\n</code></pre>\r\n<p>Then restart the service using <code>systemctl restart courier-imap.service courier-authdaemon.service</code>.</p>\r\n<p>When I did this I got a strange error about but installing the package <code>gamin</code> fixed it. Which is a <em>Library providing the FAM File Alteration Monitor API</em>.</p>\r\n<pre><code>  Filesystem notification initialization error -- contact your mail\r\n  administrator (check for configuration errors with the FAM/Gamin library)\r\n</code></pre>\r\n<h3 id=\"links\">Links</h3>\r\n<ul>\r\n<li><a href=\"https://www.courier-mta.org/imap/documentation.html\">https://www.courier-mta.org/imap/documentation.html</a></li>\r\n<li><a href=\"https://www.faqforge.com/linux/fix-for-courier-imap-error-check-for-configuration-errors-with-the-famgamin-library/\">https://www.faqforge.com/linux/fix-for-courier-imap-error-check-for-configuration-errors-with-the-famgamin-library/</a></li>\r\n</ul>\r\n',30,0,0,'CC-BY-SA','courier, imap, MailDir, raspberrypi',0,0,1),
(3058,'2020-04-22','The COVID-19 Work From Home Stream - Day 3',6065,'A few HPR characters decide to spend some of their social distancing time being social','<p>Friday 2020-03-02</p>\r\n<ul>\r\n<li>A secret message left for Thaj (for the record it pronounced like the Taj in Taj Mahal)</li>\r\n<li>How do you use a bidet?</li>\r\n<li>The different ways to organize work from home</li>\r\n<li>Kids and working from home</li>\r\n<li><a href=\"https://www.youtube.com/watch?v=CdJ6VzIthRY&amp;feature=youtu.be\">Jon\'s video</a></li>\r\n<li><a href=\"https://lbry.com/\">LBRY</a></li>\r\n<li>Driving is not fun</li>\r\n<li>More ffmpeg talk</li>\r\n<li>Bidets come up again</li>\r\n<li>#oggcastplanet on Freenode</li>\r\n<li>Programming languages</li>\r\n<li>By the way...I run Arch</li>\r\n<li>Kevin Wisher and Thaj talk shop</li>\r\n<li>What is that accent?</li>\r\n</ul>\r\n',270,0,1,'CC-BY-SA','Bidets, ffmpeg, driving, Programming, Arch Linux, OggcastPlanet, education',0,0,1),
(3061,'2020-04-27','Parental Controls With Mike Ivy',2051,'We talk about Parental Controls and IOT device ','<ul>\r\n<li>Amazon free time</li>\r\n<li>Microsoft family safety live account</li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','IOT,hacking,amazon,android,firestick',0,0,1),
(3057,'2020-04-21','Formal verification with Coq',1271,'Tuula talks about formally verifying code','<p><a href=\"https://coq.inria.fr/\">Coq</a> is interactive theorem prover, which comes with its own programming language Gallina.</p>\r\n<p>If we wanted to write function that calculates resulting blood type based on two gene alleles, we could do it as following.</p>\r\n<p>Start by defining types that represents alleles and resulting blood type:</p>\r\n<pre><code>Inductive BloodTypeAllele : Type :=\r\n  | BloodTypeA\r\n  | BloodTypeB\r\n  | BloodTypeO.\r\n\r\nInductive BloodType : Type :=\r\n  | TypeA\r\n  | TypeB\r\n  | TypeAB\r\n  | TypeO.</code></pre>\r\n<p>Mapping between them is defined as follows:</p>\r\n<pre><code>Definition bloodType (a b : BloodTypeAllele) : BloodType :=\r\n  match a, b with\r\n  | BloodTypeA, BloodTypeA =&gt; TypeA\r\n  | BloodTypeA, BloodTypeO =&gt; TypeA\r\n  | BloodTypeA, BloodTypeB =&gt; TypeAB\r\n  | BloodTypeB, BloodTypeB =&gt; TypeB\r\n  | BloodTypeB, BloodTypeA =&gt; TypeAB\r\n  | BloodTypeB, BloodTypeO =&gt; TypeB\r\n  | BloodTypeO, BloodTypeA =&gt; TypeA\r\n  | BloodTypeO, BloodTypeB =&gt; TypeB\r\n  | BloodTypeO, BloodTypeO =&gt; TypeO\r\n  end.</code></pre>\r\n<p>Notice that the only way of getting <code>TypeO</code> blood is for both alleles to be <code>BloodTypeO</code>.</p>\r\n<p>We can state theorems about the code:</p>\r\n<pre><code>Theorem double_O_results_O_type :\r\n  bloodType BloodTypeO BloodTypeO = TypeO.\r\nProof.\r\n  reflexivity.\r\n  Qed.</code></pre>\r\n<p><code>double_O_results_O_type</code> states that <code>bloodType BloodTypeO BloodTypeO</code> will have value of <code>TypeO</code>. There’s also attached proof for this theorem.</p>\r\n<p>Second theorem is longer:</p>\r\n<pre><code>Theorem not_double_O_does_not_result_O_type :\r\n  forall (b1 b2 : BloodTypeAllele),\r\n  b1 &lt;&gt; BloodTypeO \\/ b2 &lt;&gt; BloodTypeO -&gt;\r\n  bloodType b1 b2 &lt;&gt; TypeO.\r\nProof.\r\n  intros.\r\n  destruct b1.\r\n  - destruct b2.\r\n    + discriminate.\r\n    + discriminate.\r\n    + discriminate.\r\n  - destruct b2.\r\n    + discriminate.\r\n    + discriminate.\r\n    + discriminate.\r\n  - destruct b2.\r\n    + discriminate.\r\n    + discriminate.\r\n    + destruct H.\r\n      * simpl. contradiction.\r\n      * simpl. contradiction.\r\nQed.</code></pre>\r\n<p>It states that if <code>bloodType</code> is applied with anything else than two <code>BloodTypeO</code>, the result will not be <code>TypeO</code>. Proof for this is longer. It goes through each and every combination of parameters and proves that the result isn’t <code>TypeO</code>. Mathematician could write this as: ∀ b1 b2, b1 ≠ BloodTypeO ∨ b2 ≠ BloodTypeO → bloodType b1 b2 ≠ TypeO.</p>\r\n<p>If code above is in module called <code>Genes</code>, we can add following at the end to instruct compiler to emit Haskell code:</p>\r\n<pre><code>Extraction Language Haskell.\r\nExtraction Genes.</code></pre>\r\n<p>Resulting code is as follows:</p>\r\n<pre><code>data BloodTypeAllele =\r\n   BloodTypeA\r\n | BloodTypeB\r\n | BloodTypeO\r\n\r\ndata BloodType =\r\n   TypeA\r\n | TypeB\r\n | TypeAB\r\n | TypeO\r\n\r\nbloodType :: BloodTypeAllele -&gt; BloodTypeAllele -&gt; BloodType\r\nbloodType a b =\r\n  case a of {\r\n   BloodTypeA -&gt; case b of {\r\n                  BloodTypeB -&gt; TypeAB;\r\n                  _ -&gt; TypeA};\r\n   BloodTypeB -&gt; case b of {\r\n                  BloodTypeA -&gt; TypeAB;\r\n                  _ -&gt; TypeB};\r\n   BloodTypeO -&gt;\r\n    case b of {\r\n     BloodTypeA -&gt; TypeA;\r\n     BloodTypeB -&gt; TypeB;\r\n     BloodTypeO -&gt; TypeO}}</code></pre>\r\n<p>Now we have Haskell code that started in Coq, has two properties formally verified and is ready to be integrated with rest of the system.</p>\r\n<p>Further reading:</p>\r\n<ul>\r\n<li><a href=\"https://softwarefoundations.cis.upenn.edu/\">Software Foundations</a></li>\r\n<li><a href=\"https://cel.archives-ouvertes.fr/file/index/docid/459139/filename/coq-hurry.pdf\">Coq in a Hurry</a></li>\r\n</ul>\r\n',364,0,0,'CC-BY-SA','Coq, Haskell, mathematics',0,0,1),
(3059,'2020-04-23','A quick intro to Snapcast',293,'A brief overview of Snapcast, an open source multi-room audio streaming system.','<p>Relevant links:</p>\r\n<ul>\r\n<li><a href=\"https://github.com/badaix/snapcast\">Snapcast</a></li>\r\n<li><a href=\"https://www.musicpd.org/\">MPD</a></li>\r\n<li><a href=\"https://mpv.io/\">mpv</a></li>\r\n<li><a href=\"https://github.com/badaix/snapdroid\">Snapdroid</a></li>\r\n<li><a href=\"https://github.com/atoomic/snapcast-volume-ui\">snapcast-volume-ui</a></li>\r\n<li><a href=\"https://github.com/badaix/snapcast/blob/master/doc/json_rpc_api/v2_0_0.md\">Snapcast JSON-RPC documentation</a></li>\r\n</ul>',386,0,1,'CC-BY-SA','opensource, selfhosted',0,0,1),
(3062,'2020-04-28','Vassal: How to play board games while remote',931,'How to do physical distancing while avoiding social distance using digitized boardgames','<p>A friend, a stranger and I played <a href=\"https://www.vassalengine.org/\">https://www.vassalengine.org/</a> together.</p>\r\n<p>We played the Carcasonne-simple 1.2 module downloaded from <a href=\"https://www.vassalengine.org/wiki/Module:Carcassonne\">https://www.vassalengine.org/wiki/Module:Carcassonne</a>.</p>\r\n<p>There are some things that may be confusing the first time, but the game engine works well, the rule- and tile-set we played worked well, text chat is surprisingly adequate for talking to people while playing, and I would like to play again some time.</p>\r\n<p>Original Fediverse post at <a href=\"https://libranet.de/display/0b6b25a8-675e-91bf-8b9d-5c6226360513\">https://libranet.de/display/0b6b25a8-675e-91bf-8b9d-5c6226360513</a>.</p>',311,95,0,'CC-BY-SA','game, board game, xmpp, remote, network game',0,0,1),
(3063,'2020-04-29','Pens, pencils, paper and ink - 1',879,'Looking at a few more of my writing implements','<h2 id=\"introduction\">Introduction</h2>\n<p>It’s been over four years since I did a show about fountain pens. It was in the <a href=\"https://hackerpublicradio.org/series/0023.html\" title=\"What&#39;s in My Toolkit\"><em>What’s in My Toolkit</em></a> series entitled <a href=\"https://hackerpublicradio.org/eps.php?id=1941\" title=\"What&#39;s in my case\"><em>What’s in my case</em></a>, show 1941 released on 2016-01-11.</p>\n<p>I thought it might be appropriate to visit the subject once again. I want to tell you about some new pens and pencils I have acquired, some inks I am enjoying and some of the notebooks I have bought.</p>\n<p>There’s too much for a single show here, so I’m making a mini-series of three shows. This also leaves the door open for more when the collection grows in the future!</p>\n<h2 id=\"long-notes\">Long notes</h2>\n<p>I have provided detailed notes with pictures for this episode, and these can be <a href=\"hpr3063_full_shownotes.html\">viewed here</a>.</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li>Fountain pens:\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Fountain_pen\">Wikipedia article</a></li>\n<li><a href=\"https://www.wikihow.com/Use-a-Fountain-Pen\">How to use a fountain pen</a></li>\n</ul></li>\n<li>Fountain pen revival:\n<ul>\n<li>Article in <em>“The Independent”</em>: <a href=\"https://www.independent.co.uk/news/long_reads/fountain-pens-stationery-writing-style-revival-a8707501.html\"><em>When a simple ballpoint just won’t do</em></a></li>\n</ul></li>\n<li>Reasons to use a fountain pen:\n<ul>\n<li><a href=\"https://www.youtube.com/watch?v=xVksqX7_650\">13 Reasons Why You Should Use a Fountain Pen</a></li>\n</ul></li>\n<li>Vacuum filling pens:\n<ul>\n<li>How to use a vacuum filler: <a href=\"https://www.youtube.com/watch?v=qTOSY8U2UIM\">Video from Goulet Pens</a></li>\n<li>TWSBI VAC-20 ink bottle: <a href=\"https://www.youtube.com/watch?v=JYMt1wEdWd4\">Video from Goulet Pens</a></li>\n</ul></li>\n<li>Pen brands:\n<ul>\n<li><a href=\"https://www.lamy.com\">LAMY</a></li>\n<li><a href=\"https://www.twsbi.com/\">TWSBI</a></li>\n<li><a href=\"https://www.pilotpen.com/\">Pilot</a></li>\n<li><a href=\"https://troikaus.com\">Troika</a> <em>(US site)</em></li>\n</ul></li>\n<li>HPR links:\n<ul>\n<li><a href=\"https://hackerpublicradio.org/eps/hpr1941/\">hpr1941 :: What’s in my case</a></li>\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2061/\">hpr2061 :: Handwriting</a></li>\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2273/\">hpr2273 :: Fountain Pens</a></li>\n</ul></li>\n</ul>\n',225,112,1,'CC-BY-SA','fountain pen,ballpoint pen',0,0,1),
(3064,'2020-04-30','How I got started in Electronics',427,'How I got started in Electronics and some job stuff','<p>Links:</p>\r\n<ul>\r\n<li><a href=\"https://archive.org/search.php?query=forrest%20mims\" class=\"uri\">https://archive.org/search.php?query=forrest%20mims</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Forrest_Mims\" class=\"uri\">https://en.wikipedia.org/wiki/Forrest_Mims</a></li>\r\n<li><a href=\"https://www.newark.com/mcm-partnership\" class=\"uri\">https://www.newark.com/mcm-partnership</a></li>\r\n<li><p><a href=\"https://www.allelectronics.com/\" class=\"uri\">https://www.allelectronics.com/</a></p></li>\r\n<li><p>This is where I found the doubler circuit.<br />\r\n<a href=\"https://www.zpag.net/Electroniques/Kit/Radio_Shack_-_Engineer&#39;s_Mini-Notebook_-_Basic_Semiconductor_Circuits.pdf\" class=\"uri\">https://www.zpag.net/Electroniques/Kit/Radio_Shack_-_Engineer\'s_Mini-Notebook_-_Basic_Semiconductor_Circuits.pdf</a></p></li>\r\n<li><p>Close approximation of my first transformer.<br />\r\n<img src=\"https://archive.org/download/screenshotfrimar27171804cdt2020/screenshot_Fri%20Mar%2027%2017%3A18%3A04%20CDT%202020.png\" alt=\"https://archive.org/download/screenshotfrimar27171804cdt2020/screenshot_Fri%20Mar%2027%2017%3A18%3A04%20CDT%202020.png\" /></p></li>\r\n<li><p>Power supplies I had in my teens.<br />\r\n<img src=\"https://archive.org/download/screenshotfrimar27171804cdt2020/screenshot_Fri%20Mar%2027%2017%3A16%3A04%20CDT%202020.png\" alt=\"https://archive.org/download/screenshotfrimar27171804cdt2020/screenshot_Fri%20Mar%2027%2017%3A16%3A04%20CDT%202020.png\" /><br />\r\n<img src=\"https://archive.org/download/screenshotfrimar27171804cdt2020/screenshot_Fri%20Mar%2027%2017%3A40%3A31%20CDT%202020.png\" alt=\"https://archive.org/download/screenshotfrimar27171804cdt2020/screenshot_Fri%20Mar%2027%2017%3A40%3A31%20CDT%202020.png\" /></p></li>\r\n<li>Places I worked.\r\n<ul>\r\n<li>Manu-tronics<br />\r\n<a href=\"https://www.bizjournals.com/milwaukee/stories/1999/01/25/daily21.html\" class=\"uri\">https://www.bizjournals.com/milwaukee/stories/1999/01/25/daily21.html</a></li>\r\n<li>Bought out by Sanmina Corporation<br />\r\n<a href=\"https://www.sanmina.com/media-center/videos/kenosha-facility/\" class=\"uri\">https://www.sanmina.com/media-center/videos/kenosha-facility/</a></li>\r\n<li>Baxter Healthcare<br />\r\n<a href=\"https://www.baxter.com/\" class=\"uri\">https://www.baxter.com/</a></li>\r\n<li>Colleague 3 pump picture<br />\r\n<a href=\"https://drive.google.com/drive/folders/1tZlkSQi6gdpPc9UqGiDy2bzXuXcxZ-fl?usp=sharing\" class=\"uri\">https://drive.google.com/drive/folders/1tZlkSQi6gdpPc9UqGiDy2bzXuXcxZ-fl?usp=sharing</a></li>\r\n<li>Illinois Instrument (Systech Illinois)<br />\r\n<a href=\"https://www.systechillinois.com/en/products/ec900-process-oxygen-analyser\" class=\"uri\">https://www.systechillinois.com/en/products/ec900-process-oxygen-analyser</a></li>\r\n</ul></li>\r\n</ul>\r\n',318,0,0,'CC-BY-SA','electronics, soldering, trains, jobs',0,0,1),
(3105,'2020-06-26','Akaso EK7000 Pro',1009,'My experience with an inexpensive Waterproof action camera called the Akaso EK7000 Pro','<p>Action cameras are becoming very popular, and many incorporate a waterproof feature. If you want to try this with something less expensive than a GoPro, take a look at this review.</p>\r\n<ul>\r\n<li><a href=\"https://youtu.be/tucT47cn5II\" class=\"uri\">https://youtu.be/tucT47cn5II</a></li>\r\n<li><a href=\"https://www.palain.com/wp-content/uploads/2020/01/Camera.png\" class=\"uri\">https://www.palain.com/wp-content/uploads/2020/01/Camera.png</a></li>\r\n<li><a href=\"https://www.palain.com/wp-content/uploads/2020/01/Waterproof_Case-751x1024.png\" class=\"uri\">https://www.palain.com/wp-content/uploads/2020/01/Waterproof_Case-751x1024.png</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=xA7A5eYitLI\" class=\"uri\">https://www.youtube.com/watch?v=xA7A5eYitLI</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=L0guCNiJp5M\" class=\"uri\">https://www.youtube.com/watch?v=L0guCNiJp5M</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=1p4yOmvkyP4\" class=\"uri\">https://www.youtube.com/watch?v=1p4yOmvkyP4</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=NK1v_ECiJgo\" class=\"uri\">https://www.youtube.com/watch?v=NK1v_ECiJgo</a></li>\r\n<li><a href=\"https://www.palain.com/wp-content/uploads/2020/01/Removing-1024x764.png\" class=\"uri\">https://www.palain.com/wp-content/uploads/2020/01/Removing-1024x764.png</a></li>\r\n<li><a href=\"https://www.palain.com/wp-content/uploads/2020/04/20190601_004658.mov\" class=\"uri\">https://www.palain.com/wp-content/uploads/2020/04/20190601_004658.mov</a></li>\r\n<li><a href=\"https://www.palain.com/wp-content/uploads/2020/04/20190601_031004-1024x582.jpg\" class=\"uri\">https://www.palain.com/wp-content/uploads/2020/04/20190601_031004-1024x582.jpg</a></li>\r\n<li><a href=\"https://www.palain.com/photography/akaso-ek7000-pro/\" class=\"uri\">https://www.palain.com/photography/akaso-ek7000-pro/</a></li>\r\n</ul>\r\n',198,0,0,'CC-BY-SA','Camera, Waterproof Camera, Action camera',0,0,1),
(3068,'2020-05-06','Keeping track of downloads in Elm',791,'Tuula shows how to keep track of what data is being downloaded in Elm','<h2 id=\"background\">Background</h2>\r\n<p>I have page that requests several resources from server. To keep track what is going on, I initially had model like:</p>\r\n<pre><code>type alias Model =\r\n    { availableChassis : List Chassis\r\n    , chassisLoaded : Bool\r\n    , chassisLoading : Bool\r\n    ...\r\n    }</code></pre>\r\n<p>Problem with this is that I have to remember to check those boolean flags while rendering on screen. And it’s possible to have inconsistent state (both loading and loaded).</p>\r\n<h2 id=\"solution\">Solution</h2>\r\n<p>We can model state with algebraic datatypes and we don’t even have to write it by ourselves as there’s <a href=\"https://package.elm-lang.org/packages/krisajenkins/remotedata/latest\">RemoteData</a> library.</p>\r\n<p>Now we can change our model to following:</p>\r\n<pre><code>import RemoteData exposing (RemoteData(..), WebData)\r\n\r\ntype alias Model =\r\n    { availableChassis : WebData (List Chassis)\r\n    }</code></pre>\r\n<ul>\r\n<li><code>availableChassis</code> has four states it can be in:\r\n<ul>\r\n<li><code>NotAsked</code>, data isn’t available and it hasn’t been requested from server</li>\r\n<li><code>Loading</code>, data isn’t available, but it has been requested from server</li>\r\n<li><code>Success (List Chassis)</code>, data has been loaded from server</li>\r\n<li><code>Failure Http.Error</code>, there was error while loading data</li>\r\n</ul></li>\r\n</ul>\r\n<p>For example, while rendering the view, you could do</p>\r\n<pre><code>    case model.availableChassis of\r\n        NotAsked -&gt;\r\n            renderEmptyTable\r\n\r\n        Loading -&gt;\r\n            renderLoadingTable\r\n\r\n        Success chassis -&gt;\r\n            renderChassisList chassis\r\n\r\n        Failure error -&gt;\r\n            renderErrorMessage error</code></pre>\r\n',364,0,0,'CC-BY-SA','Elm, programming',0,0,1),
(3080,'2020-05-22','Ansible ping',440,'Troubleshooting a basic install of Ansible','Here are some steps you need to should take when setting up <a href=\"https://www.ansible.com/)\">Ansible</a> for the first time.\r\n\r\n<ul>\r\n<li><a href=\"#Install_the_software\">Install the software</a></li>\r\n<li><a href=\"#Confirm_ssh_working\">Confirm ssh working</a></li>\r\n<li><a href=\"#Create_a_Inventory/Host_file\">Create a Inventory/Host_file</a></li>\r\n<li><a href=\"#Ansible_Ping\">Ansible Ping</a></li>\r\n<li><a href=\"#Create_a_playbook\">Create a playbook</a></li>\r\n<li><a href=\"#Confirm_the_YAML_is_valid\">Confirm the YAML is valid</a></li>\r\n<li><a href=\"#Confirm_the_syntax_is_valid\">Confirm the syntax is valid</a></li>\r\n<li><a href=\"#Confirm_everything_works_together\">Confirm everything works together</a></li>\r\n</ul>\r\n\r\n<h3 id=\"Install_the_software\">Install the software</h3>\r\nFirst you need to <a href=\"https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html\">install</a> the <a href=\"https://www.ansible.com/)\">Ansible</a> software. On Fedora that is as simple as a <em>dnf install ansible</em>, or on debian <em>apt install ansible</em>.\r\n\r\n<h3 id=\"Confirm_ssh_working\">Confirm ssh working</h3>\r\n\r\nConfirm that you can connect to the servers via ssh as you would normally.\r\n\r\n<pre><code>ssh -i /home/my_user/.ssh/id_ed25519_pi my_user@192.168.0.1\r\nssh -i /home/my_user/.ssh/id_ed25519_pi your_username@192.168.1.2\r\n</code></pre>\r\n\r\n<h3 id=\"Create_a_Inventory/Host_file\">Create a Inventory/Host file</h3>\r\n\r\nTranslate the ssh commands into a <a href=\"https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html\">Inventory/Host</a> file. I am using a YAML in this example but other variants are available.\r\n\r\n<pre><code>all:\r\n  hosts:\r\n    my_server:\r\n      ansible_host: 192.168.0.1\r\n    your_server:\r\n      ansible_host: 192.168.1.2\r\n      ansible_ssh_user: your_username\r\n  vars:\r\n    ansible_connection: ssh\r\n    ansible_ssh_user: my_user\r\n    ansible_ssh_private_key_file: /home/my_user/.ssh/id_ed25519_pi\r\n</code></pre>\r\n\r\n<h3 id=\"Ansible_Ping\">Ansible Ping</h3>\r\nCheck that your server is up and reported correctly in your file by having <a href=\"https://www.ansible.com/)\">Ansible</a> ping it. This should allow you to determine if at least there is a command and control connection available.\r\n\r\n<pre><code>ansible --inventory-file my_inventory.yaml -m ping all\r\n</code></pre>\r\n\r\nThis uses the group <em>all</em> and will ping all servers under it. The reply below shows a positive and negative response. \r\n\r\n<pre><code>my_server | SUCCESS => {\r\n    \"ansible_facts\": {\r\n        \"discovered_interpreter_python\": \"/usr/bin/python\"\r\n    },\r\n    \"changed\": false,\r\n    \"ping\": \"pong\"\r\n}\r\nyour_server | UNREACHABLE! => {\r\n    \"changed\": false,\r\n    \"msg\": \"Failed to connect to the host via ssh: ssh: connect to host 192.168.1.2 port 22: No route to host\",\r\n    \"unreachable\": true\r\n}\r\n</code></pre>\r\n\r\nThe <em>msg</em> will give you a clue as to what is going wrong and you should try to ssh directly with the Ansible credentials again, and then try and ping using Ansible.\r\n<pre><code>ansible --inventory-file my_inventory.yaml -m ping your_server\r\n</code></pre>\r\n\r\nModify the Inventory file until you have managed to get a successful reply. \r\n\r\n<h3 id=\"Create_a_playbook\">Create a playbook</h3>\r\n\r\nWork on your playbook and verify that it is valid yaml.\r\n\r\n<pre><code>---\r\n- name: Test Ping\r\n  hosts: all\r\n  tasks:\r\n  - action: ping\r\n</code></pre>\r\n\r\n<h3 id=\"Confirm_the_YAML_is_valid\">Confirm the YAML is valid</h3>\r\nIf there is no reply all is good.\r\n<pre><code>yamllint ~/my_example.yaml\r\n</code></pre>\r\n\r\nIf there is no reply all is good. For your reference I will remove the <em>---</em> line and this is the response.\r\n<pre><code>yamllint ~/my_example.yaml\r\n/home/user/my_example.yaml\r\n  1:1       warning  missing document start \"---\"  (document-start)\r\n</code></pre>\r\n\r\n<h3 id=\"Confirm_the_syntax_is_valid\">Confirm the syntax is valid</h3>\r\nThen verify that the playbook is sane\r\n<pre><code>ansible-playbook --syntax-check ~/my_example.yaml\r\n</code></pre>\r\n\r\nIf there is no reply all is good. For your reference I will remove the <em>hosts</em> line and this is the response.\r\n<pre><code>ansible-playbook --syntax-check ~/my_example.yaml\r\nERROR! the field \'hosts\' is required but was not set\r\n</code></pre>\r\n\r\n<h3 id=\"Confirm_everything_works_together\">Confirm everything works together</h3>\r\n\r\nAfter that you should be able to run the playbook using.\r\n\r\n<pre><code>ansible-playbook --inventory-file my_inventory.yaml ~/my_example.yaml\r\n\r\nPLAY [Test Ping] ***************************************************************************************************\r\n\r\nTASK [Gathering Facts] *********************************************************************************************\r\n[WARNING]: Platform linux on host my_server is using the discovered Python interpreter at /usr/bin/python, but\r\nfuture installation of another Python interpreter could change this. See\r\nhttps://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.\r\nok: [my_server]\r\nfatal: [your_server]: UNREACHABLE! => {\"changed\": false, \"msg\": \"Failed to connect to the host via ssh: ssh: connect to host 192.168.1.2 port 22: No route to host\", \"unreachable\": true}\r\n\r\nTASK [ping] ********************************************************************************************************\r\nok: [my_server]\r\n\r\nPLAY RECAP *********************************************************************************************************\r\nmy_server                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   \r\nyour_server                : ok=0    changed=0    unreachable=1    failed=0    skipped=0    rescued=0    ignored=0\r\n</code></pre>\r\n',30,0,0,'CC-BY-SA','ansible, ping, ssh',0,0,1),
(3084,'2020-05-28','AudioBookClub 18 - Star Trek: The Continuing Mission',6017,'The HPR Audiobook Club reviews the fan audio drama Star Trek: The Continuing Mission','<h1 id=\"in-this-episode-the-hpr_audiobookclub-discusses-star-trek-the-continuing-mission-created-by-sebastian-prooth-and-andy-tyrer\">In this episode, the HPR_AudioBookClub discusses <a href=\"https://startrekcontinuingmission.com/\">Star Trek The Continuing Mission</a> created by Sebastian Prooth and Andy Tyrer.</h1>\r\n<hr />\r\n<h1 id=\"non-spoiler-thoughts\">Non-Spoiler Thoughts</h1>\r\n<hr />\r\n<ul>\r\n<li>Thaj misses Star Trek, and this made me realize that (this has since changed)</li>\r\n<li>Voice acting is very good.</li>\r\n<li>It\'s hard to translate things like starship combat into an audio drama.</li>\r\n<li>Background sounds really sell the structure of these episodes as Star Trek.</li>\r\n<li>This proves that an abundance of canon is not a reason to reboot things. This finds a niche in an unexplored part of the timeline and works.</li>\r\n<li>The warp sound effect for jumping to warp is weird.</li>\r\n<li>We think LostnBronx should write a StarDrfiter Audiodrama for us to produce.</li>\r\n</ul>\r\n<h1 id=\"beverage-reviews\">Beverage Reviews</h1>\r\n<hr />\r\n<p>As usual, the HPR AudioBook Club took some time to review the beverages that each of us were drinking during the episode</p>\r\n<ul>\r\n<li><strong>Thaj:</strong> Water and something from Kroger that I think resembles chocolate ice cream.</li>\r\n<li><strong>x1101:</strong> Throwback style Mt. Dew made with real, diabetes inducing, sugar</li>\r\n<li><strong>pokey:</strong> Led Light Bulbs....wait what?!?!</li>\r\n<li><strong>FiftyOneFifty:</strong> Johnny Walker Black</li>\r\n</ul>\r\n<h1 id=\"things-we-talked-about\">Things We talked about</h1>\r\n<hr />\r\n<ul>\r\n<li>Recasting the captain was a bad idea.</li>\r\n<li>Thaj hates Cthulhu episodes of scifi shows.</li>\r\n<li>Which Star Trek is the best (the correct answer is DS9)</li>\r\n<li>Star Trek as an allegory for the real world.</li>\r\n<li>Pokey doesn\'t like time travel in Star Trek.</li>\r\n<li>And...we\'re back on DS9</li>\r\n<li>We geek about the different types of ships in Trek.</li>\r\n<li>Since we didn\'t talk about the audio drama that much, we did actually like it.</li>\r\n</ul>\r\n<h1 id=\"our-next-audiobook\">Our Next Audiobook</h1>\r\n<hr />\r\n<p><a href=\"https://scribl.com/books/PFC12/tincture-an-apocalyptic-proposition\">Tincture, An Apocalyptic Proposition</a></p>\r\n<h1 id=\"the-next-audiobook-club-recording\">The Next Audiobook Club Recording</h1>\r\n<hr />\r\n<p>Right now we are working through a backlog of older episode that have already been recorded. Once that ends we fully anticipate recording new episodes with listener participation.</p>\r\n<h1 id=\"further-recommendations\">Further Recommendations</h1>\r\n<hr />\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Stirling_engine\">Stirling Engines</a></li>\r\n<li><a href=\"https://nathanlowell.com/\">Nathan Lowell</a></li>\r\n<li>Pokey wouldn\'t mind a few cyborg modifications</li>\r\n<li><a href=\"https://www.panmacmillan.com/author/peterfhamilton\">Peter F. Hamilton</a></li>\r\n<li>Lock Picking</li>\r\n<li><a href=\"https://cs608829.vk.me/v608829353/ac55/QTzYhbf8oUc.jpg\">I Don\'t want to live on this planet anymore</a></li>\r\n<li>Cory Doctrow\'s <a href=\"https://craphound.com/makers/download/\">\"Makers\"</a></li>\r\n<li><a href=\"https://www.shapeways.com/product/T3ZY4LFDB/thorn-dice-set-with-decader\">3D printed metal dice</a></li>\r\n<li><a href=\"https://www.aliexpress.com/item/Practical-Portable-Casino-Spade-A-Poker-Card-Beer-Bottle-Opener-Stainless-Steel-Wine-Bottle-Opener-for/32243512631.html\">Ace of spaces credit card bottle opener</a></li>\r\n<li><a href=\"https://awesomestufftobuy.com/critical-hit-d20-ice-mold/\">Dice Ice</a></li>\r\n<li><a href=\"https://awesomestufftobuy.com/come-in-go-away-doormat/\">Doormat</a></li>\r\n</ul>\r\n<h1 id=\"feedback\">Feedback</h1>\r\n<hr />\r\n<p>Thank you very much for listening to this episode of the HPR AudioBookClub. We had a great time recording this show, and we hope you enjoyed it as well. We also hope you\'ll consider joining us next time we record a new episode. Please leave a few words in the episode\'s comment section.</p>\r\n<p>As always; remember to visit the HPR contribution page HPR could really use your <a href=\"https://hackerpublicradio.org/help_out.php\">help</a> right now.</p>\r\n<p>Sincerely, The HPR Audiobook Club</p>\r\n<p><em>P.S. Some people really like finding mistakes. For their enjoyment, we always include a few.</em></p>\r\n<h1 id=\"our-audio\">Our Audio</h1>\r\n<hr />\r\n<p>This episode was processed using <a href=\"https://audacity.sourceforge.net/\">Audacity</a>. We\'ve been making small adjustments to our audio mix each month in order to get the best possible sound. Its been especially challenging getting all of our voices relatively level, because everyone has their own unique setup. Mumble is great for bringing us all together, and for recording, but it\'s not good at making everyone\'s voice the same volume. We\'re pretty happy with the way this month\'s show turned out, so we\'d like to share our editing process and settings with you and our future selves (who, of course, will have forgotten all this by then).</p>\r\n<p>We use the \"Truncate Silence\" effect with it\'s default settings to minimize the silence between people speaking. When used with it\'s default (or at least reasonable) settings, Truncate Silence is extremely effective and satisfying. It makes everyone sound smarter, it makes the file shorter without destroying actual content, and it makes a conversations sound as easy and fluid during playback as it was while it was recorded. It can be even more effective if you can train yourself to remain silent instead of saying \"uuuuummmm.\" Just remember to ONLY pass the file through Truncate Silence ONCE. If you pass it through a second time, or if you set it too aggressively your audio may sound sped up and choppy.</p>\r\n<p>Next we use the \"Compressor\" effect with the following settings:</p>\r\n<pre><code>Threshold: -30db\r\nNoise Floor: -50db\r\nRatio: 3:1\r\nAttack Time: 0.2sec\r\nDecay Time: 1.0 sec\r\n</code></pre>\r\n<p>\"Make-up Gain for 0db after compressing\" and \"compress based on peaks\" were both left un-checked.</p>\r\n<p>After compressing the audio we cut any pre-show and post-show chatter from the file and save them in a separate file for possible use as outtakes after the closing music.</p>\r\n<p>We adjust the Gain so that the VU meter in Audacity hovers around -12db while people are speaking, and we try to keep the peaks under -6db, and we adjust the Gain on each of the new tracks so that all volumes are similar, and more importantly comfortable. Once this is done we can \"Mix and Render\" all of our tracks into a single track for export to the .FLAC file which is uploaded to the HPR server.</p>\r\n<p>At this point we listen back to the whole file and we work on the shownotes. This is when we can cut out anything that needs to be cut, and we can also make sure that we put any links in the shownotes that were talked about during the recording of the show. We finish the shownotes before exporting the .aup file to .FLAC so that we can paste a copy of the shownotes into the audio file\'s metadata.</p>\r\n<p>At this point we add new, empty audio tracks into which we paste the intro, outro and possibly outtakes, and we rename each track accordingly.</p>\r\n<p>Remember to save often when using Audacity. We like to save after each of these steps. Audacity has a reputation for being \"crashy\" but if you remember save after every major transform, you will wonder how it ever got that reputation.</p>\r\n',270,0,1,'CC-BY-SA','Audiobooks, Audio Drama, Star Trek',0,0,1),
(3100,'2020-06-19','For your consideration - Makers Corner',4534,'Makers Corner is a tech oriented DIY podcast, from the Other Side Podcast Network','<p>\r\nI\'m amazed I didn\'t find this podcast earlier, epically as one half of the team is HPR Host <a href=\"https://hackerpublicradio.org/correspondents/0370.html\">Yannick</a>, and that we listed it on our Sister Project <a href=\"https://freeculturepodcasts.org/\">Free Culture Podcasts</a>.</p>\r\n<p>\r\nThis show is a sample episode I picked, but it is not a typical show. I wanted to give a bit more exposure to the interview.\r\n</p>\r\n<p>\r\nIn this episode, Nate talks about his oldest boy’s Electronic Engineering class. Then, <a href=\"https://twitter.com/pimoroni\">Jon</a> and <a href=\"https://twitter.com/gadgetoid\">Phil</a> join in to talk about the <a href=\"https://32blit.com/\">32Blit</a>. And finally, the guys have a look at the <a href=\"https://www.thingiverse.com/thing:1657541\">Monster Mouth Headphone Holder – Clampable</a>, from <a href=\"https://www.thingiverse.com/\">thingiverse</a>.</p>\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li>Website: <a href=\"https://makerscorner.tech\">https://makerscorner.tech</a></li>\r\n<li>RSS Feed: <a href=\"https://makerscorner.tech/feed/podcast/\">https://makerscorner.tech/feed/podcast/</a></li>\r\n<li><a href=\"https://twitter.com/pimoroni\">https://twitter.com/pimoroni</a></li>\r\n<li><a href=\"https://twitter.com/gadgetoid\">https://twitter.com/gadgetoid</a></li>\r\n<li><a href=\"https://www.thingiverse.com/\">https://www.thingiverse.com/</a></li>\r\n</ul>',30,75,0,'CC-BY-SA','pimoroni, gadgetoid, Monster Mouth Headphone Holder,Free Culture Podcasts',0,0,1),
(3074,'2020-05-14','For your consideration - Escape Pod',1773,'A sample episode from Escape Pod The Original Science Fiction Podcast','<p>\r\nIt\'s high time I submitted a sample episode from <a href=\"https://escapepod.org/\">Escape Pod</a>, one of the many excellent Podcasts from the <a href=\"https://www.escapeartists.net/\">Escape Artists</a>. They are a serious platform for the best science fiction out there today.\r\n</p>\r\n<p>\r\nWith so much choice, I can pick a recommendation that I think will be right up HPR\'s alley, and that is <a href=\"https://escapepod.org/2018/04/19/escape-pod-624-fandom-for-robots/\">Escape Pod 624: Fandom for Robots</a> released on April 19, 2018 written by Vina Jie-Min Prasad and Narrated by Trendane Sparks.\r\n</p>\r\n<p>\r\nThe sound files are published by under a Creative Commons Attribution-NonCommercial-NoDerivatives license <a href=\"https://creativecommons.org/licenses/by-nc-nd/3.0/\">https://creativecommons.org/licenses/by-nc-nd/3.0/</a>.\r\n</p>',30,75,1,'CC-BY-NC-ND','EA Podcasts, Escape Pod, Fandom for Robots, Vina Jie-Min Prasad, Trendane Sparks',0,0,1),
(3326,'2021-05-03','HPR Community News for April 2021',4825,'HPR Volunteers talk about shows released and comments posted in April 2021','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0393.html\" target=\"_blank\">Anonymous Host</a>, \n    <a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</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=3304\" target=\"_blank\">3304</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-04-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3304\" target=\"_blank\">Newsflash 21/01/04</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0393.html\" target=\"_blank\">Anonymous Host</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3305\" target=\"_blank\">3305</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-04-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3305\" target=\"_blank\">Nagios part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3306\" target=\"_blank\">3306</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-04-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3306\" target=\"_blank\">HPR Community News for March 2021</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3307\" target=\"_blank\">3307</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-04-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3307\" target=\"_blank\">Git worktree</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=3308\" target=\"_blank\">3308</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-04-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3308\" target=\"_blank\">let\'s talk about Thunderbird</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3309\" target=\"_blank\">3309</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-04-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3309\" target=\"_blank\">Linux Inlaws S01E27: The Big Uncertainties in Life and beyond</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=3310\" target=\"_blank\">3310</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-04-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3310\" target=\"_blank\">Layer Masks</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=3311\" target=\"_blank\">3311</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-04-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3311\" target=\"_blank\">Bradley M. Kuhn\'s article from 2019 on Richard M. Stallman</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0393.html\" target=\"_blank\">Anonymous Host</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3312\" target=\"_blank\">3312</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-04-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3312\" target=\"_blank\">COVID Doldrums</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=3313\" target=\"_blank\">3313</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-04-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3313\" target=\"_blank\">Zoom Update</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0273.html\" target=\"_blank\">ToeJet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3314\" target=\"_blank\">3314</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-04-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3314\" target=\"_blank\">Introduction... A little bit about me</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3315\" target=\"_blank\">3315</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-04-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3315\" target=\"_blank\">tesseract optical character recognition</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=3316\" target=\"_blank\">3316</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-04-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3316\" target=\"_blank\">FSF and RMS on election of Richard Stallman</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0393.html\" target=\"_blank\">Anonymous Host</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3317\" target=\"_blank\">3317</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-04-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3317\" target=\"_blank\">Reading a manifesto: Towards A Cooperative Technology Movement</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=3318\" target=\"_blank\">3318</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-04-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3318\" target=\"_blank\">Modding a Wii classic with a DNS exploit</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=3319\" target=\"_blank\">3319</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-04-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3319\" target=\"_blank\">Linux Inlaws S01E28: Politicians and artificial intelligence part 1</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=3320\" target=\"_blank\">3320</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-04-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3320\" target=\"_blank\">YouTube Channels for Learning Spanish, Part 2</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=3321\" target=\"_blank\">3321</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-04-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3321\" target=\"_blank\">DNS66 URANDOM RANDOM</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=3322\" target=\"_blank\">3322</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-04-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3322\" target=\"_blank\">Tune system performance with tuned</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=3323\" target=\"_blank\">3323</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-04-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3323\" target=\"_blank\">The alternate Internet you never knew existed</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=3324\" target=\"_blank\">3324</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-04-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3324\" target=\"_blank\">Infosec Podcasts Part 1  News and Current Events </a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3325\" target=\"_blank\">3325</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-04-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3325\" target=\"_blank\">Games and rules</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 25 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 4 comments on\n4 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3291#comments\" target=\"_blank\">hpr3291</a></strong>\n(2021-03-15) \"<em>The New Audacity and Batch Processing Macros</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=3291#4\" target=\"_blank\">Comment 4</a>:\nbrother mouse on 2021-04-04:\n\"audacity batch\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3296#comments\" target=\"_blank\">hpr3296</a></strong>\n(2021-03-22) \"<em>Spam Bot Honey Pot</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3296#2\" target=\"_blank\">Comment 2</a>:\nrtsn on 2021-04-13:\n\"nice\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3301#comments\" target=\"_blank\">hpr3301</a></strong>\n(2021-03-29) \"<em>K S P Kerbal Space Program! (Game)</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=3301#1\" target=\"_blank\">Comment 1</a>:\nAaronb on 2021-04-17:\n\"Have you seen xkcd about Kerbal\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3303#comments\" target=\"_blank\">hpr3303</a></strong>\n(2021-03-31) \"<em>Slackware on RaspberryPi</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>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3303#1\" target=\"_blank\">Comment 1</a>:\nZen_floater2 on 2021-04-01:\n\"Bravo\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 21 comments on 9 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3305#comments\" target=\"_blank\">hpr3305</a></strong>\n(2021-04-02) \"<em>Nagios part 2</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3305#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2021-04-05:\n\"Adding my endorsement\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3308#comments\" target=\"_blank\">hpr3308</a></strong>\n(2021-04-07) \"<em>let\'s talk about Thunderbird</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3308#1\" target=\"_blank\">Comment 1</a>:\nHenry on 2021-04-09:\n\"Got some good tips ... thank you\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3311#comments\" target=\"_blank\">hpr3311</a></strong>\n(2021-04-12) \"<em>Bradley M. Kuhn\'s article from 2019 on Richard M. Stallman</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0393.html\" target=\"_blank\">Anonymous Host</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3311#1\" target=\"_blank\">Comment 1</a>:\nbrian-in-ohio on 2021-04-12:\n\"bravery\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3311#2\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2021-04-13:\n\"Long history of supporting anonymous posts\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3311#3\" target=\"_blank\">Comment 3</a>:\nReto on 2021-04-13:\n\"RMS\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3311#4\" target=\"_blank\">Comment 4</a>:\nKen Fallon on 2021-04-14:\n\"Interview with RMS/FSF ?\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3311#5\" target=\"_blank\">Comment 5</a>:\nKen Fallon on 2021-04-14:\n\"Interview with RMS/FSF ? - links\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3311#6\" target=\"_blank\">Comment 6</a>:\nBeeza on 2021-04-14:\n\"Richard Stallman\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3311#7\" target=\"_blank\">Comment 7</a>:\nTorao on 2021-04-16:\n\"Stallman\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3311#8\" target=\"_blank\">Comment 8</a>:\nCfish on 2021-04-19:\n\"The responsibility of leadership\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3317#comments\" target=\"_blank\">hpr3317</a></strong>\n(2021-04-20) \"<em>Reading a manifesto: Towards A Cooperative Technology Movement</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><li><a href=\"https://hackerpublicradio.org/eps.php?id=3317#1\" target=\"_blank\">Comment 1</a>:\nclacke on 2021-04-02:\n\"Errata\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3317#2\" target=\"_blank\">Comment 2</a>:\nCfish on 2021-04-20:\n\"Great show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3317#3\" target=\"_blank\">Comment 3</a>:\nKevin O&#39;Brien on 2021-04-22:\n\"Fantastic show!!!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3317#4\" target=\"_blank\">Comment 4</a>:\nclacke on 2021-04-28:\n\"A season for manifestos\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3317#5\" target=\"_blank\">Comment 5</a>:\nKevin O&#39;Brien on 2021-04-29:\n\"Keep it up\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3318#comments\" target=\"_blank\">hpr3318</a></strong>\n(2021-04-21) \"<em>Modding a Wii classic with a DNS exploit</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3318#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2021-04-21:\n\"sdcard and a usbstick\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3318#2\" target=\"_blank\">Comment 2</a>:\narcher72 on 2021-04-22:\n\"Re: sdcard and a usbstick\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3319#comments\" target=\"_blank\">hpr3319</a></strong>\n(2021-04-22) \"<em>Linux Inlaws S01E28: Politicians and artificial intelligence part 1</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=3319#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2021-04-23:\n\"AI is misleading AP would be better\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3320#comments\" target=\"_blank\">hpr3320</a></strong>\n(2021-04-23) \"<em>YouTube Channels for Learning Spanish, Part 2</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=3320#1\" target=\"_blank\">Comment 1</a>:\nAaronb on 2021-04-26:\n\"Listening to Twit podcasts\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3321#comments\" target=\"_blank\">hpr3321</a></strong>\n(2021-04-26) \"<em>DNS66 URANDOM RANDOM</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=3321#1\" target=\"_blank\">Comment 1</a>:\nThaj on 2021-04-26:\n\"Mission accomplished\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3324#comments\" target=\"_blank\">hpr3324</a></strong>\n(2021-04-29) \"<em>Infosec Podcasts Part 1  News and Current Events </em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3324#1\" target=\"_blank\">Comment 1</a>:\nXoke on 2021-04-29:\n\"GRRRRR!\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-April/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-April/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=\"booth-kit-update\">Booth kit update</h3>\n<p>The FSF Europe have sent us a selection of stickers and leaflets to add to our booth kit(s).</p>\n<h3 id=\"posting-anonymously\">Posting Anonymously</h3>\n<ul>\n<li>HPR supports anonymous posting\n<ul>\n<li>Use Tor browser</li>\n<li>Sign up on a temporary email address <a href=\"https://en.wikipedia.org/wiki/Disposable_email_address\" class=\"uri\">https://en.wikipedia.org/wiki/Disposable_email_address</a></li>\n<li>Select your slot and check for the confirmation email</li>\n<li>Post your show as normal - but add a note to say it\'s an anonymous user.</li>\n</ul></li>\n</ul>\n<h3 id=\"older-hpr-shows-on-archive.org\">Older HPR shows on archive.org</h3>\n<p>The project to upload the <b>older</b> HPR shows to archive.org has been quiescent for a few years. The shows between 1 and 870 had not been uploaded prior to April 2021 (though some shows had been uploaded in batches in the early days, without notes etc).</p>\n<p>However, this <em>old show</em> project has been restarted this month, after new software had been written to help manage the process. At the time of writing 65 shows in the range 1-870 have been uploaded, with notes, and with the same range of audio formats used for current shows.</p>\n<p>Since we don\'t want to upload shows without summaries or tags the two projects are now tied together. So we will be all the more welcoming of tag and summary updates sent to the address referenced in the next section!</p>\n<p>The plan is to report the numbers uploaded each month in the AOB section of the Community News show notes.</p>\n<p>HPR shows on archive.org have the URL https://archive.org/details/hprXXXX where XXXX is the show number with leading zeroes. So for example, show 840\'s URL is: <a href=\"https://archive.org/details/hpr0840\" class=\"uri\">https://archive.org/details/hpr0840</a>.</p>\n<h3 id=\"tags-and-summaries\">Tags and Summaries</h3>\n<p>Thanks to the following contributors for sending in updates in the past month:<br />\n<b><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a>, <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 23 shows which were without them.</p>\n<p>There are now 384 shows which need a summary and/or tags.</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),
(3351,'2021-06-07','HPR Community News for May 2021',3956,'The HPR Matrons are doing the rounds.','<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=3326\" target=\"_blank\">3326</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-05-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3326\" target=\"_blank\">HPR Community News for April 2021</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3327\" target=\"_blank\">3327</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-05-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3327\" target=\"_blank\">Looking into Ceph storage solution</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=3328\" target=\"_blank\">3328</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-05-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3328\" target=\"_blank\">Pandas Part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0039.html\" target=\"_blank\">Enigma</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3329\" target=\"_blank\">3329</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-05-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3329\" target=\"_blank\">Linux Inlaws S01E29: The (one and only) Linux Kernel Contributor Panel</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=3330\" target=\"_blank\">3330</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-05-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3330\" target=\"_blank\">A Layer Mask Project</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=3331\" target=\"_blank\">3331</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-05-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3331\" target=\"_blank\">Audio for Podcasting: Episode 1 - The Microphone</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0270.html\" target=\"_blank\">Thaj Sara</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3332\" target=\"_blank\">3332</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-05-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3332\" target=\"_blank\">My current Devices</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=3333\" target=\"_blank\">3333</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-05-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3333\" target=\"_blank\">My TV Stand devices and Pine64.org</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=3334\" target=\"_blank\">3334</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-05-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3334\" target=\"_blank\">Infosec Podcasts Part 2 - General Information Security</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3335\" target=\"_blank\">3335</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-05-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3335\" target=\"_blank\">For your consideration, the Anarcho Book Club</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=3336\" target=\"_blank\">3336</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-05-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3336\" target=\"_blank\">HPR 2020 - 2021 New Years Eve Show Episode 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=3337\" target=\"_blank\">3337</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-05-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3337\" target=\"_blank\">I like that the boat is stuck</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=3338\" target=\"_blank\">3338</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-05-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3338\" target=\"_blank\">Using openssl s_client like telnet</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=3339\" target=\"_blank\">3339</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-05-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3339\" target=\"_blank\">Linux Inlaws S01E30: Politicians and artificial intelligence part 2</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=3340\" target=\"_blank\">3340</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-05-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3340\" target=\"_blank\">Hacked?</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=3341\" target=\"_blank\">3341</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-05-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3341\" target=\"_blank\">Linux on a serial Terminal - And Jorome\'s MainFrame Challenge</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=3342\" target=\"_blank\">3342</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-05-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3342\" target=\"_blank\">HPR 2020 - 2021 New Years Eve Show Episode 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=3343\" target=\"_blank\">3343</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-05-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3343\" target=\"_blank\">The Forth programming language</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=3344\" target=\"_blank\">3344</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-05-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3344\" target=\"_blank\">Infosec Podcasts Part 3 - Infosec Career and Personal Development</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3345\" target=\"_blank\">3345</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-05-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3345\" target=\"_blank\">Audio for Podcasting: Episode 2 - Equalization</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0270.html\" target=\"_blank\">Thaj Sara</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3346\" target=\"_blank\">3346</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-05-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3346\" target=\"_blank\">HPR 2020 - 2021 New Years Eve Show Episode 3</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 12 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 5 comments on\n4 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2499#comments\" target=\"_blank\">hpr2499</a></strong>\n(2018-03-01) \"<em>Tuning around the HF 40Mtr band</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>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2499#3\" target=\"_blank\">Comment 3</a>:\nDave (thelovebug) on 2021-05-19:\n\"Coming to this late, but wow!\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2499#4\" target=\"_blank\">Comment 4</a>:\nMrX on 2021-05-29:\n\"Re: Coming to this late, but wow!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3297#comments\" target=\"_blank\">hpr3297</a></strong>\n(2021-03-23) \"<em>Nextcloud Application Updating</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0273.html\" target=\"_blank\">ToeJet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3297#1\" target=\"_blank\">Comment 1</a>:\nychaouche on 2021-05-02:\n\"safe ?\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3317#comments\" target=\"_blank\">hpr3317</a></strong>\n(2021-04-20) \"<em>Reading a manifesto: Towards A Cooperative Technology Movement</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=3317#6\" target=\"_blank\">Comment 6</a>:\nAaron C on 2021-05-01:\n\"Raises an excellent point\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3324#comments\" target=\"_blank\">hpr3324</a></strong>\n(2021-04-29) \"<em>Infosec Podcasts Part 1  News and Current Events </em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3324#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2021-05-01:\n\"Really liked the show\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 7 comments on 6 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3328#comments\" target=\"_blank\">hpr3328</a></strong>\n(2021-05-05) \"<em>Pandas Part 2</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0039.html\" target=\"_blank\">Enigma</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3328#1\" target=\"_blank\">Comment 1</a>:\nMr. Young on 2021-05-05:\n\"Another great show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3328#2\" target=\"_blank\">Comment 2</a>:\nMr. Young on 2021-05-05:\n\"One more speed gain\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3331#comments\" target=\"_blank\">hpr3331</a></strong>\n(2021-05-10) \"<em>Audio for Podcasting: Episode 1 - The Microphone</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0270.html\" target=\"_blank\">Thaj Sara</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3331#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2021-05-10:\n\"Great episode.  Thanks for the advice.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3336#comments\" target=\"_blank\">hpr3336</a></strong>\n(2021-05-17) \"<em>HPR 2020 - 2021 New Years Eve Show Episode 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=3336#1\" target=\"_blank\">Comment 1</a>:\nHonkeymagoo on 2021-05-11:\n\"Thanking\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3337#comments\" target=\"_blank\">hpr3337</a></strong>\n(2021-05-18) \"<em>I like that the boat is stuck</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0382.html\" target=\"_blank\">Daniel Persson</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3337#1\" target=\"_blank\">Comment 1</a>:\nmpardo on 2021-05-18:\n\"mpardohpr@gmail.com\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3342#comments\" target=\"_blank\">hpr3342</a></strong>\n(2021-05-25) \"<em>HPR 2020 - 2021 New Years Eve Show Episode 2</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=3342#1\" target=\"_blank\">Comment 1</a>:\nHonkeymagoo on 2021-05-11:\n\"Thanking\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3346#comments\" target=\"_blank\">hpr3346</a></strong>\n(2021-05-31) \"<em>HPR 2020 - 2021 New Years Eve Show Episode 3</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=3346#1\" target=\"_blank\">Comment 1</a>:\nHonkeymagoo on 2021-05-11:\n\"Thanking\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-May/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-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=\"reminder---stuff-you-need-to-know\">Reminder - <em>Stuff you need to know</em></h3>\n<ul>\n<li>HPR will stop as a project if there are not enough shows.</li>\n<li>We do not syndicate shows not produced for HPR.</li>\n<li>You are agreeing to license your show CC-BY-SA.</li>\n<li>You have permission to redistribute your show in its entirety.</li>\n<li>Your show will not be moderated.</li>\n<li>Your show will be signaled as containing explicit content.</li>\n<li>You determine where in the schedule your show will be released.</li>\n<li>We use UTF-8 end to end.</li>\n<li>Your show will be heard by an International Audience.</li>\n<li>We also need emergency shows.</li>\n<li>You will no longer be allowed to edit HPR pages on Wikipedia.</li>\n</ul>\n<h3 id=\"reminder---scheduling-guidelines\">Reminder - <em>Scheduling Guidelines</em></h3>\n<ol type=\"1\">\n<li>You must have your audio recording ready to upload before you pick a slot.</li>\n<li>Always try and fill any free slots that are available in the upcoming two weeks.</li>\n<li>If the queue is filling up then please consider leaving some slots free for new contributors.</li>\n<li>If you have a non urgent show then find a empty week and schedule it then.</li>\n<li>If you are uploading a series of shows, consider scheduling one every two weeks.</li>\n</ol>\n<h3 id=\"older-hpr-shows-on-archive.org\">Older HPR shows on archive.org</h3>\n<p>This month 96 additional shows in the range 1-870 have been uploaded to the Internet Archive.</p>\n<p>Since we don\'t want to upload shows without summaries or tags the <em>old shows</em> and <em>tag and summary</em> projects are now tied together. So we will be all the more welcoming of tag and summary updates submitted as described on the <a href=\"https://hackerpublicradio.org/report_missing_tags.php\">summary page</a>.</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:<br />\n<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 7 shows which were without them.</p>\n<p>There are currently 377 shows which need a summary and/or tags.</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),
(3077,'2020-05-19','Video conference Push to Talk',457,'Building the push to talk button missing from many video conference tools','<p>For the sake of archival, \"state of the world\" refers to the COVID-19 pandemic.</p>\r\n<p>The code and CAD files for this project can be found <a href=\"https://github.com/DanNixon/pulseaudio-ptt\">here</a>.</p>\r\n<p>Relevant links:</p>\r\n<ul>\r\n<li><a href=\"https://www.freedesktop.org/wiki/Software/PulseAudio/\">PulseAudio</a> is the sound server used by many Linux distributions</li>\r\n<li><a href=\"https://pypi.org/project/pulsectl/\">pulsectl</a> is a Python library that allows you to control a PulseAudio server</li>\r\n<li><a href=\"https://www.adafruit.com/category/168\">NeoPixels</a> are cool addressable LEDs</li>\r\n<li>The <a href=\"https://www.pjrc.com/teensy/\">Teensy</a> is a small but powerful microcontroller development board</li>\r\n<li><a href=\"https://pythonhosted.org/pyserial/\">pySerial</a> is a library allowing you to use serial ports in Python</li>\r\n<li><a href=\"https://platformio.org/\">PlatformIO</a> is a tool for making software development for embedded platforms easy</li>\r\n</ul>\r\n<p>Early prototype:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3077/hpr3077/01_prototype.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3077/hpr3077/01_prototype_thumbnail.jpg\" title=\"Prototype\" alt=\"Electronic parts assembled for testing\" style=\"width:50.0%;height:50.0%\" /></a></p>\r\n<p>Assembled electronics fitted into case ready to be closed:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3077/hpr3077/02_pre_assembly.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3077/hpr3077/02_pre_assembly_thumbnail.jpg\" title=\"Pre-assembly\" alt=\"Electronics fitted into case ready for case to be closed\" style=\"width:50.0%;height:50.0%\" /></a></p>\r\n<p>View of the top of the case, showing Cherry switch and NeoPixel LED indicator:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3077/hpr3077/03_top.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3077/hpr3077/03_top_thumbnail.jpg\" title=\"Top view\" alt=\"View of the top of the finished device showing button and indicator LED\" style=\"width:50.0%;height:50.0%\" /></a></p>\r\n<p>View of the bottom of the case, showing USB port and some of the nicer M3 screws from my parts bin:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3077/hpr3077/04_bottom.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3077/hpr3077/04_bottom_thumbnail.jpg\" title=\"Bottom view\" alt=\"View of bottom of the finished device showing screws and USB port\" style=\"width:50.0%;height:50.0%\" /></a></p>\r\n<p>Plugged in and powered on, showing the muted state:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3077/hpr3077/05_muted.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3077/hpr3077/05_muted_thumbnail.jpg\" title=\"Muted state\" alt=\"Device showing the muted state\" style=\"width:50.0%;height:50.0%\" /></a></p>\r\n<p>Button pushed, showing the unmuted/mic live state:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3077/hpr3077/06_unmuted.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3077/hpr3077/06_unmuted_thumbnail.jpg\" title=\"Unmuted state\" alt=\"Device with the button pushed showing the unmuted state\" style=\"width:50.0%;height:50.0%\" /></a></p>\r\n',386,103,1,'CC-BY-SA','arduino, linux audio, electronics, hardware',0,0,1),
(3067,'2020-05-05','Getting my Python3 code working in Python2',1526,'What I had to do to get my raspberry Pi PifaceCAD board working after a Debian upgrade.','<p>I have a raspberry Pi model B with the original Pifacecad add on board</p>\r\n<p>I recently upgraded the operating system on my raspberry pi from Wheezy (Debian 7) to Jessie (Debian 8), all seemed fine till I tried to run my Python3 project. It reported that the <code>pifacecad</code> module wasn’t present. I tried to install the module using the standard <code>apt-get</code> command given in the Pifacecad documentation. It installed OK for python 2 but It would not install for python 3 as there was a dependency issue with the <code>python-lirc</code> library. I’m guessing the upgrade broke something.</p>\r\n<p>I installed a fresh minimal installation of raspbian Stretch (Debian 9) onto a new SD card and ran the standard installation command in the Pifacecad documentation. It all installed but there was a warning about Spi which I had forgotten to enable. I enabled this using the <code>raspi-config</code> util and rebooted the pi.</p>\r\n<p>I then tested the installation by running the <code>sys-info.py</code> example that is mentioned in the installation documentation that comes with the pifacecad board.</p>\r\n<p>Running this example gave a warning saying that the pifacecad hardware could not be found at this point I gave up and decided instead to run my project in python 2.</p>\r\n<p>Of course at first the code wouldn’t run using python 2 and I had to do a bit of digging around to find out what was going wrong.</p>\r\n<p>You may find this useful in the unlikely event that you have a project written in python 3 that you want to run in python 2, it might also be useful if you’re going in the other direction.</p>\r\n<p>One other thing that I briefly stumbled upon was that I believe there is a tool available that attempts to convert python 2 code to python 3 I don’t know anything about it and didn’t bother looking to see if there is a tool to go in the opposite direction which is what I needed. I’ve included a link to the tool below <a href=\"https://docs.python.org/2/library/2to3.html\" class=\"uri\">https://docs.python.org/2/library/2to3.html</a></p>\r\n<p>I’ve got the two versions of code loaded into the excellent graphical diff tool <code>meld</code> and I’ll just briefly cover the things that I had to change.</p>\r\n<p>Link to meld diff tool: <a href=\"https://meldmerge.org/\" class=\"uri\">https://meldmerge.org/</a></p>\r\n<p>After some mucking about I got it partially working by installing Piface module for Python 2.7</p>\r\n<p>Had to do the following changes to get the code working in Python 2.7:</p>\r\n<ul>\r\n<li><p>Changed first line of code from python3 to python2 so that code was run using the correct interpreter</p></li>\r\n<li><p>Print statement fixed by see<br />\r\n<a href=\"https://stackoverflow.com/questions/32032697/how-to-use-from-future-import-print-function\" class=\"uri\">https://stackoverflow.com/questions/32032697/how-to-use-from-future-import-print-function</a></p></li>\r\n<li>Python 3 uses the urllib.request command. For Python 3 I used</li>\r\n</ul>\r\n<pre><code>    urllib.request.urlopen(url).read()</code></pre>\r\n<blockquote>\r\n<p><a href=\"https://docs.python.org/3/library/urllib.request.html\" class=\"uri\">https://docs.python.org/3/library/urllib.request.html</a></p>\r\n</blockquote>\r\n<ul>\r\n<li>Python 2 uses the urllib2 command. For Python 2 I used the following</li>\r\n</ul>\r\n<pre><code>    urllib2.urlopen(url).read()</code></pre>\r\n<blockquote>\r\n<p><a href=\"https://docs.python.org/2/library/urllib2.html\" class=\"uri\">https://docs.python.org/2/library/urllib2.html</a></p>\r\n</blockquote>\r\n<ul>\r\n<li><p><code>hostname --all</code> has different output on this version of Debian, now includes mac address which I did not want.</p></li>\r\n<li><p>Getting the wifi ESSID information. I used <code>iwconfig</code> to get this information. The path to iwconfig command changed in this version of Debian and I now had to give the full path to get it to work.</p></li>\r\n<li><p>Python 2 and 3 seemed to handle strings differently when converting from an array to a plain string.</p></li>\r\n<li><p>Python 3 handles input different from python 2</p></li>\r\n<li><p>If python 2 comes across a non numeric value it quits with an exception</p>\r\n<ul>\r\n<li>so for python 2 I used the command</li>\r\n</ul>\r\n<pre><code>      raw_input()</code></pre>\r\n<ul>\r\n<li>for python 3 I used the command</li>\r\n</ul>\r\n<pre><code>      input()</code></pre></li>\r\n</ul>\r\n<p>Two article about incorporating future statements in Python 2<br />\r\n<a href=\"https://docs.python.org/3/library/__future__.html\" class=\"uri\">https://docs.python.org/3/library/__future__.html</a><br />\r\n</p>\r\n<p><a href=\"https://simeonvisser.com/posts/how-does-from-future-import-work-in-python.html\" class=\"uri\">https://simeonvisser.com/posts/how-does-from-future-import-work-in-python.html</a></p>\r\n<p>Related shows about my PiFaceCAD add on board for the raspberry pi</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2933\">hpr2933 :: A walk through my PifaceCAD Python code – Part 1</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2951\">hpr2951 :: A walk through my PifaceCAD Python code – Part 2</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2963\">hpr2963 :: A walk through my PifaceCAD Python code – Part 3</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2976\">hpr2976 :: A walk through my PifaceCAD Python code – Part 4</a></li>\r\n</ul>\r\n',201,38,1,'CC-BY-SA','Python, Programming, Linux, Raspberry Pi',0,0,1),
(3069,'2020-05-07','Linux Inlaws S01E05 Porn and Skynet',4029,'This is Linux Inlaws, a series on free and open source software, black humour, the revolution','<p>Linux Inlaws - a podcast about on topics around free and open source software, any associated contraband, communism / the revolution in general and whatever else fancies your tickle.</p>\r\n<p>Please note that this and other episodes may contain strong language, offensive humor and other certainly not politically correct language - you have been warned (our parents insisted on this disclaimer - happy mum?). Thus the content is not suitable for consumption in the workplace (especially when played back on a speaker in an open plan office or similar environments), any minors under the age of 35 or any pets including fluffy little killer bunnies, your trusty guide dog (unless on speed) and cute t-rexes or other associated dinosaurs.</p>\r\n<ul>\r\n<li>Ubuntu 20.04: <a href=\"https://wiki.ubuntu.com/FocalFossa/ReleaseNotes\" class=\"uri\">https://wiki.ubuntu.com/FocalFossa/ReleaseNotes</a></li>\r\n<li>Kernel 5.6: <a href=\"https://itsfoss.com/linux-kernel-5-6\" class=\"uri\">https://itsfoss.com/linux-kernel-5-6</a></li>\r\n<li>Wireguard: <a href=\"https://www.wireguard.com\" class=\"uri\">https://www.wireguard.com</a></li>\r\n<li>Python 2.7.18: <a href=\"https://mail.python.org/archives/list/python-dev@python.org/message/OFCIETIXLX34X7FVK5B5WPZH22HXV342/\" class=\"uri\">https://mail.python.org/archives/list/python-dev@python.org/message/OFCIETIXLX34X7FVK5B5WPZH22HXV342/</a></li>\r\n<li>Python 404: <a href=\"https://www.python.org/dev/peps/pep-0404\" class=\"uri\">https://www.python.org/dev/peps/pep-0404</a></li>\r\n<li>RTPM: <a href=\"https://en.wikipedia.org/wiki/Real-Time_Messaging_Protocol\" class=\"uri\">https://en.wikipedia.org/wiki/Real-Time_Messaging_Protocol</a></li>\r\n<li>webRTC: <a href=\"https://en.wikipedia.org/wiki/WebRTC\" class=\"uri\">https://en.wikipedia.org/wiki/WebRTC</a></li>\r\n<li>MPEG: <a href=\"https://en.wikipedia.org/wiki/MPEG-4\" class=\"uri\">https://en.wikipedia.org/wiki/MPEG-4</a></li>\r\n<li>VP9: <a href=\"https://en.wikipedia.org/wiki/VP9\" class=\"uri\">https://en.wikipedia.org/wiki/VP9</a></li>\r\n<li>Audio compression: <a href=\"https://en.wikipedia.org/wiki/Data_compression#Audio\" class=\"uri\">https://en.wikipedia.org/wiki/Data_compression#Audio</a></li>\r\n<li>Container formats: <a href=\"https://en.wikipedia.org/wiki/Comparison_of_video_container_formats\" class=\"uri\">https://en.wikipedia.org/wiki/Comparison_of_video_container_formats</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','linux inlaws, communism, free and open source software, adult entertainment, skynet',0,0,1),
(3070,'2020-05-08','making vim xdg compatible',3070,'move your vim configuration out of the home directory','<h1 id=\"xdg-vim-config\">xdg vim config</h1>\r\n<p>To make vim load an alternative config file either use an alias or the VIMINIT variable. i.e. place either <code>alias vim=\"vim -u ~/.config/vim/vimrc\"</code> or <code>VIMINIT=\"source ~/.config/vim/vimrc\"</code> in your <code>.bashrc</code> (ironically, that one is still in my home folder).</p>\r\n<p>Once that is loaded, you should source the following file after \"nocompatible\"</p>\r\n<pre><code>&quot; file: ~/.config/vim/xdg.vim\r\nif empty($XDG_CACHE_HOME)\r\n    let $XDG_CACHE_HOME=$HOME.&quot;/.cache&quot;\r\nendif\r\n\r\nif empty($XDG_CONFIG_HOME)\r\n    let $XDG_CONFIG_HOME=$HOME.&quot;/.config&quot;\r\nendif\r\n\r\nif empty($XDG_DATA_HOME)\r\n    let $XDG_DATA_HOME=$HOME.&quot;/.local/share&quot;\r\nendif\r\n\r\nset directory=$XDG_CACHE_HOME/vim/swap,~/,/tmp\r\nset backupdir=$XDG_CACHE_HOME/vim/backup,~/,/tmp\r\nset undodir=$XDG_CACHE_HOME/vim/undo,~/,/tmp\r\nset viminfo+=n$XDG_CACHE_HOME/vim/viminfo\r\nset runtimepath+=$XDG_CONFIG_HOME/vim,$XDG_CONFIG_HOME/vim/after,$XDG_DATA_HOME/vim/bundle/Vundle.vim,$VIM,$VIMRUNTIME\r\nlet $MYVIMRC=$XDG_CONFIG_HOME.&quot;/vim/vimrc&quot;\r\n</code></pre>\r\n<p>With this file in place you should call it from your vimrc</p>\r\n<pre><code>&quot; file: ~/.config/vim/vimrc\r\nset nocompatible\r\nfiletype off\r\nsource $HOME/.config/vim/xdg.vim\r\ncall vundle#begin()\r\nlet vundle#bundle_dir = expand(&quot;$XDG_DATA_HOME/vim/bundle&quot;)\r\n\r\n&quot; include your calls to Plugin here\r\n\r\ncall vundle#end()\r\nfiletype plugin indent on\r\nsyntax on\r\n\r\nsource ~/.config.\r\n</code></pre>\r\n<p>Note that it is important that all the paths are defined BEFORE Vundle (or whatever is your plugin manager) is called, since the path to it is defined in <code>xdg.vim</code>.</p>\r\n<p>You can check my full vim config at <a href=\"https://gitlab.com/crvs/dotfiles/-/tree/master/.config/vim\">gitlab</a>.</p>\r\n<h2 id=\"references\">References</h2>\r\n<p>The vim script I modified my config from - <a href=\"https://gist.github.com/dkasak/6ae1c6bf0d771155f23b\">https://gist.github.com/dkasak/6ae1c6bf0d771155f23b</a></p>\r\n',385,82,1,'CC-BY-SA','vim, configuration, XDG',0,0,1),
(3071,'2020-05-11','Bash snippet - quotes inside quoted strings',799,'How to add quotes to quoted strings in Bash','<h2 id=\"bash-and-quoted-strings\">Bash and quoted strings</h2>\r\n<p>An issue I just hit in Bash was that I had a quoted string, and I wanted to enclose it in quotes. How to do this?</p>\r\n<p>This is the umpteenth time I have stumbled over this issue, and I realised I had found out how to solve it a while back but the information hadn’t rooted itself into my mind!</p>\r\n<p>I have always been less clear in my mind about quoted strings in Bash than I should be, so, assuming others might have similar confusion I thought I’d try and clarify things in the form of an HPR show.</p>\r\n<h3 id=\"the-problem\">The problem</h3>\r\n<p>The thing I was having difficulties with was an <code>alias</code> definition of a useful pipeline:</p>\r\n<pre><code>nmap -sn 192.168.0.0/24 | awk &#39;/^Nmap scan report/{print &quot;&quot;; print; next}{print}&#39;</code></pre>\r\n<p>This uses <code>nmap</code> (see Ken’s show <a href=\"https://hackerpublicradio.org/eps.php?id=3052\" title=\"hpr3052 :: Locating computers on a network\">3052</a> for a discussion of its use) piped into an <code>awk</code> one-liner that formats the information returned by <code>nmap</code>.</p>\r\n<p>The <code>alias</code> command can be used to store such a command or command sequence as a single simple command. It’s usually added to the <code>~/.bashrc</code> file so it gets added to every Bash shell you start up (note <em>Bash Tips #22</em>, currently being written, will cover these startup files).</p>\r\n<p>An <code>alias</code> definition looks something like this:</p>\r\n<pre><code>alias la=&#39;ls -Al&#39;</code></pre>\r\n<p>The alias itself <code>\'la\'</code> is defined as the command <code>ls -Al</code>.</p>\r\n<p>So how to make my <code>nmap</code> sequence into an alias given that the commands contain both single and double quotes?</p>\r\n<h3 id=\"quoted-strings-in-bash\">Quoted strings in Bash</h3>\r\n<p>Bash is (to my mind) a bit weird with quoted strings.</p>\r\n<p>There are two sorts of quotes in Bash (leaving aside the <em>backquote</em> or <em>backtick</em> – <code>`</code>):</p>\r\n<ul>\r\n<li><p>Single quotes, also called <em>hard</em> quotes (<code>\'</code>). The literal value of characters between the quotes is preserved. Single quotes are not allowed, even if preceded by backslash escape characters.</p></li>\r\n<li><p>Double quotes, also called <em>soft</em> quotes (<code>\"</code>). Certain characters within the quotes have special meanings, such as <code>\'$\'</code> and <code>\'&bsol;\'</code>. Double quotes are allowed in the string when preceded by a backslash.</p></li>\r\n</ul>\r\n<p>There’s a more comprehensive treatment of these quoting types (and others) in the <a href=\"https://www.gnu.org/software/bash/manual/html_node/Quoting.html\" title=\"Bash Reference Manual: 3.1.2 Quoting\">Bash Reference Manual</a>.</p>\r\n<h3 id=\"changing-quotes-and-concatenating-strings\">Changing quotes and concatenating strings</h3>\r\n<p>To make a variable containing a string with embedded quotes you can do this:</p>\r\n<pre><code>$ x=&#39;string1&#39;&quot;&#39;&quot;&#39;string2&#39;\r\n$ echo $x\r\nstring1&#39;string2</code></pre>\r\n<p>What we did here was close <code>\'string1\'</code>, start a new string enclosed in double quotes <code>\"\'\"</code>, then append a second string <code>\'string2\'</code>. Bash treats the three strings as one, but they have to be contiguous. There must be no intervening spaces<a href=\"#fn1\" class=\"footnote-ref\" id=\"fnref1\"><sup>1</sup></a>.</p>\r\n<p>This solution is rather ugly. You could also use Bash string concatenation to do this, though it’s more long-winded:</p>\r\n<pre><code>$ x=&#39;string1&#39;\r\n$ x+=&quot;&#39;&quot;\r\n$ x+=&#39;string2&#39;\r\n$ echo $x\r\nstring1&#39;string2</code></pre>\r\n<p>The same principles hold for double quotes of course:</p>\r\n<pre><code>$ x=&quot;string1&quot;&#39;&quot;&#39;&quot;string2&quot;\r\n$ echo $x\r\nstring1&quot;string2</code></pre>\r\n<p>You’d probably not want to do this though.</p>\r\n<h3 id=\"using-backslashes\">Using backslashes</h3>\r\n<p>You can use backslashes to escape double quotes inside a <em>double</em> quoted string in Bash as we have seen.</p>\r\n<pre><code>$ x=&quot;string1&bsol;&quot;string2&quot;\r\n$ echo $x\r\nstring1&quot;string2</code></pre>\r\n<p>However, as discussed earlier, it’s not possible to use backslashes to escape single quotes inside a single quoted string in Bash. However, outside a string a backslashed character is <em>escaped</em>. For example, if you have files which have spaces in their names, you can quote the name or use the backslash escape to protect the spaces<a href=\"#fn2\" class=\"footnote-ref\" id=\"fnref2\"><sup>2</sup></a>:</p>\r\n<pre><code>$ ls -l a&bsol; file&bsol; with&bsol; spaces.awk\r\n-rw-r--r-- 1 hprdemo hprdemo 0 Apr 22 22:25 &#39;a file with spaces.awk&#39;</code></pre>\r\n<p>So, knowing this, you can exit a string, concatenate with a backslashed quote then restart a string like this:</p>\r\n<pre><code>$ x=&#39;string1&#39;&bsol;&#39;&#39;string2&#39;\r\n$ echo $x\r\nstring1&#39;string2</code></pre>\r\n<h3 id=\"solution\">Solution</h3>\r\n<p>So now we can see how to achieve the alias definition I wanted earlier:</p>\r\n<pre><code>alias show_network=&#39;nmap -sn 192.168.0.0/24 | awk &#39;&bsol;&#39;&#39;/^Nmap scan report/{print &quot;&quot;; print; next}{print}&#39;&bsol;&#39;&#39;&#39;\r\n\r\n</code></pre>\r\n<h3 id=\"epilogue\">Epilogue</h3>\r\n<p>There’s more to be said about this subject, but too much of this stuff is not healthy.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><p>Ken Fallon’s HPR show where he describes <code>nmap</code>: <a href=\"https://hackerpublicradio.org/eps.php?id=3052\">hpr3052 :: Locating computers on a network</a></p></li>\r\n<li>Bash Reference Manual:\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/html_node/Quoting.html\">Quoting</a></li>\r\n</ul></li>\r\n<li>Stack Overflow articles:\r\n<ul>\r\n<li><a href=\"https://stackoverflow.com/questions/6697753/difference-between-single-and-double-quotes-in-bash\">Difference between single and double quotes in Bash</a></li>\r\n<li><a href=\"https://stackoverflow.com/questions/3834839/how-to-escape-a-double-quote-inside-double-quotes\">How to escape a double quote inside double quotes</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>This is quite an artificial example to make a point. You wouldn’t do things this way in reality. Using <code>x=\'string1\'\"\'string2\"</code> would also work (<code>\'string1\'</code> in single quotes, and <code>\"\'string2\'\"</code> in double quotes). Also, you could just write <code>x=\"string1\'string2\"</code> and stop all the messing about, but that would not be much of an example!<a href=\"#fnref1\" class=\"footnote-back\">↩</a></p></li>\r\n<li id=\"fn2\"><p>The backslash is making the space a literal space, otherwise Bash would see it as an argument delimiter, and would look for the files <code>\'a\'</code>, <code>\'file\'</code>, <code>\'with\'</code> and <code>\'spaces.awk\'</code> to list details about!<a href=\"#fnref2\" class=\"footnote-back\">↩</a></p></li>\r\n</ol>\r\n</section>\r\n',225,42,1,'CC-BY-SA','Bash,quotes',0,0,1),
(3072,'2020-05-12','The joy of pip-tools and pyenv-virtualenv',1441,'How to manage your dependencies and environment isolation when developing in Python','<p>TL;DL: What I end up recommending is that you use pip-tools for your dependency management needs, and pyenv-virtualenv for your environment management needs. In the show I explain why you would want these things.</p>\r\n\r\n<p>I talk about these tools:</p>\r\n\r\n<ul>\r\n  <li><a href=\"https://virtualenv.pypa.io/\">virtualenv</a></li>\r\n  <li><a href=\"https://python-poetry.org/\">poetry</a></li>\r\n  <li><a href=\"https://pipenv.pypa.io/\">pipenv</a></li>\r\n  <li><a href=\"https://github.com/jazzband/pip-tools/\">pip-tools</a></li>\r\n  <li><a href=\"https://virtualenvwrapper.readthedocs.io/\">virtualenvwrapper</a></li>\r\n  <li><a href=\"https://github.com/pyenv/pyenv\">pyenv</a></li>\r\n  <li><a href=\"https://github.com/pyenv/pyenv-virtualenv\">pyenv-virtualenv</a></li>\r\n</ul>\r\n\r\n<p>I mention in passing, and as fodder for further shows:</p>\r\n\r\n<ul>\r\n  <li><a href=\"https://reproducible-builds.org/\">reproducible builds</a></li>\r\n  <li><a href=\"https://nixos.org/nix/\">Nix</a></li>\r\n  <li><a href=\"https://tox.readthedocs.io/\">tox</a></li>\r\n  <li>I also owe you a show on my awesome bash prompt that shows me which environment I am in.</li>\r\n</ul>\r\n\r\n<h2 id=\"install-pyenv-and-pyenv-virtualenv\">Install pyenv and pyenv-virtualenv</h2>\r\n\r\n<pre><code>git clone https://github.com/pyenv/pyenv ~/.pyenv\r\ngit clone https://github.com/pyenv/pyenv-virtualenv ~/.pyenv/plugins/pyenv-virtualenv\r\n</code></pre>\r\n\r\n<p>Add to <code>~/.bash_profile</code>:</p>\r\n\r\n<pre><code>export PYENV_ROOT=$HOME/.pyenv\r\nexport PATH=$PYENV_ROOT/bin:$PATH\r\n</code></pre>\r\n\r\n<p>Add to <code>~/.bash_profile</code> (optional):</p>\r\n\r\n<pre><code>eval \"$(pyenv init -)\"\r\neval \"$(pyenv virtualenv-init -)\"\r\n</code></pre>\r\n\r\n<p>The optional bits provide you with the <code>pyenv shell</code> functionality for setting a session-specific Python version, and automatic activation of the virtualenv. Most of the time you don’t need activation, scripts and commands run just fine via the shims, but some tooling around Python may sometimes need to know which virtualenv you’re in.</p>\r\n\r\n<p>Run the export and eval lines in your shell to have the configuration work immediately. Alternatively, do <code>su - yourusername</code> to login to a new session that runs the profile. The <code>-</code> is important.</p>\r\n\r\n<p>You might be able to get away with just opening a new tab or window in your terminal. Whether that runs the profile depends on your settings.</p>\r\n\r\n<h2 id=\"set-up-your-pyenv-virtualenv-for-your-project\">Set up your pyenv virtualenv for your project</h2>\r\n\r\n<pre><code># Creates the virtualenv named my-project-env using \r\n# the python named system (your system default python)\r\npyenv virtualenv system my-project-env  \r\ncd /path/to/my-project\r\npyenv local my-project-env\r\n</code></pre>\r\n\r\n<p>Your system Python may or may not work for this. You might have to install pip and virtualenv. It might still break with some message about <code>ensurepip</code> failing (currently both Nix (20.09pre) python and Ubuntu (18.04) python are failing for me, and older Anaconda pythons also had a broken venv). In that case, use pyenv to install a Python that works, and use that instead of the system python:</p>\r\n\r\n<pre><code>pyenv install miniconda3-latest\r\npyenv virtualenv miniconda3-latest my-project-env\r\ncd /path/to/my-project\r\npyenv local my-project-env\r\n</code></pre>\r\n\r\n<h2 id=\"install-pip-tools\">Install pip-tools</h2>\r\n\r\n<p>You’ll want to do this inside the virtual environment that you want to manage. Don’t install pip-tools globally.</p>\r\n\r\n<pre><code>cd /path/to/my/project\r\n# And, assuming you have the shims on your $PATH\r\n# and you set the pyenv local as shown previously\r\npython -m pip install pip-tools\r\n</code></pre>\r\n\r\n<p>Now put your requirements in <code>requirements.in</code>, one on each line, in the form you would give them to <code>pip</code> on the command line:</p>\r\n\r\n<pre><code>somepackage &gt;=3, &lt;4\r\notherpackage &lt;7\r\n</code></pre>\r\n\r\n<p>Compile <code>requirements.in</code> to a <code>requirements.txt</code>:</p>\r\n\r\n<pre><code>python -m piptools compile\r\n</code></pre>\r\n\r\n<p>You could run the shorter command <code>pip-compile</code> for convenience, but using the long form with <code>-m</code> looks it up through your configured Python, and makes it less likely for you to surprise yourself and run a tool in a different virtualenv than you expected. Same with <code>python -m pip</code> above.</p>\r\n\r\n<p>Your <code>requirements.txt</code> will look something like this:</p>\r\n\r\n<pre><code>otherpackage==6.9.3          # via -r requirements.in\r\nsomepackage==3.4.2           # via -r requirements.in\r\ntransitivedependency==2.7.6  # via somepackage\r\n</code></pre>\r\n\r\n<p>It helpfully tells you where everything is from!</p>\r\n\r\n<p>Now to actually install these things you <code>python -m pip -r requirements.txt</code>.</p>\r\n\r\n<p>Now you’re good to go! Happy hacking!</p>',311,38,1,'CC-BY-SA','python,pyenv,virtualenv,virtualenvwrapper,poetry,pipenv,pip-tools',0,0,1),
(3076,'2020-05-18','Keep calm and Virion',3526,'A COVID-19 lockdown chat from Scotland','<h2 id=\"introduction\">Introduction</h2>\r\n<p>Two HPR hosts from Scotland get together over Mumble to chat about all manner of stuff.</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0268.html\">Andrew Conway</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></li>\r\n</ul>\r\n<h2 id=\"apology\">Apology</h2>\r\n<p>Dave’s sound was a bit muffled in this recording. It turns out that it’s important which USB port the microphone (Zoom recorder) is plugged into. Who knew!</p>\r\n<h2 id=\"notes\">Notes</h2>\r\n<p>Some of the topics we discussed</p>\r\n<ul>\r\n<li>Accent differences in Scotland\r\n<ul>\r\n<li>What is <em>Butcher Meat</em>? Is it an Edinburgh expression?</li>\r\n</ul></li>\r\n<li>The Fish Van from <a href=\"https://en.wikipedia.org/wiki/Pittenweem\" title=\"A fishing village in Fife\">Pittenweem</a>\r\n<ul>\r\n<li>The mysterious non-Crab Crab meat</li>\r\n<li>Dressed and live crabs in <a href=\"https://en.wikipedia.org/wiki/Cromer\" title=\"A town on the Norfolk coast\">Cromer</a></li>\r\n</ul></li>\r\n<li>Handling enforced isolation; the response to COVID-19</li>\r\n<li>The type of disposable masks sold for DIY use can be impractical</li>\r\n<li>Supermarket online shopping and delivery versus local shopping</li>\r\n<li>The etiquette of distancing when out walking or cycling for exercise during the lockdown</li>\r\n<li>Cycling anecdotes\r\n<ul>\r\n<li><a href=\"https://www.slime.com/uk/products/bike/sealants/tube-sealant.php\" title=\"Slime tube sealant\">Slime</a> tube sealant</li>\r\n<li>Old railway lines turned to cycle paths (e.g. <a href=\"https://en.wikipedia.org/wiki/Balerno_line\" title=\"Balerno railway line, now a walkway\">Balerno line</a> in Edinburgh, <a href=\"https://en.wikipedia.org/wiki/Marriott&#39;s_Way\" title=\"Marriott&#39;s Way, Norfolk, originally a railway line\">Marriott’s Way</a> in Norfolk)</li>\r\n</ul></li>\r\n<li>Industrial archaeology and historical buildings\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Water_of_Leith\" title=\"Water of Leith\">Water of Leith</a>, Edinburgh</li>\r\n<li>Paper making (<a href=\"https://en.wikipedia.org/wiki/Esparto\" title=\"Esparto grass\">Esparto grass</a>)</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/River_Kelvin\" title=\"River Kelvin\">River Kelvin</a>, Glasgow</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/William_Thomson,_1st_Baron_Kelvin\" title=\"Lord Kelvin\">Lord Kelvin</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Warrender_Baths\" title=\"Warrender Baths, Edinburgh\">Warrender Baths</a>, Edinburgh</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Govanhill_Baths\" title=\"Govanhill Baths, Glasgow\">Govanhill Baths</a>, Glasgow (ref. <em>steamie</em>)</li>\r\n</ul></li>\r\n<li>Electronics\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/ESP8266\" title=\"Low-cost Wi-Fi microchip\">ESP8266</a>, <a href=\"https://en.wikipedia.org/wiki/ESP32\" title=\"Microcontroller with integrated Wi-Fi and dual-mode Bluetooth\">ESP32</a></li>\r\n<li><a href=\"https://sonoff.tech/\" title=\"Home automation\">Sonoff</a> home automation</li>\r\n</ul></li>\r\n<li>D&amp;D sessions\r\n<ul>\r\n<li>Initiated by <a href=\"https://hackerpublicradio.org/correspondents/0078.html\">Klaatu</a> in New Zealand</li>\r\n</ul></li>\r\n<li>Shortages during the pandemic: toilet rolls, flour, etc\r\n<ul>\r\n<li>Supply chains: wholesale versus domestic</li>\r\n</ul></li>\r\n<li><em>Dracula</em> by Bram Stoker\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Whitby\" title=\"A coastal town in Yorkshire\">Whitby</a>, Yorkshire</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Brașov\" title=\"A city in Transylvania, Romania\">Brașov</a>, Transylvania, Romania.\r\n<ul>\r\n<li>Called <em>Corona</em> at one point in its history.</li>\r\n<li>Near to <a href=\"https://en.wikipedia.org/wiki/Bran_Castle\" title=\"Bran Castle, near Brașov\">Bran Castle</a>, known outside Romania as Dracula’s Castle.</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Pittenweem\">Pittenweem</a>, a fishing village in Fife</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Cromer\">Cromer</a>, a town on the Norfolk coast, famous for its crabs</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Whitby\">Whitby</a>, a seaside town in North Yorkshire</li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','Virus,Virion,COVID-19',0,0,1),
(3090,'2020-06-05','Locating Computer on a Enterprise Network',2388,'advanced nmap tips','<p>\r\nIn this episode operat0r responds to <a href=\"https://hackerpublicradio.org/eps.php?id=3052\">hpr3052 :: Locating computers on a network</a>, with more tips and tricks. Then he continues through a detailed exercise in using nmap on the corporate network.\r\n</p>\r\n<p>\r\nThe expanded commands can be found <a href=\"https://hackerpublicradio.org/eps/hpr3090.txt\">here</a>.\r\n</p>',36,61,1,'CC-BY-SA','nmap,hacking,computers,networking,scripting,bash,shell',0,0,1),
(3073,'2020-05-13','Matchbox and Diecast Restoration',182,'A short episode about my New hobby restoring Matchbox and other Diecast models','<p>\r\nToday\'s show is about my recently started hobby of restoring Matchbox models. I talked about this on the New Year show and Ken said it deserved a show in its own right.\r\n</p>\r\n<p>\r\nSo today I briefly talk about how I got into the hobby through watching YouTube Videos of Marty\'s Matchbox Makeovers, and my first restoration pictured below. Enjoy.\r\n</p>\r\n<p>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3073/hpr3073/hpr3073.jpg\">\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3073/hpr3073/hpr3073_thumbnail.jpg\" title=\"\" alt=\"Photo of a silver matchbox car\" ></a>\r\n</p>\r\n\r\n\r\n<h3>Links:</h3>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/channel/UCLM7pRUW6CmqqoAic24wbpQ\">https://www.youtube.com/channel/UCLM7pRUW6CmqqoAic24wbpQ</a></li>\r\n</ul>\r\n\r\n',338,114,0,'CC-BY-SA','Matchbox, Diecast Models, Restoration',0,0,1),
(3078,'2020-05-20','Coronavirus Update 2020-05-07',878,'Where we are with this pandemic, and how should we respond?','<p>This is an update to my earlier show to pull together what we know about the Coronavirus on this date, and what measures we can take. It focuses on the lack of solid information at this point and suggests a prudent course to stay safe. <a href=\"https://www.palain.com/health-topics/coronavirus-update-20200507/\" class=\"uri\">https://www.palain.com/health-topics/coronavirus-update-20200507/</a></p>\r\n<ul>\r\n<li><a href=\"https://www.palain.com/health-topics/scientific-and-medical-reports/\" class=\"uri\">https://www.palain.com/health-topics/scientific-and-medical-reports/</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2685\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2685</a></li>\r\n<li><a href=\"https://www.cdc.gov/flu/about/burden/2017-2018.htm\" class=\"uri\">https://www.cdc.gov/flu/about/burden/2017-2018.htm</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/All_models_are_wrong\" class=\"uri\">https://en.wikipedia.org/wiki/All_models_are_wrong</a></li>\r\n<li><a href=\"https://www.healthdata.org/covid/updates\" class=\"uri\">https://www.healthdata.org/covid/updates</a></li>\r\n<li><a href=\"https://www.medpagetoday.com/infectiousdisease/covid19/86127\" class=\"uri\">https://www.medpagetoday.com/infectiousdisease/covid19/86127</a></li>\r\n<li><a href=\"https://www.cnn.com/2020/05/04/health/us-coronavirus-monday/index.html\" class=\"uri\">https://www.cnn.com/2020/05/04/health/us-coronavirus-monday/index.html</a></li>\r\n<li><a href=\"https://www.palain.com/health-topics/coronavirus-update-20200507/\" class=\"uri\">https://www.palain.com/health-topics/coronavirus-update-20200507/</a></li>\r\n</ul>\r\n\r\n<hr />\r\n\r\n<p>\r\nExtracted from <a href=\"https://www.palain.com/health-topics/coronavirus-update-20200507/\">Palain.com</a> under the tearms of Creative Commons Attribution-ShareAlike 4.0 International License. \r\n</p>\r\n\r\n<h1 >Coronavirus Update 20200507</h1>\r\n\r\n<p>The coronavirus pandemic is continuing throughout most of the world, and I wanted to put down some observations on where we stand today. First, note that I put the date in the title. This is because the situation in some ways changes day-by-day, even though there are continuities. That makes it a dangerous place to be because it is human nature to look for the latest news and jump on it if it looks good. And that is a prime mistake because we do not in fact know enough at this point to be confident in these news reports. I would refer you to my earlier essay, <a rel=\"noreferrer noopener\" href=\"https://www.palain.com/health-topics/scientific-and-medical-reports/\" target=\"_blank\">Scientific and Medical Reports</a>, which is highly relevant right now. While I could not have predicted this pandemic when I wrote it, it contains basic principles that are <em>always</em> relevant. </p>\r\n\r\n\r\n\r\n<p>The nature of the press is that it is like the carnivorous plant in the movie <em>Little Shop of Horrors</em>, always crying \"Feed Me!\" And of course we are all interested if not to say anxious for any news on the course of this disease and where it is taking us. What this means is that you will see a unstoppable stream of news stories touting the latest study on one or another aspect of this. Add in the desire of politicians to spin things to their advantage, and you have a recipe for disaster. To keep sane, remember a few basic principles:</p>\r\n\r\n\r\n\r\n<ul><li>One study proves nothing. There are lots of studies, and many of them are one-and-done without having any effect on medical practice. If there is an interesting result, it merely indicates an area for further study.</li><li>Study results are only meaningful when they have withstood peer review and have been replicated by other scientists. This process does produce good results, but only with time. Only in movies do scientists go into the lab and come out 24 hours later with the answer.</li><li>If you really want to know when all of this will end, there are only two answers. It can end very soon with an accompanying loss of life because the virus is still spreading. This is starting to show up in places that ignore the science. Going outside without a mask and carrying on as usual is not brave, it is stupid.</li><li>The other answer is that a gradual relaxation of isolation can happen if it guided by sound science. Unfortunately, as just explained, that sound science is still being sought, and will take time.</li><li>When you see the vast majority of doctors and scientists saying the same thing, that is your best assurance the information is accurate. </li><li>Right now the number one priority is testing, testing, testing.</li></ul>\r\n\r\n\r\n\r\n<p>So, with that background, do we know anything at this point? Yes, we do. But we also have a lot of unanswered questions.</p>\r\n\r\n\r\n\r\n<h2>Second Wave?</h2>\r\n\r\n\r\n\r\n<p>The first big question is whether there will be a second wave, and this is something that every qualified epidemiologist I have heard from says is guaranteed. And the reason is that a certain \"fatigue\" sets in with staying in isolation, and at least some people will convince themselves they don’t need to do it. They are wrong, and they will guarantee that second wave. In the 1918 Flu Pandemic, the second wave was far worse than the first wave. And don’t forget there was a third wave in that pandemic until it petered out in 1920. The best thing you can do is keep isolated if at all possible, and follow all of the guidelines: </p>\r\n\r\n\r\n\r\n<ul><li>Wear a mask if you must go out, such as for groceries.</li><li>Many stores are offering special hours for seniors. If you are one, take advantage.</li><li>After a shopping trip, wash or disinfect items carefully. Remember that soap is all you need to defeat the virus, but use disinfectant wipes when soap is not practical.</li><li>After returning, strip and place all of your clothes in the washer. The detergent should kill any virus that is there.</li><li>Wash your hands with soap frequently.</li><li>Try not to touch your face.</li><li>Maintain at least two meters distance from anyone not in your household when you do go out.</li><li>Try to stay fit. I go for walks in my neighborhood if there aren’t too many others out, and when there is someone else out, I give them a wide separation. I also do gardening in my own yard, and exercise in my home. That won’t prevent you from getting the disease, but it may prevent you from dying of it.</li></ul>\r\n\r\n\r\n\r\n<p>Yeah, this is all of the stuff we have been hearing all along. But annoying as it is, it <em>does</em> work if you do it.</p>\r\n\r\n\r\n\r\n<h2>Is the virus mutating?</h2>\r\n\r\n\r\n\r\n<p>Yes. In other news, water is wet. Face it, mutation is what organisms do, and that has been true for billions of years. The question you really have is \"Is it getting worse?\" And right now the answer is \"We don’t know.\" Sorry I can’t give you any more determinative answer, but we are only at the \"one study\" phase right now, and we are a ways off from the \"peer-reviewed, replicated consensus\" phase that will resolve this. There are indications that at least this virus does not mutate as much as influenza, but even that may require more study.</p>\r\n\r\n\r\n\r\n<h2>Am I Immune?</h2>\r\n\r\n\r\n\r\n<p>We would all love to know if we are immune. This requires two big things to give a good answer. First, does having the disease and then recovering give you immunity? And the sad truth is that we don’t know yet. The common cold is a coronavirus, and you never get immunity. Influenza is a virus, and getting it one year provides no immunity the next. And if getting it once does provide immunity, we still need testing to discover this. The number one priority right now in all locations should be testing, testing, testing. That is the prerequisite for doing any decent epidemiology. There was a report (note: <em>one study</em>) out of South Korea that indicated that some people could get the disease twice, but they re-analyzed the data and decided that it might have been false positives. That is the kind of thing that happens when scientists are trying to do a year’s worth of work in few weeks, which is what they are doing.</p>\r\n\r\n\r\n\r\n<h2>Is It More Infectious Than We Thought?</h2>\r\n\r\n\r\n\r\n<p>Again, very unclear. And even less clear is what this implies. An argument is being made that if the rate of infection is higher, given the number of deaths, that would imply it is less lethal. And that is being used to argue in favor of this not being a big deal, so reopen everything. But to put it in perspective, in the 2017-2018 flu season, which was on the high end of deaths, we had <a href=\"https://www.cdc.gov/flu/about/burden/2017-2018.htm\">61 thousand deaths in the U.S</a>. Today, in just over 2 months, we have 75 thousand deaths in the US, and that is with all of the extraordinary measures we put in place to keep people safe. To make an argument that Covid-19 is no more dangerous than the flu is to be criminally stupid at best.</p>\r\n\r\n\r\n\r\n<h2>Didn’t They Predict More Deaths?</h2>\r\n\r\n\r\n\r\n<p>Why yes, they did. A widely used model in the US is from the Institute for Health Metrics and Evaluation (IHME), at the University of Washington. And they have issued forecasts that ranged from hundreds of thousands of deaths to around 60,000 deaths. Clearly they have no idea what they are doing, right? Not so fast. As the statistician <a href=\"https://en.wikipedia.org/wiki/All_models_are_wrong\">George Box</a> famously said, \"All models are wrong but some are useful\". In this case you have to factor in two things. One is uncertainty, of course. To forecast how many people will die, it helps to know how many people <em>have</em> died, and this has been subject to fierce debate. </p>\r\n\r\n\r\n\r\n<p>And here it gets difficult, since one argument is over what counts as a Covid-19 death. And since every one of our 50 states has their own health reporting system, there is a wide disparity. One example of this is the idea of \"excess deaths\". If a given area has a pretty regular death rate for a number of years, and suddenly that death rate jumps 500% in the midst of a pandemic, it is reasonable to suspect those \"excess deaths\" are a result of the coronavirus. But if those deaths get counted, others will argue that it is inflating the numbers, and that only a positive coronavirus serum test should count. Since each state does this differently, this leads to the odd result that the disease appears more or less lethal depending on your state of residence. And that means politicians have incentive to get the numbers they want.</p>\r\n\r\n\r\n\r\n<p>The other factor complicating things is the phenomenon known as the \"self-preventing\" prophecy. You see, the initial high estimates tended to be \"This is what will happen if you don’t take strong measures\", and of course they were very high. And we know that governments like the UK and the US looked at those predictions, and started to take some stronger measures. So after a little bit, new predictions came out that were lower <em>as a result</em> of those measures. And now we are seeing misguided efforts to get people to go out and resume normal life, and <em>as a result</em> the newest forecasts are going up again. This is a feedback loop, in other words. </p>\r\n\r\n',198,100,0,'CC-BY-SA','Health, Coronavirus',0,0,1),
(3115,'2020-07-10','Pest Control',2291,'Talk about pest control','<ul>\r\n<li><a href=\"https://smile.amazon.com/s?k=Mosquito+Dunk\" class=\"uri\">https://smile.amazon.com/s?k=Mosquito+Dunk</a>\r\n<ul>\r\n<li>essentra ic3 for outdoors (30-90days)</li>\r\n<li>bee Friendly Mavrik Perimeter for indoor/outdoor OR bad for bees 4 oz of bifen (30-90days)</li>\r\n<li>delta dust for cracks / walls etc ( 6 -8 mos nasty stuff … )</li>\r\n<li>Syngenta Advion Cockroach Gel Bait ( only when you have issues with above approach or infestation )</li>\r\n<li><a href=\"https://www.stihlusa.com/products/sprayers/backpack-sprayers/sr450/\" class=\"uri\">https://www.stihlusa.com/products/sprayers/backpack-sprayers/sr450/</a> ( blower I use for outside ~$700USD I spray neighbors for $20USD to create a perimeter around my house :P )</li>\r\n<li>use normal pump sprayer for indoors suggest using a metal tip for finer mist on baseboards etc youtube for best approach… I DO NOT spray surfaces that people touch .. some folks spray ‘safe’ indoor stuff on carpet and couches … I spray under/around/behind</li>\r\n</ul></li>\r\n<li>FULL TANK ( ~3.5 gal )GETS:\r\n<ul>\r\n<li>4 oz of bifen OR .5oz of Mavrik</li>\r\n<li>12 of essentra ic3</li>\r\n</ul></li>\r\n<li>Pump Sprayer gets:\r\n<ul>\r\n<li>1gal water</li>\r\n<li>.5oz bifen or .1 Mavrik</li>\r\n</ul></li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','Pest Control,bugs,DIY,Home Improvement',0,0,1),
(3082,'2020-05-26','RFC 5005 Part 1 – Paged and archived feeds? Who cares?',2108,'An interview with two passionate RFC 5005 fans on how to handle big Atom feeds','<p>This conversation took almost an hour, so I split it into two shows:</p>\r\n\r\n<ul>\r\n  <li>Part 1 talks mostly about the RFC itself, what it means and why.</li>\r\n  <li>Part 2 goes into personal experiences with the RFC and with syndication in general, in particular in the context of web comics. This is part 1.</li>\r\n</ul>\r\n\r\n<h2 id=\"the-why\">The why</h2>\r\n\r\n<p>When serving most RSS/Atom feed readers today, you have to choose: Do you make a complete feed with all the things you ever published, or do you make a shorter feed with just the latest entries?</p>\r\n\r\n<p>This is a trade-off with pros and cons, and it seems like a trade-off you have to make, but a solution to let your Atom feed have the cake and eat it too existed already 13 years ago, if only any of our feed readers would adhere to it: RFC 5005, <em>Feed Paging and Archiving</em></p>\r\n\r\n<h2 id=\"the-what\">The what</h2>\r\n\r\n<p><a href=\"https://tools.ietf.org/html/rfc5005\">https://tools.ietf.org/html/rfc5005</a> was published in September 2007</p>\r\n\r\n<ul>\r\n  <li>The XML namespace for RFC 5005 elements is <code>https://purl.org/syndication/history/1.0</code>, aliased as <code>fh</code> below.</li>\r\n  <li>Section 2 defines the <em>complete feed</em>: It is one document (Atom file) that contains the entire set the feed describes. The document is marked with an <code>fh:complete</code> element.</li>\r\n  <li>Section 3 defines the <em>paged feed</em>: It is a series of documents connected with Atom <code>link</code> elements with <code>rel</code> set to the <em>link relations</em> <code>first</code>, <code>last</code>, <code>previous</code> or <code>next</code>.</li>\r\n  <li>Section 4 defines the <em>archived feed</em>: It has a <em>subscription document</em> that may change at any time, and a series of <em>archive documents</em> that are expected to have stable contents and URIs. The link relations defined are <code>current</code>, <code>prev-archive</code> and <code>next-archive</code>. The semantics are clearer: <code>prev-archive</code> refers to previously published entries, and because the contents are stable you can stop when you see a URI to a document you already have. Archive documents are marked with the <code>fh:archive</code> element.</li>\r\n</ul>\r\n\r\n<h2 id=\"the-who\">The who</h2>\r\n\r\n<p>In this show I’m talking to:</p>\r\n\r\n<h3 id=\"fluffy\">fluffy</h3>\r\n\r\n<ul>\r\n  <li>Federated social web:<br />\r\n<a href=\"https://queer.party/@fluffy\">https://queer.party/@fluffy</a></li>\r\n  <li>Writes and makes things in several creative fields:<br />\r\n<a href=\"https://beesbuzz.biz/\">https://beesbuzz.biz/</a></li>\r\n  <li>Publ is like a static site generator, but dynamic. It produces RFC 5005 archive feeds, of course:<br />\r\n<a href=\"https://publ.beesbuzz.biz/\">https://publ.beesbuzz.biz/</a></li>\r\n  <li>Thoughts on ephemeral content vs content worth archiving and how they relate to protocols:<br />\r\n<a href=\"https://beesbuzz.biz/blog/5709-Keeping-it-personal\">https://beesbuzz.biz/blog/5709-Keeping-it-personal</a></li>\r\n</ul>\r\n\r\n<h3 id=\"jamey\">Jamey</h3>\r\n\r\n<ul>\r\n  <li>Federated social web:<br />\r\n<a href=\"https://toot.cat/@jamey\">https://toot.cat/@jamey</a></li>\r\n  <li>Blog:<br />\r\n<a href=\"https://minilop.net/\">https://minilop.net/</a></li>\r\n  <li>Made a prototype full-history reader that follows RFC 5005 links:<br />\r\n<a href=\"https://reader.minilop.net/\">https://reader.minilop.net/</a></li>\r\n  <li>Made a webcomic reader mostly mentioned in Part 2:<br />\r\n<a href=\"https://www.comic-rocket.com/\">https://www.comic-rocket.com/</a></li>\r\n  <li>Made a WordPress plugin implementing RFC 5005:<br />\r\n<a href=\"https://github.com/jameysharp/wp-fullhistory\">https://github.com/jameysharp/wp-fullhistory</a></li>\r\n  <li>Made an RFC 5005 archive feed synthesizer for sites with a predictable post frequency and URL structure:<br />\r\n<a href=\"https://github.com/jameysharp/predictable/\">https://github.com/jameysharp/predictable/</a><br />\r\nHosted at <a href=\"https://fh.minilop.net/\">https://fh.minilop.net/</a></li>\r\n  <li>Was on HPR 9 years ago, talking about Xorg!<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=0825\">https://hackerpublicradio.org/eps.php?id=0825</a></li>\r\n</ul>\r\n\r\n<h2 id=\"conversation-notes\">Conversation notes</h2>\r\n\r\n<ul>\r\n  <li>Google Reader was terminated 2013-07-01, all subscription data permanently gone on 2013-07-15:<br />\r\n<a href=\"https://www.google.com/reader/about/\">https://www.google.com/reader/about/</a></li>\r\n  <li>Mastodon had Atom feeds with paging, but the feeds went away when OStatus went away:<br />\r\n<a href=\"https://github.com/tootsuite/mastodon/pull/11247\">https://github.com/tootsuite/mastodon/pull/11247</a></li>\r\n  <li>HTML4 does indeed define the HTML link relations:<br />\r\n<a href=\"https://www.w3.org/TR/html4/types.html#h-6.12\">https://www.w3.org/TR/html4/types.html#h-6.12</a><br />\r\nIt has <code>prev</code> rather than the <code>previous</code> of RFC 5005, but mentions that some browsers support <code>previous</code> as an alias.</li>\r\n  <li>HTML5 also defines the HTML link relations:<br />\r\n<a href=\"https://html.spec.whatwg.org/multipage/links.html\">https://html.spec.whatwg.org/multipage/links.html</a><br />\r\nHere <code>previous</code> is a lower-case <em>must</em> for historical reasons.</li>\r\n  <li>IANA manages the Registry of Link Relations:<br />\r\n<a href=\"https://www.iana.org/assignments/link-relations/link-relations.xhtml\">https://www.iana.org/assignments/link-relations/link-relations.xhtml</a><br />\r\nIt references RFC 5005 for the Section 4 relations, but not the Section 3 ones.</li>\r\n  <li>RFC 5005 singles out its own Section 3 (<em>Paged Feeds</em>) as the best-effort, loose, discouraged model.\r\n    <ul>\r\n      <li>Section 3:\r\n        <blockquote>Therefore, clients SHOULD NOT present paged feeds as coherent or complete, or make assumptions to that effect.</blockquote>\r\n      </li>\r\n      <li>Section 4:\r\n        <blockquote>Unlike paged feeds, archived feeds enable clients to do this without losing entries.</blockquote>\r\n      </li>\r\n    </ul>\r\n  </li>\r\n  <li>I’m confused about it in the show, but the RFC is clear that an <em>archived feed</em> has one dynamic <em>subscription document</em>, which points to a chain of immutable <em>archive documents</em>.</li>\r\n  <li>Back in 2002, Aaron Swartz published his joke MIME-header-based <em>RSS 3</em>:<br />\r\n<a href=\"https://www.aaronsw.com/weblog/000574\">https://www.aaronsw.com/weblog/000574</a><br />\r\nThe cultural context at the time and the rivalry between RSS 0.91+, RSS 1.0, RSS 2.0 and Atom deserves a show of its own.</li>\r\n</ul>\r\n',311,0,0,'CC-BY-SA','rss,atom,rfc,interview,feedreader,podcatcher',0,0,1),
(3083,'2020-05-27','Mumbling while on lockdown',3021,'Two Edinburgh-based hosts have a chat from their respective houses','<h2 id=\"introduction\">Introduction</h2>\r\n<p>Two HPR hosts based in Edinburgh got together over Mumble to have a chat during the COVID-19 lockdown.</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0201.html\">MrX</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></li>\r\n</ul>\r\n<h2 id=\"apology\">Apology</h2>\r\n<p>Dave’s sound was a bit distorted in this recording. Having had recent problems using the Zoom recorder as a microphone, this time the in-built microphone was resorted to, with even worse results it turned out. See the <a href=\"#sound-processing\">Sound processing</a> section below if you want to know more.</p>\r\n<h2 id=\"notes\">Notes</h2>\r\n<p>Some of the topics we discussed</p>\r\n<ul>\r\n<li>Locations for recording. Ambient noises.</li>\r\n<li>WiFi versus ethernet. Dave has a 5-port switch on his dining table (not 8-port).</li>\r\n<li>ADSL routers</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/NSLU2\" title=\"Linksys NSLU2\">Linksys NSLU2</a> <code>\"</code><em>SLUG</em><code>\"</code></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/SheevaPlug\" title=\"SheevaPlug\">SheevaPlug</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/CUPS\" title=\"Common Unix Printing System\">CUPS</a> - printing and scanning with old non-networked printers</li>\r\n<li><em>Legacy computing experiences</em>:\r\n<ul>\r\n<li>Diablo exchangeable disks</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Line_printer\" title=\"Line printer\">Line printers</a>. Fan-fold 132 column paper</li>\r\n<li>Punched card experiences. Card sequence numbers. <a href=\"https://en.wikipedia.org/wiki/IBM_card_sorter\" title=\"Card sorter\">Card sorters</a>.</li>\r\n<li>Checking disks for warped platters</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Magnetic_tape_data_storage\" title=\"Magnetic tape data storage\">Magnetic tapes</a>; recovering from damage.</li>\r\n</ul></li>\r\n<li>8-track tapes</li>\r\n<li><a href=\"https://mocft.co.uk/\" title=\"Museum of Communication, Burntisland, Fife\">Museum of Communication, Fife</a>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Strowger_switch\" title=\"Strowger switch\">Strowger switch</a> electromechanical stepping switch telephone exchange system</li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/NSLU2\">Linksys NSLU2</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/SheevaPlug\">SheevaPlug</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/CUPS\">CUPS</a> - Common Unix Printing System</li>\r\n<li><a href=\"https://mocft.co.uk/\">Museum of Communication, Burntisland, Fife</a></li>\r\n</ul>\r\n<h3 id=\"sound-processing\">Sound processing</h3>\r\n<p><small> The recording was made in multichannel mode in anticipation of problems. The distorted channel was processed by using the <em>Clip Fix</em> effect in Audacity, which didn’t seem to change much except reduce the sound level. It was also necessary to find and remove sounds produced by the <em>push to talk</em> key presses. Removal meant replacing these sounds by silence so the two channels would not get out of step. After this the two channels were merged together and silences truncated. </small></p>\r\n<p><small> Lessons learned: don’t use a built-in microphone if you can help it! </small></p>\r\n</article>\r\n',225,0,1,'CC-BY-SA','COVID-19,lockdown',0,0,1),
(3081,'2020-05-25','Why do formal verification?',1120,'Tuula talks about testing and formal verification of software','<p>In episode <a href=\"https://hackerpublicradio.org/eps.php?id=3057\">3057</a> I talked about formal verification of software and forgot to mention why one would want to do it. This episode hopefully answers to that.</p>\r\n<p>While formal verification is powerful tool, it’s also rather cumbersome and slow to use. In some cases you’re better off with traditional ways of testing.</p>',364,0,0,'CC-BY-SA','testing, verification, mathematics',0,0,1),
(3079,'2020-05-21','Linux Inlaws S01E06 Porn and Trump',4779,'The lads discuss Audacity, KDEnlive, Blender, PwC, The Current War, Better Things, and Pamela Adlon','<p>This is Linux Inlaws, a series on free and open source software, black humour, the revolution and freedom in general (this includes ideas and software) and generally having fun.</p>\r\n<p>Linux Inlaws - a podcast about on topics around free and open source software, any associated contraband, communism / the revolution in general and whatever else fancies your tickle.</p>\r\n<p>Please note that this and other episodes may contain strong language, offensive humor and other certainly not politically correct language - you have been warned (our parents insisted on this disclaimer - happy mum?). Thus the content is not suitable for consumption in the workplace (especially when played back on a speaker in an open plan office or similar environments), any minors under the age of 35 or any pets including fluffy little killer bunnies, your trusty guide dog (unless on speed) and cute T-Rexes or other associated dinosaurs.</p>\r\n<p>Links:</p>\r\n<ul>\r\n<li>Audacity: <a href=\"https://www.audacityteam.org\" class=\"uri\">https://www.audacityteam.org</a></li>\r\n<li>Audacity OSX work-around: <a href=\"https://forum.audacityteam.org/viewtopic.php?t=105586\" class=\"uri\">https://forum.audacityteam.org/viewtopic.php?t=105586</a></li>\r\n<li>KDEnlive: <a href=\"https://kdenlive.org\" class=\"uri\">https://kdenlive.org</a></li>\r\n<li>Blender: <a href=\"https://www.blender.org\" class=\"uri\">https://www.blender.org</a></li>\r\n<li>PwC mishap: <a href=\"https://www.theregister.co.uk/2020/05/06/pwc_azure_squatting\" class=\"uri\">https://www.theregister.co.uk/2020/05/06/pwc_azure_squatting</a></li>\r\n<li>The Current War: <a href=\"https://en.wikipedia.org/wiki/The_Current_War\" class=\"uri\">https://en.wikipedia.org/wiki/The_Current_War</a></li>\r\n<li>Rick and Morty: <a href=\"https://www.adultswim.com/videos/rick-and-morty\" class=\"uri\">https://www.adultswim.com/videos/rick-and-morty</a></li>\r\n<li>Better Things: <a href=\"https://en.wikipedia.org/wiki/Better_Things_(TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Better_Things_(TV_series)</a></li>\r\n<li>Pamela Adlon: <a href=\"https://twitter.com/pamelaadlon\" class=\"uri\">https://twitter.com/pamelaadlon</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','Audacity, KDEnlive, Blender, PwC mishap, The Current War, Better Things, Pamela Adlon',0,0,1),
(3087,'2020-06-02','Phonetic alphabet',114,'The NATO phonetic alphabet recited once.','<p>The NATO phonetic alphabet. Play this a few times until it\'s ingrained in your memory banks. It\'ll change the way you communicate.</p>\r\n<p>\r\n<a href=\"https://en.wikipedia.org/wiki/NATO_phonetic_alphabet\">Wikipedia</a>\r\n</p>',78,43,0,'CC-BY-SA','nato, alphabet, communication',0,0,1),
(3088,'2020-06-03','Matchbox Restoration Part 2',307,'Second episode discussing restoring Matchbox diecast models Tony talks tools and materials needed ','<h3 id=\"matchbox-hpr-episode-2-equipment\">Matchbox HPR Episode 2 – Equipment</h3>\r\n<p>Hello all those in HPR land. This is Tony Hughes coming to you from Blackpool in the UK. I hope you are all keeping well at the current time of restrictions due to the Corona Virus.</p>\r\n<p>In this the second of my recordings talking about restoring of Matchbox and other Die-cast models, I am going to talk of the equipment you will find essential, and some other things that while at the start you could live without, as you get into the hobby you may find extremely useful.</p>\r\n<p>So the first thing you will need is a drill for drilling the posts out on the model, both to aid in dismantling them and if you plan to reassemble with the aid of small screws, to drill the hole in the post for tapping to accommodating the screws. This can be a hand held wired or cordless drill or if you have a workshop with a drill press, all the better as this can be used in several ways during the reassembly of the models. That is on my wish list as I don’t have one at the moment.</p>\r\n<p>Secondly you will need a set of modelling files for removing the burr on axles, to remove these and the plastic wheels of the base of the model to allow for repainting if required.</p>\r\n<p>Wire brushes for cleaning the remains of any paint that didn’t get removed by the paint stripper.</p>\r\n<p>Hemostat Clamp Tweezers or crocodile clips on a rod, for use to hold the model during spray painting</p>\r\n<p>Additionally, although you can start doing restorations without these, the following will become very useful to help save time and achieve better finishes of the completed restoration.</p>\r\n<p>Rotary Tool, the most well known is the Dremel but there are many other manufacturers of similar tools at more economic cost. However beware you do get what you pay for and you may find buying the cheapest you can find a false economy. My cheap Lidl rotary tool which I have had for a few years but barely used, failed after 5 months of use a few weeks ago. The chuck ring thread striped and it will no longer hold bits in the chuck. The rotary tool makes the removal of the axles a very quick job, and cleaning paint stripped castings with a wire rotary brush is a breeze.</p>\r\n<p>Another thing you may find useful is a small spray booth with an extractor fan and filter for removing over-spray from the area you are painting in if doing this indoors, particularly if your workshop is in the house. Although one YouTube modeller I follow sprays his models on the cooker with the cooker extractor fan on to achieve a similar result when painting indoors.</p>\r\n<p>Finally you may wish to put a compressor and spray gun on your wish list if you get hooked as this gives you a far better range of colours you can paint in, as you can mix your own shades. Some in this community are sticklers for trying to get an exact match to the original colour of the model, others like me at the moment are happy to use shop bought spray paint cans.</p>\r\n<p>Small table vice for holding the model. A set of helping hands for the same during painting, particularly when painting fine details.</p>\r\n<p>So that’s the tools, now the consumables:</p>\r\n<ul>\r\n<li>Gloves – Rubber washing up gloves to protect from some of the chemicals used to strip paint.</li>\r\n<li>Latex gloves for using when spray painting as you have more control while wearing these rather than the looser fitting rubber washing up gloves.</li>\r\n<li>Work gloves to use when drilling or using other tools.</li>\r\n<li>Paint face mask to prevent inhaling fumes.</li>\r\n<li>Paint stripper, I use B&amp;Q’s DIAL own brand paint stripper. I also use caustic soda for the same thing, occasionally one will work when the other failed to remove the paint, it depends on the original paint applied to the model.</li>\r\n<li>Model filler for repairing dents in the casting</li>\r\n<li>Wire wool and several grades of wet and dry sanding paper to smooth models after filler has been used.</li>\r\n<li>Super glue, useful for repairs where a quick setting medium is needed.</li>\r\n<li>Cans of spray paint to repaint the model, both primer and the final colour. You may also want a can or two of a clear coat to give that extra protection after painting or giving a gloss finish if the paint was a matt or satin finish.</li>\r\n<li>Not essential at the start but I also use a UV resin glue that cures very quickly after exposure to a UV light torch, this can be added and cured in layers if needed and remains flexible so can be useful for repairs on cables as well as my modelling.</li>\r\n<li>Finally you need your first model to start work on, these can be found in charity shops, online auction sites or maybe in your loft or garage if you have any of your childhood models kicking around needing to be re-loved.</li>\r\n</ul>\r\n<p>Later in the series I’ll talk about other things you may add to the consumables list as you get more into the hobby. So that’s it for this episode. In the next episode I’ll talk you through me dismantling a model for restoration.</p>\r\n<p>This is Tony Hughes for HPR signing off for this episode. Keep safe and I’ll be back soon.</p>\r\n',338,114,0,'CC-BY-SA','Matchbox Cars, Diecast Models, Restoration, Tools and materials.',0,0,1),
(3089,'2020-06-04','For my Entertainment',425,'How I have my file server and media center put together','<h3>Reasoning.</h3>\r\n<p>I have a file server with Slackware running on a Pi4. I wanted to make the<br />movies and TV Shows easily accessible on the TV without using a DVD or Blu ray<br />player.</p>\r\n<p>It would give my wife and I a chance to sit and watch a show without much<br />fuss. The latest show we are on is Sue Thomas F.B. Eye.<br />The main character, Sue has been deaf from about the age of 4 years.<br />She is adept at reading lips and learned to speak despite being deaf.</p>\r\n<p><a title=\"Sue Thomas F.B. Eye\" href=\"https://en.wikipedia.org/wiki/Sue_Thomas:_F.B.Eye\">https://en.wikipedia.org/wiki/Sue_Thomas:_F.B.Eye</a></p>\r\n<h3>Hardware.</h3>\r\n<p>The Pi4 is enclosed in a stripped out power supply that died on me. The fan<br />still worked, so I wired it to the Pi on the 5v line. It runs at half the<br />speed it was designed for, but that makes it run almost silent. With the<br />heatsinks added, stays about 35C when idle and 50C when encoding video.</p>\r\n<h3>Pi Networking.</h3>\r\n<p>I have 2 Pi\'s connected via ethernet. One is on 192.168.2.5 with a gateway of<br />192.168.2.6, with the other on 192.168.2.6 with a gateway of 192.168.2.5.<br />Essentially just a crossover network. The reason for this is running Kodi on Pi4<br />has choppy video, but is better at running video encoding. So I linked it to a<br />Pi3 to run Kodi via a samba share from the Pi4.</p>\r\n<p>Used OSMC for the kodi interface.<br />It was the distribution that was stable on my Pi and booted right to the Kodi<br />interface.</p>\r\n<p><a title=\"OSMC - Open Source Media Center\" href=\"https://osmc.tv/download/\">https://osmc.tv/download/</a></p>\r\n<p><code>lsblk</code> - List block devices<br /><code>dd status=progress if=osmc.img of=/devsdX</code></p>\r\n<h3>Installing Slackware.</h3>\r\n<p>Get sources<br /><a title=\"Get Slackware ARM\" href=\"https://sarpi.fatdog.eu/index.php?p=getslack\">https://sarpi.fatdog.eu/index.php?p=getslack</a></p>\r\n<pre><code>root@mynixbox:/tmp# mkdir /slackarm\r\nroot@mynixbox:/tmp# mount /dev/sdc1 /slackarm\r\nroot@mynixbox:/tmp# cd /slackarm\r\nroot@mynixbox:/slackarm#</code></pre>\r\n<p>To download Slackware ARM 14.2, type the following at the command prompt:</p>\r\n<p><code>root@mynixbox:/slackarm# rsync -Prv --delete<br />ftp.slackware.uk::slackwarearm/slackwarearm-14.2 .</code></p>\r\n<p>[FatDog says ...] DON\'T forget the period \".\" at the end of the rsync command<br />or it won\'t work!</p>\r\n<p>I made a directory called extras, under the /slackarm directory</p>\r\n<p><a title=\"Sarpi sources for Slackware current\" href=\"https://sarpi.fatdog.eu/index.php?p=rpi4getcurrent\">https://sarpi.fatdog.eu/index.php?p=rpi4getcurrent</a></p>\r\n<p><code>upgradepkg --install-new</code> (for each of these packages, after finishing the main Slackware installation.)</p>\r\n<h5>System Packages</h5>\r\n<p><code>kernel_sarpi4-5.4.40-armv7l-1_slackcurrent_13May20_sp1.txz <br />\r\nkernel-modules-sarpi4-5.4.40-armv7l-1_slackcurrent_13May20_sp1.txz <br />\r\nsarpi4-boot-firmware-armv7l-1_slackcurrent_13May20_sp1.txz\r\nsarpi4-hacks-4.0-armv7l-1_slackcurrent_13May20_sp1.txz</code></p>\r\n<h3>Partitioning example</h3>\r\n<p>After mounting the sd card listed by the lsblk command, run <br />cfdisk /dev/mmcblk0 to partition the card.</p>\r\n<pre><code>mmcblk0 179:0 0 59.5G 0 disk <br />|-mmcblk0p2 179:2 0 4G 0 part [SWAP]<br />|-mmcblk0p3 179:3 0 55.3G 0 part /<br />`-mmcblk0p1 179:1 0 150M 0 part <br />root@slack-server:mark # df -h / <br />Filesystem Size Used Avail Use% Mounted on /dev/root 55G 25G 28G 48% /\r\n\r\nmkfs.vfat /dev/mmcblk0p1<br />mkswap /dev/mmcblk0p2</code></pre>\r\n<h3>Samba snippet</h3>\r\n<pre><code>[MediaServer.Movies]<br />path = /mnt/media2/Movies/<br />writable = no<br />browsable = yes<br />read only = no<br />guest ok = no<br />public = no</code></pre>\r\n<h3>fstab snippet (Kodi)</h3>\r\n<pre><code>//192.168.2.5/MediaServer.Movies /mnt/Movies cifs noauto,users,username=mark,password=*********** 0 0</code></pre>\r\n<h3>Script to connect to the wifi network</h3>\r\n<pre><code>mark@osmc:~$ cat /usr/bin/net.sh<br><br />#!/bin/bash<br />connmanctl enable wifi<br />connmanctl connect wifi_HASH_managed_psk</code></pre>\r\n<h3>Systemd service file</h3>\r\n<pre><code>mark@osmc:~$ cat /lib/systemd/system/net.service<br /><br>[Unit]<br />Description=Wifi network auto connect on boot<br />After=http-time.service\r\n<br>[Service]<br />Type=simple<br />Restart=always<br />ExecStart=/bin/bash /usr/bin/net.sh <br />\r\n[Install]<br />WantedBy=multi-user.target</code></pre>\r\n\r\n<h3>Edit:</h3>\r\n<p>Since I sent the show notes, I had problems using the GUI way to set up<br /> a static IP address on the OSMC section. Here is a more concise way to go about\r\nit.</p>\r\n<p><a href=\"https://discourse.osmc.tv/t/solved-setting-ip-static/1439/14\">https://discourse.osmc.tv/t/solved-setting-ip-static/1439/14</a></p>\r\n<p>It seems OSMC uses connman, so in order to create an ethernet static IP:</p>\r\n<ol>\r\n<li>\r\n<p>Create a config file with your editor:</p>\r\n<pre><code>sudo vim /var/lib/connman/osmc.config\r\n</code></pre>\r\n</li>\r\n<li>\r\n<p>Add the following contents:</p>\r\n<pre><code>[global]\r\nName = OSMC\r\nDescription = OSMC static network configuration\r\n[service_osmc]\r\nType = ethernet\r\nIPv4 = 192.168.0.21/255.255.255.0/192.168.0.1\r\nNameservers = 8.8.8.8,8.8.4.4\r\n</code></pre>\r\n<p>Make sure to change the <code>IPv4</code> line to match your own network/netmask/gateway and <code>Nameservers</code> to use the ones you want.</p>\r\n</li>\r\n<li>\r\n<p>Reboot your RPi or restart the connman service:</p>\r\n<pre><code>sudo systemctl restart connman\r\n</code></pre>\r\n</li>\r\n</ol>\r\n<p>If you opt to restart connman, you&rsquo;ll loose the connection.</p>\r\n',318,0,0,'CC-BY-SA','Raspberry Pi, Kodi, OSMC, Networking, Slackware, Sarpi Project',0,0,1),
(3104,'2020-06-25','HPR AudioBook Club 19 - Tincture: An Apocalyptic Proposition',7607,'The HPR Audiobook Club reviews the audiobook Tincture by Matthew D. Jordan','<h2 id=\"in-this-episode-the-hpr_audiobookclub-discusses-tincture-an-apocalyptic-proposition-written-by-matthew-d-jordan\">In this episode, the HPR_AudioBookClub discusses <a href=\"https://scribl.com/books/PFC12/tincture-an-apocalyptic-proposition\">Tincture: An Apocalyptic Proposition</a> written by Matthew D. Jordan</h2>\r\n<hr />\r\n<h2 id=\"non-spoiler-thoughts\">Non-Spoiler Thoughts</h2>\r\n<hr />\r\n<ul>\r\n<li>If you don\'t like knowing what is going on until halfway through the book, then this book is for you.</li>\r\n<li>The book uses a very interesting type of speech that was all kinda dig.</li>\r\n<li>Some of us liked this book so much that we mainlined the <a href=\"https://scribl.com/books/PCA29/tincture-and-the-devil-pulls-six-guns\">sequel</a> immediately.</li>\r\n<li>This feels a lot like \"The Dark Tower\" series by Stephen King, and even references it.</li>\r\n<li>We talk about the use of Hebrew in the character names in the story.</li>\r\n<li>The music for the book is excellent, and matches the story very well.</li>\r\n<li>How do you make alcohol in the apocalypse?</li>\r\n<li>This also feels a lot like the Fallout games.</li>\r\n<li>The return of PLOT BULLETS!!!!</li>\r\n</ul>\r\n<h2 id=\"beverage-reviews\">Beverage Reviews</h2>\r\n<hr />\r\n<p>As usual, the HPR AudioBook Club took some time to review the beverages that each of us were drinking during the episode</p>\r\n<ul>\r\n<li><strong>Thaj:</strong> Made my own tincture of homemade iced tea and lemonade mixed. Tastes good. Thaj still can\'t grow lemons though :(</li>\r\n<li><strong>x1101:</strong> <a href=\"https://cdn.bourbonbanter.com/wp-content/uploads/2013/07/wildturkeyrarebreedbourbon.jpg?090fad\">Wild Turkey Rare Breed</a></li>\r\n<li><strong>pokey:</strong> I have <a href=\"https://www.beeradvocate.com/beer/profile/10272/39258/\">beer</a> this month it\'s pretty good. I Like it, but I don\'t love it. I also bought a few of the credit card sized tools that we talked about on our last episode. In short they are interesting, but mostly not very useful.</li>\r\n<li><strong>FiftyOneFifty:</strong> <a href=\"https://www.shiner.com/beer/prickly-pear\">Shiner Prickly Pear</a>. This unusual beer came as a complete surprise to me because I was frankly expecting a sweet peary. Instead I was confronted by a very dry, only slightly hoppy (20 IBU) beer without much flavor but a lasting aftertaste that is slightly sweet. Those Shiner boys aren\'t messing around, they make beer with cactus. I really did not enjoy the first beer but by the end of the six it is growing on me. Though it would be refreshing on a hot day, I doubt I will be buying it again.</li>\r\n</ul>\r\n<h2 id=\"things-we-talked-about\">Things We talked about</h2>\r\n<hr />\r\n<ul>\r\n<li>We talk about the connections to \"The Dark Tower\"</li>\r\n<li><a href=\"https://i44.tinypic.com/2ptqn4o.jpg\">\"Blue\" Irons (Marcs/Afulan/Rolands guns)</a></li>\r\n<li><a href=\"https://www.gunblast.com/images/SHOT2003_Day1/DSC05601.jpg\">Another big gun</a></li>\r\n<li>Is this time travel, dimension travel, or something entirely different?</li>\r\n<li>The ties to Judeo-Christian mythology is interesting to Thaj.</li>\r\n<li>Is getting the answers about the setting what you really want?</li>\r\n<li>The book doesn\'t exactly get guns right...</li>\r\n</ul>\r\n<h2 id=\"our-next-audiobook\">Our Next Audiobook</h2>\r\n<hr />\r\n<p><a href=\"https://scribl.com/books/P2A75/quarter-share\">Quarter Share</a> by Nathan Lowell</p>\r\n<h2 id=\"the-next-audiobook-club-recording\">The Next Audiobook Club Recording</h2>\r\n<hr />\r\n<p>Right now we are working through a backlog of older episode that have already been recorded. Once that ends we fully anticipate recording new episodes with listener participation.</p>\r\n<h2 id=\"further-recommendations\">Further Recommendations</h2>\r\n<hr />\r\n<ul>\r\n<li><a href=\"https://www.homewetbar.com/images/prod/flask-set-skull84585.jpg\">Skull Flash</a></li>\r\n<li>That IT life</li>\r\n<li>Automating Android</li>\r\n<li><a href=\"https://play.google.com/store/apps/details?id=com.keramidas.TitaniumBackup&amp;hl=en\">Titanium Backup</a></li>\r\n<li>What happened to Lyle\'s cookbook?</li>\r\n<li>CyanogenMod v. CyanogenOS</li>\r\n<li>Thaj predicts the name change to LineageOS</li>\r\n<li>OpenStreetMap</li>\r\n<li>Automated Cars</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Hill%2BKnowlton_Strategies\">H&amp;K</a></li>\r\n</ul>\r\n<h2 id=\"feedback\">Feedback</h2>\r\n<hr />\r\n<p>Thank you very much for listening to this episode of the HPR AudioBookClub. We had a great time recording this show, and we hope you enjoyed it as well. We also hope you\'ll consider joining us next time we record a new episode. Please leave a few words in the episode\'s comment section.</p>\r\n<p>As always; remember to visit the HPR contribution page HPR could really use your <a href=\"https://hackerpublicradio.org/help_out.php\">help</a> right now.</p>\r\n<p>Sincerely, The HPR Audiobook Club</p>\r\n<p><em>P.S. Some people really like finding mistakes. For their enjoyment, we always include a few.</em></p>\r\n<h2 id=\"our-audio\">Our Audio</h2>\r\n<hr />\r\n<p>This episode was processed using <a href=\"https://audacity.sourceforge.net/\">Audacity</a>. We\'ve been making small adjustments to our audio mix each month in order to get the best possible sound. Its been especially challenging getting all of our voices relatively level, because everyone has their own unique setup. Mumble is great for bringing us all together, and for recording, but it\'s not good at making everyone\'s voice the same volume. We\'re pretty happy with the way this month\'s show turned out, so we\'d like to share our editing process and settings with you and our future selves (who, of course, will have forgotten all this by then).</p>\r\n<p>We use the \"Truncate Silence\" effect with it\'s default settings to minimize the silence between people speaking. When used with it\'s default (or at least reasonable) settings, Truncate Silence is extremely effective and satisfying. It makes everyone sound smarter, it makes the file shorter without destroying actual content, and it makes a conversations sound as easy and fluid during playback as it was while it was recorded. It can be even more effective if you can train yourself to remain silent instead of saying \"uuuuummmm.\" Just remember to ONLY pass the file through Truncate Silence ONCE. If you pass it through a second time, or if you set it too aggressively your audio may sound sped up and choppy.</p>\r\n<p>Next we use the \"Compressor\" effect with the following settings:</p>\r\n<pre><code>Threshold: -30db\r\nNoise Floor: -50db\r\nRatio: 3:1\r\nAttack Time: 0.2sec\r\nDecay Time: 1.0 sec\r\n</code></pre>\r\n<p>\"Make-up Gain for 0db after compressing\" and \"compress based on peaks\" were both left un-checked.</p>\r\n<p>After compressing the audio we cut any pre-show and post-show chatter from the file and save them in a separate file for possible use as outtakes after the closing music.</p>\r\n<p>We adjust the Gain so that the VU meter in Audacity hovers around -12db while people are speaking, and we try to keep the peaks under -6db, and we adjust the Gain on each of the new tracks so that all volumes are similar, and more importantly comfortable. Once this is done we can \"Mix and Render\" all of our tracks into a single track for export to the .FLAC file which is uploaded to the HPR server.</p>\r\n<p>At this point we listen back to the whole file and we work on the shownotes. This is when we can cut out anything that needs to be cut, and we can also make sure that we put any links in the shownotes that were talked about during the recording of the show. We finish the shownotes before exporting the <code>.aup</code> file to .FLAC so that we can paste a copy of the shownotes into the audio file\'s metadata.</p>\r\n<p>At this point we add new, empty audio tracks into which we paste the intro, outro and possibly outtakes, and we rename each track accordingly.</p>\r\n<p>Remember to save often when using Audacity. We like to save after each of these steps. Audacity has a reputation for being \"crashy\" but if you remember save after every major transform, you will wonder how it ever got that reputation.</p>\r\n',157,53,1,'CC-BY-SA','HPR Audiobook Club, Audiobooks, SciFi, Western',0,0,1);
INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (3091,'2020-06-08','fuguserv',2628,'Fuguita OpenBSD server - building a new wifi-router / server','<ul>\r\n<li><p>Where you can go to get your copy of the fuguita OS.<br />\r\n<a href=\"https://fuguita.org\" class=\"uri\">https://fuguita.org</a></p></li>\r\n<li><p>Additional book references.<br />\r\n<a href=\"https://nostarch.com/pf3\" class=\"uri\">https://nostarch.com/pf3</a><br />\r\n<a href=\"https://nostarch.com/obenbsd2e\" class=\"uri\">https://nostarch.com/obenbsd2e</a></p></li>\r\n</ul>\r\n<p>The files I cover in the <code>/etc/</code> directory first..</p>\r\n<p><code>dhclient.conf</code></p>\r\n<pre><code>interface &quot;em0&quot; {\r\n#      ignore domain-name-servers;\r\n      reject 192.168.1.1;\r\n}\r\n#supersede domain-name-servers 127.0.0.1;</code></pre>\r\n<p><code>dhcpd.conf</code></p>\r\n<pre><code>option domain-name-servers 192.168.1.1;\r\nsubnet 192.168.1.0 netmask 255.255.255.0 {\r\n        option routers 192.168.1.1;\r\n        range 192.168.1.40 192.168.1.190;\r\n        host myserver {\r\n                fixed-address 192.168.1.2;\r\n                hardware ethernet 00:00:00:00:00:00;\r\n                }\r\n        host darkstar {\r\n                fixed-address 192.168.1.210;\r\n                hardware ethernet a0:d3:7a:42:aa:1d;\r\n                }\r\n        host zenbig   {\r\n                fixed-address  192.168.1.215;\r\n                hardware ethernet 14:d6:4d:aa:6c:c6;\r\n                }\r\n        host zenstar  {\r\n                fixed-address 192.168.1.205;\r\n                hardware ethernet 2c:6e:85:bf:72:91;\r\n                }\r\n        host mini10   {\r\n                fixed-address 192.168.1.200;\r\n                hardware ethernet 88:25:2C:B2:94:8C;\r\n                }\r\n        host nexus9   {\r\n                fixed-address 192.168.1.195;\r\n                hardware ethernet 44:91:60:9e:d2:73;\r\n                }\r\n        host diningpi {\r\n                fixed-address 192.168.1.197;\r\n                hardware ethernet b8:27:eb:09:bb:1e;\r\n                }\r\n        host think330 {\r\n                fixed-address 192.168.1.193;\r\n                hardware ethernet 50:5B:C2:E5:CA:F5;\r\n                }\r\n        host largedongle1 {\r\n                fixed-address 192.168.1.211;\r\n                hardware ethernet 00:C0:CA:82:EC:30;\r\n                }\r\n        host largedongle2 {\r\n                fixed-address 192.168.1.212;\r\n                hardware ethernet 00:C0:CA:82:E6:29;\r\n                }</code></pre>\r\n<p><code>dhcpd.interfaces</code></p>\r\n<pre><code>athn0</code></pre>\r\n<p><code>hostname.athn0</code></p>\r\n<pre><code>inet            192.168.1.5    255.255.255.0    192.168.1.255\r\nmedia           autoselect\r\nmediaopt        hostap\r\nchan            4\r\nwpa\r\nnwid            fuguserv\r\nwpakey          1234567890ABCD#\r\nup</code></pre>\r\n<p><code>hostname.bridge0</code></p>\r\n<pre><code>add vether0\r\nadd em0\r\nadd athn0\r\nblocknonip vether0\r\nblocknonip em0\r\nblocknonip athn0\r\nup</code></pre>\r\n<p><code>hostname.em0</code></p>\r\n<pre><code>dhcp\r\ninet6 autoconf</code></pre>\r\n<p><code>hostname.vether0</code></p>\r\n<pre><code>inet 192.168.1.1 255.255.255.0 192.168.1.255</code></pre>\r\n<p><code>pf.conf</code></p>\r\n<pre><code>nt_if=&quot;{ vether0 em0 athn0 }&quot;\r\nbroken=&quot;224.0.0.22 127.0.0.0/8 192.168.0.0/16 172.16.0.0/12\r\n        10.0.0.0/8 169.254.0.0/16 192.0.2.0/24\r\n        198.51.100.0/24, 203.0.113.0/24,\r\n        169.254.0.0/16 0.0.0.0/8 240.0.0.0/4 255.255.255.255/32&quot;\r\ntable &lt;bruteforce&gt; persist\r\nset block-policy drop\r\nset loginterface egress\r\nset skip on lo0\r\nmatch in all scrub (no-df random-id max-mss 1440)\r\nmatch out on egress inet from !(egress:network) to any nat-to (egress:0)\r\nantispoof quick for (egress)\r\nblock quick from &lt;bruteforce&gt;\r\nblock in quick on egress from { $broken no-route urpf-failed } to any\r\nblock in quick inet6 all\r\nblock return out quick inet6 all\r\n#block return out quick log on egress proto { tcp udp } from any to any port 53\r\nblock return out quick log on egress from any to { no-route $broken }\r\nblock in all\r\npass out quick inet keep state\r\npass in on $int_if inet\r\npass in on egress inet proto tcp from any to (egress) port 22 keep state (max-src-conn 40, max-src-conn-rate 40/172800 ,overload &lt;bruteforce&gt; flush global)\r\npass in quick on $int_if proto udp from any to ! 192.168.1.1 port 123 rdr-to 192.168.1.1</code></pre>\r\n<p><code>sysctl.conf</code></p>\r\n<pre><code>net.inet.ip.forwarding=1\r\nnet.inet.ip.redirect=0\r\nkern.bufcachepercent=50\r\nnet.inet.ip.ifq.maxlen=1024\r\nnet.inet.tcp.mssdflt=1440\r\nmachdep.allowaperture=2 # See xf86(4)\r\nmachdep.lidaction=0\r\nnet.inet6.ip6.forwarding=0\r\nnet.inet6.ip6.mforwarding=0\r\nhw.smt=1</code></pre>\r\n<p><code>rc.conf.local</code></p>\r\n<pre><code>check_quotas=NO\r\ndhcpd_flags=&quot;vether0&quot;\r\nntpd_flags=&quot;&quot;\r\n#pkg_scripts=dnscrypt_proxy -config /etc/dnscrypt-proxy.toml\r\nsndiod_flags=NO\r\nunbound_flags=&quot;&quot;</code></pre>\r\n<p><code>/var/unbound/etc/unbound.conf</code></p>\r\n<pre><code># $OpenBSD: unbound.conf,v 1.14 2018/12/16 20:41:30 tim Exp $\r\nserver:\r\n    username: _unbound\r\n    directory: /var/unbound\r\n    chroot: /var/unbound\r\n\r\n    interface: 192.168.1.1\r\n    interface: 127.0.0.1\r\n    do-ip6: no\r\n\r\n    access-control: 127.0.0.0/8 allow\r\n    access-control: 192.168.1.0/24 allow\r\n    hide-identity: yes\r\n    hide-version: yes\r\n    do-not-query-localhost: no\r\n\r\n    tcp-upstream: yes\r\n\r\n    private-address: 10.0.0.0/8\r\n    private-address: 172.16.0.0/12\r\n    private-address: 192.168.0.0/16\r\n\r\nremote-control:\r\n        control-enable: yes\r\n        control-use-cert: no\r\n        control-interface: /var/run/unbound.sock\r\n\r\nforward-zone:\r\n    name: &quot;.&quot;\r\n    forward-addr: 127.0.0.1</code></pre>\r\n',377,0,0,'CC-BY-SA','FuguIta, OpenBSD, Wifi-Routers, Servers, Portable, Memory_resident',0,0,1),
(3092,'2020-06-09','Pens, pencils, paper and ink - 2',1256,'Looking at more writing equipment','<h2 id=\"introduction\">Introduction</h2>\n<p>This is the second in a short series about pens, pencils, writing paper and ink. In this episode we will look at three more fountain pens (two lower-priced and one around £50), a mechanical pencil and some paper.</p>\n<h2 id=\"long-notes\">Long notes</h2>\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"hpr3092_full_shownotes.html\">viewed here</a>.</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li>Pen brands:\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Kaweco\">Kaweco</a> Wikipedia page</li>\n<li><a href=\"https://www.mrpen.co.uk/contents/en-uk/d184.html\">Italix</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Uni-ball\">uni-ball</a> Wikipedia page (maker of Kuru Toga)</li>\n</ul></li>\n<li>Reviews:\n<ul>\n<li>The Well Appointed Desk: <a href=\"https://www.wellappointeddesk.com/2020/02/pen-review-platinum-prefounte-fountain-pen/\">Platinum Prefounte</a></li>\n</ul></li>\n<li>Calligraphy Skills\n<ul>\n<li><a href=\"https://www.calligraphy-skills.com/italic-calligraphy.html\">Italic calligraphy</a></li>\n<li><a href=\"https://www.calligraphy-skills.com/italic-lettering.html\">Italic lettering</a></li>\n</ul></li>\n<li>Paper brands:\n<ul>\n<li><a href=\"https://www.bloc-rhodia.com/index-en.html\">Rhodia</a></li>\n</ul></li>\n<li>HPR links:\n<ul>\n<li><a href=\"https://hackerpublicradio.org/eps/hpr1941\">hpr1941 :: What’s in my case</a></li>\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2061\">hpr2061 :: Handwriting</a></li>\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2273\">hpr2273 :: Fountain Pens</a></li>\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3063\">hpr3063 :: Pens, pencils, paper and ink - 1</a></li>\n</ul></li>\n</ul>\n',225,112,1,'CC-BY-SA','fountain pen,mechanical pencil,paper',0,0,1),
(3093,'2020-06-10','Response to Linux Inlaws S01E06 (hpr 3079) on NeXT',430,'Response to Linux Inlaws S01E06 (hpr 3079) regarding NeXT, NeXTSTEP, and what would become Mac OS X.','<p>Some clarification on NeXT as I ramble on about all things NeXT, what would become \"Mac OS X\" (now \"macOS\"), and a harbinger of what was to come.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/NeXTSTEP\" class=\"uri\">https://en.wikipedia.org/wiki/NeXTSTEP</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/NeXT_Computer#Legacy\" class=\"uri\">https://en.wikipedia.org/wiki/NeXT_Computer#Legacy</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/OpenStep\" class=\"uri\">https://en.wikipedia.org/wiki/OpenStep</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Rhapsody_(operating_system)\" class=\"uri\">https://en.wikipedia.org/wiki/Rhapsody_(operating_system)</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Darwin_(operating_system)\" class=\"uri\">https://en.wikipedia.org/wiki/Darwin_(operating_system)</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/A/UX\" class=\"uri\">https://en.wikipedia.org/wiki/A/UX</a></li>\r\n</ul>',152,0,0,'CC-BY-SA','NeXT, NeXTSTEP, OPENSTEP, Rhapsody, Darwin, MacOSX, OSX, macOS, AUX',0,0,1),
(3098,'2020-06-17','Matchbox Restoration Part 3',191,'In this the 3rd in the series Tony discusses dismantling the castings of the MK10 Jaguar','<h2 id=\"hpr-matchbox-show-episode-3\">HPR Matchbox show Episode 3</h2>\r\n<p>Good day to all in HPR land, this is Tony Hughes coming to you again from Blackpool in the UK. To recap this is the 3rd in a series of shows about my hobby of restoring Matchbox and other Die-cast models. In the first 2 shows I introduced the concept and discussed the tools and other equipment you would need to start this hobby.</p>\r\n<p>In this episode I have decided to return to where it all started with the Matchbox No28 the Jaguar Mk10. Please refer to the show notes for the pictures of the process as we move along. You can see in the first picture the 4 castings used in this process.</p>\r\n<p>Picture 000:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3098/hpr3098/img_000.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3098/hpr3098/img_000_thumbnail.jpg\" alt=\"Picture 000\" /></a></p>\r\n<p>This is a lovely little casting and is a nice introduction to the techniques used in the process. Also I have several of these that I can strip down to their components and that should give us enough quality parts to reassemble at least one good example, hopefully one or two more.</p>\r\n<p>The next picture shows you the base of the model and that there is a mushroomed post that needs to be drilled out at the rear of the model, the front of the base is retained by a tab, which once the post is removed and the base released, this can be slid forward to free the tab.</p>\r\n<p>Picture 001:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3098/hpr3098/img_001.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3098/hpr3098/img_001_thumbnail.jpg\" alt=\"Picture 001\" /></a></p>\r\n<p>I drilled out this post. The post is drilled out with a 4mm drill bit, and as you can see in the next picture on this particular casting I was a little over zealous and damaged the base a little, although as it is the base it’s not a major issue.</p>\r\n<p>Picture 003:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3098/hpr3098/img_003.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3098/hpr3098/img_003_thumbnail.jpg\" alt=\"Picture 003\" /></a></p>\r\n<p>I then released the base by prying it off the remainder of the post with a small flat bladed screwdriver to lever it of the body. This now allowed the removal of the inner plastic forming the seating and holding a small plastic suspension piece. In the next picture you can see the casting without any internals but with the plastic window unit still held in place with another shallow mushroom post.</p>\r\n<p>Picture 005:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3098/hpr3098/img_005.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3098/hpr3098/img_005_thumbnail.jpg\" alt=\"Picture 005\" /></a></p>\r\n<p>Being very careful not to be too aggressive drilling this mushroom holding the windscreen unit, it is removed, again with a 4mm drill bit, so that a little pressure from a flat blade slid between the roof and the glassing unit will allow it to pop out without it breaking. It usually takes several attempts of a little drilling, trying with the flat blade, then if not coming free, a little more drilling until it pops off.</p>\r\n<p>Picture 006:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3098/hpr3098/img_006.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3098/hpr3098/img_006_thumbnail.jpg\" alt=\"Picture 006\" /></a></p>\r\n<p>Picture 006x:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3098/hpr3098/img_006x.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3098/hpr3098/img_006x_thumbnail.jpg\" alt=\"Picture 006x\" /></a></p>\r\n<p>This process was repeated with the other 3 castings and the result is shown in the next picture</p>\r\n<p>Picture 008:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3098/hpr3098/img_008.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3098/hpr3098/img_008_thumbnail.jpg\" alt=\"Picture 008\" /></a></p>\r\n<p>As you can see the casting on the upper left of the image still has the bonnet (Hood) attached, this would not come off without me risking damaging it, so I was hoping that once the paint is removed that this will help it to come free. You will have to wait for the next instalment to find out what happened next. I’ve got to keep you wanting some more of this rambling tale.</p>\r\n<p>So until next time this is Tony Hughes saying goodbye to all those in HPR land. Keep safe until the next instalment.</p>\r\n',338,114,0,'CC-BY-SA','Matchbox Cars, Diecast Models, Restoration, dismantling the model',0,0,1),
(3094,'2020-06-11','Holy crud! I have a kinesis advantage 2 keyboard!',275,'Sigflup does a review of the Kinesis Advantage 2 keyboard','<h3>Kinesis Advantage 2 Keyboard</h3>\r\n\r\n<p><img src=\"https://theadesilva.com/keyboard.jpg\" alt=\"Kinesis Advantage 2 Keyboard\"/></p>',115,0,0,'CC-BY-SA','keyboards',0,0,1),
(3097,'2020-06-16','Linux Inlaws S01E07 The Big Blue Button',3895,'The lads talk to Fred Dixon, product manager for BigBlueButton.','<p>In this episode our two chaps welcome Fred Dixon, product manager for BigBlueButton, on the show to talk about the project, its history and if it will finally run on Fedora and CentOS.</p>\r\n<p>Surrounding musings include how to hack the GDM login screen, why Martin is <i>not</i> behind the recent Easyjet hack and poxes as well as anti-poxes.</p>\r\n<h2>Shownotes:</h2>\r\n<ul>\r\n<li>BigBlueButton: <a href=\"https://bigbluebutton.org\" target=_blank>https://bigbluebutton.org</a></li>\r\n<li><a href=\"https://www.theregister.co.uk/2020/05/19/easyjet_hack_9million_2000_credit_cards\" target=_blank>The Easyjet hack</a></li>\r\n<li>How to hack the GDM login screen in Focal Fossa: <a href=\"https://github.com/PRATAP-KUMAR/focal_gdm3_login_theme_complete_hack\" target=_blank>https://github.com/PRATAP-KUMAR/focal_gdm3_login_theme_complete_hack</a></li>\r\n<li>The Ubuntu logo for the GDM3 login screen for Focal Fossa and previous Ubuntu versions can be found at: /usr/share/plymouth/ubuntu-logo.png. Simply truncate this to zero bytes and the logo will be gone from the login screen</li>\r\n<li>Virgy\'s open source website: <a href=\"https://www.websiteplanet.com/blog/what-is-open-source-software\" target=_blank>https://www.websiteplanet.com/blog/what-is-open-source-software</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','BigBlueButton, GDM, Focal Fossa, Ubuntu',0,0,1),
(3371,'2021-07-05','HPR Community News for June 2021',3988,'Dave and Ken talk about shows released and comments posted in June 2021','<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=3347\" target=\"_blank\">3347</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-06-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3347\" target=\"_blank\">Ethical Analysis of Renewable Energy and Conservation</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=3348\" target=\"_blank\">3348</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-06-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3348\" target=\"_blank\">Feedback on the Article by hedorah about HPR</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=3349\" target=\"_blank\">3349</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-06-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3349\" target=\"_blank\">Linux Inlaws S01E31: Interview with Paul Ramsey FOSS aficionado and entrepreneur</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=3350\" target=\"_blank\">3350</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-06-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3350\" target=\"_blank\">Blending Layers</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=3351\" target=\"_blank\">3351</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-06-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3351\" target=\"_blank\">HPR Community News for May 2021</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3352\" target=\"_blank\">3352</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-06-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3352\" target=\"_blank\">HPR 2020 - 2021 New Years Eve Show Episode 4</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=3353\" target=\"_blank\">3353</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-06-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3353\" target=\"_blank\">My terminal journey, part 01.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3354\" target=\"_blank\">3354</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-06-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3354\" target=\"_blank\">My Devices</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=3355\" target=\"_blank\">3355</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-06-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3355\" target=\"_blank\">Tiki Hell</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=3356\" target=\"_blank\">3356</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-06-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3356\" target=\"_blank\">HPR 2020 - 2021 New Years Eve Show Episode 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=3357\" target=\"_blank\">3357</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-06-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3357\" target=\"_blank\">My terminal journey, part 02.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3358\" target=\"_blank\">3358</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-06-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3358\" target=\"_blank\">BlastEm! A wicked awesome Sega Genesis/Megadrive emulator</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=3359\" target=\"_blank\">3359</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-06-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3359\" target=\"_blank\">Linux Inlaws S01E32: Politicians and artificial intelligence part 3</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=3360\" target=\"_blank\">3360</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-06-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3360\" target=\"_blank\">Android Malware Alert</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=3361\" target=\"_blank\">3361</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-06-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3361\" target=\"_blank\">HPR 2020 - 2021 New Years Eve Show Episode 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=3362\" target=\"_blank\">3362</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-06-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3362\" target=\"_blank\">Spam Bot Honey Pot: Eating your own dog food</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3363\" target=\"_blank\">3363</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-06-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3363\" target=\"_blank\">Electronics podcasts I listen to</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=3364\" target=\"_blank\">3364</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-06-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3364\" target=\"_blank\">Part One - all the covid crap</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0315.html\" target=\"_blank\">Clinton Roy</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3365\" target=\"_blank\">3365</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-06-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3365\" target=\"_blank\">Diablo 2 Portable and Modding</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=3366\" target=\"_blank\">3366</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-06-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3366\" target=\"_blank\">HPR 2020 - 2021 New Years Eve Show Episode 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=3367\" target=\"_blank\">3367</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-06-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3367\" target=\"_blank\">Making books with linux - part 1</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=3368\" target=\"_blank\">3368</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-06-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3368\" target=\"_blank\">Infosec Podcasts Part 4 - Social Engineering Podcasts</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</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 23 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=3263#comments\" target=\"_blank\">hpr3263</a></strong>\n(2021-02-03) \"<em>My Beginnings in Tech</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0390.html\" target=\"_blank\">o9l</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3263#1\" target=\"_blank\">Comment 1</a>:\narcher72 on 2021-06-03:\n\"Welcome to HPR\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3329#comments\" target=\"_blank\">hpr3329</a></strong>\n(2021-05-06) \"<em>Linux Inlaws S01E29: The (one and only) Linux Kernel Contributor Panel</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3329#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2021-06-05:\n\"Who ?\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3342#comments\" target=\"_blank\">hpr3342</a></strong>\n(2021-05-25) \"<em>HPR 2020 - 2021 New Years Eve Show Episode 2</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=3342#2\" target=\"_blank\">Comment 2</a>:\ncrvs on 2021-06-24:\n\"thank you for the reminder\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3343#comments\" target=\"_blank\">hpr3343</a></strong>\n(2021-05-26) \"<em>The Forth programming language</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>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3343#1\" target=\"_blank\">Comment 1</a>:\ncagey on 2021-06-02:\n\"My experience with Forth (at SAO)\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3343#2\" target=\"_blank\">Comment 2</a>:\nDave Morriss on 2021-06-06:\n\"What does SAO stand for?\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3345#comments\" target=\"_blank\">hpr3345</a></strong>\n(2021-05-28) \"<em>Audio for Podcasting: Episode 2 - Equalization</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0270.html\" target=\"_blank\">Thaj Sara</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3345#1\" target=\"_blank\">Comment 1</a>:\narcher72 on 2021-06-03:\n\"Another great episode.\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3345#2\" target=\"_blank\">Comment 2</a>:\nTrey on 2021-06-08:\n\"Thank you.\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 16 comments on 7 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3348#comments\" target=\"_blank\">hpr3348</a></strong>\n(2021-06-02) \"<em>Feedback on the Article by hedorah about HPR</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=3348#1\" target=\"_blank\">Comment 1</a>:\nHawkinsTheWizard on 2021-06-02:\n\"hpr3348 feedback\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3348#2\" target=\"_blank\">Comment 2</a>:\nDave Morriss on 2021-06-02:\n\"I was trying to remember \"This American Life\"\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3352#comments\" target=\"_blank\">hpr3352</a></strong>\n(2021-06-08) \"<em>HPR 2020 - 2021 New Years Eve Show Episode 4</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=3352#1\" target=\"_blank\">Comment 1</a>:\nHonkeymagoo on 2021-05-11:\n\"Thanking\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3353#comments\" target=\"_blank\">hpr3353</a></strong>\n(2021-06-09) \"<em>My terminal journey, part 01.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3353#1\" target=\"_blank\">Comment 1</a>:\nFXB on 2021-06-09:\n\"Good listening.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3353#2\" target=\"_blank\">Comment 2</a>:\njezra on 2021-06-09:\n\"Hey, that\'s how I learned!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3353#3\" target=\"_blank\">Comment 3</a>:\nTrey on 2021-06-11:\n\"Well done!  Keep up the great work!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3353#4\" target=\"_blank\">Comment 4</a>:\narcher72 on 2021-06-11:\n\"Good to hear this one\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3353#5\" target=\"_blank\">Comment 5</a>:\nSome Guy On The Internet on 2021-06-16:\n\"Giving Thanks.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3353#6\" target=\"_blank\">Comment 6</a>:\nsesamemucho on 2021-06-19:\n\"Nice\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3353#7\" target=\"_blank\">Comment 7</a>:\nfrank on 2021-06-30:\n\"Comments and feedback on your show (part 1)\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3353#8\" target=\"_blank\">Comment 8</a>:\nfrank on 2021-06-30:\n\"Comments and feedback on your show (part 2)\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3356#comments\" target=\"_blank\">hpr3356</a></strong>\n(2021-06-14) \"<em>HPR 2020 - 2021 New Years Eve Show Episode 5</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=3356#1\" target=\"_blank\">Comment 1</a>:\nHonkeymagoo on 2021-05-11:\n\"Thanking\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3356#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2021-06-14:\n\"Nice show, but too long\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3357#comments\" target=\"_blank\">hpr3357</a></strong>\n(2021-06-15) \"<em>My terminal journey, part 02.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3357#1\" target=\"_blank\">Comment 1</a>:\nbjb on 2021-06-29:\n\"hpr3357 :: My terminal journey, part 02. - feedback/comment\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3361#comments\" target=\"_blank\">hpr3361</a></strong>\n(2021-06-21) \"<em>HPR 2020 - 2021 New Years Eve Show Episode 6</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=3361#1\" target=\"_blank\">Comment 1</a>:\nHonkeymagoo on 2021-05-11:\n\"Thanking\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3366#comments\" target=\"_blank\">hpr3366</a></strong>\n(2021-06-28) \"<em>HPR 2020 - 2021 New Years Eve Show Episode 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=3366#1\" target=\"_blank\">Comment 1</a>:\nHonkeymagoo on 2021-05-11:\n\"Thanking\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-June/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-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=\"condolences\">Condolences</h3>\n<p>Our deepest condolences to Randy Noseworthy on the loss of his wife.</p>\n<h3 id=\"older-hpr-shows-on-archive.org\">Older HPR shows on archive.org</h3>\n<p>This month 100 additional shows in the range 1-870 have been uploaded.</p>\n<p>Since we don\'t want to upload shows without summaries or tags the <em>old shows</em> and <em>tag and summary</em> projects are now tied together. So we will be all the more welcoming of tag and summary updates submitted as described on the <a href=\"https://hackerpublicradio.org/report_missing_tags.php\">summary page</a>.</p>\n<h3 id=\"tags-and-summaries\">Tags and Summaries</h3>\n<p>Thanks to the following contributors for sending in updates in the past month:<br />\n<b><a href=\"https://hackerpublicradio.org/correspondents/0318.html\">Archer72</a>, <a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></b></p>\n<p>Over the period tags and/or summaries have been added to 82 shows which were without them.</p>\n<p>There are now 295 shows which need a summary and/or tags.</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),
(3391,'2021-08-02','HPR Community News for July 2021',4611,'HPR Volunteers talk about shows released and comments posted in July 2021','<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=3369\" target=\"_blank\">3369</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-07-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3369\" target=\"_blank\">Linux Inlaws S01E33: The Return of the Rust</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=3370\" target=\"_blank\">3370</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-07-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3370\" target=\"_blank\">More Free Images?</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=3371\" target=\"_blank\">3371</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-07-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3371\" target=\"_blank\">HPR Community News for June 2021</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3372\" target=\"_blank\">3372</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-07-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3372\" target=\"_blank\">HPR 2020 - 2021 New Years Eve Show Episode 8</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=3373\" target=\"_blank\">3373</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-07-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3373\" target=\"_blank\">HPR RPG Club reviews Starfinder</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=3374\" target=\"_blank\">3374</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-07-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3374\" target=\"_blank\">Why I love the MacBook Mid 2010</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0297.html\" target=\"_blank\">swift110</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3375\" target=\"_blank\">3375</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-07-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3375\" target=\"_blank\">Car ODB2 Fun and Fail</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=3376\" target=\"_blank\">3376</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-07-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3376\" target=\"_blank\">Making books with Linux - part 2</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=3377\" target=\"_blank\">3377</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-07-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3377\" target=\"_blank\">Chromebook support and more</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=3378\" target=\"_blank\">3378</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-07-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3378\" target=\"_blank\">A bit of my experience with Starlink internet service</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=3379\" target=\"_blank\">3379</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-07-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3379\" target=\"_blank\">Linux Inlaws S01E34: The one with the intelligence</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=3380\" target=\"_blank\">3380</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-07-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3380\" target=\"_blank\">Building a Better Goodreads with ActivityPub</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=3381\" target=\"_blank\">3381</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-07-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3381\" target=\"_blank\">Learning to skate</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=3382\" target=\"_blank\">3382</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-07-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3382\" target=\"_blank\">How I fixed a fault on my car for free thanks to YouTube</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=3383\" target=\"_blank\">3383</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-07-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3383\" target=\"_blank\">My gEeeky Experiment - Part 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0152.html\" target=\"_blank\">Claudio Miranda</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3384\" target=\"_blank\">3384</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-07-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3384\" target=\"_blank\">Page Numbers in EPUB eBook Files</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=3385\" target=\"_blank\">3385</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-07-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3385\" target=\"_blank\">DIY Cat feeder!</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=3386\" target=\"_blank\">3386</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-07-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3386\" target=\"_blank\">What\'s for dinner?</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=3387\" target=\"_blank\">3387</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-07-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3387\" target=\"_blank\">Infosec Podcasts Part 5  Grab bag</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3388\" target=\"_blank\">3388</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-07-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3388\" target=\"_blank\">Linux Inlaws S01E35: The Free Software Foundation Europe</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=3389\" target=\"_blank\">3389</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-07-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3389\" target=\"_blank\">Tales of a Tagger</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=3390\" target=\"_blank\">3390</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-07-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3390\" target=\"_blank\">Intro to DOS Series</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 18 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 5 comments on\n3 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3357#comments\" target=\"_blank\">hpr3357</a></strong>\n(2021-06-15) \"<em>My terminal journey, part 02.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3357#2\" target=\"_blank\">Comment 2</a>:\nSome Guy On The Internet on 2021-07-08:\n\"apt-mark hold\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3367#comments\" target=\"_blank\">hpr3367</a></strong>\n(2021-06-29) \"<em>Making books with linux - part 1</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0268.html\" target=\"_blank\">Andrew Conway</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3367#1\" target=\"_blank\">Comment 1</a>:\nJon Kulp on 2021-07-11:\n\"Page numbers\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3367#2\" target=\"_blank\">Comment 2</a>:\ndangerseeker on 2021-07-16:\n\"Fonts and LaTeX\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3368#comments\" target=\"_blank\">hpr3368</a></strong>\n(2021-06-30) \"<em>Infosec Podcasts Part 4 - Social Engineering Podcasts</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3368#1\" target=\"_blank\">Comment 1</a>:\nPorkchop on 2021-07-01:\n\"recommendation\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3368#2\" target=\"_blank\">Comment 2</a>:\nTrey on 2021-07-05:\n\"Thanks for the feedback, Porkchop.\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 13 comments on 8 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3369#comments\" target=\"_blank\">hpr3369</a></strong>\n(2021-07-01) \"<em>Linux Inlaws S01E33: The Return of the Rust</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=3369#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2021-07-01:\n\"I loved the show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3371#comments\" target=\"_blank\">hpr3371</a></strong>\n(2021-07-05) \"<em>HPR Community News for June 2021</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3371#1\" target=\"_blank\">Comment 1</a>:\nfrank on 2021-07-05:\n\"A comment on your comment about my comment\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3371#2\" target=\"_blank\">Comment 2</a>:\nTrey on 2021-07-05:\n\"Congrats on joining the Ham community!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3371#3\" target=\"_blank\">Comment 3</a>:\nKen Fallon on 2021-07-06:\n\"Errors in comments\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3371#4\" target=\"_blank\">Comment 4</a>:\nMr. Young on 2021-07-06:\n\"Ranger previously on HPR\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3372#comments\" target=\"_blank\">hpr3372</a></strong>\n(2021-07-06) \"<em>HPR 2020 - 2021 New Years Eve Show Episode 8</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=3372#1\" target=\"_blank\">Comment 1</a>:\nHonkeymagoo on 2021-05-11:\n\"Thanking\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3377#comments\" target=\"_blank\">hpr3377</a></strong>\n(2021-07-13) \"<em>Chromebook support and more</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=3377#1\" target=\"_blank\">Comment 1</a>:\nClinton Roy on 2021-07-13:\n\"Well,\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3381#comments\" target=\"_blank\">hpr3381</a></strong>\n(2021-07-19) \"<em>Learning to skate</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=3381#1\" target=\"_blank\">Comment 1</a>:\nJon Kulp on 2021-07-21:\n\"Consultant available\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3381#2\" target=\"_blank\">Comment 2</a>:\nJon Kulp on 2021-07-21:\n\"Skate Shoes\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3383#comments\" target=\"_blank\">hpr3383</a></strong>\n(2021-07-21) \"<em>My gEeeky Experiment - Part 1</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0152.html\" target=\"_blank\">Claudio Miranda</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3383#1\" target=\"_blank\">Comment 1</a>:\nZen_floater2 on 2021-07-22:\n\"Why I love OpenBSD\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3388#comments\" target=\"_blank\">hpr3388</a></strong>\n(2021-07-28) \"<em>Linux Inlaws S01E35: The Free Software Foundation Europe</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=3388#1\" target=\"_blank\">Comment 1</a>:\nBrian-in-ohio on 2021-07-30:\n\"free speech\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3390#comments\" target=\"_blank\">hpr3390</a></strong>\n(2021-07-30) \"<em>Intro to DOS Series</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=3390#1\" target=\"_blank\">Comment 1</a>:\nBrian-in-ohio on 2021-07-30:\n\"great show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3390#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2021-07-30:\n\"You are most welcome\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-July/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-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=\"older-hpr-shows-on-archive.org\">Older HPR shows on archive.org</h3>\n<p>This month 35 additional shows in the range 1-870 have been uploaded.</p>\n<p>Since we don\'t want to upload shows without summaries or tags the <em>old shows</em> and <em>tag and summary</em> projects are now tied together. So we will be all the more welcoming of tag and summary updates submitted as described on the <a href=\"https://hackerpublicradio.org/report_missing_tags.php\">summary page</a>.</p>\n<h3 id=\"tags-and-summaries\">Tags and Summaries</h3>\n<p>Thanks to the following contributors for sending in updates in the past month:<br />\n<b><a href=\"https://hackerpublicradio.org/correspondents/0318.html\">Archer72</a>, <a href=\"https://hackerpublicradio.org/correspondents/0293.html\">Rho`n</a>, <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 71 shows which were without them.</p>\n<p>There are currently 222 shows which need a summary and/or tags.</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),
(3114,'2020-07-09','Using the Akaso EK7000 Pro',666,'Some tips on using the camera based on my limited experience on one trip.','<p>I found this camera to be useful, but it has a few quirks. Here is what I learned about using it. I took it on a cruise in the Caribbean Sea in February 2020, just before the coronavirus hit everything.</p>\r\n<ul>\r\n<li><a href=\"https://www.palain.com/photography/using-the-akaso-ek7000-pro/\" class=\"uri\">https://www.palain.com/photography/using-the-akaso-ek7000-pro/</a></li>\r\n</ul>\r\n',198,0,0,'CC-BY-SA','Camera, Waterproof Camera, Action camera',0,0,1),
(3125,'2020-07-24','GIMP: The Canvas',785,'The Canvas is the first key concept in learning Gimp','<p>The Canvas is the main stage on which all of the action takes place, and it controls some aspects of the final image. When you get ready to export, you only export what is on the canvas.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/XCF_(file_format)\" class=\"uri\">https://en.wikipedia.org/wiki/XCF_(file_format)</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/the-canvas/\" class=\"uri\">https://www.ahuka.com/gimp/the-canvas/</a></li>\r\n</ul>',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, canvas, layer',0,0,1),
(3110,'2020-07-03','Finding an Android phone to run LineageOS',2277,'Join Ken on this 6 year long journey of success but also failure','<h1 id=\"finding-an-android-phone-to-run-lineageos\">Finding an Android phone to run LineageOS</h1>\r\n<p>Affordable phone that support school apps, and allow firewall.</p>\r\n<h2 id=\"tldr\">TL;DR</h2>\r\n<p>Don\'t, unless you are willing to loose the money you are paying.</p>\r\n<h2 id=\"requirements\">Requirements</h2>\r\n<ul>\r\n<li>Supported for 3-5 years.</li>\r\n<li>Apps = Android = LineageOS</li>\r\n<li>Firewall = AFWall+ = Unlocked + Root</li>\r\n<li>Affordable</li>\r\n</ul>\r\n<h3 id=\"support\">Support</h3>\r\n<p>Getting a brand new phone means that Developers have not had time to release code.</p>\r\n<p>Older phones are no longer available for purchase, and actually become more expensive.</p>\r\n<p>Too old a version and apps are no longer supported.</p>\r\n<h2 id=\"finding-a-phone-that-can-be-unlocked\">Finding a phone that can be unlocked</h2>\r\n<p>I use a site called <a href=\"https://tweakers.net/smartphones/vergelijken/\">Tweakers.net</a> which allows you to do parameter search.</p>\r\n<p>Set the maximum price you are willing to pay.</p>\r\n<p>The current version of Android is 10 so select only those. You want your phone to be supported for as long as possible.</p>\r\n<p>Make any other selections that you think are critical, like memory, processor etc but be prepared to adjust this later.</p>\r\n<p>In my case I selected a minimum of 4G Ram and 64G Storage the first time.</p>\r\n<p>Sort by price low to high, and loop through, finding what support there is for <a href=\"https://twrp.me/Devices/\">TWRP</a>. That will tell you how open the phone is. If the Manufacturer support (the spirit of) unlocking, then remove them from the list.</p>\r\n<ul>\r\n<li>HTC support unlocking but not don\'t give code to the developers so it\'s useless.</li>\r\n<li>Motorola support was good but since the take over by Lenovo they have stopped supporting unlocking.</li>\r\n<li>Google phones are unlocked and are ideal for developers but are too expensive.</li>\r\n<li>Xiaomi requires you to wait until the EU 14 day no questions asked warranty has expired.</li>\r\n<li>Fairphone too expensive.</li>\r\n<li>PinePhone may be an option but people report the current version being too slow.</li>\r\n</ul>\r\n<p>After finding a phone that can be unlocked and rooted, then check to see if there is an <em>official</em> version for <a href=\"https://wiki.lineageos.org/devices/\">LineageOS</a></p>\r\n<p>If no phone meets all the requirements then try the next one.</p>\r\n<p>It\'s very likely you will not find a phone. You are then faced with the choice of adjusting your parameters, for example picking a more expensive model, but at the end of the day be prepared that you may not find a phone.</p>\r\n<p>If you do find a phone, it\'s very likely that it may be a different version than the one supported. I have had to return several phones that I had unlocked and just hoped that the supplier would take them back and refund me.</p>\r\n<p>Even on supported phones, especially newer ones, it\'s quite often that a major piece of functionality will not work. I have had issues with no GPS on one phone, and bluetooth/wifi not working on another until files were manually edited on each reboot.</p>\r\n<p>Do not do this if you want a stress free life, and also if you are not willing to accept the waste of all the money, and time involved.</p>\r\n<h3 id=\"links\">Links</h3>\r\n<ul>\r\n<li><a href=\"https://tweakers.net/smartphones/vergelijken/\">Tweakers.net</a></li>\r\n<li><a href=\"https://twrp.me/Devices/\">TWRP</a></li>\r\n<li><a href=\"https://wiki.lineageos.org/devices/\">LineageOS</a></li>\r\n<li><a href=\"https://github.com/Genymobile/scrcpy\">scrcpy</a></li>\r\n<li><a href=\"https://tektab.com/2015/10/31/android-bootloaderfastboot-mode-and-recovery-mode-explained/\">Android bootloader/fastboot mode and recovery mode explained/Android boot process</a> October 31, 2015 Saad Faruque</li>\r\n<li><a href=\"https://www.pine64.org/pinephone/\">pinephone</a></li>\r\n</ul>\r\n',30,0,1,'CC-BY-SA','TWRP,Tweakers,LineageOS,scrcpy,tektab.com,bootloader,fastboot,Sony Xperia XA2,pinephone',0,0,1),
(3102,'2020-06-23','RFC 5005 Part 2 – Webcomics, subscribers and feed readers',902,'fluffy, Jamey and I go on for another ten minutes about how webcomic artists feel about feeds','<p>An interview with two passionate RFC 5005 fans on how to handle big Atom feeds</p>\r\n\r\n<p>This conversation took almost an hour, so I split it into two shows:</p>\r\n\r\n<ul>\r\n  <li>Part 1 talks mostly about the RFC itself, what it means and why. <a href=\"https://hackerpublicradio.org/eps.php?id=3082\">HPR 3082</a></li>\r\n  <li>Part 2 goes into personal experiences with the RFC and with syndication in general, in particular in the context of web comics.</li>\r\n</ul>\r\n\r\n<p>This is part 2.</p>\r\n\r\n<p>In this show I’m talking to:</p>\r\n\r\n<h3 id=\"fluffy\">fluffy</h3>\r\n\r\n<ul>\r\n  <li>Federated social web:<br />\r\n<a href=\"https://queer.party/@fluffy\">https://queer.party/@fluffy</a></li>\r\n  <li>Writes and makes things in several creative fields:<br />\r\n<a href=\"https://beesbuzz.biz/\">https://beesbuzz.biz/</a></li>\r\n  <li>Publ is like a static site generator, but dynamic. It produces RFC 5005 archive feeds, of course:<br />\r\n<a href=\"https://publ.beesbuzz.biz/\">https://publ.beesbuzz.biz/</a></li>\r\n  <li>Thoughts on ephemeral content vs content worth archiving and how they relate to protocols:<br />\r\n<a href=\"https://beesbuzz.biz/blog/5709-Keeping-it-personal\">https://beesbuzz.biz/blog/5709-Keeping-it-personal</a></li>\r\n</ul>\r\n\r\n<h3 id=\"jamey\">Jamey</h3>\r\n\r\n<ul>\r\n  <li>Federated social web:<br />\r\n<a href=\"https://toot.cat/@jamey\">https://toot.cat/@jamey</a></li>\r\n  <li>Blog:<br />\r\n<a href=\"https://minilop.net/\">https://minilop.net/</a></li>\r\n  <li>Made a prototype full-history reader that follows RFC 5005 links:<br />\r\n<a href=\"https://reader.minilop.net/\">https://reader.minilop.net/</a></li>\r\n  <li>Made a webcomic reader mostly mentioned in Part 2:<br />\r\n<a href=\"https://www.comic-rocket.com/\">https://www.comic-rocket.com/</a></li>\r\n  <li>Made a WordPress plugin implementing RFC 5005:<br />\r\n<a href=\"https://github.com/jameysharp/wp-fullhistory\">https://github.com/jameysharp/wp-fullhistory</a></li>\r\n  <li>Made an RFC 5005 archive feed synthesizer for sites with a predictable post frequency and URL structure:<br />\r\n<a href=\"https://github.com/jameysharp/predictable/\">https://github.com/jameysharp/predictable/</a><br />\r\nHosted at <a href=\"https://fh.minilop.net/\">https://fh.minilop.net/</a></li>\r\n  <li>Was on HPR 9 years ago, talking about X.Org!<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=0825\">https://hackerpublicradio.org/eps.php?id=0825</a></li>\r\n</ul>\r\n\r\n<h2 id=\"conversation-notes\">Conversation notes</h2>\r\n\r\n<ul>\r\n  <li>Back in 2002, Aaron Swartz published his joke MIME-header-based <em>RSS 3</em>:<br />\r\n<a href=\"https://www.aaronsw.com/weblog/000574\">https://www.aaronsw.com/weblog/000574</a><br />\r\nThe cultural context at the time and the rivalry between RSS 0.91+, RSS 1.0, RSS 2.0 and Atom deserves a show of its own.</li>\r\n</ul>\r\n',311,0,0,'CC-BY-SA','webcomics, rfc5005, atom, rss, feeds',0,0,1),
(3099,'2020-06-18','Linux Inlaws S01E08 The review of the review',2741,'In this short episode our two heroes rant about Linus, Transmeta, EdgeOS','<h2>S01E08: <a href=\"https://hackerpublicradio.org/eps.php?id=3099\" target=_blank>The review of the review</a></h2>\r\n<p>More shenanigans from our two heroes. In this short episode our two heroes rant about Linus and other old people, Transmeta and other history, discuss Martin\'s EdgeOS woes and discover that MIPS is indeed a CPU architecture supported by standard Debian. The show concludes with a short review of Claudio\'s <a href=https://hackerpublicradio.org/eps.php?id=3093>review</a> and poxes about the Arch wiki and Californication. You have been warned!</p>\r\n\r\n<h3>Links:</h3>\r\n<ul>\r\n<li>Linus Torvald\'s 80 column rant: <a href=https://lkml.iu.edu/hypermail/linux/kernel/2005.3/08168.html target=_blank>https://lkml.iu.edu/hypermail/linux/kernel/2005.3/08168.html</a></li>\r\n<li>Linux\'s device tree explained: <a href=https://elinux.org/Device_Tree_Reference target=_blank>https://elinux.org/Device_Tree_Reference</a></li>\r\n<li>Debian packages for EdgeOS: <a href=https://help.ui.com/hc/en-us/articles/205202560-EdgeRouter-Add-Debian-Packages-to-EdgeOS target=_blank>https://help.ui.com/hc/en-us/articles/205202560-EdgeRouter-Add-Debian-Packages-to-EdgeOS</a></li>\r\n<li>Arch Wiki: <a href=https://wiki.archlinux.org target=_blank>https://wiki.archlinux.org</a></li>\r\n<li>Californication: <a href=https://www.sho.com/californication target=_blank>https://www.sho.com/californication</a></li>\r\n<li>The Italian music extract is courtesy of Christian Petermann from his piece Folk Festival (CC-BY-SA)</li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Linus, Transmeta, EdgeOS, Arch, Californication, device tree ',0,0,1),
(3096,'2020-06-15','Unscripted ramblings on a walk:  PC Building.',135,'I take a walk and discuss my experience building a new PC after having not done so for many years.','<p>I certainly want to say that this episode isn\'t a brag-a-thon about my new rig. I try to discuss what surprised me most about how PC building has changed in the last 10-15 years.</p>\r\n<p>The parts for my build:</p>\r\n<ul>\r\n<li>AMD Threadripper 1920X 3.5 GHz 12-Core Processor</li>\r\n<li>ASRock X399 Taichi ATX sTR4 Motherboard</li>\r\n<li>EVGA 850 B3, 80+ Bronze 850W, Fully Modular PSU</li>\r\n<li>Noctua NH-U14S TR4-SP3, Premium-Grade CPU Cooler</li>\r\n<li>MSI Gaming GeForce GT 710</li>\r\n<li>Fractal Design Define C case</li>\r\n<li>Corsair LPX 32GB (2x16GB) 3200MHz C16 DDR4 DRAM Memory Kit</li>\r\n<li>GELID GC-Extreme thermal paste</li>\r\n<li>Random 500GB SSD from my parts bin</li>\r\n</ul>',241,57,0,'CC-BY-SA','pc,hardware,build,battlestation,discussion,review,walk',0,0,1),
(3101,'2020-06-22','Metrics',1553,'A layman\'s explanation of the mathematical concept of metric.','<p>Whether you are writing a simple darts simulation 8-bit computer game or are traversing the galaxy Elite-style, you might well find yourself tangling with the mathematical concept known as the metric. In this episode I describe the mathematical concept of a metric which I address with the following questions. Brief answers are provided below but the show, I hope, gives more context and colour.</p>\r\n<h3 id=\"what-is-a-metric\">What is a metric?</h3>\r\n<p>A type of ruler that is used in mathematics.</p>\r\n<h3 id=\"why-not-just-use-a-ruler\">Why not just use a ruler?</h3>\r\n<p>You can if all you want to do is measure distances in real life but if you want to work out distances from coordinates you need a metric.</p>\r\n<h3 id=\"whats-the-simplest-example-of-a-metric\">What\'s the simplest example of a metric?</h3>\r\n<p>In 1D, distance s equals change in x coordinate.</p>\r\n<h3 id=\"ok-can-i-have-a-more-interesting-example-please\">OK, can I have a more interesting example please?</h3>\r\n<p>On a flat 2D surface, distance squared is the change in x squared plus change in y squared.</p>\r\n<h3 id=\"isnt-that-pythagoras\">Isn\'t that pythagoras?</h3>\r\n<p>Yes, it is, but using the word distance and two co-ordinates.</p>\r\n<h3 id=\"what-other-co-ordinates-can-we-use-for-a-flat-2d-surface\">What other co-ordinates can we use for a flat 2D surface?</h3>\r\n<p>Those x and y co-ordinates are called Cartesian co-ordinates. Instead we can use polar co-ordinates: radius r, and the angle φ (or phi) measured clockwise from the vertical. These might be more convenient in some cases, say for a dart board computer game, or if you are working with a compass bearing, eg head east for 1 km would become start at the origin (r=0) and move with phi=90° until r=1 km.</p>\r\n<h3 id=\"does-pythagoras-still-work-in-polar-coords\">Does Pythagoras still work in polar coords?</h3>\r\n<p>Yes and no. No, it is no longer true to say that distance squared equals radius squared plus φ squared, but since the geometry is the same - a flat 2D surface - we can say that a <em>change</em> in distance squared equals the <em>change</em> in radius squared plus radius squared times the <em>change</em> in φ squared.</p>\r\n<h3 id=\"why-do-we-have-to-talk-about-changes-in-s-r-and-φ\">Why do we have to talk about changes in s, r and φ?</h3>\r\n<p>Because one of our coordinates now appears in the metric. That is, the radius squared multiplies on to the change in φ squared. This means that a change in φ depends on r. In other words, bigger circles have bigger circumferences. Actually, it\'s more intricate than that, as we must deal with infinitesimals: quantities which are very, very, very small but not zero.</p>\r\n<h3 id=\"can-we-use-cartesian-or-polar-co-ordinates-on-the-surface-of-the-earth\">Can we use Cartesian or polar co-ordinates on the surface of the Earth?</h3>\r\n<p>Only over short distances, much smaller than the radius of the Earth which is 6400 km. So up to about 100 km that\'s fine for many purposes, but not when flying a plane over great distances, say London to Singapore.</p>\r\n<h3 id=\"why-not\">Why not?</h3>\r\n<p>The surface of the Earth may look locally flat but of course the Earth has a curved 2D surface. This means that this surface has a non-euclidean geometry, which means that Pythagoras does not hold and we cannot even define Cartesian co-ordinates, let alone use them.</p>\r\n<h3 id=\"i-want-to-know-more-or-my-mind-is-not-fully-blown\">I want to know more OR my mind is not fully blown.</h3>\r\n<p>I will probably do more shows on this.</p>\r\n<h3 id=\"can-i-have-some-links\">Can I have some links?</h3>\r\n<p>Sure:</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Alcubierre_drive\">Alcubierre drive</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Darts\">Dart board</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Polar_coordinate_system\">Polar coordinates</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Metric_(mathematics)\">Metric</a></li>\r\n</ul>\r\n',268,0,0,'CC-BY-SA','mathematics,relativity,physics',0,0,1),
(3103,'2020-06-24','A warning about browser extensions and add-ons.',93,'A unmaintained extension lead to a popup storm','<p>\r\nI started getting popups while going to safe websites in chromium-browser. I disabled all browser extensions and then turned them back on individually. I found one that which was causing the problem and it is no longer on the app store. It was however still working and had not been revoked on my browser.\r\n</p>\r\n<p>\r\nPlease check your extensions and add-ons to make sure they are regularly updated.\r\n</p>',30,0,0,'CC-BY-SA','extensions,add-ons,firefox,chromium,chrome,thunderbird',0,0,1),
(3116,'2020-07-13','Unscripted ramblings on a walk:  Crisis at The Manor',1137,'A walk and a talk about a lightning strike zapping a network.','<p>In an episode years ago, I talked about \"libernil.net\" (a network for my family and friends). That network grew to be known as \"The Manor\" (manor.space) and has hosted more friends over time. Not too long ago our primary infrastructure was knocked out by lightning. On today\'s walk, I talk a little bit about what happened.</p>',241,0,1,'CC-BY-SA','networks,post-mortem,retrospective,community,walk,rambling',0,0,1),
(3108,'2020-07-01','Fuguita as a Desktop',3148,'I cover all the wonderful things about using Fuguita as your Desktop','<p>I cover many issues about using OpenBSD based Fuguita as your Desktop. I wouldn\'t have it any other way, I use Fuguita for my main Desktop these days.</p>\r\n',377,0,0,'CC-BY-SA','OpenBSD,Fuguita,Desktop,Portability,Sanity',0,0,1),
(3119,'2020-07-16','Converting to FFS2',2426,'FFS2, FuguIta encryption and UUID\'s and 9 volt batteries','<p>I talk about converting my I386 Dell Mini 10 running OpenBSD6.7 to the new FFS2 file system. I also talk about the two new features of FuguIta 6.7 which are data encryption and the use of UUID\'s in the noasks file which is used for automatic booting. I also talk about 9 volt batteries and high technology transistor radios. I am also surprised by an SD card discovery I found on my Dell Mini 10.</p>\r\n',377,0,0,'CC-BY-SA','FFS2, SD cards, OpenBSD',0,0,1),
(3120,'2020-07-17','How open are roleplaying games?',2767,'Klaatu and mcnalu talk through what open and free mean in roleplaying games.','<p>Roleplaying games open you up to a seemingly unlimited array of possibilities taking place in many universes. But truly unlimited freedom would literally mean nothing without a context of history, lore and rules for your adventures. Klaatu and mcnalu talk through what open and free mean in roleplaying games with a particular focus on Dungeons &amp; Dragons which Klaatu has been been running for the HPR community in recent months.</p>\r\n<p>If you want to play D&amp;D you can go to the website of its publisher <a href=\"https://dnd.wizards.com/\">Wizards of the Coast</a> and browse for the player and other manuals. But if you want to play but can\'t or won\'t pay then you can use the <a href=\"https://dnd.wizards.com/articles/features/systems-reference-document-srd\">System Reference Document (SRD)</a> which is published under the <a href=\"https://www.opengamingfoundation.org/ogl.html\">Open Game License (OGL)</a>. You can even use that document to create and publish your own adventures.</p>\r\n<p>However, if you want to publish an adventure with the full set of D&amp;D rules from official manuals — every monster and every spell — then you need the publisher\'s approval. To do this for D&amp;D you need to publish through the <a href=\"https://support.dmsguild.com/hc/en-us/articles/360024677993-Getting-Started-on-Dungeon-Masters-Guild\">Dungeon Masters\' Guild</a>.</p>\r\n',268,0,0,'CC-BY-SA','open,free,roleplaying,licensing',0,0,1),
(3128,'2020-07-29','Linux Inlaws S01E11 The Python Bumper Part 2',4065,'The chaps continue to shed more light on our beloved programming language','<ul>\r\n    <li>TIOBE index: <a href=https://www.tiobe.com/tiobe-index target=_blank>https://www.tiobe.com/tiobe-index</a></li>\r\n    <li>Stackoverflow index: <a href=https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages-loved target=_blank>https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages-loved</a></li>\r\n    <li>PEP 520 (the Zen of Python): <a href=https://www.python.org/dev/peps/pep-0020 target=_blank>https://www.python.org/dev/peps/pep-0020</a></li>\r\n    <li>PEP 572: <a href=https://www.python.org/dev/peps/pep-0572 target=_blank>https://www.python.org/dev/peps/pep-0572</a></li>\r\n    <li>PEP 572 discussion: <a href=https://twitter.com/llanga/status/989670881176702976 target=_blank>https://twitter.com/llanga/status/989670881176702976</a></li>\r\n    <li>Claudio\'s link: <a href=https://www.kevra.org/TheBestOfNext/DifferentNeXTSpellings/DifferentNeXTSpellings.html target=_blank>https://www.kevra.org/TheBestOfNext/DifferentNeXTSpellings/DifferentNeXTSpellings.html</a></li>\r\n    <li>Secret Diary of a Call Girl: <a href=https://en.wikipedia.org/wiki/Secret_Diary_of_a_Call_Girl target=_blank>https://en.wikipedia.org/wiki/Secret_Diary_of_a_Call_Girl</a></li>\r\n    <li>Sophie Wilson interview: <a href=\"https://www.youtube.com/watch?v=R2SdSLCMKEA&t=1852s\" target=_blank>https://www.youtube.com/watch?v=R2SdSLCMKEA&amp;t=1852s</a></li>\r\n</ul>\r\n\r\n\r\n',384,111,1,'CC-BY-SA','Python 3.9, Mortgages in New York, Williamsburg, Wirecard, middle-aged blondes',0,0,1),
(3106,'2020-06-29','Linux Inlaws S01E09 Postgres',3851,'The lads talk to Bruce Momjian Postgres evangelist','<h2>S01E09:</h2>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=3106\" target=_blank>Postgres</a><br/>\r\nListen to our two OAP interviewing Bruce\r\nMomjian, Postgres evangelist and long-time supporter of this popular SQL\r\ndatabase. Expect lots of strong language around SQL and NoSQL topics and\r\nsome ranting about MINT\'s attitude towards snaps, a fun breach of a health\r\nservice provider in the UK and why broadcasters should stick to\r\nmonopolies.</p>\r\n<ul>\r\n<li>MINT Chromium issue: <a href=https://blog.linuxmint.com/?p=3766 target=_blank>https://blog.linuxmint.com/?p=3766</a></li>\r\n<li>PostgreSQL: <a href=https://www.postgresql.org target=_blank>https://www.postgresql.org</a></li>\r\n<li>Babylon Health breach: <a href=https://www.bbc.com/news/technology-52986629 target=_blank>https://www.bbc.com/news/technology-52986629</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','Postgres, SQL, NoSQL, MINT',0,0,1),
(3107,'2020-06-30','Generating comfortable passwords',1800,'generating passwords to be comfortably type-able','<h2 id=\"random-password-generation\">Random Password Generation</h2>\r\n<p>First implementation: 14 character long with 6 letters and 8 digits</p>\r\n<pre><code>#!/usr/bin/env python3\r\n# file: passgen-v1.py\r\n\r\nimport random\r\n\r\nLETTERS = &quot;abcdefghijklmnopqrstuvwxyz&quot;\r\n\r\nif __name__ == &quot;__main__&quot;:\r\n\r\n    passwd = []\r\n\r\n    for i in range(6):\r\n            passwd.append(random.choice(LETTERS))\r\n\r\n    for i in range(8):\r\n            passwd.append(random.choice(&quot;1234567890&quot;))\r\n\r\n    print(&quot;&quot;.join(passwd))\r\n</code></pre>\r\n<p>The passwords that come out of this are a bit difficult to type so I forced it to alternate between the left and right hands</p>\r\n<pre><code>#!/usr/bin/env python3\r\n# file: passgen-v2.py\r\n\r\nimport random\r\n\r\nLEFTS = &quot;&#39;,.pyaoeui;qjkx&quot;\r\nRIGHTS = &quot;fgcrldhdhtns-bmwvz&quot;\r\n\r\nif __name__ == &quot;__main__&quot;:\r\n\r\n    passwd = []\r\n\r\n    for i in range(6):\r\n        if i % 2 == 0:\r\n            passwd.append(random.choice(LEFTS))\r\n        else:\r\n            passwd.append(random.choice(RIGHTS))\r\n\r\n    for i in range(8):\r\n        if i % 2 == 0:\r\n            passwd.append(random.choice(&quot;123456&quot;))\r\n        else:\r\n            passwd.append(random.choice(&quot;7890&quot;))\r\n\r\n    print(&quot;&quot;.join(passwd))\r\n</code></pre>\r\n<p>The regularity of switching between left and right hands (intuitively, and almost surely) decreases the entropy of the password, so use markov models to make that happen for the most part but critically NOT enforce it.</p>\r\n<pre><code>#!/usr/bin/env python3\r\n# file: passgen-v3.py\r\n\r\nimport random\r\n\r\nLs = [\r\n    &quot;aoeui&quot;,  # L1\r\n    &quot;&#39;,.py&quot;,  # L2\r\n    &quot;;qjkx&quot;,  # L3\r\n    &quot;123456&quot;, # L4\r\n    &quot;-snthd&quot;, # R1\r\n    &quot;lrcgf&quot;,  # R2\r\n    &quot;zvwmb&quot;,  # R3\r\n    &quot;7890&quot;    # R4\r\n]\r\n\r\nA = [[ .03,  .03,  .03, .01,  .27,  .27,  .27, .09],\r\n     [ .03,  .03,  .03, .01,  .27,  .27,  .27, .09],\r\n     [ .03,  .03,  .03, .01,  .27,  .27,  .27, .09],\r\n     [.004, .003, .003, .09,  .03,  .03,  .03, .81],\r\n     [ .27,  .27,  .27, .09,  .03,  .03,  .03, .01],\r\n     [ .27,  .27,  .27, .09,  .03,  .03,  .03, .01],\r\n     [ .27,  .27,  .27, .09,  .03,  .03,  .03, .01],\r\n     [ .03,  .03,  .03, .81, .004, .003, .003, .09]]\r\n\r\npi = [ .41, .03, .03, .03, .41, .03, .03, .03]\r\n\r\ndef sample( l ):\r\n    l_partial = [ sum(l[:i+1],0) for i in range(len(l))]\r\n    u = random.uniform(0,1)\r\n    for j,v in enumerate(l_partial):\r\n        if v &gt; u:\r\n            return j\r\n\r\nif __name__ == &quot;__main__&quot;:\r\n\r\n    passwd = []\r\n\r\n    s = sample(pi)\r\n    for i in range(20):\r\n        s = sample(A[s])\r\n        passwd.append(random.choice(Ls[s]))\r\n\r\n    print(&quot;&quot;.join(passwd))\r\n</code></pre>\r\n<p>For increased entropy should also consider peppering in a few upper case characters.</p>\r\n<pre><code>#!/usr/bin/env python3\r\n# file: passgen-v3.py\r\n\r\nimport random\r\n\r\nLs = [\r\n    &quot;aoeui&quot;,  # L1\r\n    &quot;&#39;,.py&quot;,  # L2\r\n    &quot;;qjkx&quot;,  # L3\r\n    &quot;123456&quot;, # L4\r\n    &quot;-snthd&quot;, # R1\r\n    &quot;lrcgf&quot;,  # R2\r\n    &quot;zvwmb&quot;,  # R3\r\n    &quot;7890&quot;    # R4\r\n]\r\n\r\nA = [[ .03,  .03,  .03, .01,  .27,  .27,  .27, .09],\r\n     [ .03,  .03,  .03, .01,  .27,  .27,  .27, .09],\r\n     [ .03,  .03,  .03, .01,  .27,  .27,  .27, .09],\r\n     [.004, .003, .003, .09,  .03,  .03,  .03, .81],\r\n     [ .27,  .27,  .27, .09,  .03,  .03,  .03, .01],\r\n     [ .27,  .27,  .27, .09,  .03,  .03,  .03, .01],\r\n     [ .27,  .27,  .27, .09,  .03,  .03,  .03, .01],\r\n     [ .03,  .03,  .03, .81, .004, .003, .003, .09]]\r\n\r\npi = [ .41, .03, .03, .03, .41, .03, .03, .03]\r\n\r\nUPPER=.1\r\n\r\ndef sample( l ):\r\n    l_partial = [ sum(l[:i+1],0) for i in range(len(l))]\r\n    u = random.uniform(0,1)\r\n    for j,v in enumerate(l_partial):\r\n        if v &gt; u:\r\n            return j\r\n\r\nif __name__ == &quot;__main__&quot;:\r\n\r\n    passwd = []\r\n\r\n    s = sample(pi)\r\n    for i in range(20):\r\n        s = sample(A[s])\r\n        c = random.choice(Ls[s])\r\n        u = random.uniform(0,1)\r\n        if u &lt; UPPER:\r\n            c = c.upper()\r\n        passwd.append(c)\r\n\r\n    print(&quot;&quot;.join(passwd))\r\n</code></pre>\r\n<p>Finally, generating the matrix by hand was a bit of a pain, so I made it a bit easier by making a small procedure with few control knobs (the variables <code>SWITCH_HAND</code> and <code>SWITCH_CHAR</code> which control how likely it is that a character pair will result in a hand switch, or a switch between general characters and digits).</p>\r\n<pre><code>#!/usr/bin/env python3\r\n\r\nimport random\r\nimport numpy\r\n\r\n# this version uses a markov chain to make it more likely to alternate hands\r\n# (in dvorak) so that the password is easy to type (in dvorak)\r\n\r\nLs = [\r\n    &quot;aoeui&quot;,  # L1\r\n    &quot;&#39;,.py&quot;,  # L2\r\n    &quot;;qjkx&quot;,  # L3\r\n    &quot;123456&quot;, # L4\r\n    &quot;-snthd&quot;, # R1\r\n    &quot;lrcgf&quot;,  # R2\r\n    &quot;zvwmb&quot;,  # R3\r\n    &quot;7890&quot;    # R4\r\n]\r\n\r\nSWITCH_HAND = .8\r\nSWITCH_CHAR = .3\r\nUPPER=.1\r\n\r\ndef prob( i , j ):\r\n    switch_hand = int(i / 4) != int(j / 4)\r\n    to_num = (j % 4) == 3\r\n    from_num = (i % 4) == 3\r\n\r\n    prob = 1\r\n\r\n    if to_num and from_num:\r\n        prob *= (1 - SWITCH_CHAR)\r\n    elif to_num:\r\n        prob *= (SWITCH_CHAR)\r\n    elif from_num:\r\n        prob *= (SWITCH_CHAR / 3)\r\n    else:\r\n        prob *= ((1 - SWITCH_CHAR) / 3)\r\n\r\n    if switch_hand:\r\n        prob *= SWITCH_HAND\r\n    else:\r\n        prob *= (1 - SWITCH_HAND)\r\n\r\n    return prob\r\n\r\n\r\nA = numpy.array([ [ prob(i,j) for j in range(8)  ] for i in range(8) ])\r\n\r\npi = [ 1.0 / 8 for i in range(8) ]\r\n\r\ndef sample( l ):\r\n    l_partial = [ sum(l[:i+1],0) for i in range(len(l))]\r\n    u = random.uniform(0,1)\r\n    for j,v in enumerate(l_partial):\r\n        if v &gt; u:\r\n            return j\r\n\r\nif __name__ == &quot;__main__&quot;:\r\n\r\n    passwd = []\r\n\r\n    s = sample(pi)\r\n    for i in range(20):\r\n        s = sample(A[s])\r\n        c = random.choice(Ls[s])\r\n        u = random.uniform(0,1)\r\n        if u &lt; UPPER:\r\n            c = c.upper()\r\n        passwd.append(c)\r\n\r\n    print(&quot;&quot;.join(passwd))\r\n</code></pre>\r\n',385,0,1,'CC-BY-SA','passwords, python',0,0,1),
(3109,'2020-07-02','Matchbox Restoration Part 4',277,'In this the 4th in the series Tony discusses paint removal on the castings of the MK10 Jaguars','<p>Good day to all in HPR land, this is Tony Hughes coming to you again from Blackpool in the UK. To recap this is the 4th in a series of shows about my hobby of restoring Matchbox and other Die cast models. In the last show I went through the process of stripping the models down to their component parts. In this episode I will discuss the process I use to remove the paint and prepare the casting for repainting and reassembly.</p>\r\n<p>So first off, and I should have said this last episode, a health and safety warning. If there are young people listening to this some of the things talked about on today\'s show require parental supervision, and are not recommended for young people unless properly supervised. So with that public service announcement out of the way let\'s get on with the show.</p>\r\n<p>So before the base can be put in the paint stripper the wheels and axles need to be removed. As you can see from the picture there are flanges holding on the wheels to the metal axle and one side is only a small flange.</p>\r\n<p>Picture 000<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_000.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_000_thumbnail.jpg\" alt=\"Picture 000\" /></a></p>\r\n<p>This can be removed with a small needle file or a small rotary file attachment for my rotary tool. Once removed the bases can be put in with the rest of the casting for paint removal.</p>\r\n<p>Picture 001<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_001.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_001_thumbnail.jpg\" alt=\"Picture 001\" /></a></p>\r\n<p>So let\'s talk about paint removal, obviously the first one you will think of is some kind of chemical paint stripper and I use 2 different methods of this. The first and probably the safest in the first instance is a commercial paint stripper from one of the chain DIY stores here in the UK, B&amp;Q. There is a local store about 10 minutes drive from me so it is convenient during normal shopping times just to pop in and grab a 2.5Ltr container of their own brand DIAL paint stripper that is fantastic for this job and quite economic.</p>\r\n<p>The second is a little more aggressive if you need fast results but requires a little more in the way of care when using it as it is very corrosive and can be harmful if the fumes are breathed in, or the product gets onto your skin or in your eyes. This is caustic soda and I buy this through eBay and have it delivered in 1Kg pouches. It needs to be stored in an air tight container in a dry environment to keep it from getting damp as this is a potential fire hazard as if it gets contaminated buy moisture a chemical reaction starts which generates heat. So if you go with the caustic soda method you need to take adequate safety precautions. With the Jaguar I mainly used the caustic soda method to remove the paint but one casting I put in the paint stripper to show that method.</p>\r\n<p>With the caustic soda place the castings in a jar with enough room to cover with just boiled water so that it does not overflow when the caustic soda crystals are added slowly, I use a long handle tea spoon and add 2-3 tea spoons of the soda until it has a good fizz. Then leave for about 15 minutes but the longer the better, I sometimes do this and leave over night and this gives a great result. Remember to wear gloves when doing this to prevent getting the caustic on your hands.</p>\r\n<p>Picture 002<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_002.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_002_thumbnail.jpg\" alt=\"Picture 002\" /></a></p>\r\n<p>Picture 003<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_003.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_003_thumbnail.jpg\" alt=\"Picture 003\" /></a></p>\r\n<p>Picture 004<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_004.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_004_thumbnail.jpg\" alt=\"Picture 004\" /></a></p>\r\n<p>Picture 005<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_005.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_005_thumbnail.jpg\" alt=\"Picture 005\" /></a></p>\r\n<p>With the paint stripper I have a plastic click lock box with this in that I immerse the casting into and leave for several hours for best results. This can be reused many times as you can see in this picture keeping it an economic method as most of the stripper is left in the box when you remove the casting. The results for both methods are similar, but I find the caustic although you need to be careful, is the less messy of the two options, and the casting is easier to clean after paint removal.</p>\r\n<p>Picture 006<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_006.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_006_thumbnail.jpg\" alt=\"Picture 006\" /></a></p>\r\n<p>So after removal of the paint the castings are polished up with either a hand wire brush or a wire brush attachment for the rotary tool. You can see the base before and after and a picture of the polished main casting in the notes.</p>\r\n<p>Picture 007<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_007.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_007_thumbnail.jpg\" alt=\"Picture 007\" /></a></p>\r\n<p>Picture 008<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_008.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3109/hpr3109/img_008_thumbnail.jpg\" alt=\"Picture 008\" /></a></p>\r\n<p>So we now have a casting ready for repainting, which I will cover in the next episode. So until next time this is Tony Hughes saying goodbye to all those in HPR land. Keep safe until the next instalment.</p>\r\n',338,114,0,'CC-BY-SA','Matchbox Cars,Diecast Models,Restoration,paint removal,caustic soda,paint stripper',0,0,1),
(3403,'2021-08-18','Forth on microcontrollers',1341,'A little more about forth and a couple of chapters in the novel of my life','<ul>\r\n<li><p>microlisp<br />\r\nlisp on avr microcontrollers (and others)<br />\r\n<a href=\"https://www.ulisp.com/\" class=\"uri\">https://www.ulisp.com/</a></p></li>\r\n<li><p>ben eater<br />\r\n<a href=\"https://eater.net/\" class=\"uri\">https://eater.net/</a></p></li>\r\n<li><p>computer on breadboards<br />\r\n<a href=\"https://6502.org/\" class=\"uri\">https://6502.org/</a></p></li>\r\n<li><p>forth on avr microcontrollers</p>\r\n<ul>\r\n<li>eforth <a href=\"https://forth.org/eforth.html\" class=\"uri\">https://forth.org/eforth.html</a></li>\r\n<li>amforth <a href=\"https://amforth.sourceforge.net/\" class=\"uri\">https://amforth.sourceforge.net/</a></li>\r\n<li>flash forth <a href=\"https://www.flashforth.com/\" class=\"uri\">https://www.flashforth.com/</a></li>\r\n</ul></li>\r\n<li><p>incantations</p></li>\r\n</ul>\r\n<pre><code>  sudo avrdude -c usbtiny -p m328p -e -U flash:w:uno.hex:i -U eeprom:w:uno.eep.hex:i\r\n  sudo avrdude -c usbtiny -p m328p -e -U flash:w:uno.hex:i -U eeprom:w:uno.eep.hex:i\r\n  sudo avrdude -P usbtiny -p m328p -e -U efuse:w:0x05:m -U hfuse:w:0xD9:m -U lfuse:w:0xFF:m</code></pre>',326,0,0,'CC-BY-SA','programming, history, arduino',0,0,1),
(3112,'2020-07-07','finishing the frame on the long wheelbase recumbent',529,'a narrated slideshow of the next steps in building a bespoke recumbent bicycle','<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1282\">hpr 1282</a> john kulps efforts</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2869\">hpr 2869</a> part one of my build</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2875\">hpr 2875</a> part two</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2962\">hpr 2962</a> part three</li>\r\n</ul>\r\n<!-- - -->\r\n<ul>\r\n<li>recycled recumbent can be found at:<br />\r\n<a href=\"https://sites.google.com/site/recycledrecumbents/home\" class=\"uri\">https://sites.google.com/site/recycledrecumbents/home</a></li>\r\n</ul>\r\n<p>Rear triangle in jig<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/hpr3112/img_000.jpg\" alt=\"Rear triangle in jig\" /></p>\r\n<p>Close up<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/hpr3112/img_001.jpg\" alt=\"Close up\" /></p>\r\n<p>View from the front<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/hpr3112/img_002.jpg\" alt=\"View from the front\" /></p>\r\n<p>Jig ready for bending<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/hpr3112/img_003.jpg\" alt=\"Jig ready for bending\" /></p>\r\n<p>Bending process complete<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/hpr3112/img_004.jpg\" alt=\"Bending process complete\" /></p>\r\n<p>Jigging up rear triangle onto frame<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/hpr3112/img_005.jpg\" alt=\"Jigging up rear triangle onto frame\" /></p>\r\n<p>Rear triangle brazed to frame<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/hpr3112/img_006.jpg\" alt=\"Rear triangle brazed to frame\" /></p>\r\n<p>Making emt bottom rails<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/hpr3112/img_007.jpg\" alt=\"Making emt bottom rails\" /></p>\r\n<p>Prying cuts open<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/hpr3112/img_008.jpg\" alt=\"Prying cuts open\" /></p>\r\n<p>Finished and ready to fit in frame<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/hpr3112/img_009.jpg\" alt=\"Finished and ready to fit in frame\" /></p>\r\n<p>Emt bending tool<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/hpr3112/img_010.jpg\" alt=\"Emt bending tool\" /></p>\r\n<p>Bottom rails ready for brazing<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/hpr3112/img_011.jpg\" alt=\"Bottom rails ready for brazing\" /></p>\r\n<!-- picture01-rear-triangle-in-jig.jpg -->\r\n<!-- Rear triangle in jig -->\r\n<!-- picture02-triangle-close-up.jpg -->\r\n<!-- Close up -->\r\n<!-- picture03-triangle-front-view.jpg -->\r\n<!-- View from the front -->\r\n<!-- picture04-bending-jig.jpg -->\r\n<!-- Jig ready for bendoing -->\r\n<!-- picture05-triangle-bend-complete.jpg -->\r\n<!-- Bending process complete -->\r\n<!-- picture06-rear-triangle-on-frame.jpg -->\r\n<!-- Jigging up rear triangle onto frame -->\r\n<!-- picture07-rear-triangle-brazed.jpg -->\r\n<!-- Rear triangle brazed to frame -->\r\n<!-- picture08-emt-opening.jpg -->\r\n<!-- Making emt bottom rails -->\r\n<!-- picture09-prying-open.jpg -->\r\n<!-- Prying cuts open -->\r\n<!-- picture10-say-ahh.jpg -->\r\n<!-- Finished and ready to fit in frame -->\r\n<!-- picture11-bending-tool.jpg -->\r\n<!-- Emt bending tool -->\r\n<!-- picture12-bottom-rails-ready-to-braze.jpg -->\r\n<!-- Bottom rails ready for brazing -->\r\n',326,115,0,'CC-BY-SA','bicycle, recumbent',0,0,1),
(3130,'2020-07-31','More Quick Tips',667,'This time tips onNvidia ffmpeg transcoding Fallout Perks Late to Movies,Shared 2FA,Time to leave app','<ol type=\"1\">\r\n<li>I talk about using Nvidia to quickly transcode</li>\r\n<li>Go over fallout 76 perks</li>\r\n<li>Show up to movies 20min late to miss th BS</li>\r\n<li>Shared 2FA because everybody uses SMS for some reason even tho the feds say now not to ... it took us 10 years to get here lol</li>\r\n<li>Time to leave app ! never be late to anything again... LOL .. you wish !</li>\r\n</ol>\r\n<p>-rmccurdy.com</p>\r\n',36,0,1,'CC-BY-SA','Nvidia ffmpeg transcoding,Fallout Perks,Late to Movies,Shared 2FA,Time to leave app',0,0,1),
(3135,'2020-08-07','Quick Tips for May 20 20',977,'BlueTooth,Carseats,tweezers,waffles ','<ol type=\"1\">\r\n<li>Talk about Bluetooth...</li>\r\n<li>We can put a man on the moon but we can\'t make a carseat that doesn\'t make me want to murder people when I try to move it ...</li>\r\n<li>Sharpen those tweezers!</li>\r\n<li>Waffffffffelz! YUM!</li>\r\n</ol>',36,0,1,'CC-BY-SA','BlueTooth,Carseats,tweezers,waffles ',0,0,1),
(3140,'2020-08-14','GIMP: Selection Tools',962,'The key to using GIMP effectively is to select the area you want to work on.','<p>Selection Tools define the area that other tools will work within. For example, if you want to add color to an image, you probably want to add it to a specific area, not to the entire image. Selection Tools help you to pick the area precisely, and are useful for photo retouching purposes.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.8/en/\">https://docs.gimp.org/2.8/en/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/tools-selection/\">https://www.ahuka.com/gimp/tools-selection/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, selection',0,0,1),
(3150,'2020-08-28','GIMP: Paint Tools',1097,'With Paint Tools you begin to operate on the image.','<p>Paint Tools are where you begin to add things to an image. You can add a large variety of things depending on the tool, from thin lines to broad strokes, to gradients, and so on.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.8/en/\">https://docs.gimp.org/2.8/en/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/paint-tools/\">https://www.ahuka.com/gimp/paint-tools/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, paint, draw',0,0,1),
(3160,'2020-09-11','GIMP: Transform Tools',992,'With Transform Tools you can stretch, move, and crop the image.','<p>Transform Tools are where you start to manipulate an image. You can move it around, stretch it, rotate it, crop it, and so on. This is the third of the four groups of tools we will look at for GIMP.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.8/en/\" class=\"uri\">https://docs.gimp.org/2.8/en/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Transformation_matrix\" class=\"uri\">https://en.wikipedia.org/wiki/Transformation_matrix</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/transform-tools/\" class=\"uri\">https://www.ahuka.com/gimp/transform-tools/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, transform',0,0,1),
(3113,'2020-07-08','OpenJDK 15 - Unsafe Garbage',893,'We take a quick look at what is coming in JDK 15','<p><a href=\"https://youtu.be/7duUZYvNFWw\">Youtube: OpenJDK 15 - Unsafe Garbage</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/339\">339: Edwards-Curve Digital Signature Algorithm (EdDSA)</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/360\">360: Sealed Classes (Preview)</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/371\">371: Hidden Classes</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/372\">372: Remove the Nashorn JavaScript Engine</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/373\">373: Reimplement the Legacy DatagramSocket API</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/374\">374: Disable and Deprecate Biased Locking</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/375\">375: Pattern Matching for instanceof (Second Preview)</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/377\">377: ZGC: A Scalable Low-Latency Garbage Collector</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/378\">378: Text Blocks</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/379\">379: Shenandoah: A Low-Pause-Time Garbage Collector</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/381\">381: Remove the Solaris and SPARC Ports</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/383\">383: Foreign-Memory Access API (Second Incubator)</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/384\">384: Records (Second Preview)</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/385\">385: Deprecate RMI Activation for Removal</a></p>\r\n',382,0,0,'CC-BY-SA','java, news',0,0,1),
(3118,'2020-07-15','Linux Inlaws S01E10 The Python Bumper Part 1',5436,'A discussion of Python questions and their answers (part 1). Plus news on Brad and Alia','<ul>\r\n    <li>Linux 5.8RC1: <a href=\"https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.8-rc1-Released\" target=_blank>https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.8-rc1-Release\r\nd</a></li>\r\n  <li>Stackless Python: <a href=\"https://github.com/stackless-dev/stackless/wiki\" target=_blank>https://github.com/stackless-dev/stackless/wiki</a></li>\r\n  <li>Python 3 documentation: <a href=\"https://docs.python.org/3\" target=_blank>https://docs.python.org/3</a></li>\r\n  <li>Guido van	Rossum:	<a href=\"https://gvanrossum.github.io\" target=_blank>https://gvanrossum.github.io</a></li>\r\n    <li>Python Enhancement Proposals (PEPs): <a href=\"https://www.python.org/dev/peps\" target=_blank>https://www.python.org/dev/peps</a></li>\r\n    <li>PEP 404: <a href=\"https://www.python.org/dev/peps/pep-0404\" target=_blank>https://www.python.org/dev/peps/pep-0404</a></li>\r\n    <li>PEP 572: <a href=\"https://www.python.org/dev/peps/pep-0572\" target=_blank>https://www.python.org/dev/peps/pep-0572</a></li>\r\n    <li>Brad & Alia: <a href=\"https://www.gala.de/stars/news/l_a__news/brad-pitt--ist-er-mit-dieser-schauspielerin-zusammen--22244236.html\" target=_blank>https://www.gala.de/stars/news/l_a__news\r\n/brad-pitt--ist-er-mit-dieser-schauspielerin-zusammen--22244236.html</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','Python, PEP, Linux, Alia Shawkat, Brad Pitt, Stackless Python',0,0,1),
(3117,'2020-07-14','The joy of retro computing',1914,'Knightwise talks about the old computers in his attic and how it is a loverly geek getaway','<p>Knightwise talks about his collection of old macs and pc\'s and how he uses them as a little \"getaway\" of the rush of modern day life. Show recorded in the car, excuse the road noise.</p>',111,0,0,'CC-BY-SA','Retro computer',0,0,1),
(3123,'2020-07-22','Arduino controlled Christmas lights',170,'Controlling Christmas LED lights with an Arduino','<ol type=\"1\">\r\n<li><p>Inspired by an Instructable project</p>\r\n<p><a href=\"https://www.instructables.com/id/LED-VU-Meter-With-Arduino-UNO\">https://www.instructables.com/id/LED-VU-Meter-With-Arduino-UNO</a></p></li>\r\n<li><p>Started the project with Arduino Uno.</p>\r\n<ul>\r\n<li>Found that power it with the barrel plug made audio input stable</li>\r\n<li>Tested this theory by using USB power</li>\r\n<li>Suspect this was due to grounding not being as good with the USB</li>\r\n<li>This caused LED\'s to light even without an audio input</li>\r\n<li>Ended up using an generic Arduino Nano to control the project</li>\r\n</ul></li>\r\n<li><p>Modified an audio mic preamplifier from Amazon to condition the output from the laptop music source</p></li>\r\n<li><p>Ran the output from this to A0 on the Arduino</p></li>\r\n<li><p>Split the signal out to an external speaker</p></li>\r\n<li><p>Used digital outputs listed in the sketch to power the LED indicators</p>\r\n<ul>\r\n<li>For reference, a sketch is the program that the Arduino runs through a loop.</li>\r\n</ul></li>\r\n<li><p>Used pins 10 to 12 as AnalogWrite pin to provide the power to the solid state relays.</p></li>\r\n<li><p>Used a dremel to separate the power to the hot side of the two power outlets</p>\r\n<ul>\r\n<li>Used three of the outlets to power three strings of Christmas tree LED lights.</li>\r\n<li>Used the other outlet to power the Arduino</li>\r\n</ul></li>\r\n<li><h4 id=\"bonus\">Bonus</h4>\r\n<ul>\r\n<li>Using these particular solid state relays, there is still a 10Vac output in <em>off</em> state. It actually worked for good, as the lights are at a nice brightness without a music input.</li>\r\n<li>Kindly leave a note in the comments if this is common to Solid State relays.</li>\r\n</ul></li>\r\n</ol>\r\n<h3 id=\"links\">Links:</h3>\r\n<h4 id=\"gy-max4466-electret-microphone-amplifier\">GY-MAX4466 Electret Microphone Amplifier</h4>\r\n<p><a href=\"https://www.amazon.com/gp/product/B07C3HXPJ9/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&amp;psc=1\">https://www.amazon.com/gp/product/B07C3HXPJ9/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&amp;psc=1</a></p>\r\n<h4 id=\"solid-state-relay-on-ebay\">Solid State relay on Ebay</h4>\r\n<p><a href=\"https://www.ebay.com/itm/25A-40A-SSR-25DA-SSR-40DA-250V-Solid-State-Relay-Module-Alloy-Heat-Sink/401478280169?hash=item5d79f863e9:g:dkwAAOSwiqFaX3f8\">https://www.ebay.com/itm/25A-40A-SSR-25DA-SSR-40DA-250V-Solid-State-Relay-Module-Alloy-Heat-Sink/401478280169?hash=item5d79f863e9:g:dkwAAOSwiqFaX3f8</a></p>\r\n<h4 id=\"elegoo-for-arduino-nano-v3.0\">ELEGOO for Arduino Nano V3.0</h4>\r\n<p><a href=\"https://www.amazon.com/gp/product/B0713XK923/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&amp;psc=1\">https://www.amazon.com/gp/product/B0713XK923/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&amp;psc=1</a></p>\r\n<h4 id=\"analogwrite\">AnalogWrite</h4>\r\n<p><a href=\"https://www.arduino.cc/en/pmwiki.php?n=Reference/AnalogWrite\">https://www.arduino.cc/en/pmwiki.php?n=Reference/AnalogWrite</a></p>\r\n<p><a href=\"https://www.arduino.cc/en/Tutorial/AnalogInOutSerial\">https://www.arduino.cc/en/Tutorial/AnalogInOutSerial</a></p>\r\n<h3 id=\"my-video\">My video</h3>\r\n<p><a href=\"https://archive.org/details/vid-20191217-192821-no-audio\">Sound\r\nReactive Christmas lights on Archive.org</a></p>\r\n<p><img src=\"https://ia801506.us.archive.org/34/items/screenshot-20200630-014101/Screenshot_20200630-014101.png\" style=\"width:200px;\" /></p>\r\n<p><strong>Edit:</strong></p>\r\n<p>Here is the song I meant to add, to see if it matches my video of the lights.</p>\r\n<p>It is the Trans Siberian Orchestra, Carol of the Bells.</p>\r\n<p><a href=\"https://m.youtube.com/watch?v=sCabI3MdV9g\" target=\"_blank\">https://m.youtube.com/watch?v=sCabI3MdV9g</a></p>\r\n',318,91,0,'CC-BY-SA','Arduino, Christmas, lights, Solid state relays',0,0,1),
(3170,'2020-09-25','GIMP: Color Tools',1199,'With Color Tools you can adjust the colors and brightness of an image.','<p>Color Tools are where you can adjust the colors and brightness of an image.You can change the color balance, adjust individual colors or transparency without affecting other colors, and so on. This is the fourth of the four general groups of tools we will look at for GIMP. There will also be some miscellaneous tools.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.8/en/\" class=\"uri\">https://docs.gimp.org/2.8/en/</a></li>\r\n<li><a href=\"https://osdn.net/projects/separate-plus/\" class=\"uri\">https://osdn.net/projects/separate-plus/</a></li>\r\n<li><a href=\"https://learn.leighcotnoir.com/artspeak/elements-color/hue-value-saturation/\" class=\"uri\">https://learn.leighcotnoir.com/artspeak/elements-color/hue-value-saturation/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Complementary_colors\" class=\"uri\">https://en.wikipedia.org/wiki/Complementary_colors</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/transform-tools/\" class=\"uri\">https://www.ahuka.com/gimp/transform-tools/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, color',0,0,1),
(3180,'2020-10-09','GIMP: Miscellaneous Tools',803,'These few remaining tools are important, but don\'t fit neatly into one category.','<p>The Miscellaneous tools do a number of useful things without fitting neatly into a category. The Paths tool takes Selections up a notch and also lets you add interesting effects. Zoom is one you would use every day, and Measure is handy in some situations. Finally, GEGL Operations are the future of all GIMP development</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.8/en/\" class=\"uri\">https://docs.gimp.org/2.8/en/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/B%C3%A9zier_curve\" class=\"uri\">https://en.wikipedia.org/wiki/B%C3%A9zier_curve</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Font_hinting\" class=\"uri\">https://en.wikipedia.org/wiki/Font_hinting</a></li>\r\n<li><a href=\"https://www.webopedia.com/TERM/A/antialiasing.html\" class=\"uri\">https://www.webopedia.com/TERM/A/antialiasing.html</a></li>\r\n<li><a href=\"https://docs.gimp.org/2.8/en/gimp-tool-gegl.html\" class=\"uri\">https://docs.gimp.org/2.8/en/gimp-tool-gegl.html</a></li>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-tool-gegl.html\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-tool-gegl.html</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=aEsqVMCgpJ8\" class=\"uri\">https://www.youtube.com/watch?v=aEsqVMCgpJ8</a></li>\r\n<li><a href=\"https://www.patreon.com/m/649544/posts\" class=\"uri\">https://www.patreon.com/m/649544/posts</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/miscellaneous-tools/\" class=\"uri\">https://www.ahuka.com/gimp/miscellaneous-tools/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, paths, zoom, GEGL',0,0,1),
(3124,'2020-07-23','Matchbox Restoration Part 5',310,'In this the 5th in the series Tony discusses the painting process on the castings of the MK10 Jaguar','<h2 id=\"hpr-matchbox-show-episode-5\">HPR Matchbox show Episode 5</h2>\r\n<p>Good day to all in HPR land, this is Tony Hughes coming to you again from Blackpool in the UK. To recap this is the 5th in a series of shows about my hobby of restoring Matchbox and other Die cast models. In the last show I went through the process I use to remove the paint and prepare the casting for repainting and reassembly. In this episode we will look at the painting of the castings and \'Spoiler\' what to do if things go wrong.</p>\r\n<p>After polishing and before painting I degrease the casting in some alcohol. I use a cheap own brand nail polish remover from the Co-Op but there are many ways of doing this and as many products on the market, so use what you have to hand. Even a good clean in hot soapy water, dry with a lint free cloth and then a wipe over with alcohol wipes works well. Remember to wear gloves when handling the casting after this process as the grease from your hands can undo all your hard work.</p>\r\n<p>So the first thing to say is that I am still in the early stages of learning this hobby and use what are referred to as \'Rattle\' cans in this community, it just means spray can painting rather than the use of an Air Brush, which I will be moving onto at some point so I can mix my own paint colours and not just those available in a spray can.</p>\r\n<p>So far I have been painting the casting outside during a warm dry day with little or no wind, or in a sheltered spot behind the garage if the wind is a little strong. I have now set up a small portable spray booth in the garage for this so will be able to paint in all conditions weather wise, which will make life easier.</p>\r\n<p>Image 001<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_000.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_000_thumbnail.jpg\" alt=\"Image 001\" /></a></p>\r\n<p>So back to the casting, I use a Hemostat Clamp to hold the casting on this model it is attached to the post that holds the model together as this will not be seen when reassembled, I used a grey primer, spraying light coats all over the model until it is completely covered in the primer. Priming helps smooth out any small imperfections for the final paint coat, and as the casting is over 50 years old, it also lays down a consistent base colour and ensures that the colour coat should be the same all over when final paint is applied. As you can see in the picture it also shows up the casting lines and if desired these can be filed away prior to final painting, as this is a restoration I left this casting as original as possible, and left these in.</p>\r\n<p>Image 002<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_001.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_001_thumbnail.jpg\" alt=\"Image 002\" /></a></p>\r\n<p>Image 003<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_002.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_002_thumbnail.jpg\" alt=\"Image 003\" /></a></p>\r\n<p>After leaving the casting to dry for about an hour I came back with the colour coat, the original model was a metallic brown, but the nearest match I was able to find in the local pound shops is a metallic gold. Not perfect but the final results look good, but a little lighter than the original paint. I applied the paint in smooth fine strokes, getting what is called a tack coat of the paint all over the model casting to start, then applying another coat (the wet coat) all over until there is no sign of the primer and all looks smooth but with no runs in the paint finish. The balance needs to be just right with not too little or too much paint, but with practice you get there in the end. Unforseeably on this occasion there was a reaction with the primer on the rear of the model which caused bubbling of the paint.</p>\r\n<p>Image 004<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_003.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_003_thumbnail.jpg\" alt=\"Image 004\" /></a></p>\r\n<p>Image 005<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_004.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_004_thumbnail.jpg\" alt=\"Image 005\" /></a></p>\r\n<p>So after allowing the paint to fully cure I used a little wet and dry fine sanding paper to smooth out this area and gave the casting another coat of paint, and fortunately this time all was well as you can see from the pictures in the show notes.</p>\r\n<p>Image 006<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_005.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_005_thumbnail.jpg\" alt=\"Image 006\" /></a></p>\r\n<p>Image 007<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_006.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_006_thumbnail.jpg\" alt=\"Image 007\" /></a></p>\r\n<p>While the casting was fully curing I turned my attention to the screen plastic. I found the best of the ones I had salvaged, from the 4 castings, picture 008 in the notes, and gave it a polish with some auto sol polishing compound using a cotton bud, and it came out quite nice. I then gave it a wash in soapy water to remove the residue of the polishing compound and after drying gave it a dip in some Pledge floor shine, it works great.</p>\r\n<p>Image 008<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_007.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_007_thumbnail.jpg\" alt=\"Image 008\" /></a></p>\r\n<p>Image 009<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_008.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_008_thumbnail.jpg\" alt=\"Image 009\" /></a></p>\r\n<p>Image 010<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_009.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_009_thumbnail.jpg\" alt=\"Image 010\" /></a></p>\r\n<p>After coating the screen in the Pledge it is placed on a pad of paper towel and covered with a plastic pot to stop dust getting on it while drying.</p>\r\n<p>Image 011<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_010.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3124/hpr3124/img_010_thumbnail.jpg\" alt=\"Image 011\" /></a></p>\r\n<p>Although the original casting had a black painted base I liked the look of the polished base so decided to leave this as it was, but if painting the base it is the same process as the main casting.</p>\r\n<p>Well that\'s it for this episode, on the next I will look at putting the wheels and axles back on the base and the reassembly process.</p>\r\n<p>This is Tony Hughes for Hacker Public Radio, saying goodbye for now, keep safe everyone and I\'ll be back soon with the next instalment.</p>\r\n',338,114,0,'CC-BY-SA','Matchbox Cars, Diecast Models, Restoration, painting, Rattle cans, Air brushing, Plastic polishing',0,0,1),
(3121,'2020-07-20','Opposing Views on Tattoos',1866,'Windigo and Mrs. Honeyhume discuss their views on tattoos','<p>\r\nNote: Phone recording came with a little bit of a hiss. Sorry about that!\r\n</p>\r\n<p>\r\nI discuss the subject of tattoos with my partner of fifteen years, Mrs. Honeyhume. While we agree on many subjects, tattoos are not one of them.\r\n</p>\r\n<p>\r\nShe enjoys and appreciates tattoos, seeing them as a permanent form of art that you can display on your own body. She has several of her own. I do not mind if other people tattoo themselves, but I am very opposed to getting them myself.\r\n</p>\r\n<p>\r\nWe discuss cultural influences of tattooing, some different methods used to tattoo skin, and many hypothetical situations to try to pin down the source of my opposition to getting one.\r\n</p>\r\n',196,0,1,'CC-BY-SA','tattoos',0,0,1),
(3126,'2020-07-27','Metrics part II',1967,'The metric of a 2D curved surface','<p>In this show I continue from where I left off in my last show (<a href=\"https://hackerpublicradio.org/eps.php?id=3101\">3101</a>) and talk about the geometry of curved 2D surfaces such as that of a sphere.</p>\r\n<p>Using the Earth\'s surface as an example we can use familiar the co-ordinates of longitude and latitude, illustrated on this diagram:</p>\r\n<img alt=\"Sphere with latitude and longitude\" src=\"https://hackerpublicradio.org/eps/hpr3126/hpr3126/FedStats_Lat_long.png\">\r\n\r\n<p><em>Source: Public domain, <a href=\"https://commons.wikimedia.org/wiki/File:FedStats_Lat_long.png\">Wikimedia commons</a></em></p>\r\n<p>On the left we see circles of constant latitude. The largest of these circles is at latitude 0° and is called the <strong>equator</strong>. Its circumference is equal to that of the Earth and so it is an example of a <strong>great circle</strong>.</p>\r\n<p>On the right we see lines of constant longitude. These run from pole to pole and are perpendicular to the equator. Each of these lie on a great circle (in fact they are half a great circle each).</p>\r\n<p>Great circles on the surface of a sphere are analogous to straight lines on a flat 2D surface. They offer a way to connect any two points with the shortest distance. Lines in 2D or great circles on a sphere are examples of what is called a <strong>geodesic</strong>. In physics, particles that are not subject to any forces will follow geodesics.</p>\r\n<p>In Einstein\'s General Theory of Relativity, the presence of mass or energy will alter the shape of spacetime and that will determine the metric. From the metric you can derive the geodesics and from that you can predict the motion of objects with no forces acting on them. In this way you can do away with the approximation that is Newton\'s gravitational force and replace it by a description that only involves the curvature of spacetime. I only touch on this in this show but will likely return to it in future shows.</p>\r\n<p>Here are the equations discussed in this show and the previous one:</p>\r\n<img alt=\"Sphere with latitude and longitude\" src=\"https://hackerpublicradio.org/eps/hpr3126/hpr3126/metric_equations.png\">\r\n\r\n',268,0,0,'CC-BY-SA','maths,relativity,physics,earth',0,0,1),
(3122,'2020-07-21','Devuan review - and commentary',2086,'Devuan  Review plus I talk about race','<p>\r\nFrom <a href=\"https://en.wikipedia.org/wiki/Devuan\">Wikipedia</a>, the free encyclopedia\r\n</p>\r\n<p>\r\n<b><a href=\"https://devuan.org/\">Devuan</a></b> is a fork Debian that uses sysvinit or OpenRC instead of systemd, which is the default in newer Debian releases. The Devuan development team aim to maintain compatibility with other init systems in the future and not detach Linux from other Unix systems.\r\n</p>\r\n<p>\r\n<small>[Edit: Ken 2020-07-21]</small>\r\n</p>\r\n<p>\r\nA significant portion of this show relates to the U.S Supreme Court decision in the case of <a href=\"https://www.supremecourt.gov/opinions/19pdf/18-9526_9okb.pdf\">McGIRT v. OKLAHOMA</a>, and speculation as to possible ramifications.\r\n</p>\r\n\r\n',377,0,0,'CC-BY-SA','Devuan, Debian, sysvinit, OpenRC, systemd',0,0,1),
(3190,'2020-10-23','GIMP Brushes',1219,'Paint tools, and particularly the Paintbrush Tool, require the use of brushes.','<p>Brushes are a key part of using Paint tools, and in particular the Paintbrush Tool. And in this episode we look at how to work with, edit, download, and save different brushes. We look at the Brush Dialog, and examine the different settings that make them easier to work with.</p>\r\n<p>Links:</p>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.8/en/\" class=\"uri\">https://docs.gimp.org/2.8/en/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/paint-tools/\" class=\"uri\">https://www.ahuka.com/gimp/paint-tools/</a></li>\r\n<li><a href=\"https://franz.com/support/documentation/current/doc/cg/cg-pixmaps.htm\" class=\"uri\">https://franz.com/support/documentation/current/doc/cg/cg-pixmaps.htm</a></li>\r\n<li><a href=\"https://ergodic.ugr.es/cphys_pedro/unix/athena5.html\" class=\"uri\">https://ergodic.ugr.es/cphys_pedro/unix/athena5.html</a></li>\r\n<li><a href=\"https://conceptartempire.com/gimp-brushes/\" class=\"uri\">https://conceptartempire.com/gimp-brushes/</a></li>\r\n<li><a href=\"https://opensource.com/article/17/10/7-must-have-gimp-brushes\" class=\"uri\">https://opensource.com/article/17/10/7-must-have-gimp-brushes</a></li>\r\n<li><a href=\"https://logosbynick.com/free-download-gimp-brushes/\" class=\"uri\">https://logosbynick.com/free-download-gimp-brushes/</a></li>\r\n<li><a href=\"https://daviesmediadesign.com/the-best-free-brushes-for-gimp-in-2020/\" class=\"uri\">https://daviesmediadesign.com/the-best-free-brushes-for-gimp-in-2020/</a></li>\r\n<li><a href=\"https://www.makeuseof.com/tag/install-gimp-brushes/\" class=\"uri\">https://www.makeuseof.com/tag/install-gimp-brushes/</a></li>\r\n<li><a href=\"https://www.deviantart.com/\" class=\"uri\">https://www.deviantart.com/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/brushes/\" class=\"uri\">https://www.ahuka.com/gimp/brushes/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, brushes',0,0,1),
(3129,'2020-07-30','Followup on HPR3122',2157,'Followup on HPR3122 and *MORE* - percent *MORE* undescribed','https://www.youtube.com/watch?v=OFWCbGzxofU',377,0,0,'CC-BY-SA','Followups MORE',0,0,1),
(3127,'2020-07-28','HPR AudioBook Club 20 - Quarter Share',9131,'The HPR Audiobook Club reviews the audiobook Quarter Share by Nathan Lowell','<h1 id=\"in-this-episode-the-hpr-audiobook-club-discusses-the-audiobook-quarter-share-by-nathan-lowell\">In this episode the HPR Audiobook Club discusses the audiobook <a href=\"https://scribl.com/books/P2A75/quarter-share\">Quarter Share</a> by Nathan Lowell</h1>\r\n<hr />\r\n<h1 id=\"non-spoiler-thoughts\">Non-Spoiler Thoughts</h1>\r\n<hr />\r\n<ul>\r\n<li>This may be Pokey\'s all time favorite audiobook.</li>\r\n<li>This book takes the \'fish out of water\" trope and turns it on it head to a certain extent.</li>\r\n<li>Is Klaatu really Bilbo Baggins?</li>\r\n<li>Ishmael Wang is kinda our hero.</li>\r\n<li>So Traveller is a huge influence on these books.</li>\r\n<li>You know you want to deep dive on the lore of this universe. <a href=\"https://solarclipper.com/\">Go ahead</a>.</li>\r\n<li>Buy more Nathan Lowell books.</li>\r\n<li>WWID, What Would Ishmael Do</li>\r\n<li>Excellent recording, despite equipment of dubious quality.</li>\r\n<li>Solar Clipper Universe vs. StarDrifter Universe, and how we are fantastically lucky to have both.</li>\r\n</ul>\r\n<h1 id=\"beverage-reviews\">Beverage Reviews</h1>\r\n<hr />\r\n<p>As usual, the HPR AudioBook Club took some time to review the beverages that each of us were drinking during the episode</p>\r\n<ul>\r\n<li><strong>Thaj:</strong> Grapefruit Juice, simple, delicious.</li>\r\n<li><strong>x1101:</strong> Shipyards Signature Series IPA</li>\r\n<li><strong>pokey:</strong> I like Roma Sambuka in my coffee. It\'s muggy here today, so I\'m happy to discover that it\'s just as good in ice coffee. Roma Sambuka does not seem to have a website. The trick, imho, is to make your coffee as you normally would, then add the booze. Don\'t adjust for the booze, other than using a bigger glass.</li>\r\n<li><strong>FiftyOneFifty:</strong> <a href=\"https://olesmoky.com/pages/distillery\">Ole Smokey Tennessee Moonshine</a></li>\r\n</ul>\r\n<h1 id=\"things-we-talked-about\">Things We talked about</h1>\r\n<hr />\r\n<ul>\r\n<li>We definitely can\'t keep these books straight. Just read them all. You\'ll thank us.</li>\r\n<li>Pokey found a plot bullet, maybe. Thaj may disagree.</li>\r\n<li>All the characters are there for a reason.</li>\r\n<li>Nathan\'s reading voice is perfect for this series.</li>\r\n<li>Wormholes, wormholes, wormholes.</li>\r\n<li>We discuss the details of how to use the technology from this series to fly into a system.</li>\r\n<li>Pokey wishes promotions in the real world worked they way they work on the ship.</li>\r\n<li>Find the Podiobook Easter eggs.</li>\r\n</ul>\r\n<h1 id=\"our-next-audiobook\">Our Next Audiobook</h1>\r\n<hr />\r\n<p><a href=\"https://scribl.com/books/P98FB/the-terrible-business-of-salmon-and-dusk\">The Terrible Business of Salmon &amp; Dusk</a></p>\r\n<h1 id=\"the-next-audiobook-club-recording\">The Next Audiobook Club Recording</h1>\r\n<hr />\r\n<p>Right now we are working through a backlog of older episode that have already been recorded. Once that ends we fully anticipate recording new episodes with listener participation.</p>\r\n<h1 id=\"further-recommendations\">Further Recommendations</h1>\r\n<hr />\r\n<ul>\r\n<li>Daredevil</li>\r\n<li>The DCEU</li>\r\n<li>We talk about a picture I can no longer find a link for.</li>\r\n<li>Pokey gets a new <a href=\"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fi.ytimg.com%2Fvi%2FMey_Q4ZhvD4%2Fmaxresdefault.jpg&amp;f=1&amp;nofb=1\">motorcycle</a>.</li>\r\n<li>FiftyOneFifty talks about actual computer stuff.</li>\r\n<li>Windows probs...</li>\r\n<li>Web Browsers editorializing the Internet.</li>\r\n<li>Is Flash dead yet?</li>\r\n</ul>\r\n<h1 id=\"feedback\">Feedback</h1>\r\n<hr />\r\n<p>Thank you very much for listening to this episode of the HPR AudioBookClub. We had a great time recording this show, and we hope you enjoyed it as well. We also hope you\'ll consider joining us next time we record a new episode. Please leave a few words in the episode\'s comment section.</p>\r\n<p>As always; remember to visit the HPR contribution page HPR could really use your <a href=\"https://hackerpublicradio.org/help_out.php\">help</a> right now.</p>\r\n<p>Sincerely, The HPR Audiobook Club</p>\r\n<p><em>P.S. Some people really like finding mistakes. For their enjoyment, we always include a few.</em></p>\r\n<h1 id=\"our-audio\">Our Audio</h1>\r\n<hr />\r\n<p>This episode was processed using <a href=\"https://audacity.sourceforge.net/\">Audacity</a>. We\'ve been making small adjustments to our audio mix each month in order to get the best possible sound. Its been especially challenging getting all of our voices relatively level, because everyone has their own unique setup. Mumble is great for bringing us all together, and for recording, but it\'s not good at making everyone\'s voice the same volume. We\'re pretty happy with the way this month\'s show turned out, so we\'d like to share our editing process and settings with you and our future selves (who, of course, will have forgotten all this by then).</p>\r\n<p>We use the \"Truncate Silence\" effect with it\'s default settings to minimize the silence between people speaking. When used with it\'s default (or at least reasonable) settings, Truncate Silence is extremely effective and satisfying. It makes everyone sound smarter, it makes the file shorter without destroying actual content, and it makes a conversations sound as easy and fluid during playback as it was while it was recorded. It can be even more effective if you can train yourself to remain silent instead of saying \"uuuuummmm.\" Just remember to ONLY pass the file through Truncate Silence ONCE. If you pass it through a second time, or if you set it too aggressively your audio may sound sped up and choppy.</p>\r\n<p>Next we use the \"Compressor\" effect with the following settings:</p>\r\n<pre><code>    Threshold: -30db\r\n    Noise Floor: -50db\r\n    Ratio: 3:1\r\n    Attack Time: 0.2sec\r\n    Decay Time: 1.0 sec\r\n</code></pre>\r\n<p>\"Make-up Gain for 0db after compressing\" and \"compress based on peaks\" were both left un-checked.</p>\r\n<p>After compressing the audio we cut any pre-show and post-show chatter from the file and save them in a separate file for possible use as outtakes after the closing music.</p>\r\n<p>We adjust the Gain so that the VU meter in Audacity hovers around -12db while people are speaking, and we try to keep the peaks under -6db, and we adjust the Gain on each of the new tracks so that all volumes are similar, and more importantly comfortable. Once this is done we can \"Mix and Render\" all of our tracks into a single track for export to the .FLAC file which is uploaded to the HPR server.</p>\r\n<p>At this point we listen back to the whole file and we work on the shownotes. This is when we can cut out anything that needs to be cut, and we can also make sure that we put any links in the shownotes that were talked about during the recording of the show. We finish the shownotes before exporting the .aup file to .FLAC so that we can paste a copy of the shownotes into the audio file\'s metadata.</p>\r\n<p>At this point we add new, empty audio tracks into which we paste the intro, outro and possibly outtakes, and we rename each track accordingly.</p>\r\n<p>Remember to save often when using Audacity. We like to save after each of these steps. Audacity has a reputation for being \"crashy\" but if you remember save after every major transform, you will wonder how it ever got that reputation.</p>\r\n',157,53,1,'CC-BY-SA','Nathan Lowell, Audiobooks, SciFi, Space Opera',0,0,1),
(3132,'2020-08-04','Keeping track of where I am',1362,'How I keep track of where I am','<p>This episode covers how I keep track of what I\'m listening to</p>\r\n<p>I almost never produced this podcast as I discovered part way through that I had covered it in my show \"Describing how I listen to podcasts PART 2\" (HPR 2889). I\'m conscious I have a tendency to repeat myself in real life, I think this is because I have such a terrible memory. Despite this I decided to continue with the episode but will go into subject in a bit more detail.</p>\r\n<p>These ideas slowly evolved over time and I think some of them may now be redundant. I think I need to do some tidying.</p>\r\n<p>As I\'ve previously mention I used cordless headphones to listen to my podcasts and audiobooks. The headphones come with base transmitter which was originally plugged into my old Compaq home server. This server was generally turned on when I came home from work and turned off before going to bed. Each night I had to remember which track I was on and where about in the track. I often forgot and had to try and find the place again. This quickly became a tiresome task.</p>\r\n<p>My first solution was to use some bash Kung Fu jiggery pokery to create list of files which I placed in each podcast folder. In the process I learned a bit about using bash commands.</p>\r\n<p>Command used to create index</p>\r\n<pre><code>id3v2 -l *.mp3 | grep &#39;TIT2&#39; | cut -c44- &gt;&gt; readme.txt\r\nid3v2 -l *.mp3 | grep &#39;TIT2&#39; | cut -c44- | egrep &#39;HPR[01][9][7-9]&#39; &gt;&gt; readme.txt\r\nid3v2 -l *.mp3 | grep &#39;TIT2&#39; | cut -c44- | egrep &#39;HPR[1-9]&#39; |less &gt;&gt; readme.txt\r\n========================================================\r\n========================================================</code></pre>\r\n<p>Example output</p>\r\n<pre><code>epr0006.mp3 - dosman                            complete\r\nhpr0010.mp3 - linux boot process, part 1        complete\r\nhpr0012.mp3 - zen virtulization                 complete\r\nhpr0018.mp3 - book review                       complete</code></pre>\r\n<p>The downside of this was that at the end of each night I had to remember to update my file lists recording what I had listened to and what position I was in within the track. From time to time I had to update this list by appending the latest episodes sitting on my server using the previous id3v2 command.</p>\r\n<p>As you can imagine this took up a fair amount of time and became very tiresome, I would sometimes forget to do it this would cause me a headache next time I started listening to my podcasts.</p>\r\n<p>My next solution involved creating a bash script that attempted to persuade my music player moc to find the track I was previously listening to.</p>\r\n<p>The script sometimes worked but it was a bit flaky and didn\'t always work.</p>\r\n<p>My final solution is in multiple parts</p>\r\n<p>The 1st part consists of a bash script and a log file, it\'s a handy way of checking the last podcast episode and last position, this information is recorded to the log file when the front end of moc is exited by hitting Q. Of course this doesn\'t work if mocp closes for any other reason ie if I forgot to hit Q or my Pi crashed.</p>\r\n<p>First script</p>\r\n<pre><code>~/scripts/podcasts\r\n\r\nquick lash up of script created 29/12/12 (DD/MM/YY)\r\nCreated to keep track of last position of listened podcast\r\n\r\nScript displays last 4 lines of logfile &quot;podcasts.txt&quot;\r\nThe four lines consist of a Dashed line separator, the last recorded Track\r\nTitle, last recorded Filename and the last recorded track position.\r\nThe script then pauses and displays a message saying\r\npress any key to continue.\r\nRuns mocp\r\nWhen the frontend of mocp exits\r\nThe script gets the current track filename\r\nIf the result is empty ie no filename then\r\n    exit with error saying (moc was not playing anything)\r\nif not empty\r\n    append a dashed line separator, the current track title, the current\r\n    filename, the current track position to logfile it then display last 4 lines\r\n    of logfile and exits the script\r\n\r\nSo in essence I get a reminder of the track and position I&#39;m listening to\r\nevery time a start or stop the front end of moc\r\n\r\nThe logfile located at /home/pi/scripts/podcast.txt\r\npodcasts.txt as of 4th October 2019 is 168KB in size and currently has 4904\r\nlines as each entry has 4 lines this means it currently contains 1226 entries.</code></pre>\r\n<p>The 2nd script I use runs as a cron job every night at 11.01pm. This script keeps track of all the files copied to the MP3 directory of my raspberry pi, this is where I put my podcasts that I want to listen to. I can then grep the log file to see the latest version of a particular episodes that\'s been copied to my mp3 directory as from time to time I delete the episodes I\'ve listened to before copying new ones in.</p>\r\n<pre><code>~/scripts/update-podcast-episode-log\r\n Below are the comments taken directly from my script\r\nCreated to keep track of the latest podcast episode I&#39;ve\r\nlistened to it does this by logging the contents\r\nof the mp3 directory on the raspberry pi.\r\nThe script checks the logfile exists, then checks the\r\npodcast (mp3) directory exists, it then use the find\r\ncommand to list the files in the mp3 directory and send the  listing to a log\r\nfile, a date stamp is added at the beginning of the listing.\r\nV1 11 July 2015\r\n\r\nLogfile located at /home/pi/files/logs/podcast-episodes.log\r\nAs of the 4th October 2019 the log file is an impressive 688Kb containing\r\na whopping 28,158 lines, the first entry was dated  15th July 2013</code></pre>\r\n<p>The 3rd script is also runs as a cron job every every night at 11.00pm</p>\r\n<pre><code>/home/pi/scripts/update-podcast-position-log\r\nBelow are the comments taken directly from my script\r\nCreated to log current position of current podcast\r\nThe script checks the logfile exists, then checks that mocp  is installed on\r\nthe system it then writes a timestamp, and track position information to\r\na logfile using moc with -Q flag to get current track position, track title\r\n&amp; file name\r\nV1 Created by MrX 11th July 2015\r\n\r\nLogfile located at /home/pi/files/logs/podcast-position.log\r\nSize is 148Kb as of 4th October 2019 currently has a 1495 lines, the first\r\nentry was dated 15th July 2013</code></pre>\r\n<p>Example logfile output</p>\r\n<pre><code>15:09:06:23:01 | 01:12 | Dave Morriss - HPR1811: Life and Times of a Geek part 2 (Hacker Public Radio) | hpr1811.mp3\r\n\r\nYY:MM:DD:HH:MM | Track position (MM:SS) | ID3 track title | Filename</code></pre>\r\n<p>The 4th script is identical to the previous script but is used to update the current audiobook position to a log file, like the previous script it runs as a cron job every night.</p>\r\n<pre><code>/home/pi/scripts/update-audiobook-position-log</code></pre>\r\n<p>The 5th and final script</p>\r\n<pre><code>home/pi/scripts/logs</code></pre>\r\n<p>Was created to easily view podcast and audiobook logs The script first checks that the logfiles exists, then displays the last three lines of my podcasts and audiobooks logs so I can quickly see the most recent episode positions that were stored by the cron jobs at 11pm.</p>\r\n<p>Logs are:-</p>\r\n<pre><code>/home/pi/files/logs/podcast-position.log\r\n/home/pi/files/logs/audiobook-position.log</code></pre>\r\n<h3 id=\"v1-created-by-mrx-13th-july-2015\">V1 Created by MrX 13th July 2015</h3>\r\n<h3 id=\"v2-updated-by-mrx-8th-august-2015\">V2 Updated by MrX 8th August 2015</h3>\r\n<p>This added an option to seach for a string in my episodes position logs to easily find out what the last episode I listened to of a particular book or podcast, the output is piped to less as numerous lines can be returned.</p>\r\n<p>if more than one argument is given then it displays an error and usage message</p>\r\n<h3 id=\"v3-updated-by-mrx-21st-jul-2017\">V3 Updated by MrX 21st Jul 2017</h3>\r\n<p>If a single argument is given now jumps to end of list rather than beginning, this was achieved by using the +G flag with less command.</p>\r\n<p>The script displays contents of logfiles</p>\r\n<pre><code>/home/pi/files/logs/podcast-position.log\r\n/home/pi/files/logs/audiobook-position.log</code></pre>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3132/hpr3132/logs\" class=\"uri\">https://hackerpublicradio.org/eps/hpr3132/hpr3132/logs</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3132/hpr3132/update-podcast-episode-log\" class=\"uri\">https://hackerpublicradio.org/eps/hpr3132/hpr3132/update-podcast-episode-log</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3132/hpr3132/update-podcast-position-log\" class=\"uri\">https://hackerpublicradio.org/eps/hpr3132/hpr3132/update-podcast-position-log</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3132/hpr3132/index.html\" class=\"uri\">https://hackerpublicradio.org/eps/hpr3132/hpr3132/index.html</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3132/hpr3132/update-audiobook-position-log\" class=\"uri\">https://hackerpublicradio.org/eps/hpr3132/hpr3132/update-audiobook-position-log</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3132/hpr3132/podcasts\" class=\"uri\">https://hackerpublicradio.org/eps/hpr3132/hpr3132/podcasts</a></li>\r\n</ul>\r\n',201,0,1,'CC-BY-SA','Linux, bash, podcasts, audio, scripts',0,0,1),
(3149,'2020-08-27','HPR AudioBook Club 21  - The Terrible Business of Salmon and Dusk',6342,'The HPR Audiobook Club reviews the audiobook The Terrible Business of Salmon and Dusk by Myke Bartle','<h1 id=\"in-this-episode-the-hpr-audiobook-club-discusses-the-audiobook-the-terrible-business-of-salmon--dusk-by-myke-bartlett\">In this episode the HPR Audiobook Club discusses the audiobook <a href=\"https://scribl.com/books/P98FB/the-terrible-business-of-salmon-and-dusk\">The Terrible Business of Salmon &amp; Dusk</a> by Myke Bartlett</h1>\r\n<hr />\r\n<h1 id=\"non-spoiler-thoughts\">Non-Spoiler Thoughts</h1>\r\n<hr />\r\n<ul>\r\n<li>The terrible business of trying to listen to this book (technical difficulties abound)</li>\r\n<li>We talk about the audio players we tried to get around the technical difficulties.</li>\r\n<li>This book is a weird world.</li>\r\n<li>The reading performance is great, and the audio quality is good (minus technical difficulties).</li>\r\n<li>The is a clear distinction between characters by the reader using voice and accents.</li>\r\n<li>This pushes the definition of \"magical realism\". Perhaps \"surrealistic\" is a better description.</li>\r\n<li>The world is slightly more interesting than the characters.</li>\r\n</ul>\r\n<h1 id=\"beverage-reviews\">Beverage Reviews</h1>\r\n<hr />\r\n<p>As usual, the HPR AudioBook Club took some time to review the beverages that each of us were drinking during the episode</p>\r\n<ul>\r\n<li><strong>Thaj:</strong> Water and <a href=\"https://f-droid.org/en/packages/de.ph1b.audiobook/\">Material Player which is now called Voice</a></li>\r\n<li><strong>x1101:</strong> <a href=\"https://www.blacksheepbrewery.com/our-beers/monty-python/holy-grail/\">Monty Python\'s Holy <s>Gr</s>ail - Black Knight\'s Reserve</a></li>\r\n<li><strong>pokey:</strong> <a href=\"https://longtrail.com/age-verification?destination=beers/double-bag%C2%AE\">Long Trail Double Bag Ale</a> and <a href=\"https://racewithrusty.com/\">The Rusty Wallace Formula Experience</a></li>\r\n</ul>\r\n<h1 id=\"things-we-talked-about\">Things We talked about</h1>\r\n<hr />\r\n<ul>\r\n<li>Why are two sticks of chalk important?</li>\r\n<li>Does this end by not ending?</li>\r\n<li>Thaj thinks this is trying too hard to be clever. Both and Thaj and x1101 think Tincture does weird better.</li>\r\n<li>Is the fallen a metaphor for depression?</li>\r\n<li>What is going on with The Albion?</li>\r\n<li>\"There are a <em>LOT</em> of things that can use a little more explanation.\"</li>\r\n<li>Thaj thinks <a href=\"https://en.wikipedia.org/wiki/The_Rainbow_Thief\">The Rainbow Thief</a> and <a href=\"https://en.wikipedia.org/wiki/Adjustment_Team\">Adjustment Team</a> may be inspirations for this story. Pokey raises with Sherlock Holmes and Doctor Who.</li>\r\n<li>Also <a href=\"https://en.wikipedia.org/wiki/Kato_(The_Green_Hornet)\">Kato</a> from The Green Hornet...</li>\r\n<li>We disagree about how the time travel was done.</li>\r\n<li>Nero is the character we all felt the easiest to follow.</li>\r\n</ul>\r\n<h1 id=\"our-next-audiobook\">Our Next Audiobook</h1>\r\n<hr />\r\n<p><a href=\"https://scribl.com/books/P4C82/murder-at-avedon-hill\">Murder at Avedon Hill</a> by P.G. Holyfield</p>\r\n<h1 id=\"the-next-audiobook-club-recording\">The Next Audiobook Club Recording</h1>\r\n<hr />\r\n<p>Right now we are working through a backlog of older episode that have already been recorded. Once that ends we fully anticipate recording new epsiodes with listener participation.</p>\r\n<h1 id=\"further-recommendations\">Further Recommendations</h1>\r\n<hr />\r\n<ul>\r\n<li>Pokey goes to the races.</li>\r\n<li>Sometimes it\'s just easier to nuke and pave.</li>\r\n<li>New (Old) phones.</li>\r\n<li>Android File Explorers</li>\r\n<li>Audio Book Player Link: <a href=\"https://material-player.en.uptodown.com/android\">https://material-player.en.uptodown.com/android</a></li>\r\n<li>F-Droid link: Audiobook player now renamed Voice <a href=\"https://f-droid.org/en/packages/de.ph1b.audiobook/\">https://f-droid.org/en/packages/de.ph1b.audiobook/</a></li>\r\n</ul>\r\n<h1 id=\"feedback\">Feedback</h1>\r\n<hr />\r\n<p>Thank you very much for listening to this episode of the HPR AudioBookClub. We had a great time recording this show, and we hope you enjoyed it as well. We also hope you\'ll consider joining us next time we record a new episode. Please leave a few words in the episode\'s comment section.</p>\r\n<p>As always; remember to visit the HPR contribution page HPR could really use your <a href=\"https://hackerpublicradio.org/help_out.php\">help</a> right now.</p>\r\n<p>Sincerely, The HPR Audiobook Club</p>\r\n<p><em>P.S. Some people really like finding mistakes. For their enjoyment, we always include a few.</em></p>\r\n<h1 id=\"our-audio\">Our Audio</h1>\r\n<hr />\r\n<p>This episode was processed using <a href=\"https://audacity.sourceforge.net/\">Audacity</a>. We\'ve been making small adjustments to our audio mix each month in order to get the best possible sound. Its been especially challenging getting all of our voices relatively level, because everyone has their own unique setup. Mumble is great for bringing us all together, and for recording, but it\'s not good at making everyone\'s voice the same volume. We\'re pretty happy with the way this month\'s show turned out, so we\'d like to share our editing process and settings with you and our future selves (who, of course, will have forgotten all this by then).</p>\r\n<p>We use the \"Truncate Silence\" effect with it\'s default settings to minimize the silence between people speaking. When used with it\'s default (or at least reasonable) settings, Truncate Silence is extremely effective and satisfying. It makes everyone sound smarter, it makes the file shorter without destroying actual content, and it makes a conversations sound as easy and fluid during playback as it was while it was recorded. It can be even more effective if you can train yourself to remain silent instead of saying \"uuuuummmm.\" Just remember to ONLY pass the file through Truncate Silence ONCE. If you pass it through a second time, or if you set it too aggressively your audio may sound sped up and choppy.</p>\r\n<p>Next we use the \"Compressor\" effect with the following settings:</p>\r\n<pre><code>    Threshold: -30db\r\n        Noise Floor: -50db\r\n        Ratio: 3:1\r\n        Attack Time: 0.2sec\r\n        Decay Time: 1.0 sec\r\n</code></pre>\r\n<p>\"Make-up Gain for 0db after compressing\" and \"compress based on peaks\" were both left un-checked.</p>\r\n<p>After compressing the audio we cut any pre-show and post-show chatter from the file and save them in a separate file for possible use as outtakes after the closing music.</p>\r\n<p>We adjust the Gain so that the VU meter in Audacity hovers around -12db while people are speaking, and we try to keep the peaks under -6db, and we adjust the Gain on each of the new tracks so that all volumes are similar, and more importantly comfortable. Once this is done we can \"Mix and Render\" all of our tracks into a single track for export to the .FLAC file which is uploaded to the HPR server.</p>\r\n<p>At this point we listen back to the whole file and we work on the shownotes. This is when we can cut out anything that needs to be cut, and we can also make sure that we put any links in the shownotes that were talked about during the recording of the show. We finish the shownotes before exporting the .aup file to .FLAC so that we can paste a copy of the shownotes into the audio file\'s metadata.</p>\r\n<p>At this point we add new, empty audio tracks into which we paste the intro, outro and possibly outtakes, and we rename each track accordingly.</p>\r\n<p>Remember to save often when using Audacity. We like to save after each of these steps. Audacity has a reputation for being \"crashy\" but if you remember save after every major transform, you will wonder how it ever got that reputation.</p>\r\n',157,53,1,'CC-BY-SA','Audiobook, Review, Creative Commons',0,0,1),
(3133,'2020-08-05','Quick tip - Using MPV with Youtube links',124,'I give a quick tip on shortcut keys for watching Youtube or other video sites in MPV','<h3 id=\"idea\">Idea:</h3>\r\n<p>Quickly copy a Youtube or other video site, and open in the MPV media player.</p>\r\n<h4 id=\"plugins\">Plugins:</h4>\r\n<p>Vim Vixen for Firefox<br />\r\n<a href=\"https://addons.mozilla.org/en-US/firefox/addon/vim-vixen\" class=\"uri\">https://addons.mozilla.org/en-US/firefox/addon/vim-vixen</a></p>\r\n<p>Surfingkeys for Chrome/Chromium browser<br />\r\n<a href=\"https://chrome.google.com/webstore/detail/surfingkeys/gfbliohnnapiefjpjlpjnehglfpaknnc?hl=en-US\" class=\"uri\">https://chrome.google.com/webstore/detail/surfingkeys/gfbliohnnapiefjpjlpjnehglfpaknnc?hl=en-US</a></p>\r\n<h4 id=\"script\">Script:</h4>\r\n<pre><code>#!/bin/bash\r\n## mpvurl\r\n\r\nurl=`xsel -o -b`\r\necho $url\r\nmpv $url</code></pre>\r\n<p>Rename <code>/usr/bin/vlc</code> to <code>/usr/bin/vlc.old</code></p>\r\n<p>Copy script to <code>/usr/bin/vlc</code> and <code>chmod +x /usr/bin/vlc</code></p>\r\n<h4 id=\"how-to-use\">How to use:</h4>\r\n<p>Vim Vixen copy is \'y\' Surfingkeys copy is \'yy\'</p>\r\n<p>Shortcut to open copied video url is Shift-Mod-p, with Mod being the windows key</p>\r\n<p>Tested with Gnome3, Xfce and i3</p>\r\n<p>In i3, press Mod+v then Mod+s.</p>\r\n<p>Any video played this way will be stacked under Firefox/Chromium for the rest of your session.</p>\r\n<h4 id=\"config\">Config:</h4>\r\n<p>In ~/.config/i3/config</p>\r\n<pre><code>#Paste url into mpv player\r\nbindsym $mod+Shift+p exec vlc</code></pre>\r\n<h3 id=\"example-screenshots\">Example screenshots:</h3>\r\n<p>Example of stacked Firefox/MPV layout<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3133/hpr3133/img_001.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3133/hpr3133/img_001_thumbnail.png\" alt=\"Example of stacked Firefox/MPV layout\" /></a></p>\r\n<p>For Gnome3 the setting can be reached with Mod (Windows key) and Shortcuts<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3133/hpr3133/img_002.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3133/hpr3133/img_002_thumbnail.png\" alt=\"For Gnome3 the setting can be reached with Mod (Windows key) and Shortcuts\" /></a></p>\r\n<p>And the Default Applications need to be changed<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3133/hpr3133/img_003.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3133/hpr3133/img_003_thumbnail.png\" alt=\"And the Default Applications need to be changed\" /></a></p>\r\n<p>The setting for Shortcuts in Xfce looks like this<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3133/hpr3133/img_004.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3133/hpr3133/img_004_thumbnail.png\" alt=\"The setting for Shortcuts in Xfce looks like this\" /></a></p>\r\n',318,0,0,'CC-BY-SA','Video, media, bash, i3, Gnome3, Xfce',0,0,1),
(3416,'2021-09-06','HPR Community News for August 2021',5765,'Ken\'s not available so MrX joins Dave to talk about the shows and comments in August','<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=3391\" target=\"_blank\">3391</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-08-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3391\" target=\"_blank\">HPR Community News for July 2021</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3392\" target=\"_blank\">3392</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-08-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3392\" target=\"_blank\">Structured error reporting</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=3393\" target=\"_blank\">3393</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-08-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3393\" target=\"_blank\">We need to talk about XML</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=3394\" target=\"_blank\">3394</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-08-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3394\" target=\"_blank\">Be an XML star with xmlstarlet</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=3395\" target=\"_blank\">3395</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-08-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3395\" target=\"_blank\">Hacking Stories with Reacted: part 1</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=3396\" target=\"_blank\">3396</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-08-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3396\" target=\"_blank\">Card roles in Magic the Gathering</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=3397\" target=\"_blank\">3397</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-08-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3397\" target=\"_blank\">What is a PineTime</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=3398\" target=\"_blank\">3398</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-08-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3398\" target=\"_blank\">Anacron</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=3399\" target=\"_blank\">3399</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-08-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3399\" target=\"_blank\">Linux Inlaws S01E36: Open Source Licenses</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=3400\" target=\"_blank\">3400</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-08-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3400\" target=\"_blank\">Normal Layer Modes: Normal, Dissolve, Color Erase</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=3401\" target=\"_blank\">3401</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-08-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3401\" target=\"_blank\">Mana hacks</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=3402\" target=\"_blank\">3402</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-08-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3402\" target=\"_blank\">Reading a manifesto: Declaration of Digital Autonomy</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=3403\" target=\"_blank\">3403</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-08-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3403\" target=\"_blank\">Forth on microcontrollers</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=3404\" target=\"_blank\">3404</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-08-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3404\" target=\"_blank\">Suse 15.3 Leap</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=3405\" target=\"_blank\">3405</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-08-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3405\" target=\"_blank\">Hacking Stories with Reacted: part 2</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=3406\" target=\"_blank\">3406</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-08-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3406\" target=\"_blank\">A study of cards in games</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=3407\" target=\"_blank\">3407</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-08-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3407\" target=\"_blank\">Software Freedom 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=3408\" target=\"_blank\">3408</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-08-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3408\" target=\"_blank\">Composting</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3409\" target=\"_blank\">3409</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-08-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3409\" target=\"_blank\">Linux Inlaws S01E37: All about Hacker Public Radio</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=3410\" target=\"_blank\">3410</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-08-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3410\" target=\"_blank\">Operating Systems</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=3411\" target=\"_blank\">3411</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-08-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3411\" target=\"_blank\">Dominion card game</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=3412\" target=\"_blank\">3412</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-08-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3412\" target=\"_blank\">Reading a license: Creative Commons Attribution ShareAlike 3.0 Unported</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0311.html\" target=\"_blank\">clacke</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 9 comments on\n5 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3323#comments\" target=\"_blank\">hpr3323</a></strong>\n(2021-04-28) \"<em>The alternate Internet you never knew existed</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=3323#1\" target=\"_blank\">Comment 1</a>:\nbjb on 2021-08-29:\n\"Interesting\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3331#comments\" target=\"_blank\">hpr3331</a></strong>\n(2021-05-10) \"<em>Audio for Podcasting: Episode 1 - The Microphone</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0270.html\" target=\"_blank\">Thaj Sara</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3331#2\" target=\"_blank\">Comment 2</a>:\nbjb on 2021-08-08:\n\"Question about mic positioning\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3377#comments\" target=\"_blank\">hpr3377</a></strong>\n(2021-07-13) \"<em>Chromebook support and more</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3377#2\" target=\"_blank\">Comment 2</a>:\nGuardian on 2021-08-08:\n\"Lousy sound quality abuses audience.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3382#comments\" target=\"_blank\">hpr3382</a></strong>\n(2021-07-20) \"<em>How I fixed a fault on my car for free thanks to YouTube</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>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3382#1\" target=\"_blank\">Comment 1</a>:\nDave Morriss on 2021-08-06:\n\"I hadn\'t quite appreciated what was happening\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3382#2\" target=\"_blank\">Comment 2</a>:\nMrX on 2021-08-07:\n\"Oops\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3382#3\" target=\"_blank\">Comment 3</a>:\nShortFatBaldGuy on 2021-08-28:\n\"Appreciation for episode\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3388#comments\" target=\"_blank\">hpr3388</a></strong>\n(2021-07-28) \"<em>Linux Inlaws S01E35: The Free Software Foundation Europe</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3388#2\" target=\"_blank\">Comment 2</a>:\ndragestil on 2021-08-07:\n\"Regarding RMS\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3388#3\" target=\"_blank\">Comment 3</a>:\nBob on 2021-08-10:\n\"Clarification\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3388#4\" target=\"_blank\">Comment 4</a>:\ndragestil on 2021-08-11:\n\"Re: Clarification\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 15 comments on 7 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3393#comments\" target=\"_blank\">hpr3393</a></strong>\n(2021-08-04) \"<em>We need to talk about XML</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=3393#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2021-08-06:\n\"Thank you.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3393#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2021-08-08:\n\"I loved the show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3394#comments\" target=\"_blank\">hpr3394</a></strong>\n(2021-08-05) \"<em>Be an XML star with xmlstarlet</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3394#1\" target=\"_blank\">Comment 1</a>:\nnorrist on 2021-08-05:\n\"My one cool xmlstarlet trick\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3395#comments\" target=\"_blank\">hpr3395</a></strong>\n(2021-08-06) \"<em>Hacking Stories with Reacted: 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><li><a href=\"https://hackerpublicradio.org/eps.php?id=3395#1\" target=\"_blank\">Comment 1</a>:\nnorrist on 2021-08-06:\n\"Please do more\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3395#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2021-08-09:\n\"I loved this story\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3395#3\" target=\"_blank\">Comment 3</a>:\nBeeza on 2021-08-23:\n\"Social Engineering Access\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3399#comments\" target=\"_blank\">hpr3399</a></strong>\n(2021-08-12) \"<em>Linux Inlaws S01E36: Open Source Licenses</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=3399#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2021-08-14:\n\"Another good show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3400#comments\" target=\"_blank\">hpr3400</a></strong>\n(2021-08-13) \"<em>Normal Layer Modes: Normal, Dissolve, Color Erase</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=3400#1\" target=\"_blank\">Comment 1</a>:\nbjb on 2021-08-12:\n\"Thanks\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3400#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2021-08-12:\n\"You are most welcome\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3407#comments\" target=\"_blank\">hpr3407</a></strong>\n(2021-08-24) \"<em>Software Freedom 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=3407#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2021-08-27:\n\"Great Show.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3410#comments\" target=\"_blank\">hpr3410</a></strong>\n(2021-08-27) \"<em>Operating Systems</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=3410#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2021-08-27:\n\"Love this history\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3410#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2021-08-27:\n\"You are most welcome\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3410#3\" target=\"_blank\">Comment 3</a>:\nJan on 2021-08-27:\n\"Observations\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3410#4\" target=\"_blank\">Comment 4</a>:\nKevin O&#39;Brien on 2021-08-30:\n\"Audio quality\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3410#5\" target=\"_blank\">Comment 5</a>:\nKen Fallon on 2021-08-30:\n\"Can you define broken\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-August/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-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=\"older-hpr-shows-on-archive.org\">Older HPR shows on archive.org</h3>\n<p>This month 10 additional shows in the range 1-870 have been uploaded.</p>\n<p>Since we don\'t want to upload shows without summaries or tags the <em>old shows</em> and <em>tag and summary</em> projects are now tied together. So we will be all the more welcoming of tag and summary updates submitted as described on the <a href=\"https://hackerpublicradio.org/report_missing_tags.php\">summary page</a>.</p>\n<h3 id=\"tags-and-summaries\">Tags and Summaries</h3>\n<p>Thanks to the following contributors for sending in updates in the past month:<br />\n<b><a href=\"https://hackerpublicradio.org/correspondents/0318.html\">Archer72</a>, <a href=\"https://hackerpublicradio.org/correspondents/0293.html\">Rho`n</a>, <a href=\"https://hackerpublicradio.org/correspondents/0030.html\">Ken Fallon</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 108 shows which were without them.</p>\n<p>There are currently 114 shows which need a summary and/or tags.</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),
(3436,'2021-10-04','HPR Community News for September 2021',3268,'HPR Volunteers talk about shows released and comments posted in September 2021','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0395.html\" target=\"_blank\">CoGo</a>, \n    <a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</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=3413\" target=\"_blank\">3413</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-09-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3413\" target=\"_blank\">Bash snippet - using coproc with SQLite</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=3414\" target=\"_blank\">3414</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-09-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3414\" target=\"_blank\">Critical Thinking may make You Critical of the Covid Crisis</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0395.html\" target=\"_blank\">CoGo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3415\" target=\"_blank\">3415</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-09-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3415\" target=\"_blank\">Hacking Stories with Reacted: part 3</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=3416\" target=\"_blank\">3416</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-09-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3416\" target=\"_blank\">HPR Community News for August 2021</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3417\" target=\"_blank\">3417</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-09-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3417\" target=\"_blank\">Ceph cluster hardware</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=3418\" target=\"_blank\">3418</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-09-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3418\" target=\"_blank\">My gEeeky Experiment - Part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0152.html\" target=\"_blank\">Claudio Miranda</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3419\" target=\"_blank\">3419</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-09-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3419\" target=\"_blank\">Linux Inlaws S01E38: Tiny kernels</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=3420\" target=\"_blank\">3420</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-09-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3420\" target=\"_blank\">Normal Layer Modes: Erase, Merge, and Split</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=3421\" target=\"_blank\">3421</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-09-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3421\" target=\"_blank\">BlacKernel\'s Journey Into Technology: Episode 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3422\" target=\"_blank\">3422</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-09-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3422\" target=\"_blank\">Update about Phones and Devices</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=3423\" target=\"_blank\">3423</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-09-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3423\" target=\"_blank\">\"upg.sh\" my \"dump.txt\" to \"note.md\"</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3424\" target=\"_blank\">3424</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-09-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3424\" target=\"_blank\">Infosec Podcasts Part 6 - Infosec Leadership</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3425\" target=\"_blank\">3425</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-09-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3425\" target=\"_blank\">Hacking Stories with Reacted: part 4</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=3426\" target=\"_blank\">3426</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-09-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3426\" target=\"_blank\">Rust 101: Episode 0 - What in Tarnishing?</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3427\" target=\"_blank\">3427</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-09-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3427\" target=\"_blank\">Ranger for the Win!</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0300.html\" target=\"_blank\">Mr. Young</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3428\" target=\"_blank\">3428</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-09-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3428\" target=\"_blank\">Bad disk rescue</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=3429\" target=\"_blank\">3429</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-09-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3429\" target=\"_blank\">Linux Inlaws S01E39: Ubuntu and the Community</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=3430\" target=\"_blank\">3430</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-09-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3430\" target=\"_blank\">Booting</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=3431\" target=\"_blank\">3431</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-09-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3431\" target=\"_blank\">Living in the Terminal</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3432\" target=\"_blank\">3432</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-09-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3432\" target=\"_blank\">Reading a license: Creative Commons Attribution ShareAlike 4.0 International</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=3433\" target=\"_blank\">3433</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-09-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3433\" target=\"_blank\">A Squirrels thoughts about RMS</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=3434\" target=\"_blank\">3434</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-09-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3434\" target=\"_blank\">From 0 to K8s in 30 minutes</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 27 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=3297#comments\" target=\"_blank\">hpr3297</a></strong>\n(2021-03-23) \"<em>Nextcloud Application Updating</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0273.html\" target=\"_blank\">ToeJet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3297#2\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2021-09-21:\n\"+1\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3377#comments\" target=\"_blank\">hpr3377</a></strong>\n(2021-07-13) \"<em>Chromebook support and more</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3377#3\" target=\"_blank\">Comment 3</a>:\nFSA on 2021-09-30:\n\"Sound Quality Trolling?\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 25 comments on 13 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3413#comments\" target=\"_blank\">hpr3413</a></strong>\n(2021-09-01) \"<em>Bash snippet - using coproc with SQLite</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=3413#1\" target=\"_blank\">Comment 1</a>:\nMr. Young on 2021-09-01:\n\"New tool for my toolbox\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3413#2\" target=\"_blank\">Comment 2</a>:\nTrey on 2021-09-02:\n\"Excellent detail!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3413#3\" target=\"_blank\">Comment 3</a>:\nDave Morriss on 2021-09-02:\n\"Re: New tool for my toolbox\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3413#4\" target=\"_blank\">Comment 4</a>:\nDave Morriss on 2021-09-02:\n\"Re: Excellent detail!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3414#comments\" target=\"_blank\">hpr3414</a></strong>\n(2021-09-02) \"<em>Critical Thinking may make You Critical of the Covid Crisis</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0395.html\" target=\"_blank\">CoGo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3414#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2021-09-02:\n\"Controversial topic... Love it!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3414#2\" target=\"_blank\">Comment 2</a>:\ndrad on 2021-09-03:\n\"Great Episode!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3414#3\" target=\"_blank\">Comment 3</a>:\nBarbara Ann Walko on 2021-09-09:\n\"hpr3414\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3414#4\" target=\"_blank\">Comment 4</a>:\nJoel on 2021-09-09:\n\"Excellent analysis!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3415#comments\" target=\"_blank\">hpr3415</a></strong>\n(2021-09-03) \"<em>Hacking Stories with Reacted: part 3</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=3415#1\" target=\"_blank\">Comment 1</a>:\nWillingness on 2021-09-04:\n\"Awesome\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3416#comments\" target=\"_blank\">hpr3416</a></strong>\n(2021-09-06) \"<em>HPR Community News for August 2021</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3416#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2021-09-07:\n\"My former profession\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3417#comments\" target=\"_blank\">hpr3417</a></strong>\n(2021-09-07) \"<em>Ceph cluster hardware</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=3417#1\" target=\"_blank\">Comment 1</a>:\nMichael on 2021-09-08:\n\"Why Ceph?\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3420#comments\" target=\"_blank\">hpr3420</a></strong>\n(2021-09-10) \"<em>Normal Layer Modes: Erase, Merge, and Split</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=3420#1\" target=\"_blank\">Comment 1</a>:\nmu.rupeshkumar@gmail,com on 2021-09-12:\n\"can\'t hear in Mobile\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3420#2\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2021-09-13:\n\"Fixed\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3421#comments\" target=\"_blank\">hpr3421</a></strong>\n(2021-09-13) \"<em>BlacKernel\'s Journey Into Technology: Episode 1</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3421#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2021-09-13:\n\"Welcome &amp; thanks for sharing!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3423#comments\" target=\"_blank\">hpr3423</a></strong>\n(2021-09-15) \"<em>\"upg.sh\" my \"dump.txt\" to \"note.md\"</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3423#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2021-09-15:\n\"Great work\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3426#comments\" target=\"_blank\">hpr3426</a></strong>\n(2021-09-20) \"<em>Rust 101: Episode 0 - What in Tarnishing?</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3426#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2021-09-20:\n\"Thank you.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3426#2\" target=\"_blank\">Comment 2</a>:\nHipstre on 2021-09-20:\n\"Rust 101, Episode 0\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3427#comments\" target=\"_blank\">hpr3427</a></strong>\n(2021-09-21) \"<em>Ranger for the Win!</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0300.html\" target=\"_blank\">Mr. Young</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3427#1\" target=\"_blank\">Comment 1</a>:\njrullo on 2021-09-22:\n\"Vim lover\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3429#comments\" target=\"_blank\">hpr3429</a></strong>\n(2021-09-23) \"<em>Linux Inlaws S01E39: Ubuntu and the Community</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=3429#1\" target=\"_blank\">Comment 1</a>:\nClinton Roy on 2021-09-23:\n\"Just the usual complaint\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3430#comments\" target=\"_blank\">hpr3430</a></strong>\n(2021-09-24) \"<em>Booting</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=3430#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2021-09-24:\n\"Trip down memory lane...\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3430#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2021-09-24:\n\"You are most welcome\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3431#comments\" target=\"_blank\">hpr3431</a></strong>\n(2021-09-27) \"<em>Living in the Terminal</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3431#1\" target=\"_blank\">Comment 1</a>:\nOperat0r on 2021-09-27:\n\"Kids these days!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3431#2\" target=\"_blank\">Comment 2</a>:\nMr. Young on 2021-09-28:\n\"+1 for cnus\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3431#3\" target=\"_blank\">Comment 3</a>:\nsesamemucho on 2021-09-29:\n\"The text\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3431#4\" target=\"_blank\">Comment 4</a>:\nDave Morriss on 2021-09-29:\n\"Very enjoyable\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-September/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-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=\"older-hpr-shows-on-archive.org\">Older HPR shows on archive.org</h3>\n<p>This month 5 additional shows in the range 1-870 have been uploaded.</p>\n<p>Since we don\'t want to upload shows without summaries or tags the <em>old shows</em> and <em>tag and summary</em> projects are now tied together. So we will be all the more welcoming of tag and summary updates submitted as described on the <a href=\"https://hackerpublicradio.org/report_missing_tags.php\">summary page</a>.</p>\n<h3 id=\"tags-and-summaries\">Tags and Summaries</h3>\n<p>Thanks to the following contributors for sending in updates in the past month:<br />\n<b><a href=\"https://hackerpublicradio.org/correspondents/0318.html\">Archer72</a>, <a href=\"https://hackerpublicradio.org/correspondents/0293.html\">Rho`n</a></b></p>\n<p>Over the period tags and/or summaries have been added to 76 shows which were without them.</p>\n<p>There are currently 38 shows which need a summary and/or tags.</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),
(3134,'2020-08-06','Tomorrowland 2020',584,'Explaining the experience of the first virtual music festival','<p>The music festival Tomorrowland was made virtual this year.</p>\r\n<p>Usually, they have 200k visitors over two weekends on a small area of 128 football (soccer) fields. This year they digitally did it all, which was engaging and fun. I\'ve never attended, but I loved this year, where I could be a part of the experience.</p>\r\n<p>This recording was made at 01.00 AM right after the festival had ended, so I still had the hype, totally sober but euphoric.</p>\r\n<ul>\r\n<li><p>Katy Perry<br />\r\n<a href=\"https://www.youtube.com/watch?v=i65puYqFh6Q\" class=\"uri\">https://www.youtube.com/watch?v=i65puYqFh6Q</a></p></li>\r\n<li><p>David Guetta<br />\r\n<a href=\"https://www.youtube.com/watch?v=xs7eqBkQCYM\" class=\"uri\">https://www.youtube.com/watch?v=xs7eqBkQCYM</a></p></li>\r\n</ul>\r\n',382,0,0,'CC-BY-SA','music,dance,house,festival,tomorrowland',0,0,1),
(3136,'2020-08-10','Matchbox Restoration Part 6',286,'Matchbox Cars, Diecast Models, Restoration, Reassembly of the model','<p>Good day to all in HPR land, this is Tony Hughes coming to you again from Blackpool in the UK. To recap this is the 6th in a series of shows about my hobby of restoring Matchbox and other Die cast models. In the last show I went through the process I use to paint and prepare the casting for reassembly. In this episode I will discuss how I put back the wheels onto the base and reassemble the final model, before revealing in the show note pictures how the model came out.</p>\r\n<p>So before putting back the plastic wheels onto the axles I polished the axles in my drill bit using a little bit of fine wet and dry emery paper.</p>\r\n<p>Picture 001<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_001.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_001_thumbnail.jpg\" alt=\"Picture 001\" /></a></p>\r\n<p>After selecting the best 4 of the plastic tyres from the models we originally dismantled I washed these in a little soapy water and after drying they these were fit for putting back on the restored model. The cleaned up axle is assembled on the base with the first tyre in place with the large dome end of the axle sat on a nail punch held in a vice. The second tyre is then placed on the axle and holding this all in place a small hammer is used to peen over the end of the axle by hitting it gently so the end is peened over but the axle does not bend. It is possible to do this stage in a drill press using another nail punch in the drill chuck, but I do not have a drill press at the moment, so have to do this the old school way, with a bit of brute force and ignorance.</p>\r\n<p>Picture 002<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_002.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_002_thumbnail.jpg\" alt=\"Picture 002\" /></a></p>\r\n<p>So we now have all the parts ready for reassembly. The base has the axles and wheels back on, the screen has been polished and the plastic seating given a clean in soapy water and dried, and the body is repainted and ready to go.</p>\r\n<p>Picture 003<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_003.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_003_thumbnail.jpg\" alt=\"Picture 003\" /></a></p>\r\n<p>So being careful not to damage the paint work the casting is placed with the base side up and the window unit is placed into it.</p>\r\n<p>Picture 004<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_004.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_004_thumbnail.jpg\" alt=\"Picture 004\" /></a></p>\r\n<p>Followed by the plastic interior, the eagle eyed among you will notice a colour change to the body work as I forgot to take a picture of this stage on the gold model. You have to ensure that the tab with the tow hitch (yes Matchbox put a tow hitch on a posh car) is fully over the retaining post or the base will not seat properly.</p>\r\n<p>Picture 005<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_005.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_005_thumbnail.jpg\" alt=\"Picture 005\" /></a></p>\r\n<p>The base is then placed back on the model by sliding it over the tab at the front and clicking it down over the rivet post.</p>\r\n<p>Picture 006<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_006.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_006_thumbnail.jpg\" alt=\"Picture 006\" /></a></p>\r\n<p>I then used some \'5 second Fix\' UV glue to glue around the post to hold it in place. You can also drill out the post with a 1.5mm drill and using an M2 tap then use a small M2 screw to hold the base in place, but in this case I was happy with the glue as it was for display and will not be handled frequently enough to require the more secure retention of a screw. With these small models there is a risk of damaging the post while drilling and tapping them so it is personal preference as to the method used to hold it all together at the end.</p>\r\n<p>Picture 007<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_007.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_007_thumbnail.jpg\" alt=\"Picture 007\" /></a></p>\r\n<p>Picture 008<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_008.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_008_thumbnail.jpg\" alt=\"Picture 008\" /></a></p>\r\n<p>The model is now completed and the final picture in the show notes is a small collection of what it looks like now it is ready to display again.</p>\r\n<p>Picture 009<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_009.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3136/hpr3136/img_009_thumbnail.jpg\" alt=\"Picture 009\" /></a></p>\r\n<p>So that is the story of how to restore a Die-cast model back from the dead (well almost). These small models are comparatively easy, but some of the larger scale models with many more parts can take many days to restore, and require a lot of patience to do so. But from small beginnings we all start, and maybe in the future I will feel confident enough to tackle something a little more complicated. I have recently done a few models with opening doors which have a retaining spring holding them in place.</p>\r\n<p>So this short story is finished so this is Tony Hughes for Hacker Public Radio, saying goodbye for now, keep safe everyone and I\'ll be back at some time with another show. At the moment I\'m not sure about what, but I will be back, so Ken can rest assured I still owe him a show.</p>\r\n',338,114,0,'CC-BY-SA','Matchbox Cars, Diecast Models, Restoration, Reassembly of the model',0,0,1),
(3137,'2020-08-11','Coronavirus Update 2020-07-30',1364,'Where we are with this pandemic, and how should we respond?','<p>This is an update to my earlier shows to pull together what we know about the Coronavirus on this date, and what measures we can take. It focuses on the lack of solid information at this point and suggests a prudent course to stay safe. <a href=\"https://www.palain.com/health-topics/coronavirus-update-20200730/\" class=\"uri\">https://www.palain.com/health-topics/coronavirus-update-20200730/</a></p>\r\n<ul>\r\n<li><a href=\"https://jamanetwork.com/journals/jamacardiology/fullarticle/2768916\" class=\"uri\">https://jamanetwork.com/journals/jamacardiology/fullarticle/2768916</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Severe_acute_respiratory_syndrome\" class=\"uri\">https://en.wikipedia.org/wiki/Severe_acute_respiratory_syndrome</a></li>\r\n<li><a href=\"https://www.axios.com/hydroxychloroquine-coronavirus-scott-gottlieb-trump-a7b60575-91db-4239-8c86-59b993c55358.html\" class=\"uri\">https://www.axios.com/hydroxychloroquine-coronavirus-scott-gottlieb-trump-a7b60575-91db-4239-8c86-59b993c55358.html</a></li>\r\n<li><a href=\"https://www.sciencenews.org/article/remdesivir-covid-19-coronavirus-pandemic-gilead\" class=\"uri\">https://www.sciencenews.org/article/remdesivir-covid-19-coronavirus-pandemic-gilead</a></li>\r\n<li><a href=\"https://www.nejm.org/doi/full/10.1056/NEJMoa2021436\" class=\"uri\">https://www.nejm.org/doi/full/10.1056/NEJMoa2021436</a></li>\r\n<li><a href=\"https://news.yale.edu/2020/07/27/yale-lead-trial-potential-covid-19-treatment\" class=\"uri\">https://news.yale.edu/2020/07/27/yale-lead-trial-potential-covid-19-treatment</a></li>\r\n<li><a href=\"https://www.nature.com/articles/s41586-020-2577-1_reference.pdf\" class=\"uri\">https://www.nature.com/articles/s41586-020-2577-1_reference.pdf</a></li>\r\n<li><a href=\"https://news.yale.edu/2020/07/27/yale-lead-trial-potential-covid-19-treatment\" class=\"uri\">https://news.yale.edu/2020/07/27/yale-lead-trial-potential-covid-19-treatment</a></li>\r\n<li><a href=\"https://pubs.acs.org/doi/10.1021/acs.nanolett.0c02278\" class=\"uri\">https://pubs.acs.org/doi/10.1021/acs.nanolett.0c02278</a></li>\r\n<li><a href=\"https://helix.northwestern.edu/article/thalidomide-tragedy-lessons-drug-safety-and-regulation\" class=\"uri\">https://helix.northwestern.edu/article/thalidomide-tragedy-lessons-drug-safety-and-regulation</a></li>\r\n<li><a href=\"https://www.washingtonpost.com/health/7-in-10-americans-would-be-likely-to-get-a-coronavirus-vaccine-a-post-abc-poll-finds/2020/06/01/4d1f8f68-a429-11ea-bb20-ebf0921f3bbd_story.html\" class=\"uri\">https://www.washingtonpost.com/health/7-in-10-americans-would-be-likely-to-get-a-coronavirus-vaccine-a-post-abc-poll-finds/2020/06/01/4d1f8f68-a429-11ea-bb20-ebf0921f3bbd_story.html</a></li>\r\n<li><a href=\"https://nymag.com/intelligencer/2020/07/heres-the-latest-good-and-bad-news-about-covid-19.html\" class=\"uri\">https://nymag.com/intelligencer/2020/07/heres-the-latest-good-and-bad-news-about-covid-19.html</a></li>\r\n<li><a href=\"https://www.cdc.gov/coronavirus/2019-ncov/index.html\" class=\"uri\">https://www.cdc.gov/coronavirus/2019-ncov/index.html</a></li>\r\n<li><a href=\"https://curiositystream.com/\" class=\"uri\">https://curiositystream.com/</a></li>\r\n<li><a href=\"https://www.nature.com/nature/articles?type=nature-podcast\" class=\"uri\">https://www.nature.com/nature/articles?type=nature-podcast</a></li>\r\n<li><a href=\"https://www.youtube.com/user/thehealthcaretriage\" class=\"uri\">https://www.youtube.com/user/thehealthcaretriage</a></li>\r\n<li><a href=\"https://www.palain.com/health-topics/the-hierarchy-of-evidence/\" class=\"uri\">https://www.palain.com/health-topics/the-hierarchy-of-evidence/</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2870\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2870</a></li>\r\n<li><a href=\"https://www.youtube.com/scishow\" class=\"uri\">https://www.youtube.com/scishow</a></li>\r\n<li><a href=\"https://www.youtube.com/playlist?list=PLsNB4peY6C6IQediwz2GzMTNvm_dMzr47\" class=\"uri\">https://www.youtube.com/playlist?list=PLsNB4peY6C6IQediwz2GzMTNvm_dMzr47</a></li>\r\n<li><a href=\"https://www.sciencenews.org/\" class=\"uri\">https://www.sciencenews.org/</a></li>\r\n<li><a href=\"https://nymag.com/intelligencer/2020/07/heres-the-latest-good-and-bad-news-about-covid-19.html\" class=\"uri\">https://nymag.com/intelligencer/2020/07/heres-the-latest-good-and-bad-news-about-covid-19.html</a></li>\r\n<li><a href=\"https://www.palain.com/health-topics/coronavirus-update-20200730/\" class=\"uri\">https://www.palain.com/health-topics/coronavirus-update-20200730/</a></li>\r\n</ul>\r\n',198,100,0,'CC-BY-SA','Health, Coronavirus',0,0,1),
(3138,'2020-08-12','Linux Inlaws S01E12: Reminiscing in FLOSS Weekly',5664,'An interview with Randal Schwartz of FLOSS Weekly fame','<ul>\r\n<li>FLOSS Weekly: <a href=\"https://twit.tv/shows/floss-weekly\" target=\"_blank\">https://twit.tv/shows/floss-weekly</a></li>\r\n<li>Kernel patches for Google Futex enhancements: <a href=\"https://lore.kernel.org/lkml/20200722234538.166697-1-posk@posk.io\" target=\"_blank\">https://lore.kernel.org/lkml/20200722234538.166697-1-posk@posk.io</a></li>\r\n<li>Google presentation on Futexes: <a href=\"ttp://pdxplumbers.osuosl.org/2013/ocw//system/presentations/1653/original/LPC%20-%20User%20Threading.pdf\" target=\"_blank\">https://pdxplumbers.osuosl.org/2013/ocw//system/presentations/1653/original/LPC%20-%20User%20Threading.pdf</a></li>\r\n<li>Fuchsia Futexes: <a href=\"https://fuchsia.dev/fuchsia-src/reference/kernel_objects/futex\" target=\"_blank\">https://fuchsia.dev/fuchsia-src/reference/kernel_objects/futex</a></li>\r\n<li>The show where Simon Phipps flips: <a href=\"https://twit.tv/shows/floss-weekly/episodes/521\" target=\"_blank\">https://twit.tv/shows/floss-weekly/episodes/521</a></li>\r\n<li>Perl 6 / Raku: <a href=\"https://raku.org\" target=\"_blank\">https://raku.org</a></li>\r\n<li>Flutter: <a href=\"https://flutter.dev\" target=\"_blank\">https://flutter.dev</a></li>\r\n<li>Dart: <a href=\"https://dart.dev\" target=\"_blank\">https://dart.dev</a></li>\r\n<li>Mouse door opener day: <a href=\"https://www.wdrmaus.de/extras/tueren_auf.php5\" target=\"_blank\">https://www.wdrmaus.de/extras/tueren_auf.php5</a></li>\r\n<li>Grumpy old coders: <a href=\"https://soundcloud.com/user-498377588/grumpy-old-coders-ep-1-fast-change\" target=\"_blank\">https://soundcloud.com/user-498377588/grumpy-old-coders-ep-1-fast-change</a></li>\r\n</ul>\r\n\r\n',384,111,1,'CC-BY-SA','Linux inlaws, communism, free and open source software, FLOSS Weekly, Perl, ship cruises',0,0,1),
(3200,'2020-11-06','Better Social Media 17 - OcapPub',1125,'How using Object Capabilities within ActivityPub could solve some problems with social media.','<p>Social media has some problems, and even federated media is not immune to them. OcapPub proposes to help reduce some problems by moving away from a fundamentally broken model revolving around identity and access to a better model involving objects and capabilities. This could help reduce to problems of identity theft, and help against web site problems like clickjacking and Cross-Site Request Forgery. It is a proposal being worked on, not a finished technology, but it is promising.</p>\r\n<p>Links:</p>\r\n<ul>\r\n<li><a href=\"https://gitlab.com/spritely/ocappub/blob/master/README.org\" class=\"uri\">https://gitlab.com/spritely/ocappub/blob/master/README.org</a></li>\r\n<li><a href=\"https://hacks.mozilla.org/2018/11/decentralizing-social-interactions-with-activitypub/\" class=\"uri\">https://hacks.mozilla.org/2018/11/decentralizing-social-interactions-with-activitypub/</a></li>\r\n<li><a href=\"https://www.w3.org/TR/activitypub/\" class=\"uri\">https://www.w3.org/TR/activitypub/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Actor_model#Fundamental_concepts\" class=\"uri\">https://en.wikipedia.org/wiki/Actor_model#Fundamental_concepts</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Gamergate_controversy\" class=\"uri\">https://en.wikipedia.org/wiki/Gamergate_controversy</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Speakers%27_Corner\" class=\"uri\">https://en.wikipedia.org/wiki/Speakers%27_Corner</a></li>\r\n<li><a href=\"https://waterken.sourceforge.net/aclsdont/current.pdf\" class=\"uri\">https://waterken.sourceforge.net/aclsdont/current.pdf</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Principle_of_least_privilege\" class=\"uri\">https://en.wikipedia.org/wiki/Principle_of_least_privilege</a></li>\r\n<li><a href=\"https://www.zwilnik.com/better-social-media/ocappub/\" class=\"uri\">https://www.zwilnik.com/better-social-media/ocappub/</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, OcapPub',0,0,1),
(3139,'2020-08-13','MIDI Sysex',1238,'Klaatu talks about Sysex functions in MIDI','<p>\r\nThe MIDI spec is available at <a href=\"https://www.midi.org\" target=\"_blank\">MIDI.org</a>\r\n</p>\r\n\r\n<p>\r\nSysex commands are listed at <a href=\"https://www.midi.org/specifications-old/item/table-4-universal-system-exclusive-messages\" target=\"_blank\">midi.org&#47;specifications-old&#47;item&#47;table-4-universal-system-exclusive-messages</a>\r\n</p>\r\n',78,0,0,'CC-BY-SA','midi,music,synth',0,0,1),
(3141,'2020-08-17','Lessons learnt from Magic the Gathering game design',2269,'Lessons learnt from Magic the Gathering game design','<p>\r\nObservations and musings about game design, seen through the lens of MTG.\r\n</p>\r\n',78,95,0,'CC-BY-SA','magic, mtg',0,0,1),
(3142,'2020-08-18','tcsh',1719,'Klaatu talks about tcsh','<p>\r\nTcsh is a shell. It was popular once, I think. Anyway, I talk about why I sometimes use it, fondly, sometimes.\r\n</p>',78,0,0,'CC-BY-SA','shell,csh,bash,tcsh',0,0,1),
(3210,'2020-11-20','GIMP: Patterns and Gradients',1337,'Patterns and Gradients are useful for drawing with more than just color.','<p>Patterns and Gradients let you create images that go beyond simple colors and let you create more interesting images. And using them also means we begin to see how to combine a variety of tools, like paint tools, selection tools, and brushes, to create the effects we want in our images.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.8/en/\" class=\"uri\">https://docs.gimp.org/2.8/en/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/paint-tools/\" class=\"uri\">https://www.ahuka.com/gimp/paint-tools/</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3150\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=3150</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/miscellaneous-tools/\" class=\"uri\">https://www.ahuka.com/gimp/miscellaneous-tools/</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3180\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=3180</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/patterns-and-gradients/\" class=\"uri\">https://www.ahuka.com/gimp/patterns-and-gradients/</a></li>\r\n</ul>',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, patterns, gradients',0,0,1),
(3220,'2020-12-04','PixelFed',1183,'A look at a federated alternative to Instagram.','<p>Maybe you want to share some photos with your family and friends. You could use Instagram, but that is part of the Surveillance Capitalist media environment. Fortunately, there is a privacy-respecting federated alternative called PixelFed. This episode is an introduction to that platform.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/ActivityPub\" class=\"uri\">https://en.wikipedia.org/wiki/ActivityPub</a></li>\r\n<li><a href=\"https://www.w3.org/TR/activitypub/\" class=\"uri\">https://www.w3.org/TR/activitypub/</a></li>\r\n<li><a href=\"https://www.digikam.org/\" class=\"uri\">https://www.digikam.org/</a></li>\r\n<li><a href=\"https://www.gimp.org/\" class=\"uri\">https://www.gimp.org/</a></li>\r\n<li><a href=\"https://docs.pixelfed.org/installing-pixelfed/\" class=\"uri\">https://docs.pixelfed.org/installing-pixelfed/</a></li>\r\n<li><a href=\"https://the-federation.info/\" class=\"uri\">https://the-federation.info/</a></li>\r\n<li><a href=\"https://the-federation.info/pixelfed\" class=\"uri\">https://the-federation.info/pixelfed</a></li>\r\n<li><a href=\"https://mastodon.social/@pixelfed/103122742969957333\" class=\"uri\">https://mastodon.social/@pixelfed/103122742969957333</a></li>\r\n<li><a href=\"https://www.zwilnik.com/better-social-media/pixelfed/\" class=\"uri\">https://www.zwilnik.com/better-social-media/pixelfed/</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, PixelFed, photo sharing',0,0,1),
(3143,'2020-08-19','LibreOffice 7.0 Released!',927,'LibreOffice releases a new major update, LibreOffice 7.0','<p>LibreOffice is the premiere open source office suite, and with the major release of 7.0 continues to move forward. In this episode I look at some of the major features of this upgrade and why it matters.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://blog.documentfoundation.org/blog/2020/08/05/announcement-of-libreoffice-7-0/\" class=\"uri\">https://blog.documentfoundation.org/blog/2020/08/05/announcement-of-libreoffice-7-0/</a></li>\r\n<li><a href=\"https://blog.documentfoundation.org/blog/2020/01/21/odf-1-3-approved-as-oasis-committee-specification/\" class=\"uri\">https://blog.documentfoundation.org/blog/2020/01/21/odf-1-3-approved-as-oasis-committee-specification/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/OASIS_(organization)\" class=\"uri\">https://en.wikipedia.org/wiki/OASIS_(organization)</a></li>\r\n<li><a href=\"https://skia.org/\" class=\"uri\">https://skia.org/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Vulkan_(API)\" class=\"uri\">https://en.wikipedia.org/wiki/Vulkan_(API)</a></li>\r\n<li><a href=\"https://www.documentfoundation.org/governance/advisory-board/\" class=\"uri\">https://www.documentfoundation.org/governance/advisory-board/</a></li>\r\n<li><a href=\"https://www.redhat.com/en\" class=\"uri\">https://www.redhat.com/en</a></li>\r\n<li><a href=\"https://www.collaboraoffice.com/\" class=\"uri\">https://www.collaboraoffice.com/</a></li>\r\n<li><a href=\"https://www.cib.de/en/home.html\" class=\"uri\">https://www.cib.de/en/home.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/libreoffice-7-0-released/\" class=\"uri\">https://www.ahuka.com/libreoffice-7-0-released/</a></li>\r\n</ul>\r\n',198,70,0,'CC-BY-SA','LibreOffice, new release',0,0,1),
(3230,'2020-12-18','Introduction to Layers',1258,'Layers are the most important concept in using GIMP','<p>Layers are the feature that does most of the heavy lifting in GIMP. In this episode we begin looking at them with an introduction, but we\'ll go deeper!</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.8/en/\" class=\"uri\">https://docs.gimp.org/2.8/en/</a></li>\r\n<li><a href=\"https://www.animationconnection.com/about-the-art/original-production-cels\" class=\"uri\">https://www.animationconnection.com/about-the-art/original-production-cels</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/XCF_(file_format)\" class=\"uri\">https://en.wikipedia.org/wiki/XCF_(file_format)</a></li>\r\n<li><a href=\"https://www.webopedia.com/TERM/A/alpha_channel.html\" class=\"uri\">https://www.webopedia.com/TERM/A/alpha_channel.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/introduction-to-layers/\" class=\"uri\">https://www.ahuka.com/gimp/introduction-to-layers/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, layers',0,0,1),
(3146,'2020-08-24','Help Me Help you with HPR eps!',358,'What should I do and how should I do it ?','<p>A show about shows ?</p>',36,0,0,'CC-BY-SA','podcasting, hpr',0,0,1),
(3155,'2020-09-04','LastPass Security Dashboard',680,'A recent update to LastPass added a Security Dashboard','<p>LastPass is one of the password managers I use (along with Keepass), and recently they added a Security Dashboard feature to the product. I take a look at this dashboard and review some of the features.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://blog.lastpass.com/2020/08/new-lastpass-security-dashboard-and-dark-web-monitoring-now-available/\" class=\"uri\">https://blog.lastpass.com/2020/08/new-lastpass-security-dashboard-and-dark-web-monitoring-now-available/</a></li>\r\n<li><a href=\"https://www.pcmag.com/picks/the-best-password-managers\" class=\"uri\">https://www.pcmag.com/picks/the-best-password-managers</a></li>\r\n<li><a href=\"https://www.cnet.com/how-to/best-password-manager-to-use-for-2020-1password-last-password-more-compared/\" class=\"uri\">https://www.cnet.com/how-to/best-password-manager-to-use-for-2020-1password-last-password-more-compared/</a></li>\r\n<li><a href=\"https://www.tomsguide.com/us/best-password-managers,review-3785.html\" class=\"uri\">https://www.tomsguide.com/us/best-password-managers,review-3785.html</a></li>\r\n<li><a href=\"https://www.wired.com/story/best-password-managers/\" class=\"uri\">https://www.wired.com/story/best-password-managers/</a></li>\r\n<li><a href=\"https://www.zwilnik.com/security-and-privacy/hashing-passwords-and-certificates/passwords-entropy-and-good-password-practices/\" class=\"uri\">https://www.zwilnik.com/security-and-privacy/hashing-passwords-and-certificates/passwords-entropy-and-good-password-practices/</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1620\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=1620</a></li>\r\n<li><a href=\"https://support.logmeininc.com/lastpass/help/what-is-the-security-score-in-my-security-dashboard\" class=\"uri\">https://support.logmeininc.com/lastpass/help/what-is-the-security-score-in-my-security-dashboard</a></li>\r\n<li><a href=\"https://www.sans.org/security-awareness-training/blog/time-password-expiration-die\" class=\"uri\">https://www.sans.org/security-awareness-training/blog/time-password-expiration-die</a></li>\r\n<li><a href=\"https://haveibeenpwned.com/\" class=\"uri\">https://haveibeenpwned.com/</a></li>\r\n<li><a href=\"https://www.enzoic.com/\" class=\"uri\">https://www.enzoic.com/</a></li>\r\n<li><a href=\"https://www.zwilnik.com/the-lastpass-security-dashboard/\" class=\"uri\">https://www.zwilnik.com/the-lastpass-security-dashboard/</a></li>\r\n</ul>\r\n',198,74,0,'CC-BY-SA','LastPass, passwords, security, monitoring',0,0,1),
(3144,'2020-08-20','Pentesting: Insecure Object Reference',726,'How an insecure object reference lead to a covid-related databreach','<p>Insecure object reference is a very common bug in online applications which most of the time leads to significant data breaches. In this episode I talk about one such vulnerability I discovered recently in a covid-related application.</p>',387,74,0,'CC-BY-SA','pentesting,security,hacking',0,0,1),
(3145,'2020-08-21','A light bulb moment, part 1',649,'Finding the working voltage of a bulb','<p>This show came about because of an email from Dave Morriss on the 4th March 2020</p>\r\n<p>The upshot of it was that Dave came into possession of an illuminated lantern that he wanted to use. He had a problem however as the lantern in question was sealed and he didn\'t know the working voltage of the bulb within. He asked me if there was a way of working it out.</p>\r\n<p>Well first of all before I go any further I should probably say I\'m not a bulb expert, however I set about doing a little investigating. What I was about to discover is that calculating this is not as straightforward as you might think.</p>\r\n<p>One thing you might think to do is to use a meter to measure the resistance of the bulb. Even doing this however is fraught with difficulty because measuring the resistance of a cold bulb not at working temperature will give a misleading answer. This is because the resistance of a standard bulb changes with temperature.</p>\r\n<p>I can demonstrate this by measuring the resistance of two light bulbs I have lying around the house.</p>\r\n<p>One is a clear traditional Bayonet tungsten filament house bulb rated at 40W. I live in the UK so its operating voltage is 240V I used my trusty Fluke 77 Digital Ohmmeter but any meter capable of measuring resistance will do. This bulb at room temperature measured a resistance of 108 ohms</p>\r\n<p>The other bulb was a Halogen E14 screw in bulb rated at 28W and its operating voltage like the previous bulb was 240V. Its measured resistance at room temperature was 144 ohms)</p>\r\n<p>Diagrams Created using LibreOffice Draw \"Version: 6.0.7.3\"</p>\r\n<p>Formulae<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3145/hpr3145/img_001.png\" alt=\"Formulae\" /></p>\r\n<p><strong>Calculations For (tungsten filament bulb)</strong></p>\r\n<pre><code>V/R = I (Amps)\r\nso 240V / 108 ohms = 2.2 Amps\r\n\r\nV x I = P (Watts)\r\nso 240V x 2.2 Amps = 528W</code></pre>\r\n<p><strong>Calculations For (halogen bulb)</strong></p>\r\n<pre><code>V/R = 240V / 144 ohms = 1.7 Amps    (halogen)\r\n\r\nV x I = W\r\nso 240V x 1.7 Amps = 408W</code></pre>\r\n<p>As per usual I used google and come up with somebody asking the same sort of question at <a href=\"https://www.candlepowerforums.com/vb/showthread.php?64832-How-to-identify-voltage-of-an-unmarked-bulb\" class=\"uri\">https://www.candlepowerforums.com/vb/showthread.php?64832-How-to-identify-voltage-of-an-unmarked-bulb</a> yes it seems like there a forum for just about anything you can think of.</p>\r\n<p>One person on the forum made the point that there really isn\'t such a thing as a working voltage it just depends on how long you want the bulb to last. For this reason I always turn down the brightness on any car I own that his dimmable dashboard lights changing these bulbs can be a real pain and or can be expensive.</p>\r\n<p>Sometimes the stated working voltage for a bulb can be misleading for example a car bulb will often state a working voltage of 12V but is likely to be running at a higher voltage when the engine is running due to the operation of cars alternator.</p>\r\n<p>Another person suggested trying to estimate the length of the filament and using this to determine the working voltage.</p>\r\n<p>Yet somebody else suggested just using a variable supply and to just slowly increase the voltage until a reasonable amount of light is generated. This might be quite simple if it\'s a low voltage bulb and you could even use some batteries lying around connecting them in series adding one battery at a time until the required brightness is achieved.</p>\r\n<p>It isn\'t so simple if bulb requires a higher voltage.</p>\r\n<p>In the end I just passed this information onto Dave wishing him luck in his path to discovering the optimal working voltage for his lantern.</p>\r\n<p>Feel free to write a comment if any of you out there have any other idea on finding the working voltage of a bulb this way it can be shared with the rest of us during the Community News, better still send in your own show.</p>\r\n',201,0,1,'CC-BY-SA','Hardware, electrical',0,0,1),
(3147,'2020-08-25','NIST\'s Quantum Cryptography Update',825,'NIST has concluded Round Two of the quantum encryption search and moved to Round Three','<p>NIST initiated a competition to find and test algorithms for quantum encryption that would resist quantum decryption back in December of 2016. Two rounds of testing have been completed, and an initial group of 69 submissions have been winnowed to 15. These 15 are now in Round Three of the testing process, and it is anticipated that as many as 4 of them will be approved as standards. This news update is intended to bring you up to date on the process.</p>\r\n<p>Links:</p>\r\n<ul>\r\n<li><a href=\"https://www.zwilnik.com/security-and-privacy/encryption-and-quantum-computing/\" class=\"uri\">https://www.zwilnik.com/security-and-privacy/encryption-and-quantum-computing/</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2860\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2860</a></li>\r\n<li><a href=\"https://letsencrypt.org/\" class=\"uri\">https://letsencrypt.org/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Public-key_cryptography\" class=\"uri\">https://en.wikipedia.org/wiki/Public-key_cryptography</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Whitfield_Diffie\" class=\"uri\">https://en.wikipedia.org/wiki/Whitfield_Diffie</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Martin_Hellman\" class=\"uri\">https://en.wikipedia.org/wiki/Martin_Hellman</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Ralph_Merkle\" class=\"uri\">https://en.wikipedia.org/wiki/Ralph_Merkle</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Pretty_Good_Privacy\" class=\"uri\">https://en.wikipedia.org/wiki/Pretty_Good_Privacy</a></li>\r\n<li><a href=\"https://gcn.com/articles/2016/12/22/nist-quantum-encryption.aspx\" class=\"uri\">https://gcn.com/articles/2016/12/22/nist-quantum-encryption.aspx</a></li>\r\n<li><a href=\"https://gcn.com/articles/2019/02/04/nist-quantum-semifinals.aspx\" class=\"uri\">https://gcn.com/articles/2019/02/04/nist-quantum-semifinals.aspx</a></li>\r\n<li><a href=\"https://csrc.nist.gov/publications/detail/nistir/8309/final\" class=\"uri\">https://csrc.nist.gov/publications/detail/nistir/8309/final</a></li>\r\n<li><a href=\"https://www.nist.gov/news-events/news/2020/07/nists-post-quantum-cryptography-program-enters-selection-round\" class=\"uri\">https://www.nist.gov/news-events/news/2020/07/nists-post-quantum-cryptography-program-enters-selection-round</a></li>\r\n<li><a href=\"https://www.schneier.com/blog/archives/2005/02/cryptanalysis_o.html\" class=\"uri\">https://www.schneier.com/blog/archives/2005/02/cryptanalysis_o.html</a></li>\r\n<li><a href=\"https://www.zwilnik.com/security-and-privacy/nists-quantum-cryptography-update-20200815/\" class=\"uri\">https://www.zwilnik.com/security-and-privacy/nists-quantum-cryptography-update-20200815/</a></li>\r\n</ul>\r\n',198,74,0,'CC-BY-SA','security, encryption, quantum computing',0,0,1),
(3148,'2020-08-26','Why Open Source matters (to me)',1612,'I go briefly into my own history that has lead me to choose open source software exclusively.','<p>My original website: <a href=\"https://psquirk.tripod.com\" class=\"uri\">https://psquirk.tripod.com</a></p>',383,0,0,'CC-BY-SA','history,open source,matters,vic 20,amiga,commodore',0,0,1),
(3151,'2020-08-31','How I listen to podcasts',393,'This is a reply to MrX episode on how to listen to podcasts','<p>In this episode I talk about the program I use to listen to podcasts.</p>\r\n<p>BeyondPod which has a smart play feature where you can decide how to listen, in what order and how much of each podcast.</p>',382,0,0,'CC-BY-SA','podcast,software,android',0,0,1),
(3152,'2020-09-01','My Pocket Knives',870,'I talk a little about some pocket knives I often carry','<h2 id=\"introduction\">Introduction</h2>\n<p>As a boy I was allowed to have a penknife from about the age of 10. Since then I have tended to carry pocket knives with me on a regular basis.</p>\n<p>I have three knives that often travel with me, though two might have become illegal in the UK in the recent past because they lock.</p>\n<p>The knives are:</p>\n<ul>\n<li>Victorinox <em>Huntsman</em></li>\n<li>Durol locking knife</li>\n<li>Roxon KS-S501</li>\n</ul>\n<h2 id=\"long-notes\">Long notes</h2>\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"hpr3152_full_shownotes.html\">viewed here</a>.</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li>Victorinox\n<ul>\n<li><a href=\"https://www.victorinox.com/uk/en\">Victorinox website</a> (UK)</li>\n<li><a href=\"https://www.victorinox.com/uk/en/Products/Swiss-Army-Knives/Medium-Pocket-Knives/Huntsman/p/1.3713\">Victorinox <em>Huntsman</em></a> (UK)</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Swiss_Army_knife\">Wikipedia: Swiss Army knife</a></li>\n</ul></li>\n<li>Durol\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Thiers,_Puy-de-D%C3%B4me\">Wikipedia: Thiers, Puy-de-Dôme</a></li>\n<li><a href=\"https://www.lecouteau.info/couteliers-fabricants-de-thiers/durol/\">Coutellerie &amp; Couteaux - Durol</a> (<em>in French</em>)</li>\n</ul></li>\n<li>ROXON\n<ul>\n<li><a href=\"https://roxontool.com/col.jsp?id=111\">KS-S501</a></li>\n</ul></li>\n</ul>\n',225,0,1,'CC-BY-SA','knife,pocket knife,penknife,Victorinox,Durol,Roxon',0,0,1),
(3153,'2020-09-02','Fixing eBooks with Calibre and pdfcrop',308,'Ken uses Calibre to convert a epub to PDF then uses pdfcrop to trim the margins','<pre>\r\npdfcrop --margins \'-4 -4 -4 -5\' --clip input.pdf output.pdf\r\n</pre>\r\n\r\n<p>\r\ncalibre is a powerful and easy to use e-book manager. Users say it’s outstanding and a must-have. It’ll allow you to do nearly everything and it takes things a step beyond normal e-book software. It’s also completely free and open source and great for both casual users and computer experts. \r\n</p>\r\n<p>\r\nPDFCrop is a Perl script that crops the white margins of PDF pages and rescales them to fit a standard size sheet of paper. It makes the printed pages far more attractive to read! \r\n</p>\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"https://calibre-ebook.com/\">https://calibre-ebook.com/</a></li>\r\n<li><a href=\"https://pdfcrop.sourceforge.net/\">https://pdfcrop.sourceforge.net/</a></li>\r\n</ul>',30,0,0,'CC-BY-SA','calibre,pdfcrop,epub,pdf',0,0,1),
(3154,'2020-09-03','Make NextCloud your next cloud',771,'I go into my reasons for using NextCloud, what it is, and why you might want it.','<p>My federated address is @paul@cloud.pquirk.com</p>',383,0,0,'CC-BY-SA','Raspberry Pi,NextCloud,federated',0,0,1),
(3157,'2020-09-08','Compost',2583,'How and why to compost','<p>\r\n  How to compost food scraps to produce nutrient-rich soil. It&#39;s natural&#33;\r\n</p>',78,93,0,'CC-BY-SA','food, rubbish, landfill, gardening',0,0,1),
(3159,'2020-09-10','Vivaldi - The Four Seasons',2703,'All four movements of Vivaldi\'s Four Seasons, celebrating the Creative Commons license','<p>\r\nAntonio Vivaldi composed The Four Seasons (\'Le quattro stagioni\' in its original Italian) in 1723. It is a set of 4 violin concertos that propose an early form of descriptive music: for example, Winter makes prominent use of pizzicato notes in high registers, whereas Summer evokes a storm in its final movement. The work was first presented as part of Op. 8, being later catalogued as RV 269, 315, 293 & 297. The Four Seasons remain very popular to this day, some of its concertos spawning a great number of derivative works, whereas thousands of recordings of the original pieces have been made. It is still debated if Vivaldi wrote this concertos to accompany four sonnets that may have been written by himself. <br />\r\nFrom <a href=\"https://musopen.org/music/14910-the-four-seasons-op-8/\">Vivaldi The Four Seasons, Op. 8</a>\r\n</p>\r\n\r\n<p>\r\n<a href=\"https://musopen.org/music/performer/the-modena-chamber-orchestra/\">The Modena Chamber Orchestra Music</a>\r\n</p>',383,22,0,'CC-BY-SA','Vivaldi, four seasons, creative commons',0,0,1),
(3158,'2020-09-09','Fingerprint access control? LOL... ',1201,'A story about pentesting physical security','<p>Hello everyone, my name is Cedric and I\'m here again with another story on pentesting and security, straight from the trenches.</p>\r\n<p>Today I\'m going to share a story with you about an assignment we did some time ago for a large entertainment company. Our client, like many entertainment companies, produces a lot of intellectual property. So, one of their biggest concerns is that someone might physically break into their premises and steal some of these designs and products. They had already taken some precautions, like installing intrusion detection alarms and access controls on all doors etc\' The access controls they installed even had a dual function and could be used both as an RFID reader and as a fingerprint reader. So, they were already trying their best to secure their on-site intellectual property. And that\'s also the reason why they hired me and my team: they wanted to check if their investment in security was actually worth its money so far.</p>\r\n<p>We proposed a plan to hack them, in any way our devious minds could possibly think of. Everything was on the table: We could try and hack ourselves in. We could social engineer ourselves in, basically by manipulating people and abusing their trust and confidence. We could do all of that, and we would, eventually. But first, the grand opening of this show, would be an attempt to physically break into their premises at night. And yes, that was as much fun as it sounds ;-)</p>\r\n<p>Our approach was basically the same as that of a professional burglar: we\'d start with a week of preparation and scoping the place.</p>\r\n<p>So how do you do this? Well, we knew the address of course so first we checked out the place on Google Maps. And we were pretty lucky: Google had just recently updated their imagery of the area which meant we had recent maps to work with and the entire thing could be viewed in 3D with a fair amount of detail. That\'s pretty much as perfect as it comes when you\'re planning to do a major heist on a place in the physical world out there :-) So, we started with scouting the area from behind our laptops. We saw where all the entrances to the building were. We also saw that on the frontside the building just gave access to the street, while on the backside of the premise there was a public park. This looked very promising as a potential entrypoint, so our next step would be to actually physically go there and scout the area.</p>\r\n<p>So, first we went there during daylight hours and just took a drive around the block using a rental car. We\'d look for entrances to the building, camera\'s guarding these and the general view of the area, basic things… We didn\'t spot any cameras on the outside of the building. So we figured it would be pretty safe to take a walk and scout the area by foot. There was foot traffic but not too much, so we wouldn\'t draw any attention by just casually walking around and having a closer look.</p>\r\n<p>The main entrance to the building was in a quiet street which led to a small square where a few kids were playing, and on the other side there was a street with some shops and a few restaurants. The entrance to our clients building had a gate through which we could see a quiet courtyard and the general layout of the building. The first thing that drew our attention was an access control device guarding the entrance, it was a fingerprint reader and it had a brand name Suprema printed on it. Straight across the courtyard we could see the trees of the neighboring park. There was a rooftop terrace on the first floor which gave access to the offices of our client. We also noticed the wall that separated this terrace from the park and it was huge, at least 6 meters.</p>\r\n<p>We couldn\'t hang around for too long of course so we decided to continue our walk to the second entrance we spotted just around the corner. We could recognise its anonymous door next to a restaurant because it was guarded by the same Suprema fingerprint device. The restaurant however seemed quite popular, and it had a terras in front of it with a dozen tables, so that pretty much dismissed this entrance as a possible entry for our heist.</p>\r\n<p>Needless to say that while we walked around the block we were also continuously scanning the area for Wifi and bluetooth devices. But nothing interesting had shown up so far. We had spotted our clients network but it was protected. We probably could use this information to set up rogue access-points later during our assignment, but for now this information was of little use to us.</p>\r\n<p>We continued our walk and took a left to end up at the park bordering to the other side of our clients building. While the park was empty at that moment, we didn\'t really feel at ease. On one side the park bordered an apartment building and all of its rear terrasses faced this park. We went to the wall at the far end of the park as casually as possible, and inspected it. It had two large windows, giving the people working in the offices on the inside a nice view of the park. Unfortunately these windows didn\'t seem to have any way of opening. The wall was high, very high, we estimated about 8 meters. On the other side it would give access to the terrace on the first floor. We figured that this would be the perfect entrypoint for our heist. We\'d use the cover of darkness to get a ladder across the park, under the trees against that wall. I\'d climb over it to land on the terrace and that would be our first step onto the premise. Next step would be to find a way into the building and for that we\'d have to find a way to bypass these Suprema fingerprint readers next to every door.</p>\r\n<p>So we went back to our hackerspace and researched this device and we figured the best way to move forward would be to actually buy one of these to first try and hack it in the safety of our lab. So I spent a fair amount of time researching the exact model they had installed and ordering one from a local supplier. The thing came at a hefty price, these Suprema devices are not cheap. But now I had an electronic lock, a relay board, a power supply and one of these fingerprint readers with which I could start playing.</p>\r\n<p>I started off with reading the manual of course, which already was very interesting on its own. I learned that this thing can be configured in a zillion ways. I figured that, like most things, the guys that installed it would probably stick pretty close to how it came out of the box. So that\'s what I did as well: I installed the thing exactly as it came, following the instructions in the manual.</p>\r\n<p>I\'ll give you the summary of this entire installation. Electronic locks are pretty simple technology. Basically it\'s just an electro-magnet, a coil through which you send current to create a magnetic field that pulls a bolt out of the way so the lock can open, that\'s when it makes the clicking sound. Inside of the building, the receptionist can just press a button and a current will flow to the lock. However, on the outside of the building it wouldn\'t be very desirable that anyone can just press a button to open the door. That\'s why most companies implement access controls like RFID-readers or in this case fingerprint readers. A visitor scans his fingerprint with the device next to the door, the software checks if it finds the signature of the print in the database holding all recognized prints, and if so it will open the door.</p>\r\n<p>So if we\'d want to bypass this scheme, we\'d basically have two options: hack the device to open the lock, or duplicate a registered fingerprint to fool the scanner and open the lock. Research had shown that this last option wasn\'t actually so far fetched. It\'s actually a proven feasible attack, last DEFCON even demonstrated an attack where a print was copied in 3D using a 3D printer. The technique we would try involved etching the negative of a high-contrast image from a lifted latent print onto a copper plate. Next we\'d pour hot glue over that etch to actually recreate the fingerprint in 3D. However, this procedure requires some practice and skills, and we didn\'t have time for that. We tried it using our own prints lifted from a glass plate, following the procedure as best as we could but we failed miserably. So, this would not be an option and we already spent a fair amount of time.</p>\r\n<p>So by now it had become clear we would have to hack the device. And as it was laying there in front of me on my desk, basically running the default setup with just my own print registered in the software, it became obvious that I had missed a crucial error in the design the entire time. I had never actually bothered to install this thing \"properly\" like mounted to a board with its cables fitted nicely behind a wall etc. The entire thing was just laying there, in front of me on my desk and all the cables really were a mess, but most importantly: the software wasn\'t showing any warnings whatsoever that the device was not mounted to a wall. I investigated the manual and I learned that the thing has something called a \"tamper alarm\". But this must have been disabled by default because I never had any alarms while the device was just laying there and was continuously shaking and moving it. So this meant that I could probably just pull this thing from a wall without any alarms going off.</p>\r\n<p>I had to validate this premise first before we could continue. If this turned out to be a false assumption we\'d waste valuable time investigating a plan which would probably fail in the end. So the following night I set out again to our clients building. It was like 3:30 in the morning and there was nobody on the streets. We already validated that there were no cameras pointing to the entrance, still I didn\'t feel too confident. My plan was simple but solid: I\'d unscrew the fingerprint reader at the main entrance and put it back in place after 30seconds. I\'d then walk to the little square at the end of the street and sit on the bench there so I would have a clear view of our clients entrance. I figured that, if the tamper alarm was enabled, and if they had someone monitoring it, they would probably come and check the device causing the alarm. I\'d be interested in their response time of course, but most of all I was just hoping nobody would show up. And that\'s also what happened. I waited for 2 whole hours on that bench and nobody showed up, so I concluded the tamper alarm must have been disabled as is the default setting on these things, or nobody is monitoring it. Anyway, now I knew I could safely start tinkering on how I could manipulate this thing into letting me.</p>\r\n<p>So the next day after I had a few hours of sleep we went back to work, playing with that Suprema BioLite and its software. I was in a good mood and had lots of inspiration. We started with investigating the general architecture of this access control scheme. So it turns out you have a client device, the scanner which is next to the door and this client device gets a database of recognized fingerprints from a control server which holds a list of all connected devices. So it\'s on this server where you register new doors and locks and new users that can open these locks. Now, when I installed the setup to experiment with, I learned that I had to register the lock into the control server before I could actually do anything, so I followed that entire procedure but unless I was missing something I didn\'t notice any real checks to be in place during that registration. So what I was thinking was: maybe I can disconnect this device from its network and the control server and reconnect it to my own server. Then I could upload my own prints to the device and then I\'d be able to open the door with my own finger. So that\'s what I tried. I had the entire setup running in my own network, so I re-installed the software once again on my laptop. I then registered another print of mine into this installation. Next I disconnected the device from my network and connected it to a new temporary network running on my laptop: I had it running DHCP and I had a little USB-powered ethernet switch laying around which came in handy for this job. So the device quickly got an ip address from my new network and when I scanned for new fingerprint devices in my network using the Suprema control server that was installed on my laptop, I easily found it and was able to register it in this installation. I then was able to upload a copy of my fingerprints from my laptop to the device and after reconnecting it to the original network I could still open the lock with my newly registered print. So this meant we had our hack to bypass this device: we\'d just upload our own set of prints to it and it would happily accept these and open the door for us.</p>\r\n<p>So we hired a van and a ladder, and with some action cameras geared up we set out in the middle of the following night. We managed to get the ladder across the park and put it against the wall without making too much noise, we didn\'t wake up any curious neighbours. Next, I\'d climb up the ladder, but since it was only 6m and the wall was about 8m high I\'d have to climb the last bit by hand. Fortunately there was some vegetation growing on that wall and it felt like it would be strong enough to hold my weight. So, I gave it a try and pulled myself up from the ladder and the vines fortunately didn\'t break, so I climbed to the top of the wall and hoisted myself on top of it. I jumped off on the other side and landed on the first floor terrace we saw earlier. I went straight to the door and as expected it had one of these Suprema fingerprint readers next to it and I immediately went to work: I unscrewed the device from its mounting bracket and pulled the cables a bit from the wall. I then cut all the wires of the UTP-connection and connected a female RJ-45 socket to the UTP-wires of the fingerprint reader with crocodile clips. Next I hooked it up to my usb-powered switch which connected the device to the network running on my laptop. As I had tested everything in detail, the attack went smooth as a breeze and within no time I had my own fingerprint loaded into the device. I tested it and I could hear the lock of the door clicking while I put my finger onto the reader, so I started screwing the device back into the mounting bracket.</p>\r\n<p>Everything went exactly as planned and I had just put my laptop and all my gear into my backpack again when suddenly I saw the lights go on through the glass door separating me from the inside of the top floor. I could see the elevator doors open and suddenly there I was, standing face to face with a janitor. I could see his face and he could see me so I tried to pull myself together, I had to think quickly. I figured he would let me in, or call the cops and I would probably only get one chance to explain myself. So I pulled my silly face, pointed with a finger to the access control, shrugged my shoulders and lipped slowly \"it\'s not working\". Well, I must have been an actor in a previous life because, sure thing the man came up to the door and opened up for me. While I entered and said a quick \"hey thanks man\", he looked a bit questioning and mumbled something of \"who are you and what are you doing here?\" and as casual as I could I answered \"Oh I\'m from IT, I\'m here for work\". I smiled, thanked him once again while I stepped into the elevator and pressed the button for the ground floor. I was in! My heart was pounding like a racehorse but I was in! This stuff was like straight from the movies.</p>\r\n<p>Now it was time for the fun part of the night: claiming our flag of victory. First I went to the director\'s office, to leave a friendly signature of my presence: I left a bottle of champagne on his desk and I decorated the place with some CYBER-tape :-) On my way out I left a little present in the form of a LAN Turtle 3G. That\'s a 3G-enabled remote access toolkit with a network-connection which I hooked up with an empty socket underneath the receptionist\'s desk. The LAN Turtle would immediately boot and using its 3G connection it established a reverse tunnel using SSH to our command-and-control server. Using that covert connection we now had a way into the network from the outside. Installing it only took about 15 seconds and after having confirmed tunnel using a shell on my phone I went straight to the front-door and left the place. Mission accomplished! We had successfully penetrated the place.</p>\r\n<p>I went to bed with a very big smile on my face early in the morning that day. By Noon I got up after a few hours of sleep and called our clients. They thanked us for the champagne and I gave them the gist of what had happened earlier that day while everyone else was still in bed sleeping.</p>\r\n<p>The following weeks we would continue with our assignment and use our newly granted access into the place to go there physically during daytime hours, posing as an external developer. Eventually we gained full access to the entire place, including their on-premise datacenter holding their intellectual property, the crown jewels as to speak. Apparently, the access control-server was still protected with the default credentials admin/admin so I had pretty easy time expanding my initial foothold.</p>\r\n<p>At the end of our assignment we presented all of our findings to our client and they immediately took appropriate action, including making sure tampering control got enabled on all of their access control devices. And I for my part had learned a whole lot of new fun stuff about access control devices and the possible flaws they can hold.</p>\r\n<p>So, this was yet another story on pentesting and security. I hope you enjoyed this episode. If you\'d like to reach out to me, please use the comment section on Hacker Public Radio or contact me on Twitter or Facebook. See you next time!</p>\r\n',387,74,0,'CC-BY-SA','pentesting,security,hacking,biometrics',0,0,1),
