(3344,'2021-05-27','Infosec Podcasts Part 3 - Infosec Career and Personal Development',366,'Presenting my favorite podcasts related to information security careers and growth','<p>Inoffensive in every region of the world</p>\r\n<p>Infosec Podcasts Part 3 – Infosec Career & Personal Development</p>\r\n<p>Why am I recording this series?</p>\r\n<p>\"What podcasts you listen to\" was on the list of recommended topics</p>\r\n<p>I am passionate about information security</p>\r\n<p>We desperately need people to fill infosec jobs in many different specialties</p>\r\n<p>Infosec is a rapidly changing field, and it is critical to stay current</p>\r\n<p>As a result I listen to TONS of infosec related podcasts</p>\r\n<p>Because there are so many podcasts to list, I will break them down into 6 different episodes based on topics:</p>\r\n<ul>\r\n<li>Part 1 - News & Current Events</li>\r\n<li>Part 2 - General Information Security</li>\r\n<li>Part 3 - Career & Personal Development</li>\r\n<li>Part 4 - Social Engineering</li>\r\n<li>Part 5 -\r\n<ul>\r\n<li>Hacks & Attacks</li>\r\n<li>Technical Information & Learning</li>\r\n<li>Infosec Community / Social / History</li>\r\n</ul></li>\r\n<li>Part 6 - Infosec Leadership</li>\r\n</ul>\r\n<h2 id=\"part-3\">Part 3</h2>\r\n<h3 id=\"career-personal-development\">Career & Personal Development</h3>\r\n<ul>\r\n<li><p>Getting into Infosec - Ayman Elsawah (Monthly)<br />\r\nWas a monthly podcast, but the last recorded episode dropped February 2021<br />\r\nStories of how Infosec and Cybersecurity pros got jobs in the field so you can be inspired, motivated, and educated on your journey<br />\r\n<a href=\"https://gettingintoinfosec.com/\" class=\"uri\">https://gettingintoinfosec.com/</a></p></li>\r\n<li><p>Infosec Career Podcast – Jason Wood (Discontinued March 2020)<br />\r\nInterviews with infosec professionals discussing their career journeys<br />\r\n<a href=\"https://infoseccareer.libsyn.com/\" class=\"uri\">https://infoseccareer.libsyn.com/</a></p></li>\r\n<li><p>Cyber Security Interviews – Douglas Brush (Bi-weekly)<br />\r\nA weekly interview based podcast with top cyber security professionals discussing how they got where they are and their perspectives on the industry<br />\r\n<a href=\"https://cybersecurityinterviews.com/\" class=\"uri\">https://cybersecurityinterviews.com/</a></p></li>\r\n<li><p>Humans of Infosec - Caroline Wong & Mike Shema (Bi-weekly)<br />\r\nA weekly podcast interviewing people from diverse backgrounds involved in infosec.<br />\r\n<a href=\"https://soundcloud.com/humans-of-infosec\" class=\"uri\">https://soundcloud.com/humans-of-infosec</a></p></li>\r\n<li><p>Hacker Valley Studio – Chris Cochran & Ron Eddings (Weekly)<br />\r\nDiscussions of personal growth and maturity within Infosec & life<br />\r\n<a href=\"https://hackervalley.com/\" class=\"uri\">https://hackervalley.com/</a></p></li>\r\n<li><p>We Hack Purple – Tanya Janka (Weekly)<br />\r\nInterview based podcast discussing various infosec careers with a diverse array of guests<br />\r\n<a href=\"https://wehackpurple.com/podcast.html\" class=\"uri\">https://wehackpurple.com/podcast.html</a></p></li>\r\n</ul>\r\n',394,75,0,'CC-BY-SA','infosec, podcasts, security',0,0,1),
(3347,'2021-06-01','Ethical Analysis of Renewable Energy and Conservation',904,'I read a paper I wrote about the ethical issues of renewable energy and conservation efforts.','<h3 id=\"original-essay\">Original essay:</h3>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr3347/ethical_analysis_of_renewable_energy_and_conservation.pdf\">https://hackerpublicradio.org/eps/hpr3347/ethical_analysis_of_renewable_energy_and_conservation.pdf</a></p>\r\n<h3 id=\"references\">References</h3>\r\n<ul>\r\n<li>Bedard, Paul (2010, March 23). High Energy Costs for the Poor Might Push Action in Congress. Washington Whispers, U.S. News, Sunday, April 11, 2010 <a href=\"https://www.usnews.com\" class=\"uri\">https://www.usnews.com</a></li>\r\n<li>Colton, Roger D. (1994, July/August). Energy and Low-Income Housing: Part I Energy Policy Hurts The Poor. NHI Shelterforce. Issue #76. Retrieved from <a href=\"https://www.nhi.org\" class=\"uri\">https://www.nhi.org</a></li>\r\n<li>Ellen (2008, October 4). Poverty and Crime [Web log message], retrieved from Defining Canada, <a href=\"https://www.definingcanada.ca\" class=\"uri\">https://www.definingcanada.ca</a></li>\r\n<li>Fellegi, Ivan P. (1997, September). On poverty and low income, retrieved March 31, 2010 from Statistics Canada web site, <a href=\"https://www.statcan.gc.ca/pub/13f0027x/13f0027x1999001-eng.htm\" class=\"uri\">https://www.statcan.gc.ca/pub/13f0027x/13f0027x1999001-eng.htm</a></li>\r\n<li>Minu (2010, April 2). Lamps | Compact Fluorescent Lamps (CFL) [Web log message]. Retrieved from House Construction in India, <a href=\"https://houseconstructionindia.blogspot.com\" class=\"uri\">https://houseconstructionindia.blogspot.com</a></li>\r\n<li>Patel, Julie (2010, March 11). NAACP and FPL: Saving too much energy hurts the poor [web log message], Retrieved from SunSentinel.com, <a href=\"https://weblogs.sun-sentinel.com\" class=\"uri\">https://weblogs.sun-sentinel.com</a></li>\r\n<li>Smith, Adam (1776). An Inquiry into the Nature And Causes of the Wealth of Nations. Public domain.</li>\r\n<li>Toohey, Marty (2009, September 21). Advocates concerned Austin Energy plans will hurt poor, elderly. statesman.com. Retrieved from www.statesman.com</li>\r\n<li>Walsh, Bryan (2009, February 17). Building Green Houses for the Poor. Time. Retrieved from <a href=\"https://www.time.com\" class=\"uri\">https://www.time.com</a>.</li>\r\n</ul>',383,0,0,'CC-BY-SA','Ethics,renewable,energy,poverty,solar,wind,conservation,green',0,0,1),
(3348,'2021-06-02','Feedback on the Article by hedorah about HPR',4420,'Join the policy discussions on the mail list','<p>hedorah posted an article <a href=\"https://foxacid.se/hedorah/posts/hpr/\">https://foxacid.se/hedorah/posts/hpr/</a>, and we read out the mail thread that resulted <a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-April/014931.html\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-April/014931.html</a></a>',30,0,1,'CC-BY-SA','HPR, policy decisions',0,0,1),
(3500,'2021-12-31','Contrast Layer Modes',1019,'More on Layer Modes in GIMP with the Contrast Modes','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the Contrast Modes, which are ways of combining layers that can heighten the contrast my making light pixels lighter and dark pixels darker. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/darken-modes/\" class=\"uri\">https://www.ahuka.com/gimp/darken-modes/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, Contrast Modes',0,0,1),
(3510,'2022-01-14','Syntax, Switches, and Help',1215,'We continue our look the old warhorse, DOS. This time it is Syntax, Switches, and Help.','<p>Since DOS is a command line type of operating system, it is really important that you understand the syntax of commands. The good news is that the system will do what you tell it to do. But the bad news is that it will do what you tell it to do. You have to tell it in the precisely correct way, and that means Syntax. And with a number of commands you can modify them using Switches. And where do you learn all about Syntax and Switches? Why, in the HELP system, of course!</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-6-syntax-and-switches-help-system/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-6-syntax-and-switches-help-system/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, syntax, switches, help',0,0,1),
(3520,'2022-01-28','Inversion Layer Modes',1064,'More on Layer Modes in GIMP with the Inversion Modes','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the Inversion Modes, which in various ways invert the lightness and the color values of the component layers. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/gimp/lighten-layer-modes/\" class=\"uri\">https://www.ahuka.com/gimp/lighten-layer-modes/</a></li>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/darken-modes/\" class=\"uri\">https://www.ahuka.com/gimp/darken-modes/</a></li>\r\n</ul>',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, Inversion Modes',0,0,1),
(3530,'2022-02-11','Filenames and ASCII',875,'We continue our look at the old warhorse, DOS. This time it is DOS filenames and ASCII','<p>In a purely text-based operating system you need to pay special attention to naming files. You won\'t have any helpful icons or thumbnails to help you locate things. So we dig into the file naming conventions in DOS, including forbidden characters. And since the possible characters all come from the ASCII character set, we do a small look at that as well.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://webopedia.internet.com/TERM/A/ASCII.html\" class=\"uri\">https://webopedia.internet.com/TERM/A/ASCII.html</a></li>\r\n<li><a href=\"https://www.techweb.com/encyclopedia/defineterm?term=ASCIIchart\" class=\"uri\">https://www.techweb.com/encyclopedia/defineterm?term=ASCIIchart</a></li>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-7-dos-filenames-ascii/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-7-dos-filenames-ascii/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, filenames, ASCII',0,0,1),
(3353,'2021-06-09','My terminal journey, part 01.',2814,'Becoming terminal friendly.','<h2 id=\"book-tlcl\">Book <a href=\"https://sourceforge.net/projects/linuxcommand/files/TLCL/19.01/TLCL-19.01.pdf/download\" title=\"download link\">TLCL</a></h2>\r\n<p>The Linux Command Line: <a href=\"https://www.linuxcommand.org/tlcl.php\">https://www.linuxcommand.org/tlcl.php</a></p>\r\n<h2 id=\"my-bashrc-alias\">My .bashrc alias</h2>\r\n<pre><code># ls aliases\r\nalias la=&#39;ls -Alh --group-directories-first&#39;\r\nalias lr=&#39;ls -lh --group-directories-first --recursive&#39;\r\nalias lar=&#39;ls -Alh --group-directories-first --recursive&#39;\r\n\r\n# safety first ;)\r\nalias rmi=&#39;rm --interactive --verbose&#39;\r\nalias mvi=&#39;mv --interactive --verbose&#39;\r\nalias cpi=&#39;cp --interactive --verbose&#39;\r\n\r\n# cd reverse dir\r\nalias ..=&#39;cd ..&#39;\r\nalias .2=&#39;cd ../..&#39;\r\nalias .3=&#39;cd ../../..&#39;\r\nalias .4=&#39;cd ../../../..&#39;\r\nalias .5=&#39;cd ../../../../..&#39;\r\n\r\n# cd dir\r\nalias cd.d=&#39;cd ~/Documents/.dump&#39;\r\n\r\n# shutdown | reboot\r\nalias ssn=&#39;sudo shutdown -P now&#39;\r\nalias sr=&#39;sudo reboot&#39;\r\n\r\n# Misc\r\nalias nrpt=&#39;echo -e &quot;\\n\\n---\\n\\nNew Report\\n\\n---\\n\\n&quot;&#39;\r\n</code></pre>\r\n<h2 id=\"my-dump-script\">My dump script</h2>\r\n<pre><code>#!/bin/bash\r\n\r\ndump=dump$(date +%m-%d-%Y).txt\r\npdat=$(date +%a_%b_%d_%Y_%T)\r\n\r\ntouch $dump;\r\n\r\necho -e &quot;$pdat&quot; &gt; $dump; echo -e &quot;\\n\\nThis file is used to store terminal output for later use; now get out!\\n\\n&quot; &gt;&gt; $dump;\r\n\r\necho -e &quot;\\n\\nDump file $dump is ready for use (created on $(date +%m-%d-%Y_%T)).\\n\\n&quot;\r\n</code></pre>\r\n<h2 id=\"my-upgrade-script\">My Upgrade script</h2>\r\n<pre><code>#!/bin/bash\r\n\r\ndp=dump$(date +%m-%d-%Y).txt\r\n\r\ndate | tee -a ./$dp; echo -e &quot;\\n&quot; | tee -a ./$dp;\r\n\r\nsudo apt-get update | tee -a ./$dp; echo -e &quot;\\n&quot; | tee -a ./$dp;\r\necho -e &quot;System Update Completed.&quot; | tee -a ./$dp; echo -e &quot;\\n&quot; | tee -a ./$dp;\r\n\r\nsudo apt-get upgrade --yes | tee -a ./$dp; echo -e &quot;\\n&quot; | tee -a ./$dp;\r\necho -e &quot;System Upgrade Completed.&quot; | tee -a ./$dp; echo -e &quot;\\n&quot; | tee -a ./$dp;\r\n</code></pre>\r\n<h2 id=\"commands\">Commands</h2>\r\n<ol>\r\n<li><p>the upgrade example <code>sudo apt-get update | tee -a ~/Documents/.dump/dump05-05-2021.txt; nrpt &gt;&gt; ./dump05-05-2021.txt;</code></p></li>\r\n<li><p>the nmap example (plus the other command I couldn\'t remember while recording) <code>apt-cache search nmap &gt;&gt; ./dump05-05-2021.txt; nrpt &gt;&gt; ./dump05-05-2021.txt;</code> <code>apt-cache showpkg nmap</code></p></li>\r\n<li><p>the depends example <code>apt-cache depends nmap &gt;&gt; ./dump05-05-2021.txt;</code></p></li>\r\n<li><p>the download example <code>sudo apt-get download dict dictd dict-wn dict-gcide artha</code></p></li>\r\n<li><p>vim <code>sudo apt-get vim; vimtutor</code></p></li>\r\n<li><p>Terminal examples <code>~</code>= home folder, <code>CTRL + R</code>= command search , <code>CTRL + L</code>= clear terminal, <code>xdg-open</code>= open files with default app.</p></li>\r\n<li><p>Searching with grep example <code>ls -lhAr ~ | grep -i bash &gt;&gt; ./dump05-05-2021.txt</code></p></li>\r\n<li><p>the dump05-05-2021.txt file</p></li>\r\n</ol>\r\n<pre><code>Wed_May_05_2021_12:22:43\r\n\r\nThis file is used to store terminal output for later use; now get out!\r\n\r\n\r\nHit:1 https://dl.google.com/linux/chrome/deb stable InRelease\r\nIgn:2 https://mirror.cs.jmu.edu/pub/linuxmint/packages ulyana InRelease\r\nGet:3 https://security.ubuntu.com/ubuntu focal-security InRelease [109 kB]\r\nHit:4 https://mirror.cs.jmu.edu/pub/linuxmint/packages ulyana Release\r\nHit:5 https://mirror.cogentco.com/pub/linux/ubuntu focal InRelease\r\nHit:6 https://mirror.cogentco.com/pub/linux/ubuntu focal-updates InRelease\r\nHit:7 https://archive.canonical.com/ubuntu focal InRelease\r\nHit:8 https://mirror.cogentco.com/pub/linux/ubuntu focal-backports InRelease\r\nFetched 109 kB in 1s (158 kB/s)\r\nReading package lists...\r\n\r\n---\r\n\r\nNew Report\r\n\r\n---\r\n\r\nbrutespray - Python bruteforce tool\r\ndindel - determines indel calls from short-read data\r\ndoscan - port scanner for discovering services on large networks\r\nforensics-all - Debian Forensics Environment - essential components (metapackage)\r\nforensics-all-gui - Debian Forensics Environment - GUI components (metapackage)\r\nlibfile-map-perl - Perl module providing simple and safe memory mapping\r\nlibnmap-parser-perl - module to parse nmap scan results with perl\r\nlibwlocate-dev - Library for doing location lookup based on free openwlanmap.org data\r\nlibwlocate0 - Library for doing location lookup based on free openwlanmap.org data\r\nmapsembler2 - bioinformatics targeted assembly software\r\nmasscan - TCP port scanner\r\nncat - NMAP netcat reimplementation\r\nncrack - High-speed network authentication cracking tool\r\nndiff - The Network Mapper - result compare utility\r\nnmap - The Network Mapper\r\nnmap-common - Architecture independent files for nmap\r\nnmapsi4 - graphical interface to nmap, the network scanner\r\np0f - Passive OS fingerprinting tool\r\npads - Passive Asset Detection System\r\npnscan - Multi threaded port scanner\r\npsad - Port Scan Attack Detector\r\npython-libnmap-doc - Python NMAP Library (common documentation)\r\npython3-libnmap - Python 3 NMAP library\r\npython3-nmap - Python3 interface to the Nmap port scanner\r\npython3-scapy - Packet generator/sniffer and network scanner/discovery (Python 3)\r\nsamblaster - marks duplicates, extracts discordant/split reads\r\ntophat-recondition - post-processor for TopHat unmapped reads\r\nxprobe - Remote OS identification\r\nxscreensaver-gl - GL(Mesa) screen saver modules for screensaver frontends\r\n\r\n---\r\n\r\nNew Report\r\n\r\n---\r\n\r\nnmap\r\n  Depends: nmap-common\r\n  Depends: libc6\r\n  Depends: libgcc-s1\r\n  Depends: liblinear4\r\n  Depends: liblua5.3-0\r\n  Depends: libpcap0.8\r\n  Depends: libpcre3\r\n  Depends: libssl1.1\r\n  Depends: libstdc++6\r\n  Depends: lua-lpeg\r\n  Depends: zlib1g\r\n  Suggests: ncat\r\n  Suggests: ndiff\r\n  Suggests: &lt;zenmap&gt;\r\n</code></pre>\r\n<h2 id=\"nato-phonetic-alphabet\">NATO Phonetic Alphabet</h2>\r\n<p>The NATO phonetic alphabet is a Spelling Alphabet; a set of words used instead of letters in oral communication (i.e. over the phone or military radio). Each word (\"code word\") stands for its initial letter (alphabetical \"symbol\"). The 26 code words in the NATO phonetic alphabet are assigned to the 26 letters of the English alphabet in alphabetical order as follows: Symbol, Code Word, Morse Code, Phonic.</p>\r\n<p>(pronunciation)</p>\r\n<pre><code>A, Alfa/Alpha, AL FAH.\r\nB, Bravo, BRAH VOH.\r\nC, Charlie, CHAR LEE.\r\nD, Delta, DELL TAH.\r\nE, Echo, ECK OH.\r\nF, Foxtrot, FOKS TROT.\r\nG, Golf, GOLF.\r\nH, Hotel, HOH TELL.\r\nI, India, IN DEE AH.\r\nJ, Juliett, JEW LEE ETT.\r\nK, Kilo, KEY LOH.\r\nL, Lima, LEE MAH.\r\nM, Mike, MIKE.\r\nN, November, NO VEMBER.\r\nO, Oscar, OSS CAH.\r\nP, Papa, PAH PAH.\r\nQ, Quebec, KEH BECK.\r\nR, Romeo, ROW ME OH.\r\nS, Sierra, SEE AIRRAH.\r\nT, Tango, TANG OH.\r\nU, Uniform, YOU NEE FORM.\r\nV, Victor, VIK TAH.\r\nW, Whiskey, WISS KEY.\r\nX, X-ray, ECKS RAY.\r\nY, Yankee, YANG KEY.\r\nZ, Zulu, ZOO LOO.\r\n</code></pre>\r\n<h1 id=\"hacker-public-radio\">Hacker Public Radio</h1>\r\n<p><strong>Correspondent:</strong> <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" title=\"Darwin works too.\">Some Guy On The Internet.</a> <strong>Host ID:</strong> 391 <strong>E-mail:</strong> <a href=\"Lyunpaw@gmail.com\" title=\"use  hpr391  as the email subject.\">Lyunpaw@gmail.com</a></p>\r\n<ul>\r\n<li>use <code>hpr391</code> as the subject for all emails. If not, junk filter.</li>\r\n</ul>\r\n<p><strong>license:</strong> <a href=\"https://creativecommons.org/licenses/by-sa/4.0/legalcode\" title=\"CC BY-SA 4.0\">Creative Commons Attribution-ShareAlike 4.0 International</a></p>\r\n<p><strong>Shows:</strong></p>\r\n<ol>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3272\" title=\"hpr3272\">In GNU/Linux, there is no \"diversity\", we\'re all just data.</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3272.ogg\">https://hackerpublicradio.org/local/hpr3272.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3272.spx\">https://hackerpublicradio.org/local/hpr3272.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3272.mp3\">https://hackerpublicradio.org/local/hpr3272.mp3</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3273\" title=\"hpr3273\">Embrace Firefox</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3273.ogg\">https://hackerpublicradio.org/local/hpr3273.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3273.spx\">https://hackerpublicradio.org/local/hpr3273.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3273.mp3\">https://hackerpublicradio.org/local/hpr3273.mp3</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3282\" title=\"hpr3282\">HP Laptop with AMD Ryzen 3 Mobile with Radeon Graphics</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3282.ogg\">https://hackerpublicradio.org/local/hpr3282.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3282.spx\">https://hackerpublicradio.org/local/hpr3282.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3282.mp3\">https://hackerpublicradio.org/local/hpr3282.mp3</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3298\" title=\"hpr3298\">Poisoning The Well</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3298.ogg\">https://hackerpublicradio.org/local/hpr3298.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3298.spx\">https://hackerpublicradio.org/local/hpr3298.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3298.mp3\">https://hackerpublicradio.org/local/hpr3298.mp3</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3308\" title=\"hpr3308\">let\'s talk about Thunderbird</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3308.ogg\">https://hackerpublicradio.org/local/hpr3308.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3308.spx\">https://hackerpublicradio.org/local/hpr3308.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3308.mp3\">https://hackerpublicradio.org/local/hpr3308.mp3</a></li>\r\n</ul></li>\r\n</ol>\r\n<p><a rel=\"license\" href=\"https://creativecommons.org/licenses/by-sa/4.0/\"><img alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by-sa/4.0/88x31.png\" /></a><br />This work is licensed under a <a rel=\"license\" href=\"https://creativecommons.org/licenses/by-sa/4.0/\">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>\r\n',391,98,0,'CC-BY-SA','terminal, apt-get, apt-cache, .bashrc',0,0,1),
(3354,'2021-06-10','My Devices',1455,'I walk around my house and talk about any interesting Devices i have','N/A\r\n\r\n\r\n<p>\r\n<small>Added by Ken</small><br />\r\noperat0r and Son walk around the house talking about the devices that he has.\r\n</p>\r\n<ol>\r\n<li>Android meeting alarms</li>\r\n<li><a href=\"https://www.mozilla.org/en-US/firefox/new/\">Firefox</a></li>\r\n<li><a href=\"https://privacybadger.org/\">Privacy Badger</a></li>\r\n<li><a href=\"https://ublockorigin.com/\">UBlock Origin</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3321\">DNS66</a></li>\r\n<li><a href=\"https://voice.google.com/\">Google Voice</a></li>\r\n<li>CCTV Camera, to Zone Minder</li>\r\n<li><a href=\"https://pjreddie.com/darknet/\">DarkNet</a></li>\r\n<li><a href=\"https://kodi.tv/\">Kodi</a></li>\r\n<li><a href=\"https://sonarr.tv/\">sonarr</a></li>\r\n<li><a href=\"https://radarr.video/\">radarr</a></li>\r\n<li><a href=\"https://ombi.io/\">Ombi</a></li>\r\n<li><a href=\"https://www.plex.tv/\">Plex</a></li>\r\n<li><a href=\"https://www.accuweather.com/\">AccuWeather</a></li>\r\n<li><a href=\"https://blueteamlabs.online/\">Blue Team Labs</a></li>\r\n<li>Admin mode on bluethoot TV</li>\r\n<li>iroso ncf wireless bluetooth headset</li>\r\n<li><a href=\"https://www.amazon.com/Bluetooth-Receiver-Transmitter-Wireless-Headphones/dp/B00VJTIMIS\">Keedox V4.0 Bluetooth Music Receiver Transmitter</a></li>\r\n<li><a href=\"https://www.hunterindustries.com/\">Hunter Irrigation</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Infiniti_G-series_(Q40/Q60)\">Nissan Infiniti Q40</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Wii_U\">Nintendo Wii U</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Nintendo_Switch\">Nintendo Switch</a></li>\r\n<li><a href=\"https://gorillatough.com/\">Gorilla Glue</a></li>\r\n<li>Chargemaster 3000</li>\r\n<li>Get splitbox AC</li>\r\n<li><a href=\"https://steelseries.com/gaming-headsets\">Steel Series HeadSet</a></li>\r\n<li><a href=\"https://www.tindie.com/products/RobG/msp430-nixie-clock-kit/\">MSP430 Nixie Clock kit from RobG on Tindie</a></li>\r\n<li><a href=\"https://play.google.com/store/apps/details?id=co.brili.routines&hl=en_US&gl=US\">Brili Routines - Visual Timer for Kids</a></li>\r\n<li><a href=\"https://www.sonicalert.com/SBB500SS-Alarm-Clock\">Sonic Bomb Alarm Clock</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Chromecast\">Chromecast</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Pulse_oximetry\">Pulse oximetry</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Transcutaneous_electrical_nerve_stimulation\">Transcutaneous electrical nerve stimulation (TENS)</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Roomba\">Roomba</a></li>\r\n<li><a href=\"https://www.zircon.com/categories/water-detectors/\">Zircom Wireless Water Detectors</a></li>\r\n</ol>',36,0,0,'CC-BY-SA','devices',0,0,1),
(3357,'2021-06-15','My terminal journey, part 02.',1890,'Becoming terminal friendly.','<h2 id=\"discovering-the-packages-vertical-lists\">Discovering the packages; vertical lists.</h2>\r\n<p><a href=\"https://en.wikipedia.org/wiki/APT_(software)\" title=\"wiki\">apt package manager</a></p>\r\n<ul>\r\n<li><p><strong>First Command:</strong> <code>sudo apt list --upgradeable</code></p></li>\r\n<li><p><strong>Command Breakdown:</strong></p>\r\n<ul>\r\n<li><code>sudo</code> is <strong>root privileges</strong> (to become admin for a single command).</li>\r\n<li><code>apt</code> is the Command Name.</li>\r\n<li><code>list</code> to display a list of packages satisfying certain <strong>criteria</strong>.</li>\r\n<li><code>--upgradeable</code> the <strong>criteria</strong></li>\r\n</ul></li>\r\n<li><p>Command Standard Output: (abridged)</p>\r\n<pre><code>Listing...\r\nalsa-ucm-conf/focal-updates,focal-updates 1.2.2-1ubuntu0.7 all [upgradable from: 1.2.2-1ubuntu0.6]\r\nalsa-utils/focal-updates 1.2.2-1ubuntu2.1 amd64 [upgradable from: 1.2.2-1ubuntu2]\r\nbluetooth/focal-updates,focal-updates 5.53-0ubuntu3.1 all [upgradable from: 5.53-0ubuntu3]\r\ngir1.2-webkit2-4.0/focal-updates,focal-security 2.32.0-0ubuntu0.20.04.1 amd64 [upgradable from: 2.30.6-0ubuntu0.20.04.1]\r\ngoogle-chrome-stable/stable 90.0.4430.212-1 amd64 [upgradable from: 90.0.4430.93-1]\r\niio-sensor-proxy/focal-updates 2.8-1ubuntu1 amd64 [upgradable from: 2.8-1]\r\nqemu-system-x86/focal-updates 1:4.2-3ubuntu6.16 amd64 [upgradable from: 1:4.2-3ubuntu6.15]\r\nqemu-utils/focal-updates 1:4.2-3ubuntu6.16 amd64 [upgradable from: 1:4.2-3ubuntu6.15]\r\nsamba-common-bin/focal-updates,focal-security 2:4.11.6+dfsg-0ubuntu1.8 amd64 [upgradable from:     2:4.11.6+dfsg-0ubuntu1.6]\r\n</code></pre></li>\r\n</ul>\r\n<hr />\r\n<h2 id=\"discovering-the-packages-horizontal-list\">Discovering the packages; horizontal list.</h2>\r\n<p><a href=\"https://linux.die.net/man/8/apt-get\" title=\"apt-get manpage\">apt-get package manager</a></p>\r\n<ul>\r\n<li><p><strong>Second Command:</strong> <code>sudo apt-get -u upgrade --assume-no</code></p></li>\r\n<li><p><strong>Command Breakdown:</strong></p>\r\n<ul>\r\n<li><code>sudo</code> is <strong>root privileges</strong> (to become admin for a single command).</li>\r\n<li><code>apt-get</code> is the Command Name.</li>\r\n<li><code>-u</code> or <code>--show-upgraded</code> list of packages that are to be upgraded; must be used with <code>upgrade</code>.</li>\r\n<li><code>upgrade</code> is used to install the newest versions of all packages currently installed.</li>\r\n<li><code>--assume-no</code> Automatically answers \"No\" when the command asks, “Do you want to continue? [Y/n]”. (Do you want to upgrade at this moment? No. You get it).</li>\r\n</ul></li>\r\n<li><p><strong>Note:</strong> Linux Mint 20 manpage for <code>apt-get</code> does not include the <code>-u</code> option or description.</p>\r\n<pre><code>-u, --show-upgraded\r\nShow upgraded packages. Print out a list of all packages that are to be upgraded.\r\n</code></pre></li>\r\n<li><p>Command Standard Output:</p>\r\n<pre><code>Reading package lists...\r\nBuilding dependency tree...\r\nReading state information...\r\nCalculating upgrade...\r\nThe following packages were automatically installed and are no longer required:\r\n  libllvm10 libllvm10:i386 libnvidia-common-450 libnvidia-compute-455:i386\r\n  libnvidia-decode-455:i386 libnvidia-encode-455:i386 libnvidia-fbc1-455:i386\r\n  libnvidia-gl-455:i386 libnvidia-ifr1-455:i386 nvidia-kernel-common-455\r\n  nvidia-kernel-source-455 nvidia-utils-455 xserver-xorg-video-nvidia-455\r\nUse &#39;sudo apt autoremove&#39; to remove them.\r\nThe following packages have been kept back:\r\n  libnvidia-common-450 libnvidia-common-460 linux-generic\r\n  linux-headers-generic linux-image-generic\r\nThe following packages will be upgraded:\r\n  alsa-ucm-conf alsa-utils bluetooth bluez bluez-cups bluez-obexd firefox\r\n  firefox-locale-en flatpak gir1.2-flatpak-1.0 gir1.2-javascriptcoregtk-4.0\r\n  gir1.2-webkit2-4.0 google-chrome-stable iio-sensor-proxy libasound2\r\n  libasound2-data libatopology2 libbluetooth3 libexiv2-27 libflatpak0\r\n  libjavascriptcoregtk-4.0-18 liblightdm-gobject-1-0 libmysqlclient21\r\n  libnetplan0 libsmbclient libvirt-clients libvirt-daemon\r\n  libvirt-daemon-driver-qemu libvirt-daemon-driver-storage-rbd\r\n  libvirt-daemon-system libvirt-daemon-system-systemd libvirt0 libwacom-bin\r\n  libwacom-common libwacom2 libwbclient0 libwebkit2gtk-4.0-37 libxmlb1 lightdm\r\n  linux-firmware linux-libc-dev netplan.io openvpn python3-apport\r\n  python3-problem-report python3-samba python3-yaml qemu-block-extra qemu-kvm\r\n  qemu-system-common qemu-system-data qemu-system-gui qemu-system-x86\r\n  qemu-utils samba-common samba-common-bin samba-libs smbclient thermald\r\n  xul-ext-lightning\r\n60 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.\r\nNeed to get 295 MB of archives.\r\nAfter this operation, 4,023 kB of additional disk space will be used.\r\nDo you want to continue? [Y/n] N\r\nAbort.\r\n</code></pre></li>\r\n</ul>\r\n<hr />\r\n<h2 id=\"discovering-the-packages-colums--rows\">Discovering the packages; colums &amp; rows.</h2>\r\n<p><a href=\"https://linux.die.net/man/1/dpkg-query\" title=\"dpkg\">dpkg-query</a></p>\r\n<ul>\r\n<li><p><strong>Third Command:</strong> <code>dpkg-query -l</code></p></li>\r\n<li><p><strong>Command Breakdown:</strong></p>\r\n<ul>\r\n<li><code>dpkg-query</code> is the Command Name.</li>\r\n<li><code>-l</code> or <code>--list</code> list all installed packages on your system.</li>\r\n</ul></li>\r\n<li><p><strong>Fourth Command:</strong> <code>dpkg-query -L add-apt-key</code></p></li>\r\n<li><p><strong>Command Breakdown:</strong></p>\r\n<ul>\r\n<li><code>dpkg-query</code> is the Command Name.</li>\r\n<li><code>-L</code> or <code>--listfiles</code> list specific package, <strong>add-apt-key</strong> in this example, installed on your system.</li>\r\n</ul></li>\r\n<li><p>Command Standard Output: (abridged)</p>\r\n<ul>\r\n<li><code>dpkg-query -l</code> all installed packages.\r\n<pre><code>Desired=Unknown/Install/Remove/Purge/Hold\r\n| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend\r\n|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)\r\n||/ Name                                              Version                               Architecture Description\r\n+++-=================================================-=====================================-============-======================================================================================================\r\nii  accountsservice                                   0.6.55-0ubuntu12~20.04.4              amd64        query and manipulate user account information\r\nii  acl                                               2.2.53-6                              amd64        access control list - utilities\r\nii  acpi-support                                      0.143                                 amd64        scripts for handling many ACPI events\r\nii  acpid                                             1:2.0.32-1ubuntu1                     amd64        Advanced Configuration and Power Interface event daemon\r\nii  add-apt-key                                       1.0-0.5                               all          Command line tool to add GPG keys to the APT keyring\r\nii  adduser                                           3.118ubuntu2                          all          add and remove users and groups\r\nii  adwaita-icon-theme                                3.36.1-2ubuntu0.20.04.2               all          default icon theme of GNOME (small subset)\r\nii  adwaita-icon-theme-full                           3.36.1-2ubuntu0.20.04.2               all          default icon theme of GNOME\r\n</code></pre></li>\r\n<li><code>dpkg-query -L add-apt-key</code> single package.\r\n<pre><code>/.\r\n/usr\r\n/usr/share\r\n/usr/share/doc\r\n/usr/share/doc/add-apt-key\r\n/usr/share/doc/add-apt-key/README\r\n/usr/share/doc/add-apt-key/AUTHORS\r\n/usr/share/doc/add-apt-key/README.Debian\r\n/usr/share/doc/add-apt-key/copyright\r\n/usr/share/doc/add-apt-key/changelog.Debian.gz\r\n/usr/share/man\r\n/usr/share/man/man8\r\n/usr/share/man/man8/add-apt-key.8.gz\r\n/usr/sbin\r\n/usr/sbin/add-apt-key\r\n/etc\r\n/etc/default\r\n/etc/default/add-apt-key\r\n</code></pre></li>\r\n</ul></li>\r\n</ul>\r\n<hr />\r\n<h2 id=\"marking-the-packages-hold\">Marking the packages; hold.</h2>\r\n<p><a href=\"https://manpages.debian.org/stretch/apt/apt-mark.8.en.html\" title=\"apt-mark\">apt-mark</a></p>\r\n<ul>\r\n<li><p><strong>Fifth &amp; Sixth Commands:</strong> <code>sudo apt-mark hold google-chrome-stable; sudo apt-mark showhold</code></p></li>\r\n<li><p><strong>Command Breakdown:</strong></p>\r\n<ul>\r\n<li><code>sudo</code> is <strong>root privileges</strong> (to become admin for a single command).</li>\r\n<li><code>apt-mark</code> is the Command Name.</li>\r\n<li><code>hold</code> will <strong>prevent</strong> the package from being automatically installed, upgraded or removed.</li>\r\n<li><code>google-chrome-stable</code> is the package effected by hold.</li>\r\n<li><code>;</code> is the end of a command; command seperation.</li>\r\n<li><code>sudo</code> is <strong>root privileges</strong> (to become admin for a single command).</li>\r\n<li><code>apt-mark</code> is the Command Name.</li>\r\n<li><code>showhold</code> will print a list of packages effected by <code>hold</code>.</li>\r\n</ul></li>\r\n<li><p>Command Standard Output: (abridged)</p>\r\n<pre><code>google-chrome-stable set on hold.\r\n</code></pre></li>\r\n</ul>\r\n<hr />\r\n<h2 id=\"marking-the-packages-unhold\">Marking the packages; unhold.</h2>\r\n<p><a href=\"https://manpages.debian.org/stretch/apt/apt-mark.8.en.html\" title=\"apt-mark\">apt-mark</a></p>\r\n<ul>\r\n<li><p><strong>Seventh Command:</strong> <code>sudo apt-mark unhold google-chrome-stable</code></p></li>\r\n<li><p><strong>Command Breakdown:</strong></p>\r\n<ul>\r\n<li><code>sudo</code> is <strong>root privileges</strong> (to become admin for a single command).</li>\r\n<li><code>apt-mark</code> is the Command Name.</li>\r\n<li><code>unhold</code> will remove <code>hold</code>, allowing the package to be automatically installed, upgraded or removed.</li>\r\n<li><code>google-chrome-stable</code> is the package once effected by hold; no longer due to <code>unhold</code>.</li>\r\n</ul></li>\r\n<li><p><strong>Note:</strong> <code>showhold</code> will now print blank/nothing because packages are no longer effected by <code>hold</code>.</p></li>\r\n</ul>\r\n<hr />\r\n<h2 id=\"exporting-manpage-to-text-file\">Exporting Manpage to text file.</h2>\r\n<ul>\r\n<li><strong>Bonus Command:</strong> it\'s a big one.</li>\r\n</ul>\r\n<pre><code>touch apt-get01.txt; date &gt; ~/Documents/apt-get01.txt; echo -e &quot;\\n&quot; &gt;&gt; ~/Documents/apt-get01.txt; apt-get --version &gt;&gt; ~/Documents/apt-get01.txt; echo -e &quot;\\n\\napt-get --help\\n\\n&quot; &gt;&gt; ~/Documents/apt-get01.txt; apt-get --help &gt;&gt; ~/Documents/apt-get01.txt; echo -e &quot;\\n\\nman apt-get\\n\\n&quot; &gt;&gt; ~/Documents/apt-get01.txt; man apt-get &gt;&gt; ~/Documents/apt-get01.txt; echo -e &quot;\\n\\nCompleted.&quot;;\r\n</code></pre>\r\n<ul>\r\n<li><strong>Command Breakdown:</strong>\r\n<ul>\r\n<li><p><code>touch apt-get01.txt;</code> this command will create the \"apt-get01.txt\" file.</p></li>\r\n<li><p><code>date &gt; ~/Documents/apt-get01.txt;</code> this command stores the date and time with the \"apt-get01.txt\" file.</p></li>\r\n<li><p><code>echo -e \"\\n\" &gt;&gt; ~/Documents/apt-get01.txt;</code> this command gives us a blank line or new line within the \"apt-get01.txt\" file.</p></li>\r\n<li><p><code>apt-get --version &gt;&gt; ~/Documents/apt-get01.txt;</code> this command adds the version of <code>apt-get</code> we have installed to the \"apt-get01.txt\" file.</p></li>\r\n<li><p><code>echo -e \"\\n\\napt-get --help\\n\\n\" &gt;&gt; ~/Documents/apt-get01.txt;</code> this command adds to new lines or blank lines to the file then, adds the label \"apt-get -- help\" to the \"apt-get01.txt\" file.</p></li>\r\n<li><p><code>apt-get --help &gt;&gt; ~/Documents/apt-get01.txt;</code> this command adds the standard output of <code>apt-get --help</code> to the \"apt-get01.txt\" file.</p></li>\r\n<li><p><code>echo -e \"\\n\\nman apt-get\\n\\n\" &gt;&gt; ~/Documents/apt-get01.txt;</code> intentionally left blank.</p></li>\r\n<li><p><code>man apt-get &gt;&gt; ~/Documents/apt-get01.txt;</code> intentionally left blank.</p></li>\r\n<li><p><code>echo -e \"\\n\\nCompleted.\";</code> intentionally left blank.</p></li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"nato-phonetic-alphabet\">NATO Phonetic Alphabet</h2>\r\n<p>The NATO phonetic alphabet is a Spelling Alphabet; a set of words used instead of letters in oral communication (i.e. over the phone or military radio). Each word (\"code word\") stands for its initial letter (alphabetical \"symbol\"). The 26 code words in the NATO phonetic alphabet are assigned to the 26 letters of the English alphabet in alphabetical order as follows: Symbol, Code Word, Morse Code, Phonic.</p>\r\n<p>(pronunciation)</p>\r\n<pre><code>A, Alfa/Alpha, AL FAH.\r\nB, Bravo, BRAH VOH.\r\nC, Charlie, CHAR LEE.\r\nD, Delta, DELL TAH.\r\nE, Echo, ECK OH.\r\nF, Foxtrot, FOKS TROT.\r\nG, Golf, GOLF.\r\nH, Hotel, HOH TELL.\r\nI, India, IN DEE AH.\r\nJ, Juliett, JEW LEE ETT.\r\nK, Kilo, KEY LOH.\r\nL, Lima, LEE MAH.\r\nM, Mike, MIKE.\r\nN, November, NO VEMBER.\r\nO, Oscar, OSS CAH.\r\nP, Papa, PAH PAH.\r\nQ, Quebec, KEH BECK.\r\nR, Romeo, ROW ME OH.\r\nS, Sierra, SEE AIRRAH.\r\nT, Tango, TANG OH.\r\nU, Uniform, YOU NEE FORM.\r\nV, Victor, VIK TAH.\r\nW, Whiskey, WISS KEY.\r\nX, X-ray, ECKS RAY.\r\nY, Yankee, YANG KEY.\r\nZ, Zulu, ZOO LOO.\r\n</code></pre>\r\n<h1 id=\"hacker-public-radio\">Hacker Public Radio</h1>\r\n<p><strong>Correspondent:</strong> <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" title=\"Darwin works too.\">Some Guy On The Internet.</a> <strong>Host ID:</strong> 391 <strong>E-mail:</strong> <a href=\"Lyunpaw@gmail.com\" title=\"use  hpr391  as the email subject.\">Lyunpaw@gmail.com</a></p>\r\n<ul>\r\n<li>use <code>hpr391</code> as the subject for all emails. If not, junk filter.</li>\r\n</ul>\r\n<p><strong>license:</strong> <a href=\"https://creativecommons.org/licenses/by-sa/4.0/legalcode\" title=\"CC BY-SA 4.0\">Creative Commons Attribution-ShareAlike 4.0 International</a></p>\r\n<p><strong>Shows:</strong></p>\r\n<ol>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3272\" title=\"hpr3272\">In GNU/Linux, there is no \"diversity\", we\'re all just data.</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3272.ogg\">https://hackerpublicradio.org/local/hpr3272.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3272.spx\">https://hackerpublicradio.org/local/hpr3272.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3272.mp3\">https://hackerpublicradio.org/local/hpr3272.mp3</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3273\" title=\"hpr3273\">Embrace Firefox</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3273.ogg\">https://hackerpublicradio.org/local/hpr3273.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3273.spx\">https://hackerpublicradio.org/local/hpr3273.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3273.mp3\">https://hackerpublicradio.org/local/hpr3273.mp3</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3282\" title=\"hpr3282\">HP Laptop with AMD Ryzen 3 Mobile with Radeon Graphics</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3282.ogg\">https://hackerpublicradio.org/local/hpr3282.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3282.spx\">https://hackerpublicradio.org/local/hpr3282.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3282.mp3\">https://hackerpublicradio.org/local/hpr3282.mp3</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3298\" title=\"hpr3298\">Poisoning The Well</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3298.ogg\">https://hackerpublicradio.org/local/hpr3298.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3298.spx\">https://hackerpublicradio.org/local/hpr3298.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3298.mp3\">https://hackerpublicradio.org/local/hpr3298.mp3</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3308\" title=\"hpr3308\">let\'s talk about Thunderbird</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3308.ogg\">https://hackerpublicradio.org/local/hpr3308.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3308.spx\">https://hackerpublicradio.org/local/hpr3308.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3308.mp3\">https://hackerpublicradio.org/local/hpr3308.mp3</a></li>\r\n</ul></li>\r\n</ol>\r\n<p><a rel=\"license\" href=\"https://creativecommons.org/licenses/by-sa/4.0/\"><img alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by-sa/4.0/88x31.png\" /></a><br />This work is licensed under a <a rel=\"license\" href=\"https://creativecommons.org/licenses/by-sa/4.0/\">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>\r\n',391,98,0,'CC-BY-SA','terminal, apt-get, apt-cache, apt-mark, dpkg',0,0,1),
(3358,'2021-06-16','BlastEm! A wicked awesome Sega Genesis/Megadrive emulator',1320,'This is an interview with the author of BlastEm, a Sega Genesis/Megadrive emulator','<p>In this Hacker Public Radio we talk to Mike about his emulator, BlastEm.</p>\r\n<p>This is the official BlastEm url: <a href=\"https://www.retrodev.com/blastem/\" class=\"uri\">https://www.retrodev.com/blastem/</a></p>\r\n',115,0,0,'CC-BY-SA','genesis megadrive emulation',0,0,1),
(3355,'2021-06-11','Tiki Hell',761,'I talk about my thoughts on outdoor torches','<p>Don\'t buy Tiki anything...</p>\r\n',36,0,0,'CC-BY-SA','outdoor, tiki',0,0,1),
(3367,'2021-06-29','Making books with linux - part 1',3367,'A discussion about assembling books using simple tools commonly found in most linux distros.','<p>Andrew and Dave describe a common itch they have been scratching. Andrew talks through his approach to document creation in this episode and Dave will describe his in the next episode.</p>\r\n<p>Andrew was inspired by a simple and elegant approach to eBook creation by Jon Kulp, possibly from listening to <a href=\"https://hackerpublicradio.org/eps.php?id=1909\">HPR 1909</a> several years ago.</p>\r\n<p>In Andrew\'s approach, bash and python scripts assemble various text files into the book, inserting figures and tables using a simple home-brew tag system to generate reference numbers such as Figure 3.7 or Table 2.2. Such auto-numbering functionality is of course provided by many other document authoring systems, such as LaTeX, but the script also uses the tags to hunt down data in CSV files and convert them into the figures. In this way, nearly all information in the book can start off as text and then be processed into anything — prose, graphics, sound or even movies — that can be included with HTML. Also a clean separation between content and appearance is kept by using a CSS file.</p>\r\n<p>This is not WYSIWYG (what you see is what you get) but using the <em>entr</em> command to monitor file changes can allow auto-generation of the HTML and even a browser refresh (using a feature found in Midori and Falkon but not many other browsers).</p>\r\n<p>Dave describes how he achieves something similar to what Andrew has created by using <em>make</em> to co-ordinate the processing. The process of compiling the source text files into a final document does have some similarities with code compilation.</p>\r\n<p>Dave and Andrew discuss how useful their methods might be to others. Some of Andrew\'s scripts are too bespoke to his use for wider consumption but the figure processing code is available online as part of the content and code of his book <a href=\"https://github.com/mcnalu/howscotlandworks\">How Scotland Works</a>.</p>\r\n<p>Andrew describes the horror of the suggestion that a non-fiction book does not need an index which prompted him to create his simple code to generate an index from a PDF. This was also motivated by laziness and a reluctance to read his own writing for the umpteenth time. Andrew then describes how this code works. The code itself can be found <a href=\"https://github.com/mcnalu/howscotlandworks/tree/master/scripts/index\">here</a>.</p>\r\n<p>Dave brings up the issue of other formats such as epub which have no concept of pages, or at least do not insist on it natively.</p>\r\n<p>The discussion moves on to other tools for document and text processing that are relevant to the tasks involved such as pandoc, LaTex and ASCIIdoc. In particular, Dave mentions that the \"look\" of LaTeX is simpler to control these days, at least as compared to the 1990s!</p>\r\n',268,0,0,'CC-BY-SA','linux,books,ebooks,scripts',0,0,1),
(3359,'2021-06-17','Linux Inlaws S01E32: Politicians and artificial intelligence part 3',2830,'Part 3 of the miniseries on Deep Learning, politicians and other approaches to intelligence (or not)','<p>In part three of the 27.64 episodes long mini-series on artificial intelligences, machine and deep learning\r\nand other hipster topics around machines trying to imitate humans (marketing made us do these :-), our\r\ntwo heroes discuss domain-specific frameworks on top of (more generic) infrastructure like TensorFlow or PyTorch.\r\nAs usual, all will be revealed and no details be spared (apart from a very few) including how to\r\ntell animals apart from humans (a tricky feat as any journalist can tell you who\'s ever faced a\r\nstampeding horde of angry politicians!).</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Keras: <a href=\"https://keras.io\" target=_blank>https://keras.io</a></li>\r\n<li>Image recognition in Keras: <a href=\"https://keras.io/examples/vision/image_classification_from_scratch\" target=_blank>https://keras.io/examples/vision/image_classification_from_scratch</a></li>\r\n<li>Facial recognition using convolutional neural networks (CNN): <a href=\"https://www.sitepoint.com/keras-face-detection-recognition\" target=_blank>https://www.sitepoint.com/keras-face-detection-recognition</a></li>\r\n<li>PETA: <a href=\"https://www.peta.org\" target=_blank>https://www.peta.org</a></li>\r\n<li>User recognition based on mouse movements and deep learning: <a href=\"https://www.acta.sapientia.ro/acta-info/C12-1/info12-1-3.pdf\" target=_blank>https://www.acta.sapientia.ro/acta-info/C12-1/info12-1-3.pdf</a></li>\r\n<li>Comparison of deep learning software: <a href=\"https://en.wikipedia.org/wiki/Comparison_of_deep-learning_software\" target=_blank>https://en.wikipedia.org/wiki/Comparison_of_deep-learning_software</a></li>\r\n<li>Apache\'s mxnet: <a href=\"https://mxnet.apache.org/versions/1.8.0\" target=_blank>https://mxnet.apache.org/versions/1.8.0</a></li>\r\n<li>Classification with deep belief networks: <a href=\"https://www.ki.tu-berlin.de/fileadmin/fg135/publikationen/Hebbo_2013_CDB.pdf\" target=_blank>https://www.ki.tu-berlin.de/fileadmin/fg135/publikationen/Hebbo_2013_CDB.pdf</a></li>\r\n<li>scikit-learn: <a href=\"https://scikit-learn.org/stable\" target=_blank>https://scikit-learn.org/stable</a></li>\r\n<li>Life on Mars: <a href=\"https://www.bbc.co.uk/lifeonmars/index_non_flash.shtml\" target=_blank>https://www.bbc.co.uk/lifeonmars/index_non_flash.shtml</a></li>\r\n<li>Limitless: <a href=\"https://www.imdb.com/title/tt1219289/?ref_=fn_al_tt_1\" target=_blank>https://www.imdb.com/title/tt1219289/?ref_=fn_al_tt_1</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Keras, scitkit-learn, neural networks, Mars, Twix, Limitless, Life',0,0,1),
(3363,'2021-06-23','Electronics podcasts I listen to',319,'I go over the 4 electronics podcasts I am currently listening to.','<h2 id=\"electronics-podcasts\">Electronics podcasts</h2>\r\n<ol type=\"1\">\r\n<li><p>Hackaday podcast</p>\r\n<p>Hackaday Editors take a look at all of the interesting uses of technology that pop up on the internet each week. Topics cover a wide range like bending consumer electronics to your will, designing circuit boards, building robots, writing software, 3D printing interesting objects, and using machine tools. Get your fix of geeky goodness from new episodes every Friday morning.</p>\r\n<p>Ep 117: Chiptunes in an RCA Plug, an Arduino Floppy Drive, $50 CNC, and Wireless Switches</p>\r\n<p><a href=\"https://hackaday.libsyn.com/ep-117-chiptunes-in-an-rca-plug-an-arduino-floppy-drive-50-cnc-and-wireless-switches\" class=\"uri\">https://hackaday.libsyn.com/ep-117-chiptunes-in-an-rca-plug-an-arduino-floppy-drive-50-cnc-and-wireless-switches</a></p></li>\r\n<li><p>Embedded.fm</p>\r\n<p>Embedded.fm is a site dedicated to the many aspects of engineering. We talk about the how, why, and what of engineering, usually devices.</p>\r\n<p>The site includes a weekly audio show created and hosted by Elecia White and Christopher White. Our guests include makers, entrepreneurs, educators, and normal, traditional engineers. The show is a product of Logical Elegance, an embedded software consulting company.</p>\r\n<p>The site also includes a blog written by Elecia White, Christopher White, Andrei Chichak, and Chris Svec.</p>\r\n<p><a href=\"https://embedded.fm/about-us\" class=\"uri\">https://embedded.fm/about-us</a></p>\r\n<p>371: All Martian Things Considered</p>\r\n<p><a href=\"https://embedded.fm/episodes/371\" class=\"uri\">https://embedded.fm/episodes/371</a></p>\r\n<p>The best paper for learning more is from NASA’s JPL site:<br />\r\nThe Mars Science Laboratory Engineering Cameras<br />\r\n<a href=\"https://www-robotics.jpl.nasa.gov/publications/Mark_Maimone/fulltext.pdf\" class=\"uri\">https://www-robotics.jpl.nasa.gov/publications/Mark_Maimone/fulltext.pdf</a></p>\r\n<p>Mars rovers wiki<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Mars_rover\" class=\"uri\">https://en.wikipedia.org/wiki/Mars_rover</a></p>\r\n<p>142: New and Improved Appendages</p>\r\n<p>Sarah is a kinetic artist and some of her projects include a robot army (built your own from parts printed out or purchased at robot-army.com) <a href=\"https://robot-army.com/\" class=\"uri\">https://robot-army.com/</a></p></li>\r\n<li><p>The Amp Hour Electronics Podcast</p>\r\n<p>Dave Jones from the EEVblog in Sydney (Australia), and Chris Gammell from Contextual Electronics in Chicago (USA) discuss the world of electronics design in an hour long(ish) weekly show, recorded “live” without editing or a mute button! We are also joined every other week by guests throughout the electronics industry.</p>\r\n<p>The Amp Hour is a non-scripted off-the-cuff format show that usually airs every Sunday evening US time (recorded earlier in the week). It is the worlds largest and most respected electronics oriented radio show. Discussions range from hobbyist electronics to the state of the electronics industry, components, circuit design, and general on and off-topic rants.</p>\r\n<p><a href=\"https://theamphour.com/about\" class=\"uri\">https://theamphour.com/about</a></p>\r\n<p><a href=\"https://theamphour.com/the-amp-hour-539-the-king-of-trash-with-big-clive\" class=\"uri\">https://theamphour.com/the-amp-hour-539-the-king-of-trash-with-big-clive</a></p>\r\n<p>Youtube channel: bigclivedotcom</p>\r\n<p><a href=\"https://www.youtube.com/user/bigclivedotcom\" class=\"uri\">https://www.youtube.com/user/bigclivedotcom</a></p></li>\r\n<li><p>The Contextual Electronics Podcast</p>\r\n<p>The CE Podcast is a video and audio podcast that posts twice per month. We discuss more than how electronics work and talk to our guests about why they are building them in the first place. we cover topics inside and outside the field of electronics and try to bring more context to the field.</p>\r\n<p>CEP012 – Mixed Media with Becky Stern</p>\r\n<p><a href=\"https://contextualelectronics.com/cep012-mixed-media-with-becky-stern\" class=\"uri\">https://contextualelectronics.com/cep012-mixed-media-with-becky-stern</a></p>\r\n<p>Becky is an artist and content producer who works electronics into projects using a wide variety of media and construction techniques. Becky also teaches a class on electronics at SVA in NYC. She is a product manager at Instructables.</p></li>\r\n</ol>\r\n',318,75,0,'CC-BY-SA','electronics, robots, space exploration, engineering',0,0,1),
(3362,'2021-06-22','Spam Bot Honey Pot: Eating your own dog food',1148,'Reviewing some stats and the accessibility by screen reader of this spam filter method.','<p>\r\nIn this episode, I revisit my spam bot honey pot method of spam detection for \r\nweb forms. The first part of the episode is a response to rtsn comment asking \r\nfor a follow up on how the method worked out. In the second part of the podcast \r\nI use the built-in screen reader of my Pop_OS system to review my test form and \r\nmy work form for audible accessibility and to check that the spam catching URL \r\nfield is not reveled by a screen reader.  \r\n</p>\r\n<p>\r\nFor my work site, I pushed the spam catcher to production on 16 February 2021. \r\nThe total submitted form messages from that day until today, 29 May 2021, is 661.\r\nOf the total submitted, the method identified 527 spam messages, and passed \r\nalong 134 messages. Of those 134, 38 messages were uncaught spam--while the \r\nremaining 96 messages were valid inquiries. Overall, it seems to be doing a \r\ngood job. At one point, I thought about closing down the form, but the data \r\ndoes show we are receiving enough valid messages to make it worth keeping around \r\nand this method makes finding the good messages much easier.\r\n</p>\r\n<p>\r\nDuring the second part of the podcast, I find using a screen reader, like any \r\ntool, takes some practice. It also reveals that making a form audibly accessible \r\ndoes take some care, and should be reviewed with a screen reader. My method \r\nfor hiding the honey pot URL field from the screen reader was effective, but my \r\noverall implementation to make it accessible needs more work.\r\n</p>',293,0,0,'CC-BY-SA','Spam,HTML,Forms,accessibility,screen reader',0,0,1),
(3369,'2021-07-01','Linux Inlaws S01E33: The Return of the Rust',3869,'A show with Steve Klabnik on corroded metal, hipster programming languages and the analogue world','<p>In this episode - aptly named \"The return of the Rust\" our two heroes host\r\na very special guest: no other than Steve Klabnik of Rust fame himself.\r\nNeedless to say, this hipster programming language which is on everbody\'s mind\r\nat the moment (apart maybe from a few lost souls still crying over spilled\r\ncoffee) plays a very important role in this show in addition to the newly\r\nfounded Rust Foundation hosting such eclectic members such as Microsoft,\r\nMozilla, Google and Facebook just to name a few looking after the language.</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Rust: <a href=\"https://www.rust-lang.org\" target=_blank>https://www.rust-lang.org</a></li>\r\n<li>Rust Foundation: <a href=\"https://foundation.rust-lang.org\" target=_blank>https://foundation.rust-lang.org</a></li>\r\n<li>Steve Klabnik: <a href=\"https://steveklabnik.com\" target=_blank>https://steveklabnik.com</a></li>\r\n<li>Ruby on Rails: <a href=\"https://rubyonrails.org\" target=_blank>https://rubyonrails.org</a></li>\r\n<li>PyOxidizer: <a href=\"https://github.com/indygreg/PyOxidizer\" target=_blank>https://github.com/indygreg/PyOxidizer</a></li>\r\n<li>Mercurial: <a href=\"https://www.mercurial-scm.org\" target=_blank>https://www.mercurial-scm.org</a></li>\r\n<li>actix controversy: <a href=\"https://github.com/actix/actix-web/issues/289\" target=_blank>https://github.com/actix/actix-web/issues/289</a></li>\r\n<li>OpenSearch: <a href=\"https://aws.amazon.com/blogs/opensource/introducing-opensearch\" target=_blank>https://aws.amazon.com/blogs/opensource/introducing-opensearch</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Rust, actix, unsafe code, bulleted lists, pubs, OpenSearch',0,0,1),
(3631,'2022-07-04','HPR Community News for June 2022',7033,'HPR Volunteers talk about shows released and comments posted in June 2022','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3608\" target=\"_blank\">3608</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-06-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3608\" target=\"_blank\">Battling with English - part 5</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=3609\" target=\"_blank\">3609</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-06-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3609\" target=\"_blank\">Linux Inlaws S01E57: Operating System Level Virtualisation and Martin\'s Faith</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=3610\" target=\"_blank\">3610</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-06-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3610\" target=\"_blank\">DOS Wildcards; File Attributes</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=3611\" target=\"_blank\">3611</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-06-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3611\" target=\"_blank\">HPR Community News for May 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3612\" target=\"_blank\">3612</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-06-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3612\" target=\"_blank\">Who is Evil Steve? Part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3613\" target=\"_blank\">3613</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-06-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3613\" target=\"_blank\">Man buys cheap Adirondack chair</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3614\" target=\"_blank\">3614</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-06-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3614\" target=\"_blank\">Everything You Always Wanted to Know About PEX Part 02- The Joy of PEX - What is it and how is it us</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=3615\" target=\"_blank\">3615</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-06-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3615\" target=\"_blank\">I am a troll and I\'m trolling HPR, trolling HPR, trolling 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=3616\" target=\"_blank\">3616</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-06-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3616\" target=\"_blank\">Filling free Slots from the Reserve Queue</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=3617\" target=\"_blank\">3617</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-06-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3617\" target=\"_blank\">admin admin S01E05: To Do List - 2FA</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3618\" target=\"_blank\">3618</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-06-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3618\" target=\"_blank\">The nnn terminal file manager</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=3619\" target=\"_blank\">3619</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-06-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3619\" target=\"_blank\">Linux Inlaws S01E58: Kubernetes and Friends and Sarah</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=3620\" target=\"_blank\">3620</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-06-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3620\" target=\"_blank\">Photo storage, backups, and workflow</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=3621\" target=\"_blank\">3621</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-06-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3621\" target=\"_blank\">Watching YouTube in 2022</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=3622\" target=\"_blank\">3622</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-06-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3622\" target=\"_blank\">My Network Setup.</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=3623\" target=\"_blank\">3623</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-06-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3623\" target=\"_blank\">Internet Security - Child Edition</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3624\" target=\"_blank\">3624</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-06-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3624\" target=\"_blank\">Everything You Always Wanted to Know About PEX Parts 3 & 4</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=3625\" target=\"_blank\">3625</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-06-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3625\" target=\"_blank\">Shell Tips and Snippets - Collaborative Effort</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0380.html\" target=\"_blank\">Carl</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3626\" target=\"_blank\">3626</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-06-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3626\" target=\"_blank\">The stuff Evil Steve doesn\'t want you to know S01E06: Use a Password Manager</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3627\" target=\"_blank\">3627</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-06-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3627\" target=\"_blank\">Only Key Duo</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=3628\" target=\"_blank\">3628</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-06-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3628\" target=\"_blank\">Building a Mobile Computer Battlestation: Extended Power Supply</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3629\" target=\"_blank\">3629</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-06-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3629\" target=\"_blank\">Linux Inlaws S01E59: The Show with Red Pandas Mosaic Killers and Metal Corrosion</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</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 2 comments on\n2 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3531#comments\" target=\"_blank\">hpr3531</a></strong>\n(2022-02-14) \"<em>Barrier: Software KVM</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0196.html\" target=\"_blank\">Windigo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3531#2\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2022-06-30:\n\"Excellent !\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3606#comments\" target=\"_blank\">hpr3606</a></strong>\n(2022-05-30) \"<em>Infinity is just a big number and other proofs</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3606#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2022-06-01:\n\"Not like me\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 23 comments on 10 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3608#comments\" target=\"_blank\">hpr3608</a></strong>\n(2022-06-01) \"<em>Battling with English - part 5</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=3608#1\" target=\"_blank\">Comment 1</a>:\nStache_AF on 2022-06-01:\n\"The Eggcorn That Gets Me\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3608#2\" target=\"_blank\">Comment 2</a>:\nWindigo on 2022-06-01:\n\"Eggcorns\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3608#3\" target=\"_blank\">Comment 3</a>:\nDave Morriss on 2022-06-01:\n\"Champing and chomping\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3608#4\" target=\"_blank\">Comment 4</a>:\nDave Morriss on 2022-06-01:\n\"A robot did it and ran away\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3609#comments\" target=\"_blank\">hpr3609</a></strong>\n(2022-06-02) \"<em>Linux Inlaws S01E57: Operating System Level Virtualisation and Martin\'s Faith</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=3609#1\" target=\"_blank\">Comment 1</a>:\nMechatroniac on 2022-06-22:\n\"Unite Germany and Russia\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3613#comments\" target=\"_blank\">hpr3613</a></strong>\n(2022-06-08) \"<em>Man buys cheap Adirondack chair</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3613#1\" target=\"_blank\">Comment 1</a>:\nWindigo on 2022-06-08:\n\"Adirondack chairs\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3613#2\" target=\"_blank\">Comment 2</a>:\ndnt on 2022-06-08:\n\"Re: Adirondack chairs\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3615#comments\" target=\"_blank\">hpr3615</a></strong>\n(2022-06-10) \"<em>I am a troll and I\'m trolling HPR, trolling HPR, trolling 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=3615#1\" target=\"_blank\">Comment 1</a>:\nWindigo on 2022-06-10:\n\"Disappointing\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3615#2\" target=\"_blank\">Comment 2</a>:\nFXB on 2022-06-12:\n\"A Troll is a Troll.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3615#3\" target=\"_blank\">Comment 3</a>:\nMechatroniac on 2022-06-13:\n\"fucking bullshit\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3617#comments\" target=\"_blank\">hpr3617</a></strong>\n(2022-06-14) \"<em>admin admin S01E05: To Do List - 2FA</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3617#1\" target=\"_blank\">Comment 1</a>:\nStache_AF on 2022-06-14:\n\"Google Authenticator\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3617#2\" target=\"_blank\">Comment 2</a>:\nLurking Prion on 2022-06-15:\n\"Google Authenticator Improvements\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3617#3\" target=\"_blank\">Comment 3</a>:\nSome Guy On The Internet on 2022-06-18:\n\"I agree.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3617#4\" target=\"_blank\">Comment 4</a>:\nLurkingPrion on 2022-06-22:\n\"No Security..?\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3617#5\" target=\"_blank\">Comment 5</a>:\none_of_spoons on 2022-06-26:\n\"Two factor authentication : \"andOTP\"\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3619#comments\" target=\"_blank\">hpr3619</a></strong>\n(2022-06-16) \"<em>Linux Inlaws S01E58: Kubernetes and Friends and Sarah</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=3619#1\" target=\"_blank\">Comment 1</a>:\nSarah on 2022-06-22:\n\"Hello!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3620#comments\" target=\"_blank\">hpr3620</a></strong>\n(2022-06-17) \"<em>Photo storage, backups, and workflow</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=3620#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-06-18:\n\"Great Show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3620#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2022-06-18:\n\"Glad I could help\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3621#comments\" target=\"_blank\">hpr3621</a></strong>\n(2022-06-20) \"<em>Watching YouTube in 2022</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=3621#1\" target=\"_blank\">Comment 1</a>:\nMechatroniac on 2022-06-22:\n\"Youtube is no good anymore\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3621#2\" target=\"_blank\">Comment 2</a>:\nMechatroniac on 2022-06-23:\n\"Mr Teslonian\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3624#comments\" target=\"_blank\">hpr3624</a></strong>\n(2022-06-23) \"<em>Everything You Always Wanted to Know About PEX Parts 3 & 4</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=3624#1\" target=\"_blank\">Comment 1</a>:\nb-yeezi on 2022-06-26:\n\"Unexpected relevance\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3625#comments\" target=\"_blank\">hpr3625</a></strong>\n(2022-06-24) \"<em>Shell Tips and Snippets - Collaborative Effort</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0380.html\" target=\"_blank\">Carl</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3625#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2022-06-25:\n\"shift\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3625#2\" target=\"_blank\">Comment 2</a>:\nCarl on 2022-06-27:\n\"Thanks\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-June/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-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=\"publishing-code-for-the-hpr-site\">Publishing code for the HPR site</h3>\n<p>The question came up during the month - is the HPR site code <em>open source</em>, and if so where is it?</p>\n<h3 id=\"older-hpr-shows-on-archive.org-phase-2\">Older HPR shows on archive.org, phase 2</h3>\n<p>Now that all shows from number 1 to the latest have been uploaded to the Internet Archive there are other tasks to perform. We are reprocessing and re-uploading shows in the range 871 to 2429 as explained in the Community News show notes released in <a href=\"https://hackerpublicradio.org/eps.php?id=3586#older-hpr-shows-on-archive.org-phase-2\">May 2022</a>. We are keeping a running total here to show progress:</p>\n<ul>\n<li>Re-uploads done so far: 431</li>\n<li>Shows remaining to be done: 1128</li>\n<li>Shows uploaded by last Community News recording: 271</li>\n<li>Shows added since last recording: 160</li>\n</ul>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3651,'2022-08-01','HPR Community News for July 2022',2963,'HPR Volunteers talk about shows released and comments posted in July 2022','<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/0406.html\" target=\"_blank\">binrc</a>, \n    <a href=\"https://hackerpublicradio.org/correspondents/0407.html\" target=\"_blank\">Celeste</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=3630\" target=\"_blank\">3630</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-07-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3630\" target=\"_blank\">Planning an RV Trip</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=3631\" target=\"_blank\">3631</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-07-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3631\" target=\"_blank\">HPR Community News for June 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3632\" target=\"_blank\">3632</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-07-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3632\" target=\"_blank\">Intro to web scraping with Python</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=3633\" target=\"_blank\">3633</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-07-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3633\" target=\"_blank\">The collective history of RAID controller brands</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=3634\" target=\"_blank\">3634</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-07-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3634\" target=\"_blank\">Everything You Always Wanted to Know About PEX Part 05 - PEX and the Single Installer</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=3635\" target=\"_blank\">3635</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-07-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3635\" target=\"_blank\">A short podcast on a nice tool called system-monitoring-center</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3636\" target=\"_blank\">3636</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-07-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3636\" target=\"_blank\">The Importance of Data Reduction</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3637\" target=\"_blank\">3637</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-07-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3637\" target=\"_blank\">HPR feed to Sqlite</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=3638\" target=\"_blank\">3638</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-07-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3638\" target=\"_blank\">Ken drops a bear on his android phone</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=3639\" target=\"_blank\">3639</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-07-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3639\" target=\"_blank\">Linux Inlaws S01E60: The Job Interview</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=3640\" target=\"_blank\">3640</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-07-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3640\" target=\"_blank\">Expert DIR use</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=3641\" target=\"_blank\">3641</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-07-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3641\" target=\"_blank\">Turntable audio capture Part 2</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=3642\" target=\"_blank\">3642</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-07-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3642\" target=\"_blank\">Interview with a Hacker: Vitaliy</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=3643\" target=\"_blank\">3643</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-07-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3643\" target=\"_blank\">My computing history and the software I use</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3644\" target=\"_blank\">3644</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-07-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3644\" target=\"_blank\">Pinball Machine Repair Tips</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0407.html\" target=\"_blank\">Celeste</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3645\" target=\"_blank\">3645</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-07-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3645\" target=\"_blank\">How to set up a small Linux Wireguard VPN</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3646\" target=\"_blank\">3646</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-07-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3646\" target=\"_blank\">arm, slackware, forth oh my!</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=3647\" target=\"_blank\">3647</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-07-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3647\" target=\"_blank\">Weekend projects</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=3648\" target=\"_blank\">3648</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-07-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3648\" target=\"_blank\">A response to tomorrows show</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=3649\" target=\"_blank\">3649</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-07-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3649\" target=\"_blank\">Linux Inlaws S01E61: 20 years in review</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=3650\" target=\"_blank\">3650</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-07-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3650\" target=\"_blank\">Major Destinations</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 2 comments on\n2 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3226#comments\" target=\"_blank\">hpr3226</a></strong>\n(2020-12-14) \"<em>Using taskwarrior to structurize your work</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3226#3\" target=\"_blank\">Comment 3</a>:\ndnt on 2022-07-09:\n\"the urgency\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3627#comments\" target=\"_blank\">hpr3627</a></strong>\n(2022-06-28) \"<em>Only Key Duo</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=3627#1\" target=\"_blank\">Comment 1</a>:\noperat0r on 2022-07-06:\n\"Installer Changed ...\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 16 comments on 9 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3630#comments\" target=\"_blank\">hpr3630</a></strong>\n(2022-07-01) \"<em>Planning an RV Trip</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=3630#1\" target=\"_blank\">Comment 1</a>:\nbrian-in-ohio on 2022-07-05:\n\"enjoyed the show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3630#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2022-07-06:\n\"Photos\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3632#comments\" target=\"_blank\">hpr3632</a></strong>\n(2022-07-05) \"<em>Intro to web scraping with Python</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=3632#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-07-08:\n\"Thank you\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3634#comments\" target=\"_blank\">hpr3634</a></strong>\n(2022-07-07) \"<em>Everything You Always Wanted to Know About PEX Part 05 - PEX and the Single Installer</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=3634#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2022-07-09:\n\"a hacker\'s plumbing system\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3637#comments\" target=\"_blank\">hpr3637</a></strong>\n(2022-07-12) \"<em>HPR feed to Sqlite</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=3637#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-07-20:\n\"Daily Database Dump in SQL Format\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3642#comments\" target=\"_blank\">hpr3642</a></strong>\n(2022-07-19) \"<em>Interview with a Hacker: Vitaliy</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=3642#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2022-07-20:\n\"Great show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3643#comments\" target=\"_blank\">hpr3643</a></strong>\n(2022-07-20) \"<em>My computing history and the software I use</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3643#1\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2022-07-08:\n\"First show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3643#2\" target=\"_blank\">Comment 2</a>:\nnorrist on 2022-07-20:\n\"Plan9\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3643#3\" target=\"_blank\">Comment 3</a>:\nDave Morriss on 2022-07-20:\n\"An excellent first show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3643#4\" target=\"_blank\">Comment 4</a>:\nbrian-in-ohio on 2022-07-24:\n\"future show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3644#comments\" target=\"_blank\">hpr3644</a></strong>\n(2022-07-21) \"<em>Pinball Machine Repair Tips</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0407.html\" target=\"_blank\">Celeste</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3644#1\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2022-07-16:\n\"Pinball machines and English\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3644#2\" target=\"_blank\">Comment 2</a>:\nTrey on 2022-07-21:\n\"Welcome!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3644#3\" target=\"_blank\">Comment 3</a>:\nbrian-in-ohio on 2022-07-24:\n\"soundscape\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3648#comments\" target=\"_blank\">hpr3648</a></strong>\n(2022-07-27) \"<em>A response to tomorrows show</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=3648#1\" target=\"_blank\">Comment 1</a>:\nLongTimeLurker on 2022-07-27:\n\"Known Unknowns\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3648#2\" target=\"_blank\">Comment 2</a>:\nE-/-y on 2022-07-28:\n\"Only the Interviews\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3649#comments\" target=\"_blank\">hpr3649</a></strong>\n(2022-07-28) \"<em>Linux Inlaws S01E61: 20 years in review</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=3649#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-06-24:\n\"response show\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-July/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-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=\"olly-clark\">Olly Clark</h3>\n<p>The UK Tech community has been saddened to hear of the death of Oliver (Olly) Clark, a well known presence at OggCamp, Barcamp and Raspberry Pi meetings. He apparently died in November 2021 as a consequence of COVID-19. His family did not know who to contact in the wider community, so this news only became apparent recently.</p>\n<ul>\n<li>Twitter: <span class=\"citation\" data-cites=\"ollyclarkdotorg\">@ollyclarkdotorg</span> (<a href=\"https://twitter.com/ollyclarkdotorg\" class=\"uri\">https://twitter.com/ollyclarkdotorg</a>)</li>\n<li>Mastodon: <a href=\"https://mastodon.sdf.org/@ollyclarkdotorg\" class=\"uri\">https://mastodon.sdf.org/@ollyclarkdotorg</a></li>\n<li>Flickr: <a href=\"https://www.flickr.com/people/ollyclarkdotorg/\" class=\"uri\">https://www.flickr.com/people/ollyclarkdotorg/</a></li>\n<li>Web site: <a href=\"http://www.ollyclark.org/\" class=\"uri\">http://www.ollyclark.org/</a> (currently unavailable, but archived on the Wayback Machine at <a href=\"https://web.archive.org/web/20210801015127/https://www.ollyclark.org/\" class=\"uri\">https://web.archive.org/web/20210801015127/https://www.ollyclark.org/</a>)</li>\n</ul>\n<h3 id=\"older-hpr-shows-on-archive.org-phase-2\">Older HPR shows on archive.org, phase 2</h3>\n<p>Now that all shows from number 1 to the latest have been uploaded to the Internet Archive there are other tasks to perform. We are reprocessing and re-uploading shows in the range 871 to 2429 as explained in the Community News show notes released in <a href=\"http://hackerpublicradio.org/eps.php?id=3586#older-hpr-shows-on-archive.org-phase-2\">May 2022</a>. We are keeping a running total here to show progress:</p>\n<ul>\n<li>Re-uploads done so far: 576</li>\n<li>Shows remaining to be done: 983</li>\n<li>Shows uploaded by last Community News recording: 431</li>\n<li>Shows added since last recording: 145</li>\n</ul>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3540,'2022-02-25','HSV Components Layer Modes',1216,'More on Layer Modes in GIMP with the HSV Components Modes','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the HSV Components Modes, which brings us to yet another color model, in this case the Hue, Saturation, and Value model. We\'ve already looked at RGB, which is the model used for most broadcast and online uses, and the CMYK model which is used for printing. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><a href=\"https://www.linuxtopia.org/online_books/graphics_tools/gimp_advanced_guide/gimp_guide_node55_004.html\" class=\"uri\">https://www.linuxtopia.org/online_books/graphics_tools/gimp_advanced_guide/gimp_guide_node55_004.html</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=17Iivi0tmug&amp;t=1734s\" class=\"uri\">https://www.youtube.com/watch?v=17Iivi0tmug&amp;t=1734s</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/RGB_color_model\" class=\"uri\">https://en.wikipedia.org/wiki/RGB_color_model</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Subtractive_color\" class=\"uri\">https://en.wikipedia.org/wiki/Subtractive_color</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Color_model\" class=\"uri\">https://en.wikipedia.org/wiki/Color_model</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/HSL_and_HSV\" class=\"uri\">https://en.wikipedia.org/wiki/HSL_and_HSV</a></li>\r\n<li><a href=\"https://snappygoat.com/\" class=\"uri\">https://snappygoat.com/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/hsv-components-layer-modes/\" class=\"uri\">https://www.ahuka.com/gimp/hsv-components-layer-modes/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, HSV Components Modes',0,0,1),
(3550,'2022-03-11','Format; Copy; Diskcopy; Xcopy',1202,'We continue our look at the old warhorse, DOS. This time it is Format and Copy commands','<p>This tutorial is mostly about working with floppy disks, or diskettes, though we also mention the formatting of hard drives, which generally required the use of a floppy drive and diskette to accomplish.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Floppy_disk\" class=\"uri\">https://en.wikipedia.org/wiki/Floppy_disk</a></li>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, Format, Copy, Diskcopy, Xcopy',0,0,1),
(3560,'2022-03-25','LCh Components Layer Modes',758,'More on Layer Modes in GIMP with the LCh Components Modes','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the LCh Components Modes, which brings us to yet another color model, in this case the Hue, Saturation, and Value model. We\'ve already looked at RGB, which is the model used for most broadcast and online uses, and the CMYK model which is used for printing, and in the previous tutorial we looked at the HSV model. This wraps up our look at color models, and also concluded our look at Layer Modes (or Blending Modes). These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><a href=\"https://ninedegreesbelow.com/photography/determine-image-tonality-and-palette-part-1.html\" class=\"uri\">https://ninedegreesbelow.com/photography/determine-image-tonality-and-palette-part-1.html</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/CIELAB_color_space\" class=\"uri\">https://en.wikipedia.org/wiki/CIELAB_color_space</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/CIELUV#Cylindrical_representation_.28CIELCH.29\" class=\"uri\">https://en.wikipedia.org/wiki/CIELUV#Cylindrical_representation_.28CIELCH.29</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/List_of_color_spaces_and_their_uses\" class=\"uri\">https://en.wikipedia.org/wiki/List_of_color_spaces_and_their_uses</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Luminance\" class=\"uri\">https://en.wikipedia.org/wiki/Luminance</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/lch-components-layer-modes/\" class=\"uri\">https://www.ahuka.com/gimp/lch-components-layer-modes/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, LCh Components Modes',0,0,1),
(3570,'2022-04-08','The Filesystem',1412,'We continue our look at the old warhorse, DOS. This time it is the file system.','<p>One key to working with DOS is to understand the file system. This is not just about organizing files, though that is certainly a part of it, but also about keeping your system running smoothly and recovering lost files in some circumstances.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/File_Allocation_Table\" class=\"uri\">https://en.wikipedia.org/wiki/File_Allocation_Table</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Disk_sector\" class=\"uri\">https://en.wikipedia.org/wiki/Disk_sector</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Track_(disk_drive)\" class=\"uri\">https://en.wikipedia.org/wiki/Track_(disk_drive)</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Data_cluster\" class=\"uri\">https://en.wikipedia.org/wiki/Data_cluster</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/File_system_fragmentation\" class=\"uri\">https://en.wikipedia.org/wiki/File_system_fragmentation</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Root_directory\" class=\"uri\">https://en.wikipedia.org/wiki/Root_directory</a></li>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-9-the-file-system/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-9-the-file-system/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, file system',0,0,1),
(3364,'2021-06-24','Part One - all the covid crap',99,'My new coffee pot, covid motivation','<p>So, I\'m currently listening to the \"Feedback on the Article\" show, and am feeling like I should contribute a show.</p>\r\n<p>A long time ago now, I bought a new coffee machine for home, on the basis that I was going to be working from home for a while, and I was really missing my daily hits of actual coffee. I drink maybe four or five cups a day, depending on how early I get into work. I do try to have all this coffee in the morning, and am pretty good at not having any after lunch.</p>\r\n<p>Now, I do need to recognise where I am, Australia, overall we\'ve had a pretty good response to covid, fatalities have been very low by world standards. Having said that, I live in the part of Australia that has had the largest number and by far, longest lockdowns. Our longest one was 112 days.</p>\r\n<p>I\'ve also travelled back home, and got caught in a lockdown in my home state of Queensland over Christmas.</p>\r\n<p>Eventually, the lockdowns ended, we were allowed go back to work, and I started using my home coffee machine less and less, and I lost motivation to do this show.</p>\r\n<p>Then, of course, we had another inevitable hotel quarantine leak, and that spread to Victoria, we\'re now looking at a breakout of around sixty cases and Victoria is back on lockdown so this is my fifth lockdown, and I\'m back to working from home, and once again, I\'m appreciating my new coffee pot, and once again I have motivation to do a story on it.</p>\r\n<p>What I really want to do is to disentangle the two topics, this episode will deal with all the covid stuff, the second episode will only deal with coffee.</p>\r\n<p>So this covid rant ends here, and now I need to start writing the script for the second part of the show, before lockdown ends..</p>\r\n',315,0,0,'CC-BY-SA','covid19,coffee',0,0,1),
(3365,'2021-06-25','Diablo 2 Portable and Modding',452,'I talk about Diablo 2 and modding','<p>\r\n<a href=\"https://en.wikipedia.org/wiki/Diablo_II\">Diablo II</a>\r\n</p>\r\n<p>\r\nDiablo II is an action role-playing hack-and-slash computer video game developed by Blizzard North and published by Blizzard Entertainment in 2000 for Microsoft Windows, Classic Mac OS, and macOS. The game, with its dark fantasy and horror themes, was conceptualized and designed by David Brevik and Erich Schaefer, who, with Max Schaefer, acted as project leads on the game. The producers were Matthew Householder and Bill Roper. The game was developed over a 3 year period, with a crunch time of 1.5 years long\r\n</p>\r\n\r\n<p>\r\nSearch for \"Registry patch  diablo 2\", \"borderless gaming diablo 2\"\r\n</p>\r\n\r\n<p>\r\n<a href=\"https://diablo-archive.fandom.com/wiki/PlugY\">PlugY</a> <br />\r\nPlugY is a mod whose primary purpose is to increase the stash size for Diablo II characters. Over the years it has grown to include numerous other useful functions, such as enabling Ladder Only Rune Words outside of the Battle.net Ladder, enabling the Uber quests outside of Battle.net and various other small tweaks and additions. PlugY is not a conversion of the original Diablo, and it doesn\'t alter gameplay by changing monster stats, skills, maps or items. \r\n</p>\r\n\r\n<p>\r\n<a href=\"https://www.median-xl.com/\">median xl</a><br />\r\nThe most popular Diablo II overhaul modification, Median XL is an action RPG with extensive endgame content, deep character customisation and challenging gameplay. It offers thousands of new items, new skills for all classes, and multiple improvements to the Diablo II engine.\r\n</p>',36,0,0,'CC-BY-SA','diablo 2,video games,gaming,modding,hacking,median xl,plug y',0,0,1),
(3375,'2021-07-09','Car ODB2 Fun and Fail',617,'I try to figure out ODB2 stuff again','<p>\r\n<a href=\"https://en.wikipedia.org/wiki/On-board_diagnostics\">On-board diagnostics (OBD)</a><br />\r\nFrom Wikipedia, the free encyclopedia<br />\r\nOn-board diagnostics (OBD) is an automotive term referring to a vehicle\'s self-diagnostic and reporting capability. OBD systems give the vehicle owner or repair technician access to the status of the various vehicle sub-systems. The amount of diagnostic information available via OBD has varied widely since its introduction in the early 1980s versions of on-board vehicle computers. Early versions of OBD would simply illuminate a malfunction indicator light or \"idiot light\" if a problem was detected but would not provide any information as to the nature of the problem. Modern OBD implementations use a standardized digital communications port to provide real-time data in addition to a standardized series of diagnostic trouble codes, or DTCs, which allow a person to rapidly identify and remedy malfunctions within the vehicle. \r\n</p>\r\n<p>\r\n<a href=\"https://play.google.com/store/apps/details?id=org.prowl.torque&hl=en_US&gl=US\">Torque Pro (OBD 2 and Car)</a><br />\r\nSee what your car is doing in realtime, get OBD fault codes, car performance, sensor data and more!\r\nTorque is a vehicle / car performance / diagnostics tool and scanner that uses an OBD II Bluetooth adapter to connect to your OBD2 engine management / ECU\r\n</p>\r\n<p>\r\n<a href=\"https://www.myg37.com/forums/engine-drivetrain-and-forced-induction/298338-vdc-stays-on-randomly.html\">Forum Thread</a>\r\n</p>\r\n<p>\r\n<a href=\"https://www.nicoclub.com/search#gsc.tab=0&gsc.q=infinity&gsc.sort=\">Search on NicoClub.com for Infinity Manuals</a>\r\n</p>\r\n',36,0,0,'CC-BY-SA','car,auto,odb2',0,0,1),
(3385,'2021-07-23','DIY Cat feeder!',824,'I talk about 3d printed cat feeders','<p>\r\nIn this episode operat0r builds a <a href=\"https://www.thingiverse.com/thing:27854\">cat feeder based on thingiverse.com</a>\r\n</p>',36,0,0,'CC-BY-SA','cats,3d printing,hacking,arduino',0,0,1),
(3395,'2021-08-06','Hacking Stories with Reacted: part 1',1979,'I talk about some old old old pentesting stories from days old!','<p>\r\nI talk about some old old old pentesting stories from days old!\r\n</p>',36,0,1,'CC-BY-SA','hackhacking,pentesting,red team,hacking storiesing',0,0,1),
(3405,'2021-08-20','Hacking Stories with Reacted: part 2',152,'I talk about some old old old pentesting stories from days old!','<p>\r\nI talk about some old old old pentesting stories from days old!\r\n</p>',36,0,0,'CC-BY-SA','hacking,pentesting,red team,hacking stories',0,0,1),
(3415,'2021-09-03','Hacking Stories with Reacted: part 3',836,'I talk about some old old old pentesting stories from days old!','<p>\r\nI talk about some old old old pentesting stories from days old!\r\n</p>',36,0,1,'CC-BY-SA','hacking,pentesting,red team,hacking stories',0,0,1),
(3425,'2021-09-17','Hacking Stories with Reacted: part 4',1055,'I talk about some old old old pentesting stories from days old!','<p>\r\nI talk about some old old old pentesting stories from days old!\r\n</p>',36,0,0,'CC-BY-SA','hacking,pentesting,red team,hacking stories',0,0,1),
(3435,'2021-10-01','Hacking Stories with Reacted: part 5',1060,'I talk about some old old old pentesting stories from days old!','<p>I talk about some old old old pentesting stories from days old!</p>',36,0,1,'CC-BY-SA','hacking,pentesting,red team,hacking stories',0,0,1),
(3376,'2021-07-12','Making books with Linux - part 2',2919,'Part 2 of a discussion about how two HPR hosts create books','<h2 id=\"hosts\">Hosts</h2>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0268.html\">Andrew Conway (<em>mcnalu</em>)</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></li>\r\n</ul>\r\n<h2 id=\"handling-incoming-hpr-shows\">Handling incoming HPR shows</h2>\r\n<ul>\r\n<li>Dave, with his <em>Janitor</em> hat on\r\n<ul>\r\n<li>Processes incoming notes, to generate HTML</li>\r\n<li>Plain text is turned to Markdown. Otherwise various Markdown flavours are acceptable, or an HTML5 fragment</li>\r\n<li>If images are included the Markdown can refer to them with URLs such as: <code>https://hackerpublicradio.org/eps/hprNNNN/name.jpg</code>\r\n<ul>\r\n<li>The <code>hprNNNN</code> element is a directory using the number you chose for your show.</li>\r\n<li>In the directory will be the images you sent.</li>\r\n<li>Other <em>assets</em> will go there too so you can refer to these in your notes as well.</li>\r\n<li>If you’re sending plain text, then markers such as <strong>&gt;&gt; Picture name.jpg here &lt;&lt;</strong> will let me make the appropriate Markdown.</li>\r\n</ul></li>\r\n<li>The directory also needs an <code>index.html</code> file, but my scripts will generate this if needed.</li>\r\n<li>I intend to document this soon.</li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"how-dave-makes-hpr-shownotes\">How Dave makes HPR shownotes</h2>\r\n<ul>\r\n<li>Uses scripts to manage show note generation</li>\r\n<li>Uses Markdown when writing the notes\r\n<ul>\r\n<li>Scripts generate note templates and a <code>Makefile</code></li>\r\n<li>Automation using <code>make</code></li>\r\n</ul></li>\r\n<li>Uses Template Toolkit features inside notes to allow extra features\r\n<ul>\r\n<li>Notes go through a pre-processor (a script with access to the show metadata)</li>\r\n<li>The end product is Markdown which is processed with Pandoc</li>\r\n</ul></li>\r\n<li>Template Toolkit (<em>TT<sup>2</sup></em>)\r\n<ul>\r\n<li>A Perl (and Python) tool kit for making templates</li>\r\n<li>Good for generating HTML, but can generate any text</li>\r\n</ul></li>\r\n<li><em>TT<sup>2</sup></em> macros can be used to display scripts in shows relating to the subject, and to run them and capture the output. This makes it certain that the script on display <strong>really</strong> generated the output shown!</li>\r\n<li>The <code>\'Falkon\'</code> browser (originally called <code>QupZilla</code>) is great for monitoring notes since it updates when the HTML changes.\r\n<ul>\r\n<li>Dave confused it with <code>Pale Moon</code> (a fork of <code>Firefox/Mozilla</code>) when talking about tab grouping features</li>\r\n</ul></li>\r\n<li>Should this (personalised) bundle of software be released to the world?\r\n<ul>\r\n<li>Probably yes, since the thoughts in it may be useful even if the code is not.</li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"consolidating-show-notes-into-a-book\">Consolidating show notes into a book</h2>\r\n<ul>\r\n<li>We had discussed the following topic a little in other contexts, and offline, but didn’t really look at it in this show. In brief, and for the record, the plans are:\r\n<ul>\r\n<li>There was a series on <code>\'sed\'</code>, the stream editor from the GNU project. It was called <em>“Introduction to sed”</em>, and consisted of 5 parts, which ran through 2016.</li>\r\n<li>Each episode had short and long notes as well as several examples.</li>\r\n<li>Work has begun on consolidating all of the long notes into a single document which will be released on the HPR site, in HTML and PDF formats. Perhaps ePub will be included if feasible.</li>\r\n<li>It’s seen as critical that an index be provided so that topics can be found easily. At the moment this is simplest to achieve with the PDF version, using Andrew’s index generator as discussed in part 1 of this pair of shows.</li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"digression-about-experiences-in-uk-higher-education\">Digression about experiences in UK Higher Education</h2>\r\n<ul>\r\n<li>Change of funding through the 1980’s to the 2000’s, particularly in IT</li>\r\n<li>Moving from (often very clever) “home-brew” solutions to products from the <em>big</em> players like Microsoft and Oracle.</li>\r\n<li>The change of management style to something more like the industry methods of earlier times, many of which had been discarded.</li>\r\n<li>Perhaps there is scope for more discussion on this subject in another HPR show!</li>\r\n</ul>',225,0,1,'CC-BY-SA','Markdown,Pandoc,Template Toolkit,PDF',0,0,1),
(3373,'2021-07-07','HPR RPG Club reviews Starfinder',5175,'Starfinder is a sci-fi RPG using Dungeons & Dragons 3.5 rules','<p>\r\nYou can <a href=\"https://paizo.com/starfinder\" target=\"_blank\">purchase Starfinder directly from Paizo</a>, and you can usually find <em>Starfinder Society</em> play at your friendly local game store.\r\n</p>\r\n\r\n<p>\r\nThe alternate starship combat rules mentioned in this episode are available from <a href=\"https://www.drivethrurpg.com/product/353682/Simple-Starship-Combat?affiliate_id=845571\" target=\"_blank\">drivethrurpg.com</a> (warning: this is an affiliate link, but any purchases made through it provide Klaatu with store credit so he can buy more RPG books for future HPR Club reviews).\r\n</p>\r\n',78,95,1,'CC-BY-SA','rpg, cyberpunk, science fiction',0,0,1),
(3374,'2021-07-08','Why I love the MacBook Mid 2010',1431,'I talk about the upgrades I made to the machine and how it\'s benefited me since I got it','<p>The upgrades made to the machine were a 500 GB ssd, 16 GB of ram, and went from El Capitan to Catalina.</p>',297,0,0,'CC-BY-SA','technology,Apple,MacBook,laptop',0,0,1);
INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (3676,'2022-09-05','HPR Community News for August 2022',9576,'HPR Volunteers talk about shows released and comments posted in August 2022','<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/0408.html\" target=\"_blank\">Stache_AF</a>, \n    <a href=\"https://hackerpublicradio.org/correspondents/0410.html\" target=\"_blank\">Hipernike</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=3651\" target=\"_blank\">3651</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-08-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3651\" target=\"_blank\">HPR Community News for July 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3652\" target=\"_blank\">3652</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-08-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3652\" target=\"_blank\">Registered memory</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=3653\" target=\"_blank\">3653</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-08-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3653\" target=\"_blank\">Hello HPR Community</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0408.html\" target=\"_blank\">Stache_AF</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3654\" target=\"_blank\">3654</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-08-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3654\" target=\"_blank\">Use the data in the Ogg feed to create a website.</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=3655\" target=\"_blank\">3655</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-08-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3655\" target=\"_blank\">BSD for Linux users</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3656\" target=\"_blank\">3656</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-08-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3656\" target=\"_blank\">Importance of Small toy projects</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=3657\" target=\"_blank\">3657</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-08-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3657\" target=\"_blank\">Small time sysadmin</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=3658\" target=\"_blank\">3658</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-08-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3658\" target=\"_blank\">Linux Inlaws S01E62: HPR\'s inner workings</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=3659\" target=\"_blank\">3659</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-08-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3659\" target=\"_blank\">Developing an HPR static site generator</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=3660\" target=\"_blank\">3660</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-08-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3660\" target=\"_blank\">BASIC</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=3661\" target=\"_blank\">3661</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-08-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3661\" target=\"_blank\">Ham Radio testing</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=3662\" target=\"_blank\">3662</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-08-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3662\" target=\"_blank\">Hacker Public Radio 2021 - 2022 New Years Show Part 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3663\" target=\"_blank\">3663</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-08-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3663\" target=\"_blank\">How I got into Tech</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0408.html\" target=\"_blank\">Stache_AF</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3664\" target=\"_blank\">3664</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-08-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3664\" target=\"_blank\">Secret hat conversations</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=3665\" target=\"_blank\">3665</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-08-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3665\" target=\"_blank\">UNIX Is Sublime</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3666\" target=\"_blank\">3666</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-08-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3666\" target=\"_blank\">One Weird Trick</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3667\" target=\"_blank\">3667</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-08-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3667\" target=\"_blank\">Hacker Public Radio 2021 - 2022 New Years Show Part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3668\" target=\"_blank\">3668</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-08-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3668\" target=\"_blank\">Linux Inlaws S01E63: John Hawley on kernel dot org and other shenanigans</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3669\" target=\"_blank\">3669</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-08-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3669\" target=\"_blank\">My First Podcast: My Journey into the Computer World</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0410.html\" target=\"_blank\">Hipernike</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3670\" target=\"_blank\">3670</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-08-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3670\" target=\"_blank\">Changing Plans</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=3671\" target=\"_blank\">3671</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-08-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3671\" target=\"_blank\">Response to Episode 3655, \"BSD for Linux Users\"</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=3672\" target=\"_blank\">3672</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-08-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3672\" target=\"_blank\">Hacker Public Radio 2021 - 2022 New Years Show Part 3</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3673\" target=\"_blank\">3673</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-08-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3673\" target=\"_blank\">Recording for Hacker Public Radio</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</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 28 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=3606#comments\" target=\"_blank\">hpr3606</a></strong>\n(2022-05-30) \"<em>Infinity is just a big number and other proofs</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3606#2\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2022-08-12:\n\"You see\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3629#comments\" target=\"_blank\">hpr3629</a></strong>\n(2022-06-30) \"<em>Linux Inlaws S01E59: The Show with Red Pandas Mosaic Killers and Metal Corrosion</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=3629#1\" target=\"_blank\">Comment 1</a>:\nAaron on 2022-08-12:\n\"Excellent interview\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3643#comments\" target=\"_blank\">hpr3643</a></strong>\n(2022-07-20) \"<em>My computing history and the software I use</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3643#5\" target=\"_blank\">Comment 5</a>:\nShawn on 2022-08-08:\n\"Key bindings\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3648#comments\" target=\"_blank\">hpr3648</a></strong>\n(2022-07-27) \"<em>A response to tomorrows show</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3648#3\" target=\"_blank\">Comment 3</a>:\nfolky on 2022-08-10:\n\"Known Unknowns 2.0\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 24 comments on 13 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3651#comments\" target=\"_blank\">hpr3651</a></strong>\n(2022-08-01) \"<em>HPR Community News for July 2022</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3651#1\" target=\"_blank\">Comment 1</a>:\nMike Ray on 2022-08-01:\n\"API\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3651#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2022-08-11:\n\"High Winds\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3655#comments\" target=\"_blank\">hpr3655</a></strong>\n(2022-08-05) \"<em>BSD for Linux users</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3655#1\" target=\"_blank\">Comment 1</a>:\nClaudioM on 2022-08-05:\n\"Excellent Breakdown of BSD!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3655#2\" target=\"_blank\">Comment 2</a>:\nnorrist on 2022-08-05:\n\"why I use OpenBSD and FreeBSD\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3655#3\" target=\"_blank\">Comment 3</a>:\nPhoenix on 2022-08-07:\n\"Suggestion\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3655#4\" target=\"_blank\">Comment 4</a>:\nKevin O&#39;Brien on 2022-08-11:\n\"I loved the show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3656#comments\" target=\"_blank\">hpr3656</a></strong>\n(2022-08-08) \"<em>Importance of Small toy projects</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=3656#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-08-20:\n\"Love this show.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3657#comments\" target=\"_blank\">hpr3657</a></strong>\n(2022-08-09) \"<em>Small time sysadmin</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=3657#1\" target=\"_blank\">Comment 1</a>:\nLurking Prion on 2022-08-13:\n\"Thank you!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3657#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2022-08-13:\n\"Thank you\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3658#comments\" target=\"_blank\">hpr3658</a></strong>\n(2022-08-10) \"<em>Linux Inlaws S01E62: HPR\'s inner workings</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=3658#1\" target=\"_blank\">Comment 1</a>:\nTwinn on 2022-08-10:\n\"Painful\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3658#2\" target=\"_blank\">Comment 2</a>:\nSome Guy On The Internet on 2022-08-20:\n\"I have more listeners than stars in the Universe.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3659#comments\" target=\"_blank\">hpr3659</a></strong>\n(2022-08-11) \"<em>Developing an HPR static site generator</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3659#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-08-20:\n\"More Magic.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3660#comments\" target=\"_blank\">hpr3660</a></strong>\n(2022-08-12) \"<em>BASIC</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=3660#1\" target=\"_blank\">Comment 1</a>:\nBeeza on 2022-08-18:\n\"BASIC lives on\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3660#2\" target=\"_blank\">Comment 2</a>:\nSome Guy On The Internet on 2022-08-20:\n\"Visual Basic 6.0 for the Win.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3661#comments\" target=\"_blank\">hpr3661</a></strong>\n(2022-08-15) \"<em>Ham Radio testing</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=3661#1\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2022-07-24:\n\"Left out a show note\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3663#comments\" target=\"_blank\">hpr3663</a></strong>\n(2022-08-17) \"<em>How I got into Tech</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0408.html\" target=\"_blank\">Stache_AF</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3663#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2022-08-31:\n\"Welcome!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3664#comments\" target=\"_blank\">hpr3664</a></strong>\n(2022-08-18) \"<em>Secret hat conversations</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=3664#1\" target=\"_blank\">Comment 1</a>:\none_of_spoons on 2022-08-25:\n\"serious talking\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3665#comments\" target=\"_blank\">hpr3665</a></strong>\n(2022-08-19) \"<em>UNIX Is Sublime</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3665#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-08-12:\n\"File extensions are valid\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3665#2\" target=\"_blank\">Comment 2</a>:\nhipernike on 2022-08-19:\n\"Bind mount\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3665#3\" target=\"_blank\">Comment 3</a>:\nSome Guy On The Internet on 2022-08-20:\n\"I like file extensions\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3665#4\" target=\"_blank\">Comment 4</a>:\none-of-spoons on 2022-08-20:\n\"Free revision.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3666#comments\" target=\"_blank\">hpr3666</a></strong>\n(2022-08-22) \"<em>One Weird Trick</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3666#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-08-11:\n\"enthusiasm and willingness to learn\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3666#2\" target=\"_blank\">Comment 2</a>:\nLurking Prion on 2022-08-27:\n\"Rare Gems, indeed!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3671#comments\" target=\"_blank\">hpr3671</a></strong>\n(2022-08-29) \"<em>Response to Episode 3655, \"BSD for Linux Users\"</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=3671#1\" target=\"_blank\">Comment 1</a>:\nalan86 on 2022-08-30:\n\"Feedback\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-August/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-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=\"git-repository-for-hpr-development\">Git repository for HPR development</h3>\n<p>For security reasons the <a href=\"https://gitea.io/en-us/\">Gitea</a> service running on <a href=\"https://repo.anhonesthost.net\" class=\"uri\">https://repo.anhonesthost.net</a> requires people to log in with an account to view the repositories.</p>\n<p>Is this acceptable or do we need to move the code to another location?</p>\n<h3 id=\"older-hpr-shows-on-archive.org-phase-2\">Older HPR shows on archive.org, phase 2</h3>\n<p>Now that all shows from number 1 to the latest have been uploaded to the Internet Archive there are other tasks to perform. We are reprocessing and re-uploading shows in the range 871 to 2429 as explained in the Community News show notes released in <a href=\"http://hackerpublicradio.org/eps.php?id=3586#older-hpr-shows-on-archive.org-phase-2\">May 2022</a>. We are keeping a running total here to show progress:</p>\n<table>\n<tr>\n<th>\nMonth\n</th>\n<th>\nMonth count\n</th>\n<th>\nRunning total\n</th>\n<th>\nRemainder\n</th>\n</tr>\n<tr>\n<td>\n2022-04\n</td>\n<td>\n130\n</td>\n<td>\n130\n</td>\n<td>\n1428\n</td>\n</tr>\n<tr>\n<td>\n2022-05\n</td>\n<td>\n140\n</td>\n<td>\n270\n</td>\n<td>\n1288\n</td>\n</tr>\n<tr>\n<td>\n2022-06\n</td>\n<td>\n150\n</td>\n<td>\n420\n</td>\n<td>\n1138\n</td>\n</tr>\n<tr>\n<td>\n2022-07\n</td>\n<td>\n155\n</td>\n<td>\n575\n</td>\n<td>\n983\n</td>\n</tr>\n<tr>\n<td>\n2022-08\n</td>\n<td>\n155\n</td>\n<td>\n730\n</td>\n<td>\n828\n</td>\n</tr>\n</table>\n\n<p><small><small>Updated: 2022-09-03 18:34:16</small></small></p>\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3377,'2021-07-13','Chromebook support and more',994,'I\'ve run into disaster using my chrome book','<p>\r\nI\'ve made a special show covering the problem with chromebook support.<br />\r\nI cover the latest AntiX release.<br />\r\nI cover the latest NomadBSD release and I cover GUIX 1.3 and what I ended up using GUIX for.\r\n</p>',377,0,1,'CC-BY-SA','chromebook, AntiX, NomadBSD, GUIX, bath',0,0,1),
(3389,'2021-07-29','Tales of a Tagger',366,'Adventures and mishaps tagging past shows','<p><a href=\"https://hackerpublicradio.org/report_missing_tags.php\" class=\"uri\">https://hackerpublicradio.org/report_missing_tags.php</a></p>\r\n<h2 id=\"shows-without-a-summary-andor-tags\">Shows without a summary and/or tags</h2>\r\n<h3 id=\"page-generated-on-2021-06-11-at-204339-utc\">Page generated on 2021-06-11 at 20:43:39 UTC</h3>\r\n<h3 id=\"sort-order-id\">Sort order: id</h3>\r\n<h3 id=\"current-counts\">Current counts</h3>\r\n<ul>\r\n<li>323 shows without summaries</li>\r\n<li>306 shows without tags</li>\r\n<li>275 shows with neither summaries nor tags</li>\r\n<li>354 shows which need work</li>\r\n</ul>\r\n<h3 id=\"instructions\">Instructions</h3>\r\n<ol type=\"1\">\r\n<li>Find a show in the list below</li>\r\n<li>Check in the list which attributes are missing: summary and/or tags</li>\r\n<li>Click the show number or title to visit the show page</li>\r\n<li>Read the show notes and listen to the show to determine the missing information</li>\r\n<li>Submit your updates by email to tags at hackerpublicradio.org</li>\r\n</ol>\r\n<p>Please send simple ASCII email. No HTML please, and no multipart, encrypted or signed messages; the script can\'t handle them at the moment! (We are working on a solution to some of this though). Remember, the internals of an email are complex and the script isn\'t clever enough to deal with all the many possible formats. Please be gentle with it!</p>\r\n<p>Format the message as follows:</p>\r\n<pre><code>show:12345\r\nsummary:Using Linux at Christmas to make tomato soup in a sporran\r\ntags:linux,christmas,sporran,tomato soup\r\n\r\nshow: 12346\r\ntags: sausage,clothing,hairpiece</code></pre>\r\n<ul>\r\n<li>Start with the show:XXXX line (just the show number, no \'hpr\')</li>\r\n<li>If either the summary or the tags are already present on the show you can omit them from the group</li>\r\n<li>It\'s not possible to change existing summaries or tags by this route, only to add missing ones</li>\r\n<li>Ensure the summary text isn\'t longer than 100 characters</li>\r\n<li>The tags need to be separated by commas</li>\r\n<li>If you need to add a tag with a comma in it enclose the tag in double quotes</li>\r\n<li>The length of the tag list can\'t exceed 200 characters</li>\r\n<li>You can update more than one show per email if you want</li>\r\n<li>Blank lines between the groups of show/summary/tags lines are fine (as shown), as are comment lines beginning with \'#\'</li>\r\n</ul>\r\n<p>Updates will be processed with a script, which is run manually, and this page will be refreshed once the changes have been made. The timestamp above shows when it was last refreshed.</p>\r\n<ol type=\"1\">\r\n<li>Got carried away and broke the 100 character rule\r\n<ul>\r\n<li>can be checked in vim by hitting \'$\', goes to the last character in the line. Observe the character count at the bottom of the screen to verify this is less than 100.</li>\r\n</ul></li>\r\n<li>Went a little too far with tags, and went pretty far beyond the 200 character</li>\r\n<li>Found that these are reasonable limits, that if not followed, break the script</li>\r\n<li><strong>Don\'t be like me. Gently use these tools and they will serve you well.</strong></li>\r\n<li>Here are some of the tools I used when tagging was done right.\r\n<ol type=\"1\">\r\n<li>i3 window manager\r\n<ul>\r\n<li>Use mplayer and vim</li>\r\n</ul></li>\r\n<li>Mplayer\r\n<ul>\r\n<li><p>Play audio file faster without pitch increase</p></li>\r\n<li><p><a href=\"https://kenfallon.com/speeding-up-speech-with-mplayer\" class=\"uri\">https://kenfallon.com/speeding-up-speech-with-mplayer</a><br />\r\n{ key will slow down by 50% of the current rate<br />\r\n[ key will slow down by 10% of the current rate<br />\r\nBackspace will return the speed to normal<br />\r\n] key will speed up 10% of the current rate<br />\r\n} key will speed up by 50% of the current rate<br />\r\n9 key will decrease the volume<br />\r\n0 key will increase the volume<br />\r\n</p>\r\n<p><code>alias mplayer=\'mplayer -af scaletempo\'</code></p></li>\r\n</ul></li>\r\n<li>Android - Termux\r\n<ul>\r\n<li>Download a show via wget (Doing this on Firefox does not show progress bar)\r\n<ul>\r\n<li>PodcastAddict</li>\r\n</ul></li>\r\n<li><a href=\"https://podcastaddict.com/app\" class=\"uri\">https://podcastaddict.com/app</a></li>\r\n<li>bookmark tags\r\n<ul>\r\n<li>advantage is having timestamps where you tagged (for reference)</li>\r\n</ul></li>\r\n<li>export tags\r\n<ul>\r\n<li>Share to Pushbullet\r\n<ul>\r\n<li><a href=\"https://play.google.com/store/apps/details?id=com.pushbullet.android\" class=\"uri\">https://play.google.com/store/apps/details?id=com.pushbullet.android</a></li>\r\n<li>edit list of tags</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul></li>\r\n</ol></li>\r\n<li>Enjoy old shows and lend a hand at the same time. :)</li>\r\n</ol>\r\n',318,0,0,'CC-BY-SA','tags,mplayer,Android,Termux,vim,i3 window manager',0,0,1),
(3388,'2021-07-28','Linux Inlaws S01E35: The Free Software Foundation Europe',4695,'An interview with Matthias Kirschner, Free Software Foundation Europe','<p>In this episode our aging heroes host the Free Software Foundation Europe (FSFE). Its president, Matthias\r\nKirschner talk about the past, the present and the future of free and open source software not only\r\nfrom an FSFE perspective. Never mind how he got into computers in the first place. Also, different opinions\r\nabout communism in general and its implementations (and the flaws of the first rounds of implementations)\r\nare touched upon. So historians, FLOSS users and enthusiasts, communists and free spirits: This is your episode!\r\nPlus: Ever wondered what the Towel Day is all about? Check out the second half of the episode! At our guest\'s\r\nrequest: Please note that this episode was recorded on June 1st 2021.</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Free Software Foundation Europe: <a href=\"https://fsfe.org\" target=_blank>https://fsfe.org</a></li>\r\n<li>Matthias Kirschner: <a href=\"https://fsfe.org/about/people/kirschner/kirschner.en.html\" target=_blank>https://fsfe.org/about/people/kirschner/kirschner.en.html</a></li>\r\n<li>Free Software Foundation: <a href=\"https://fsf.org\" target=_blank>https://fsf.org</a></li>\r\n<li>Open Software Initiative (OSI): <a href=\"https://opensource.org\" target=_blank>https://opensource.org</a></li>\r\n<li>OSI definition of open source: <a href=\"https://opensource.org/osd\" target=_blank>https://opensource.org/osd</a></li>\r\n<li>Public Money Public Code campaign: <a href=\"https://publiccode.eu\" target=_blank>https://publiccode.eu</a></li>\r\n<li>Stallman controversy: <a href=\"https://arstechnica.com/tech-policy/2021/03/richard-stallman-returns-to-fsf-18-months-after-controversial-rape-comments\" target=_blank>https://arstechnica.com/tech-policy/2021/03/richard-stallman-returns-to-fsf-18-months-after-controversial-rape-comments</a></li>\r\n<li>Towel Day: <a href=\"https://en.wikipedia.org/wiki/Towel_Day\" target=_blank>https://en.wikipedia.org/wiki/Towel_Day</a></li>\r\n<li>FSFE podcast: <a href=\"https://fsfe.org/news/podcast.en.html\" target=_blank>https://fsfe.org/news/podcast.en.html</a></li>\r\n<li>Rutger Bregman, Human kind: <a href=\"https://www.amazon.de/Humankind-Hopeful-History-Rutger-Bregman/dp/1408898934\" target=_blank>https://www.amazon.de/Humankind-Hopeful-History-Rutger-Bregman/dp/1408898934</a></li>\r\n<li>Ashes to Ashes: <a href=\"https://www.bbc.co.uk/programmes/b00jhp3l\" target=_blank>https://www.bbc.co.uk/programmes/b00jhp3l</a></li>\r\n<li>UK met office: <a href=\"https://www.metoffice.gov.uk\" target=_blank>https://www.metoffice.gov.uk</a></li>\r\n<li>Karl Marx, A Critique of Political Economy: <a href=\"https://en.wikipedia.org/wiki/Das_Kapital\" target=_blank>https://en.wikipedia.org/wiki/Das_Kapital</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','FSFE, FSF, Stallman, Hackathon, Communism, Towel Day',0,0,1),
(3580,'2022-04-22','RAW images',939,'How to work with unprocessed images in RAW formats','<p>Most of the time we work with JPEG images because that is the most common format for digital images. They have the virtue of decent quality combined with smaller file size, and so won\'t fill up your storage quite as fast. But if you want the highest quality you have to work with unprocessed images, called RAW images. These are simply the actual data recorded by the camera sensors, and they give you some advantages, such as better correction of white balance. But GIMP does not open RAW images directly. But there are some work-arounds which we discuss in this tutorial.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Raw_image_format\" class=\"uri\">https://en.wikipedia.org/wiki/Raw_image_format</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Darktable\" class=\"uri\">https://en.wikipedia.org/wiki/Darktable</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Dcraw\" class=\"uri\">https://en.wikipedia.org/wiki/Dcraw</a></li>\r\n<li><a href=\"https://linux.die.net/man/1/dcraw\" class=\"uri\">https://linux.die.net/man/1/dcraw</a></li>\r\n<li><a href=\"https://krita.org/en/\" class=\"uri\">https://krita.org/en/</a></li>\r\n<li><a href=\"https://www.rawtherapee.com/\" class=\"uri\">https://www.rawtherapee.com/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/DigiKam\" class=\"uri\">https://en.wikipedia.org/wiki/DigiKam</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/ImageMagick\" class=\"uri\">https://en.wikipedia.org/wiki/ImageMagick</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Shotwell_(software)\" class=\"uri\">https://en.wikipedia.org/wiki/Shotwell_(software)</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Raw_image_format\" class=\"uri\">https://en.wikipedia.org/wiki/Raw_image_format</a></li>\r\n<li><a href=\"https://howtogimp.com/raw-photos-in-gimp/\" class=\"uri\">https://howtogimp.com/raw-photos-in-gimp/</a></li>\r\n<li><a href=\"https://www.signatureedits.com/free-raw-photos/\" class=\"uri\">https://www.signatureedits.com/free-raw-photos/</a></li>\r\n<li><a href=\"https://www.signatureedits.com/raw-files-license/\" class=\"uri\">https://www.signatureedits.com/raw-files-license/</a></li>\r\n<li><a href=\"https://www.darktable.org/install/\" class=\"uri\">https://www.darktable.org/install/</a></li>\r\n<li><a href=\"https://www.rawtherapee.com/downloads/\" class=\"uri\">https://www.rawtherapee.com/downloads/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/raw-images/\" class=\"uri\">https://www.ahuka.com/gimp/raw-images/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, RAW images, unprocessed images',0,0,1),
(3590,'2022-05-06','Directory Commands',872,'More on DOS. This time it is Directory commands.','<p>As we saw in the last lesson, DOS uses directories to organize the files on your disks. That means we need to use directory commands to create a structure to store our files, and to find the files we have stored there. This tutorial takes us through the various commands you can use to do this.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-10-directory-commands/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-10-directory-commands/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, directory listing',0,0,1),
(3600,'2022-05-20','Digitizing Photos',791,'How to digitize old prints, slides, and negatives','<p>Today most photos are in digital formats, such as those you take with a smartphone, so they can be worked on with GIMP right away. But about old prints, slides, and negatives? Before you can work on them, they need to be digitized in some way. In this tutorial I look at some of the options you have for doing this</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.toptenreviews.com/best-photo-scanning-services\" class=\"uri\">https://www.toptenreviews.com/best-photo-scanning-services</a></li>\r\n<li><a href=\"https://scandigital.com/\" class=\"uri\">https://scandigital.com/</a></li>\r\n<li><a href=\"https://everpresent.com/\" class=\"uri\">https://everpresent.com/</a></li>\r\n<li><a href=\"https://www.scancafe.com/\" class=\"uri\">https://www.scancafe.com/</a></li>\r\n<li><a href=\"https://www.gophoto.com/\" class=\"uri\">https://www.gophoto.com/</a></li>\r\n<li><a href=\"https://www.digitalmemoriesonline.net/\" class=\"uri\">https://www.digitalmemoriesonline.net/</a></li>\r\n<li><a href=\"https://www.scanmyphotos.com/\" class=\"uri\">https://www.scanmyphotos.com/</a></li>\r\n<li><a href=\"https://www.pcmag.com/reviews/google-photoscan\" class=\"uri\">https://www.pcmag.com/reviews/google-photoscan</a></li>\r\n<li><a href=\"https://www.toptenreviews.com/best-slide-to-digital-image-converters\" class=\"uri\">https://www.toptenreviews.com/best-slide-to-digital-image-converters</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/digitizing-photos/\" class=\"uri\">https://www.ahuka.com/gimp/digitizing-photos/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, digitizing, scanning, photos',0,0,1),
(3610,'2022-06-03','DOS Wildcards; File Attributes',907,'More on DOS. This time it is DOS Wildcards and File Attributes.','<p>For this lesson we are going to fill in a couple of concepts that we will need before we go further with directories. Wildcards can let you look for files and directories without specifying the complete name, and look for items with similar names or file extensions. And file attributes are an important part of file management.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-11-dos-wildcards-file-attributes/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-11-dos-wildcards-file-attributes/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, wildcards, attributes',0,0,1),
(3620,'2022-06-17','Photo storage, backups, and workflow',1222,'How to keep your photos safe','<p>If you have photos that are important to you, you should take steps to protect them. Every day someone loses a lifetime of memories because they didn\'t take these steps. Don\'t be one of them. In this tutorial I explain how <em>I</em> backup and protect my photos and what my workflow is like. You may find some ideas here that you can use.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.amazon.com/Electronic-Automatic-Rotation-Resolution-1280x800IPS/dp/B07QTKQPX4/ref\" class=\"uri\">https://www.amazon.com/Electronic-Automatic-Rotation-Resolution-1280x800IPS/dp/B07QTKQPX4/ref</a></li>\r\n<li><a href=\"https://www.theguardian.com/world/2007/sep/29/argentina.film\" class=\"uri\">https://www.theguardian.com/world/2007/sep/29/argentina.film</a></li>\r\n<li><a href=\"https://www.facebook.com/\" class=\"uri\">https://www.facebook.com/</a></li>\r\n<li><a href=\"https://www.google.com/photos/about/\" class=\"uri\">https://www.google.com/photos/about/</a></li>\r\n<li><a href=\"https://www.flickr.com/\" class=\"uri\">https://www.flickr.com/</a></li>\r\n<li><a href=\"https://www.smugmug.com/plans/\" class=\"uri\">https://www.smugmug.com/plans/</a></li>\r\n<li><a href=\"https://www.shutterfly.com/\" class=\"uri\">https://www.shutterfly.com/</a></li>\r\n<li><a href=\"https://beebom.com/flickr-alternatives/\" class=\"uri\">https://beebom.com/flickr-alternatives/</a></li>\r\n<li><a href=\"https://www.gimp.org/tutorials/GIMPProfile/\" class=\"uri\">https://www.gimp.org/tutorials/GIMPProfile/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/photo-storage-backups-and-workflow/\" class=\"uri\">https://www.ahuka.com/gimp/photo-storage-backups-and-workflow/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Photo storage, Photo backup, Photo workflow',0,0,1),
(3379,'2021-07-15','Linux Inlaws S01E34: The one with the intelligence',2716,'Part four of the three-part miniseries on deep learning and artificial intelligence','<p>\r\n    In this fourth part of our three-part miniseries on Deep and Machine Learning our two heroes shed some\r\n    light on a DL architecture called Generative Pre-Trained Transformer (GPT), a pretty sophistic piece\r\n    of software that fools most humans when it comes to authoring text (ideal for budding writers with\r\n    a block in place). Other topics of discussion includes OpenAI (the company behind this framework),\r\n    Elon Musk, Bitcoin, Microsoft and if the GPT can actually pass the Turing test. All will be revealed -\r\n    don\'t miss this episode!\r\n</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>OpenAI: <a href=\"https://openai.com\" target=_blank>https://openai.com</a></li>\r\n<li>GPT: <a href=\"https://openai.com/projects\" target=_blank>https://openai.com/projects</a></li>\r\n<li>The Turing Test: <a href=\"https://en.wikipedia.org/wiki/Turing_test\" target=_blank>https://en.wikipedia.org/wiki/Turing_test</a></li>\r\n<li>GPT-2 source code: <a href=\"https://github.com/openai/gpt-2\" target=_blank>https://github.com/openai/gpt-2</a></li>\r\n<li>GPT meta-progamming: <a href=\"https://www.lesswrong.com/posts/zZLe74DvypRAf7DEQ/meta-programming-gpt-a-route-to-superintelligence\" target=_blank>https://www.lesswrong.com/posts/zZLe74DvypRAf7DEQ/meta-programming-gpt-a-route-to-superintelligence</a></li>\r\n<li>GPT-3 interview: <a href=\"https://www.youtube.com/watch?v=PqbB07n_uQ4\" target=_blank>https://www.youtube.com/watch?v=PqbB07n_uQ4</a></li>\r\n<li>DSDS: <a href=\"https://en.wikipedia.org/wiki/Deutschland_sucht_den_Superstar\" target=_blank>https://en.wikipedia.org/wiki/Deutschland_sucht_den_Superstar</a></li>\r\n<li>GPT-3 sample 1: <a href=\"https://linuxinlaws.eu/files/padawans.txt\" target=_blank>https://linuxinlaws.eu/files/padawans.txt</a></li>\r\n<li>GPT-3 sample 2: <a href=\"https://linuxinlaws.eu/files/HGttG.txt\" target=_blank>https://linuxinlaws.eu/files/HGttG.txt</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','GPT-3, OpenAI, Elon Musk, Microsoft, Bitcoin, meta-programming',0,0,1),
(3381,'2021-07-19','Learning to skate',2152,'Klaatu goes for a walk, and talks about learning to ride a skateboard','<p>Apologies for the heavy breathing. I chose (unwisely, in terms of audio) to walk up a steep hill.</p>\r\n',78,0,0,'CC-BY-SA','skateboard',0,0,1),
(3378,'2021-07-14','A bit of my experience with Starlink internet service',608,'some ramblings about satellite internet service and how Starlink is different','<p>Starlink website: <a href=\"https://www.starlink.com/\" class=\"uri\">https://www.starlink.com/</a></p>\r\n\r\n<p>Starlink from Wikipedia: <a href=\"https://en.wikipedia.org/wiki/Starlink\" class=\"uri\">https://en.wikipedia.org/wiki/Starlink</a></p>\r\n\r\n<p>\r\nStarlink is a satellite internet constellation being constructed by SpaceX providing satellite Internet access. The constellation will consist of thousands of mass-produced small satellites in low Earth orbit (LEO), which communicate with designated ground transceivers. The SpaceX satellite development facility in Redmond, Washington houses the Starlink research, development, manufacturing, and orbit control teams. The cost of the decade-long project to design, build, and deploy the constellation was estimated by SpaceX in May 2018 to be at least US$10 billion.\r\n</p>\r\n<p>\r\nProduct development began in 2015. Two prototype test-flight satellites were launched in February 2018. Additional test satellites and 60 operational satellites were deployed in May 2019. SpaceX launches up to 60 satellites at a time, aiming to deploy 1,584 of the 260 kg (570 lb) spacecraft to provide near-global service by late 2021 or 2022. SpaceX started a private beta service in the Northern United States in August 2020 and a public beta in October 2020, service beginning at high latitudes between 44° and 52° North.\r\n</p>\r\n<p>\r\nOn 15 October 2019, the United States Federal Communications Commission (FCC) submitted filings to the International Telecommunication Union (ITU) on SpaceX\'s behalf to arrange spectrum for 30,000 additional Starlink satellites to supplement the 12,000 Starlink satellites already approved by the FCC.\r\n</p>\r\n<p>\r\nAstronomers have raised concerns about the constellations’ effect on ground-based astronomy and how the satellites will add to an already jammed orbital environment. In response, SpaceX has implemented several upgrades to Starlink satellites aimed at reducing their brightness during operation. The satellites are equipped with krypton-fueled Hall thrusters which allow them to de-orbit at the end of their life. Additionally, the satellites are designed to autonomously avoid collisions based on uplinked tracking data.\r\n</p>\r\n',243,0,0,'CC-BY-SA','internet, leo, satellites, ISP',0,0,1),
(3382,'2021-07-20','How I fixed a fault on my car for free thanks to YouTube',760,'How I fixed a fault on my car for free and as an added bonus without injuring myself!','<p>I had a spare moment and found this show on my hard drive. Cheers MrX</p>\r\n<p><a href=\"https://www.youtube.com/watch?v=kl1_VM_j5r8\">YouTube video I found that explains how to fix a rattling heat shield for free</a></p>\r\n<p><em>Picture of the fix!</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3382/heat-shield-repair.jpg\" alt=\"Picture of the fix!\" /></p>\r\n',201,0,1,'CC-BY-SA','Car, Repair, Hack, DIY',0,0,1),
(3383,'2021-07-21','My gEeeky Experiment - Part 1',1029,'ClaudioM talks about how he revived his lowly Asus Eee PC 901 netbook with OpenBSD.','<ul>\r\n<li>Blog post: <a href=\"https://claudiomiranda.wordpress.com/2020/01/04/my-geeeky-experiment-part-1/\" class=\"uri\">https://claudiomiranda.wordpress.com/2020/01/04/my-geeeky-experiment-part-1/</a></li>\r\n<li>Asus Eee PC 901 info via Wikipedia (first paragraph in link): <a href=\"https://en.wikipedia.org/wiki/Asus_Eee_PC#Other_Eee_90x_models\" class=\"uri\">https://en.wikipedia.org/wiki/Asus_Eee_PC#Other_Eee_90x_models</a></li>\r\n<li>OpenBSD Web Site: <a href=\"https://www.openbsd.org/\" class=\"uri\">https://www.openbsd.org/</a></li>\r\n<li>Duplicating installed packages on another machine, via the OpenBSD FAQ: <a href=\"https://www.openbsd.org/faq/faq15.html#PkgDup\" class=\"uri\">https://www.openbsd.org/faq/faq15.html#PkgDup</a></li>\r\n<li>Video of Eee PC 901 running OpenBSD 6.6: <a href=\"https://imgur.com/KHJj8lK\" class=\"uri\">https://imgur.com/KHJj8lK</a></li>\r\n<li>Mastodon post from <span class=\"citation\" data-cites=\"solene\">@solene</span><span class=\"citation\" data-cites=\"bsd.network\">@bsd.network</span> about the Firefox port on OpenBSD: <a href=\"https://bsd.network/@solene/106481939809930365\" class=\"uri\">https://bsd.network/@solene/106481939809930365</a></li>\r\n</ul>\r\n<p>CPU on my Dell Latitude E6410 via sysctl: hw.model=Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz</p>\r\n',152,0,0,'CC-BY-SA','asus,eeepc,openbsd,bsd,linux',0,0,1),
(3384,'2021-07-22','Page Numbers in EPUB eBook Files',1699,'Response to HPR 3367 I describe how to specify page numbers in an EPUB eBook.','<p>This episode is a response to <a href=\"https://hackerpublicradio.org/eps.php?id=3367\">hpr3367</a> by Andrew Conway and Dave Morriss. One of the topics they brought up was the thorny issue of page numbers in e-books. Most of the time you don\'t need to worry about page numbers in ebooks, if you\'re reading fiction for example. The whole point of an ebook is that the texts can reflow to fit the page no matter what size the screen is or what font-size you\'ve chosen. This is a major accessibility feature of all e-book formats. One reason you might want to specify actual page numbers, though, is if you\'re dealing with a technical or academic book, and you need to be able to refer to specific passages in the book by page number, as you are expected to do in academic research. Or, as Andrew and Dave were discussing, you might need to create an index in your ebook that would send your readers back to specific pages like in a paper book.</p>\r\n\r\n<p>I\'ve thought about this before but never really gotten into the weeds and figured out how to make it happen. In fact, when I was creating the new digital editions of the Counterpoint textbooks like I discussed in <a href=\"https://hackerpublicradio.org/eps.php?id=1512\">hpr1512</a>, I actually took the trouble to put page number anchors through the entire thing, so that at a future date I would be able to enable real page numbers. This was a key part of the source file\'s infrastructure, which helped me quickly find the passages I was working on in my huge HTML file. Those anchors are not quite in the correct format for EPUB, but they are consistent and I will easily be able to write a script to fix them. I haven\'t done that yet, but now that I figured out how to do it on some smaller examples, this is on my to-do list.</p>\r\n\r\n<p>Anyway while I was listening to Dave and Andrew talk about this, I thought I remembered reading somewhere that in the newest ePub specification, EPUB 3, there was support for publisher\'s page numbers to deal with precisely this issue. Their discussion prompted me to see if I could make it work. I\'m happy to report success, although with some qualifications, which I will get into.</p>\r\n\r\n<h3>Converting to EPUB 3</h3>\r\n\r\n<p>The first thing to do is to upgrade your ebook from EPUB2 to EPUB3. There are a couple of ways to do this. The way I did it was to use the ebook editor in a recent version of Calibre. When you open up the EPUB for editing, go to the <code>Tools</code> menu and choose <code>Upgrade book internals</code>. This will create the new navigation file <code>nav.xhtml</code> to replace the old <code>toc.ncx</code> file. You\'ll need to edit this new file later to enable the page numbers.</p>\r\n\r\n<h3>Insert page anchors</h3>\r\n\r\n<p>Next you need to put your page anchors in there. This could be very tedious if you haven\'t done any preparatory work, such as putting visible page numbers in plain sight in square brackets [21] the way I did for a couple of ebooks. It wasn\'t very elegant, but at least it was easy to find where the page breaks were. I have a <a href=\"https://hackerpublicradio.org/eps.php?id=1284\">Blather</a> voice command that triggers a python script to create these things. Here\'s an example of page number anchor, which goes in the main text of the book wherever you want to insert a page number. This will not be visible to the reader inline. This is for page 57:</p>\r\n\r\n<pre>\r\n&lt;span epub:type=&quot;pagebreak&quot; id=&quot;page57&quot; title=&quot;57&quot;&gt;&lt;/span&gt;\r\n</pre>\r\n\r\n<h3>Page List in Navigation File</h3>\r\n\r\n<p>Finally you need to put a <strong>page list</strong> in the new navigation file. This is simply an ordered list with hyperlinks to every page anchor that you put in your ebook. This will not be visible to the reader, but it\'s critical to making everything work. Here\'s a minimal example from my first attempt. This only covers Pages 122 to 126. This is the kind of page numbering you might need if you created an ebook from a five-page article from an academic journal that appeared in the middle of the volume.</p>\r\n\r\n\r\n<pre>\r\n&lt;nav epub:type=&quot;page-list&quot; hidden=&quot;hidden&quot;&gt;\r\n    &lt;ol&gt;\r\n        &lt;li&gt;&lt;a href=&quot;filename.html#page122&quot;&gt;122&lt;/a&gt;&lt;/li&gt;\r\n        &lt;li&gt;&lt;a href=&quot;filename.html#page123&quot;&gt;123&lt;/a&gt;&lt;/li&gt;\r\n        &lt;li&gt;&lt;a href=&quot;filename.html#page124&quot;&gt;124&lt;/a&gt;&lt;/li&gt;\r\n        &lt;li&gt;&lt;a href=&quot;filename.html#page125&quot;&gt;125&lt;/a&gt;&lt;/li&gt;\r\n        &lt;li&gt;&lt;a href=&quot;filename.html#page126&quot;&gt;126&lt;/a&gt;&lt;/li&gt;\r\n    &lt;/ol&gt;\r\n&lt;/nav&gt;\r\n</pre>\r\n\r\n<p>I\'m not sure it matters where you put this navigation block in the <code>nav.xhmtl</code> file, but I put mine between the table of contents and the landmarks blocks.</p>\r\n\r\n<h3>Scripting the creation of page list</h3>\r\n\r\n<p>It could be very tedious to create a page list like this, so of course I wrote a script to automate a lot of the heavy lifting. I\'m sure Dave can write one that\'s more elegant than this, but this is what I came up with in about 5 minutes and it did the job, with the exception of putting the right URL for each link. I did a little bit of post-production to search and replace the URLs generated in the script with what I needed for the specific eBook. I think if you added a third command-line argument with a URL, you can solve this problem. The difficulty with larger books will be when you have more than one internal HTML file in the book, you will have to go through very carefully and make sure that the link goes to the correct file. I saved the script as <code>pagelist.sh</code> and put it in my <code>$PATH</code>.</p>\r\n\r\n<p>Command to run to generate a page list from pages 42 to 61:</p>\r\n\r\n<pre>\r\npagelist.sh 42 61\r\n</pre>\r\n\r\n<p>And here\'s the script:</p>\r\n\r\n<pre>\r\n#!/bin/bash\r\n\r\n# grab beginning and ending pages from 1st and 2nd\r\n# CLI arguments, and specify a tmp file to put stuff\r\nstart=&quot;$1&quot;\r\nend=&quot;$2&quot;\r\nnavfile=/tmp/navfile.txt\r\n\r\n# put the top matter for the nav block\r\necho \'&lt;nav epub:type=&quot;page-list&quot; hidden=&quot;hidden&quot;&gt;\' &gt; $navfile\r\necho &quot;    &lt;ol&gt;&quot; &gt;&gt; $navfile\r\n\r\n# iterate through the page numbers making list item for each one.\r\n# should replace filename with your ebook\'s actual filename\r\nfor i in $(seq $start $end); do\r\n	echo &quot;        &lt;li&gt;&lt;a href=\\&quot;filename.html#page$i\\&quot;&gt;$i&lt;/a&gt;&lt;/li&gt;&quot; &gt;&gt; $navfile\r\ndone\r\n\r\n# close out the list and nav block\r\necho &quot;    &lt;/ol&gt;&quot; &gt;&gt; $navfile\r\necho &quot;&lt;/nav&gt;&quot; &gt;&gt; $navfile\r\n\r\nexit 0\r\n</pre>\r\n\r\nThen you just need to copy and paste what was generated from the script into your editor and make sure all of the URLs are correct, then stick that navigation block into the <code>nav.xhtml</code> file.\r\n\r\n<h3>Conclusions</h3>\r\n\r\n<p>So, once you have the page anchors and the page list in place in your EPUB3 ebook, everything should work. The problem is that so far the only ebook reader I have found that renders the page numbers correctly on the screen is the iBooks app on iOS. I tried it on my Kobo dedicated eReader, on the Marvin ePub reader on iOS and on Overdrive on Android, and none of them displayed my shiny page numbers. iBooks was the only one, but it did so perfectly after choosing \"show publisher page numbers\" on the table of contents menu. It was pretty magical. A quick internet search confirms that there is very little e-book reader or app support for displaying these page numbers.</p>\r\n\r\n<p>However, the embedded page numbers will still be useful if what you want to do is create an index that directs readers back to specific pages. On the one hand, indexes are not as critical as they used to be because you can search through the text of e-books very easily. What you can\'t do easily is <em>browse</em> an eBook the way you can browse a paper book index to see what topics might catch your eye. This might be something only academics do. It\'s not uncommon for an academic to pick up a book and flip right to the bibliography and the index!</p>\r\n\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n	<li><a href=\"https://kb.daisy.org/publishing/docs/navigation/pagelist.html\">Examples of different page number code formatting</a> from the Accessible Publishing Knowledge Base</li>\r\n	<li><a href=\"https://idpf.org/epub/301/spec/epub-contentdocs.html#sec-xhtml-nav-def-types\">EPUB 3 Specification for navigation document</a>, including page numbers</li>\r\n	<li><a href=\"https://calibre-ebook.com/\">Calibre eBook management software</a></li>\r\n</ul>\r\n',238,0,0,'CC-BY-SA','ebooks, epub, scripting, calibre',0,0,1),
(3386,'2021-07-26','What\'s for dinner?',1342,'Some scripts and a database for randomly choosing which meal to cook','<h2 id=\"overview\">Overview</h2>\r\n<p>I live on my own, but I cook for members of my family from time to time. Each week we all get together and cook dinner for Wednesday and Thursday. I usually do the cooking but we are starting to share these duties for certain meals.</p>\r\n<p>In 2019 I thought it would be useful if I had some sort of random chooser to decide what next week’s meal was going to be. I wrote a Bash script called <code>choose_meal</code>, using a simple CSV file of meal names and the date last eaten to avoid choosing the same one too often. The shortcomings of this approach soon became apparent!</p>\r\n<p>It wasn’t long before <code>choose_meal</code> was rewritten in <a href=\"https://www.perl.org/\" title=\"Perl scripting language\">Perl</a>. This time I decided to use a database, and chose <a href=\"https://www.sqlite.org/index.html\"><code>SQLite</code></a> to create it. My database contained just two tables, one for the meals themselves (called slightly confusingly <code>\'meal_history\'</code>), and another for a record of the choices made (called <code>\'meal_log\'</code>) – the ability to produce historical reports seemed like a desirable feature!</p>\r\n<p>In 2019 the design of this system was very specific to our needs: one choice per week on a Wednesday. It was not something that could be used by anyone else – which seemed like a bad idea.</p>\r\n<p>In late 2020 and early 2021 the system was redesigned, as will be discussed in the detailed notes. In May 2021 a more general design was added to the public <a href=\"https://gitlab.com/davmo/weekly_menus\" title=\"Weekly Menus repository\">GitLab repository</a> and the preparation of this show was begun.</p>\r\n<p>I had never intended this system to hold recipes. This was partly because I have built a collection of recipes I have constructed from various sources and amended as I have made them. I print these and keep them in a ring-binder for reference as I cook. In some cases the meals described in the database are multi-component ones (such as the dishes that make up a curry for example), so it doesn’t seem appropriate to hold these here.</p>\r\n<p>I might rethink this in the future however.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>Follow this link to <a href=\"https://hackerpublicradio.org/eps/hpr3386/full_shownotes.html\">read the detailed notes</a> associated with this episode.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><p><a href=\"https://www.perl.org/\">Perl</a></p>\r\n<ul>\r\n<li><a href=\"https://www.perl.org/get.html\">Perl 5</a>: (currently v5.35.0)</li>\r\n<li><a href=\"https://www.raku.org/\">Raku</a>: originally called Perl 6, a totally different scripting language.</li>\r\n<li><a href=\"https://www.perl.com/article/announcing-perl-7/\">Perl 7</a>: updates to Perl 5, removal of some historical stuff</li>\r\n</ul></li>\r\n<li><p><a href=\"https://www.sqlite.org/index.html\">SQLite</a>: a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine.</p></li>\r\n<li><p><a href=\"https://gitlab.com/davmo/weekly_menus\">GitLab repository for <em>Weekly Menus</em></a></p></li>\r\n</ul>',225,0,1,'CC-BY-SA','Perl,SQLite3,database,food',0,0,1),
(3387,'2021-07-27','Infosec Podcasts Part 5  Grab bag',483,'Presenting my favorite podcasts related to various aspects of information security','<p>Inoffensive in every region of the world.</p>\r\n<p>Thank you to everyone who has listened to my previous episodes. I hope I am not boring you all to death!</p>\r\n<p>Why am I recording this series?</p>\r\n<ul>\r\n<li>You can hear my reasoning for why I am making this series by listening to the introduction to any of the previous four episodes in this series. Yes, this is a shameless plug for you to listen to my other works.</li>\r\n</ul>\r\n<p>Because there are so many podcasts to list, I have broken them down into 6 different episodes based on topics:</p>\r\n<ul>\r\n<li>Part 1 - News &amp; Current Events</li>\r\n<li>Part 2 - General Information Security</li>\r\n<li>Part 3 - Career &amp; Personal Development</li>\r\n<li>Part 4 - Social Engineering</li>\r\n<li>Part 5 -\r\n<ul>\r\n<li>Hacks &amp; Attacks</li>\r\n<li>Technical Information &amp; Learning</li>\r\n<li>Infosec Community / Social / History</li>\r\n</ul></li>\r\n<li>Part 6 - Infosec Leadership</li>\r\n</ul>\r\n<h2 id=\"part-5\">Part 5</h2>\r\n<h3 id=\"hacks--attacks\">Hacks &amp; Attacks</h3>\r\n<ul>\r\n<li><p>Malicious Life Ran Levi sponsored by Cybereason (Periodically)</p>\r\n<ul>\r\n<li>Detailed descriptions of specific historical events in cybersecurity</li>\r\n<li><a href=\"https://malicious.life/\">https://malicious.life/</a></li>\r\n</ul></li>\r\n<li><p>Darknet Diaries - Jack Rhysider (Bi-Weekly)</p>\r\n<ul>\r\n<li>Stories from the darker side of the net</li>\r\n<li><a href=\"https://darknetdiaries.com/\">https://darknetdiaries.com/</a></li>\r\n</ul></li>\r\n</ul>\r\n<h3 id=\"technical-information--learning\">Technical information / learning</h3>\r\n<ul>\r\n<li><p>Digital Forensic Survival Podcast - Michael Leclair (Weekly)</p>\r\n<ul>\r\n<li>A weekly deep dive into digital forensics</li>\r\n<li><a href=\"https://digitalforensicsurvivalpodcast.com/\">https://digitalforensicsurvivalpodcast.com/</a></li>\r\n</ul></li>\r\n<li><p>The Offensive Security Podcast - TJ Null and Jeremy Miller (Harbinger) and sponsored by Offensive Security (Creators of the OSCP Offensive Security Certified Professional certification)</p>\r\n<ul>\r\n<li>Probably belongs in the Career &amp; Personal Development category, but I discovered it after I had already recorded that episode.</li>\r\n<li>Interviews with Red team practitioners and other security professionals, related to the various certifications and training available with Offensive Security.</li>\r\n<li><a href=\"https://www.offensive-security.com/podcast/\">https://www.offensive-security.com/podcast/</a></li>\r\n</ul></li>\r\n</ul>\r\n<h3 id=\"community--social--history\">Community / Social / History</h3>\r\n<ul>\r\n<li><p>Command Line Heroes - Saron Yitbarek and sponsored by Red Hat (Weekly with gaps between seasons)</p>\r\n<ul>\r\n<li>Tells the stories about how got to be where we are today, from open source to dev-ops, hardware, programming languages, and everything in between</li>\r\n<li><a href=\"https://www.redhat.com/en/command-line-heroes\">https://www.redhat.com/en/command-line-heroes</a></li>\r\n</ul></li>\r\n<li><p>Beers with Talos - Mitch Neff, Craig Williams, Joel Esler, Matt Olney all part of Cisco Talos Research Center (Periodically)</p>\r\n<ul>\r\n<li>A light hearted and sarcastic podcast which touches on current issues of interest to the hosts</li>\r\n<li><a href=\"https://www.talosintelligence.com/podcasts\">https://www.talosintelligence.com/podcasts</a></li>\r\n</ul></li>\r\n</ul>\r\n<p>I hope that this series has helped introduce you to some new and interesting listening options. Give some of them a try, and I would love to get your feedback in the episode comments on the HPR website.</p>\r\n<p>The next and final episode of this series will be about Information Security Leadership podcasts.</p>\r\n<p>Thank you for listening.</p>',394,75,1,'CC-BY-SA','infosec, podcasts, security',0,0,1),
(3399,'2021-08-12','Linux Inlaws S01E36: Open Source Licenses',3361,'The ultimate show on open source licenses or how to fall asleep without chemicals','<p>\r\n    In this episode Chris is trying hard to get Martin to sleep by elaborating on the\r\n    subject of free and open source software licenses but fails miserably. Listen to a\r\n    more than riveting episode on the ins and outs of licensing FLOSS code bases in addition\r\n    to banter about Brexit, plans for a reshaping of Europe after the invasion of England\r\n    and Wales, Northern Ireland and Scotland leave the UK.\r\n</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>MI6: <a href=\"https://www.sis.gov.uk\" target=_blank>https://www.sis.gov.uk</a></li>\r\n<li>OSI definition of free and open source software: <a href=\"https://opensource.org/osd\" target=_blank>https://opensource.org/osd</a></li>\r\n<li>VMware GPL lawsuit: <a href=\"https://sfconservancy.org/news/2015/mar/05/vmware-lawsuit\" target=_blank>https://sfconservancy.org/news/2015/mar/05/vmware-lawsuit</a></li>\r\n<li>Copyleft: <a href=\"https://www.gnu.org/licenses/copyleft.html\" target=_blank>https://www.gnu.org/licenses/copyleft.html</a></li>\r\n<li>Permissive licensing: <a href=\"https://en.wikipedia.org/wiki/Permissive_software_license\" target=_blank>https://en.wikipedia.org/wiki/Permissive_software_license</a></li>\r\n<li>Affero GPL: <a href=\"https://en.wikipedia.org/wiki/Affero_General_Public_License\" target=_blank>https://en.wikipedia.org/wiki/Affero_General_Public_License</a></li>\r\n<li>TerminusDB license change: <a href=\"https://blog.terminusdb.com/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb\" target=_blank>https://blog.terminusdb.com/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb</a></li>\r\n<li>Audacity usage restriction issue: <a href=\"https://github.com/audacity/audacity/issues/1213\" target=_blank>https://github.com/audacity/audacity/issues/1213</a></li>\r\n<li>Redis Source Available License: <a href=\"https://redislabs.com/wp-content/uploads/2019/09/redis-source-available-license.pdf\" target=_blank>https://redislabs.com/wp-content/uploads/2019/09/redis-source-available-license.pdf</a></li>\r\n<li>GoodFORM: <a href=\"https://goodformcode.com\" target=_blank>https://goodformcode.com</a></li>\r\n<li>Server Side Public License: <a href=\"https://www.mongodb.com/licensing/server-side-public-license\" target=_blank>https://www.mongodb.com/licensing/server-side-public-license</a></li>\r\n<li>Creative Commons licenses: <a href=\"https://creativecommons.org/choose\" target=_blank>https://creativecommons.org/choose</a></li>\r\n<li>Clarkson\'s Farm: <a href=\"https://en.wikipedia.org/wiki/Clarkson%27s_Farm\" target=_blank>https://en.wikipedia.org/wiki/Clarkson%27s_Farm</a></li>\r\n<li>Taking Lives: <a href=\"https://www.imdb.com/title/tt0364045/?ref_=fn_al_tt_1\" target=_blank>https://www.imdb.com/title/tt0364045/?ref_=fn_al_tt_1</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Licensing, GNU, BSD, MIT, Taking Lives, MI6, Clarkson\'s Farm, Open Source Initiative',0,0,1),
(3696,'2022-10-03','HPR Community News for September 2022',3283,'HPR Volunteers talk about shows released and comments posted in September 2022','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3674\" target=\"_blank\">3674</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-09-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3674\" target=\"_blank\">Emergency Show posted in 2012. MUD</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=3675\" target=\"_blank\">3675</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-09-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3675\" target=\"_blank\">Plan 9: An exercise in futility</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3676\" target=\"_blank\">3676</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-09-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3676\" target=\"_blank\">HPR Community News for August 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3677\" target=\"_blank\">3677</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-09-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3677\" target=\"_blank\">Hacker Public Radio 2021 - 2022 New Years Show Part 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=3678\" target=\"_blank\">3678</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-09-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3678\" target=\"_blank\">\"Stupid Users\" ... no, not those users, the other \"stupid users\"</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3679\" target=\"_blank\">3679</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-09-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3679\" target=\"_blank\">Linux Inlaws S01E64: Non-profits in the US: A closer look at 501(c)s</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=3680\" target=\"_blank\">3680</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-09-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3680\" target=\"_blank\">EDIT</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=3681\" target=\"_blank\">3681</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-09-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3681\" target=\"_blank\">Rust 101 Episode 3: Functionally Insane</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=3682\" target=\"_blank\">3682</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-09-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3682\" target=\"_blank\">Hacker Public Radio 2021 - 2022 New Years Show Part 5</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3683\" target=\"_blank\">3683</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-09-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3683\" target=\"_blank\">Add a favourite to OSMAnd</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=3684\" target=\"_blank\">3684</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-09-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3684\" target=\"_blank\">Wake on Lan</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=3685\" target=\"_blank\">3685</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-09-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3685\" target=\"_blank\">Budget and an Android app</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=3686\" target=\"_blank\">3686</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-09-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3686\" target=\"_blank\"> Followup for HPR3675: Clarifications on the path traversal bug</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3687\" target=\"_blank\">3687</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-09-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3687\" target=\"_blank\">Hacker Public Radio 2021 - 2022 New Years Show Part 6</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3688\" target=\"_blank\">3688</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-09-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3688\" target=\"_blank\">Education, Certifications, and sipping on the Socials</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3689\" target=\"_blank\">3689</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-09-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3689\" target=\"_blank\">Linux Inlaws S01E65: TerminusDB</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=3690\" target=\"_blank\">3690</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-09-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3690\" target=\"_blank\">Planning the Trip</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=3691\" target=\"_blank\">3691</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-09-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3691\" target=\"_blank\">Starship.rs the best prompt I don\'t use</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=3692\" target=\"_blank\">3692</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-09-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3692\" target=\"_blank\">What is a real hacker?</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3693\" target=\"_blank\">3693</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-09-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3693\" target=\"_blank\">Fixing the automatic cutoff mechanism to an electric mower</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=3694\" target=\"_blank\">3694</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-09-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3694\" target=\"_blank\">Robo Tripping Ravelords of the Apocalypse</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3695\" target=\"_blank\">3695</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-09-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3695\" target=\"_blank\">How I watch youtube with newsboat</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</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 39 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 8 comments on\n8 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2449#comments\" target=\"_blank\">hpr2449</a></strong>\n(2017-12-21) \"<em>Org-mode mobile solution</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=2449#2\" target=\"_blank\">Comment 2</a>:\nSinza on 2022-09-06:\n\"Pinephone\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2756#comments\" target=\"_blank\">hpr2756</a></strong>\n(2019-02-25) \"<em>Bash Tips - 20</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2756#1\" target=\"_blank\">Comment 1</a>:\nUnnamed on 2022-09-30:\n\"Untitled\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3655#comments\" target=\"_blank\">hpr3655</a></strong>\n(2022-08-05) \"<em>BSD for Linux users</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3655#5\" target=\"_blank\">Comment 5</a>:\nKen Fallon on 2022-09-08:\n\"Featured on BSD Now 471\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3658#comments\" target=\"_blank\">hpr3658</a></strong>\n(2022-08-10) \"<em>Linux Inlaws S01E62: HPR\'s inner workings</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=3658#3\" target=\"_blank\">Comment 3</a>:\noperat0r on 2022-09-05:\n\"awesome\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3662#comments\" target=\"_blank\">hpr3662</a></strong>\n(2022-08-16) \"<em>Hacker Public Radio 2021 - 2022 New Years Show Part 1</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3662#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-09-02:\n\"Thanks To:\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3667#comments\" target=\"_blank\">hpr3667</a></strong>\n(2022-08-23) \"<em>Hacker Public Radio 2021 - 2022 New Years Show Part 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=3667#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-09-02:\n\"Thanks To:\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3672#comments\" target=\"_blank\">hpr3672</a></strong>\n(2022-08-30) \"<em>Hacker Public Radio 2021 - 2022 New Years Show Part 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>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3672#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-09-02:\n\"Thanks To:\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3673#comments\" target=\"_blank\">hpr3673</a></strong>\n(2022-08-31) \"<em>Recording for Hacker Public Radio</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3673#1\" target=\"_blank\">Comment 1</a>:\nCarl on 2022-09-05:\n\"Great Tips!\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 31 comments on 9 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3675#comments\" target=\"_blank\">hpr3675</a></strong>\n(2022-09-02) \"<em>Plan 9: An exercise in futility</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3675#1\" target=\"_blank\">Comment 1</a>:\none_of_spoons on 2022-09-02:\n\"Directive gem.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3675#2\" target=\"_blank\">Comment 2</a>:\nClaudioM on 2022-09-02:\n\"plan9 / 9p\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3675#3\" target=\"_blank\">Comment 3</a>:\nnorrist on 2022-09-02:\n\"In-Depth Series: Learning Awk\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3675#4\" target=\"_blank\">Comment 4</a>:\nken on 2022-09-03:\n\"Editors note not Ken Fallon\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3675#5\" target=\"_blank\">Comment 5</a>:\npasserby on 2022-09-03:\n\"fake news\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3675#6\" target=\"_blank\">Comment 6</a>:\nwill on 2022-09-03:\n\"come back to plan9\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3676#comments\" target=\"_blank\">hpr3676</a></strong>\n(2022-09-05) \"<em>HPR Community News for August 2022</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#1\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2022-09-04:\n\"Good show - I made it to the end\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#2\" target=\"_blank\">Comment 2</a>:\nClaudioM on 2022-09-05:\n\"Another One Made It to the End!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#3\" target=\"_blank\">Comment 3</a>:\nMike Ray on 2022-09-05:\n\"A11y and abbreviations\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#4\" target=\"_blank\">Comment 4</a>:\noperat0r on 2022-09-06:\n\"I made it !\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#5\" target=\"_blank\">Comment 5</a>:\nfolky on 2022-09-06:\n\"Did make it too\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#6\" target=\"_blank\">Comment 6</a>:\nbrian-in-ohio on 2022-09-06:\n\"the show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#7\" target=\"_blank\">Comment 7</a>:\nnorrist on 2022-09-06:\n\"Public access to HPR site Generator\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#8\" target=\"_blank\">Comment 8</a>:\nMiguel on 2022-09-06:\n\"I made it!!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#9\" target=\"_blank\">Comment 9</a>:\nStache_AF on 2022-09-07:\n\"Made It\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3677#comments\" target=\"_blank\">hpr3677</a></strong>\n(2022-09-06) \"<em>Hacker Public Radio 2021 - 2022 New Years Show Part 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=3677#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-09-02:\n\"Thanks To:\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3677#2\" target=\"_blank\">Comment 2</a>:\nFilly Buster on 2022-09-06:\n\"Filibuster\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3678#comments\" target=\"_blank\">hpr3678</a></strong>\n(2022-09-07) \"<em>\"Stupid Users\" ... no, not those users, the other \"stupid users\"</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3678#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-09-08:\n\"Stupid=\"NO BACKUPS!\"\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3678#2\" target=\"_blank\">Comment 2</a>:\nLurking Prion on 2022-09-09:\n\"No Backups\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3678#3\" target=\"_blank\">Comment 3</a>:\nLurking Prion on 2022-09-09:\n\"Not a podcast\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3678#4\" target=\"_blank\">Comment 4</a>:\nSome Guy On The Internet on 2022-09-10:\n\"You\'re Fine (...preemptive strike).\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3682#comments\" target=\"_blank\">hpr3682</a></strong>\n(2022-09-13) \"<em>Hacker Public Radio 2021 - 2022 New Years Show Part 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=3682#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-09-02:\n\"Thanks To:\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3687#comments\" target=\"_blank\">hpr3687</a></strong>\n(2022-09-20) \"<em>Hacker Public Radio 2021 - 2022 New Years Show Part 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=3687#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-09-02:\n\"Thanks To:\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3692#comments\" target=\"_blank\">hpr3692</a></strong>\n(2022-09-27) \"<em>What is a real hacker?</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3692#1\" target=\"_blank\">Comment 1</a>:\nbrian-in-ohio on 2022-09-27:\n\"cussing\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3692#2\" target=\"_blank\">Comment 2</a>:\nLurking Prion on 2022-09-28:\n\"Yes, I probably need a hug\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3694#comments\" target=\"_blank\">hpr3694</a></strong>\n(2022-09-29) \"<em>Robo Tripping Ravelords of the Apocalypse</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3694#1\" target=\"_blank\">Comment 1</a>:\none_of_spoons on 2022-09-29:\n\"{inspirational artifice}\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3694#2\" target=\"_blank\">Comment 2</a>:\nClaudioM on 2022-09-29:\n\"Great Story\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3694#3\" target=\"_blank\">Comment 3</a>:\nKen Fallon on 2022-09-29:\n\"I loved this\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3694#4\" target=\"_blank\">Comment 4</a>:\nMechatroniac on 2022-09-29:\n\"Thanks\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3694#5\" target=\"_blank\">Comment 5</a>:\nbrian-in-ohio on 2022-09-30:\n\"the show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3695#comments\" target=\"_blank\">hpr3695</a></strong>\n(2022-09-30) \"<em>How I watch youtube with newsboat</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3695#1\" target=\"_blank\">Comment 1</a>:\nfolky on 2022-09-30:\n\"Great for gpodder too\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-September/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-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=\"fosdem-2023\">FOSDEM 2023</h3>\n<p>FOSDEM 2023 will take place in Brussels, Belgium at the Université Libre de Bruxelles (or ULB) next February on the weekend of the 4th and 5th.</p>\n<p>HPR had a stand at the last in-person event, representing <em>Free Culture Podcasts</em>. There is a call for proposals out at the moment for those wishing to run a stand for the forthcoming event.</p>\n<h3 id=\"older-hpr-shows-on-archive.org-phase-2\">Older HPR shows on archive.org, phase 2</h3>\n<p>Now that all shows from number 1 to the latest have been uploaded to the Internet Archive there are other tasks to perform. We are reprocessing and re-uploading shows in the range 871 to 2429 as explained in the Community News show notes released in <a href=\"http://hackerpublicradio.org/eps.php?id=3586#older-hpr-shows-on-archive.org-phase-2\">May 2022</a>. We are keeping a running total here to show progress:</p>\n<table>\n<tr>\n<th>\nMonth\n</th>\n<th>\nMonth count\n</th>\n<th>\nRunning total\n</th>\n<th>\nRemainder\n</th>\n</tr>\n<tr>\n<td>\n2022-04\n</td>\n<td>\n130\n</td>\n<td>\n130\n</td>\n<td>\n1428\n</td>\n</tr>\n<tr>\n<td>\n2022-05\n</td>\n<td>\n140\n</td>\n<td>\n270\n</td>\n<td>\n1288\n</td>\n</tr>\n<tr>\n<td>\n2022-06\n</td>\n<td>\n150\n</td>\n<td>\n420\n</td>\n<td>\n1138\n</td>\n</tr>\n<tr>\n<td>\n2022-07\n</td>\n<td>\n155\n</td>\n<td>\n575\n</td>\n<td>\n983\n</td>\n</tr>\n<tr>\n<td>\n2022-08\n</td>\n<td>\n155\n</td>\n<td>\n730\n</td>\n<td>\n828\n</td>\n</tr>\n<tr>\n<td>\n2022-09\n</td>\n<td>\n150\n</td>\n<td>\n880\n</td>\n<td>\n678\n</td>\n</tr>\n</table>\n\n<p><small><small>Updated: 2022-10-02 11:47:18</small></small></p>\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3392,'2021-08-03','Structured error reporting',1714,'Tuula talks about how she improved build times by breaking down error reporting to smaller parts','<h2 id=\"initial-state\">Initial state</h2>\r\n<p>When I originally wanted a unified error reporting on the server-side, I made one huge type that enumerated all the possible error cases that could be reported:</p>\r\n<pre><code>-- | Error codes for all errors returned by API\r\ndata ErrorCode\r\n    -- common error codes\r\n    = ResourceNotFound\r\n    | InsufficientRights\r\n    | FailedToParseDataInDatabase\r\n    -- errors specific to news\r\n    | SpecialEventHasAlreadyBeenResolved\r\n    | UnsupportedArticleType\r\n    | SpecialNewsExtractionFailed\r\n    | TriedToMakeChoiceForRegularArticle\r\n    -- errors specific to simulation state\r\n    | SimulationStatusNotFound\r\n    | DeltaTIsTooBig\r\n    | TurnProcessingAndStateChangeDisallowed\r\n    | SimulationNotOpenForCommands\r\n    | SimulationNotOpenForBrowsing\r\n    -- errors specific to people\r\n    | StatIsTooLow Text\r\n    | CouldNotConfirmDateOfBirth\r\n    | DateOfBirthIsInFuture\r\n    | FirstNameIsEmpty\r\n    | FamilyNameIsEmpty\r\n    | CognomenIsEmpty\r\n    | RegnalNumberIsLessThanZero\r\n    -- errors specific to new person creation\r\n    | AgeBracketStartIsGreaterThanEnd\r\n    | PersonCreationFailed\r\n    deriving (Show, Read, Eq)\r\n</code></pre>\r\n<p>Then I had some helper functions to turn any value of that type into a nice error message:</p>\r\n<pre><code>errorCodeToStatusCode :: ErrorCode -&gt; Int\r\nstatusCodeToText :: Int -&gt; ByteString\r\nerrorCodeToText :: ErrorCode -&gt; Text\r\nraiseIfErrors :: [ErrorCode] -&gt; HandlerFor App ()\r\n</code></pre>\r\n<p><code>errorCodeToStatusCode</code> was responsible for turning <code>ErrorCode</code> into http status code. For example <code>StatIsTooLow \"intrigue\"</code> would be <code>400</code>. <code>statusCodeToText</code> would take this code and turn it into short error message given in http response. <code>400</code> would be <code>Bad Request</code>. <code>errorCodeToText</code> would give a bit more verbose explanation of what happened, <code>StatIsTooLow \"intrigue\"</code> would be mapped to <code>\"Stat intrigue is too low\"</code>. Finally <code>raiseIfErrors</code> would take a list of <code>ErrorCode</code> and use these helper functions to turn them into a http response with correct status code, error message and json body detailing all errors that had happened:</p>\r\n<pre><code>[\r\n    { code:\r\n        { tag: &quot;StatIsTooLow&quot;\r\n        , contents: &quot;intrique&quot;\r\n        }\r\n    , error: &quot;Stat intrigue is too low&quot;\r\n    }\r\n]\r\n</code></pre>\r\n<p>There’s two tags: <code>code</code>, which contains machine readable details about the error and <code>error</code>, which contains error message that can be shown to user.</p>\r\n<p>While this worked fine, there was some problems with it. <code>ErrorCode</code> type was growing larger and larger and the module it was defined in was referred all over the codebase. Every time I added a new error message, all the modules that used error reporting had to be compiled and it was getting slow.</p>\r\n<h2 id=\"solution\">Solution</h2>\r\n<p>Breaking up the <code>ErrorCode</code> to smaller types and moving them to different modules would means less modules were going to built when I added a new error code. The problem was that <code>raiseIfErrors :: [ErrorCode] -&gt; HandlerFor App ()</code> wanted a list of <code>ErrorCode</code> and elements in a list have to be of same type.</p>\r\n<p>I started by splitting <code>ErrorCode</code> to smaller types. Each of the smaller error types have automatically derived toJSON and fromJSON functions for serializing them to and from JSON:</p>\r\n<pre><code>data PersonCreationError =\r\n    StatIsTooLow Text\r\n    | CouldNotConfirmDateOfBirth\r\n    | DateOfBirthIsInFuture\r\n    | FirstNameIsEmpty\r\n    | FamilyNameIsEmpty\r\n    | CognomenIsEmpty\r\n    | RegnalNumberIsLessThanZero\r\n    deriving (Show, Read, Eq)\r\n\r\n$(deriveJSON defaultOptions &#39;&#39;PersonCreationError)\r\n</code></pre>\r\n<p>That <code>$(deriveJSON defaultOptions \'\'PersonCreationError)</code> is template haskell call. Basically it invokes a <code>deriveJSON</code> function with <code>PersonCreationError</code> as parameter and compiles and splices the resulting code here. This is fast and easy way of generating <code>ToJSON</code> and <code>FromJSON</code> instances and avoiding having to write them by hand. It is very similar to how Lisp macros work.</p>\r\n<p>Then I defined a type class, that has functions for getting a http status code and a error message that can be shown to user. <code>statusCodeToText</code> I could use as is, without any modifications:</p>\r\n<pre><code>class ErrorCodeClass a where\r\n    httpStatusCode :: a -&gt; Int\r\n    description :: a -&gt; Text\r\n</code></pre>\r\n<p>I have to have instance of <code>ErrorCodeClass</code> defined for each and every smaller error type. Here’s an excerpt of <code>PersonCreationError</code> showing how it would look like:</p>\r\n<pre><code>instance ErrorCodeClass PersonCreationError where\r\n    httpStatusCode = \\case\r\n        StatIsTooLow _ -&gt; 400\r\n        CouldNotConfirmDateOfBirth -&gt; 500\r\n...\r\n\r\n    description = \\case\r\n        StatIsTooLow s -&gt;\r\n            &quot;Stat &quot; ++ s ++ &quot; is too low&quot;\r\n...\r\n</code></pre>\r\n<p>A little note: <code>description = \\case</code> relies on lambda case extension. It is just a slightly different way of writing:</p>\r\n<pre><code>    description d =\r\n        case d of\r\n</code></pre>\r\n<p>This allows me to turn values of these smaller error types into error messages that could be sent to the user.</p>\r\n<p>The second part of the solution is to figure out a way to put values of these smaller error types into same list. If a list is of type <code>[PersonCreationError]</code>, it can’t contain values of <code>CommonError</code> and vice versa. Creating a wrapper like:</p>\r\n<pre><code>data ECode a = ECode a\r\n</code></pre>\r\n<p>doesn’t work, because then I would have elements of type <code>ECode PersonCreationError</code> and <code>ECode CommonError</code>, which are of different type. What I need, is a way to wrap all these different types into a wrapper that loses the type of wrapped value. Another problem is that I need to place constraints on what kind of values can be wrapped. I need them to have instances for <code>ErrorCodeClass</code> (for getting error information) and ToJSON (for serializing them into JSON). There’s several ways of doing this, but I chose to use generalized algebraic data types (GADTs for short):</p>\r\n<pre><code>{-# LANGUAGE GADTs #-}\r\n\r\ndata ECode where\r\n    ECode :: (ErrorCodeClass a, ToJSON a) =&gt; a -&gt; ECode\r\n</code></pre>\r\n<p>Now type <code>ECode</code> has one value constructor, also named to <code>ECode</code>, which takes one parameter <code>a</code>. <code>a</code> can be anything, as long as there’s <code>ErrorCodeClass</code> and <code>ToJSON</code> instances defined for it. Calling this constructor will return <code>ECode</code>. If you compare this with the previous definition of <code>ECode</code>, you’ll notice two major differences:</p>\r\n<ul>\r\n<li><code>a</code> is constrained to have specific type class instances</li>\r\n<li>resulting type is <code>ECode</code>, not <code>ECode a</code></li>\r\n</ul>\r\n<p>The second part means that I can wrap different types into <code>ECode</code> and place them into a same list without problems. Type of that list is simply <code>[ECode]</code>.</p>\r\n<p>But having a list of error codes wrapped in <code>ECode</code> isn’t going to do much to us. We need to be able to turn them into http status code, text and list of error messages. Luckily we have a type class just for that:</p>\r\n<pre><code>instance ErrorCodeClass ECode where\r\n    httpStatusCode (ECode a) =\r\n        httpStatusCode a\r\n\r\n    description (ECode a) =\r\n        description a\r\n</code></pre>\r\n<p><code>httpStatusCode</code> of <code>ECode</code> is <code>httpStatusCode</code> of the value <code>ECode</code> wraps. Similarly <code>description</code> of <code>ECode</code> is <code>description</code> of the wrapped value.</p>\r\n<p>For turning <code>ECode</code> into JSON, I opted for hand written instance:</p>\r\n<pre><code>instance ToJSON ECode where\r\n    toJSON (ECode a) =\r\n        object [ &quot;HttpCode&quot; .= httpStatusCode a\r\n               , &quot;FaultCode&quot; .= toJSON a\r\n               , &quot;ErrorDescription&quot; .= description a\r\n               ]\r\n</code></pre>\r\n<p>This gives me complete control over how I want to report errors to the client.</p>\r\n<p>Final piece of the puzzle is <code>raiseIfErrors</code> function:</p>\r\n<pre><code>raiseIfErrors :: [ECode] -&gt; HandlerFor App ()\r\nraiseIfErrors errors = do\r\n    when (not $ null errors) $ do\r\n        let code = fromMaybe 500 $ errors ^? ix 0 . to httpStatusCode\r\n        let msg = statusCodeToText code\r\n        sendStatusJSON (Status code msg) $ toJSON errors\r\n</code></pre>\r\n<p>If there are any elements in the passed in list, grab the http status code and text from the first element of the list. I was considering writing some sort of logic to deduce which error code to return in case there are more than one type in the list, but decided against it. There doesn’t seem to be any easy way to decide between HTTP 400 Bad Request and HTTP 500 Internal Server Error. So I just return the first one. Body of the response contains list of errors codes:</p>\r\n<pre><code>[\r\n    { HttpCode: 400\r\n    , FaultCode: {\r\n        Tag: &quot;StatIsTooLow&quot;\r\n        , Contents: &quot;intrique&quot;\r\n        }\r\n    , ErrorDescription: &quot;Stat intrigue is too low&quot;\r\n    }\r\n]\r\n</code></pre>\r\n<p>Since manually wrapping things in <code>ECode</code> gets tedious after a while, I defined function for each type of error that does that for me:</p>\r\n<pre><code>statIsTooLow :: Text -&gt; ECode\r\nstatIsTooLow s = ECode $ StatIsTooLow s\r\n</code></pre>\r\n<p>Now, instead of writing <code>ECode $ StatIsTooLow \"intrigue\"</code>, I can write <code>statIsTooLow \"intrigue\"</code>. And if I ever decide to change internals of errors again, I can change how these functions are defined and hopefully don’t have to change each and every place where they’re being used.</p>\r\n<h2 id=\"different-solution\">Different solution</h2>\r\n<p>Another way to tackle this problem is to use records instead of algebraic data types:</p>\r\n<pre><code>data ECode = ECode\r\n    { httpCode :: Int\r\n    , description :: Text\r\n    }\r\n\r\nstatIsTooLow :: Text -&gt; ECode\r\nstatIsTooLow s =\r\n    ECode\r\n    { httpCode = 400\r\n    , description = &quot;Stat &quot; ++ s ++ &quot; is too low&quot;\r\n    }\r\n</code></pre>\r\n',364,107,1,'CC-BY-SA','haskell, error reporting',0,0,1),
(3393,'2021-08-04','We need to talk about XML',1885,'An extensible markup language? This is too good to be true!','<p>Klaatu introduces XML.</p>\r\n\r\n<p>\r\nThe sample XML document discussed in this episode is&#58;\r\n</p>\r\n\r\n<pre>\r\n<code>\r\n&#60;xml&gt;\r\n  &#60;sol&gt;\r\n    &#60;planet&gt;\r\n      &#60;name&gt;\r\n        Mercury\r\n      &#60;&#47;name&gt;\r\n      &#60;albedo&gt;\r\n        0.11\r\n      &#60;&#47;albedo&gt;\r\n    &#60;&#47;planet&gt;\r\n    &#60;planet&gt;\r\n      &#60;name&gt;\r\n        Venus\r\n      &#60;&#47;name&gt;\r\n      &#60;albedo&gt;\r\n        0.7\r\n      &#60;&#47;albedo&gt;\r\n    &#60;&#47;planet&gt;\r\n    &#60;planet&gt;\r\n      &#60;name&gt;\r\n        Terra\r\n      &#60;&#47;name&gt;\r\n      &#60;albedo&gt;\r\n        0.39\r\n      &#60;&#47;albedo&gt;\r\n    &#60;&#47;planet&gt;\r\n  &#60;&#47;sol&gt;\r\n&#60;&#47;xml&gt;\r\n</code>\r\n</pre>\r\n',78,0,0,'CC-BY-SA','xml,data,markup,markdown',0,0,1),
(3394,'2021-08-05','Be an XML star with xmlstarlet',1591,'Parse XML from the terminal','<p>See the layout of an XML document</p>\r\n\r\n<pre><code>\r\n$ xmlstarlet elements planets.xml\r\nxml\r\nxml/sol\r\nxml/sol/planet\r\nxml/sol/planet/name\r\nxml/sol/planet/albedo\r\nxml/sol/planet\r\nxml/sol/planet/name\r\nxml/sol/planet/albedo\r\nxml/sol/planet\r\nxml/sol/planet/name\r\nxml/sol/planet/albedo\r\n</code>\r\n</pre>\r\n\r\n<p>See content of the <strong>planet</strong> node</p>\r\n\r\n<pre><code>\r\n$ xmlstarlet select -t --value-of \'/xml/sol/planet\' planets.xml\r\n\r\n        Mercury\r\n        0.11\r\n\r\n        Venus\r\n        0.7\r\n\r\n        Terra\r\n        0.39\r\n</code></pre>\r\n\r\n<p>Get the third instance of the <strong>planet</strong> node</p>\r\n\r\n<pre><code>\r\n$ xmlstarlet select -t --value-of \'/xml/sol/planet[3]\' planets.xml\r\nTerra\r\n0.39\r\n</code></pre>\r\n\r\n<p>Get only the planets with an albedo greater than 0.25</p>\r\n\r\n<pre><code>\r\n$ xmlstarlet select -t --value-of \'/xml/sol/planet[albedo > 0.25]\' planets.xml\r\n\r\nVenus\r\n0.7\r\n\r\nTerra\r\n0.39\r\n</code></pre>\r\n\r\n<p>Get only the planets closer to Sol than the third planet</p>\r\n\r\n<pre><code>\r\n$ xmlstarlet select -t --value-of \'/xml/sol/planet[position() < 3]\' planets.xml\r\n\r\nMercury\r\n0.11\r\n\r\nVenus\r\n0.7\r\n</code></pre>\r\n\r\n<p>Learn more XPath functions at <a href=\"https://developer.mozilla.org/en-US/docs/Web/XPath\" target=\"_blank\">Mozilla Developer Network</a>.</p>\r\n\r\n<p>Download xmlstarlet from <a href=\"https://xmlstar.sourceforge.net\"\r\ntarget=\"_blank\">xmlstar.sourceforge.net</a> (<a href=\"https://sourceforge.net/projects/xmlstar/\">https://sourceforge.net/projects/xmlstar/</a>).\r\n</p>\r\n',78,0,0,'CC-BY-SA','xml,data,markup,markdown',0,0,1),
(3441,'2021-10-11','Murphy Work Bench',842,'Operator talks about hitting his head on his work bench','<ul>\r\n<li>PROS:\r\n<ul>\r\n<li>easy clean up just fold and vacuum</li>\r\n<li>height is great for tall people so I\'m not hunched over the table</li>\r\n<li>saves space</li>\r\n</ul></li>\r\n<li>CONS:\r\n<ul>\r\n<li>I ran into it 2 times so I rounded the edges</li>\r\n<li>I just now hit my head on it ... folded and crashed everything on the table to the ground and pic I custom made fell of the wall and into my AC water bucket</li>\r\n<li>loud when using and setting up everything echoes though the walls at night etc</li>\r\n</ul></li>\r\n</ul>\r\n<!-- . -->\r\n<ul>\r\n<li><a href=\"https://smile.amazon.com/gp/product/B08F4VNT9P\" class=\"uri\">https://smile.amazon.com/gp/product/B08F4VNT9P</a> $60</li>\r\n<li>MDF cut at Lowes $50</li>\r\n</ul>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr3441/WorkBench.gif\" alt=\"https://hackerpublicradio.org/eps/hpr3441/WorkBench.gif\" /></p>\r\n',36,0,1,'CC-BY-SA','DIY,wood working,hacking',0,0,1),
(3396,'2021-08-09','Card roles in Magic the Gathering',2367,'There are over 25,000 cards in MTG. You only need 60 to play.','<p>Cutting to the chase&#58;</p>\r\n<p>When getting into Magic the Gathering, it&#39;s easy to get overwhelmed and confused by choice. Instead of thinking about cards, I&#39;ve learnt to think about the game mechanic roles that a deck needs to have satisfied, and then I look for cards that fill those roles.\r\n</p>\r\n\r\n<p>My list is by no means definitive, but I think these are the basic universal roles you need, regardless of how you play&#58;</p>\r\n\r\n<ul>\r\n<li>Mana base&#58; Land cards. These provide you with mana so you can play cards. For a 60 card deck, anticipate requiring about 24. In a later episode, I&#39;ll talk about additional ways to manage mana.</li>\r\n<li>General purpose&#58; Creatures, enchantments, instants, artifacts, and so on. These are cards, costing a full spectrum of mana amounts &#40;some you can play for 1 or 2 mana, others require 4 and 5 and more&#41;, that you need to populate your deck. These don&#39;t need to be anything special, unless you want to spend money for really fancy cards, but I assume you&#39;re not listening to me if you&#39;re a pro player.<//i>\r\n<li>Card draw&#58; You&#39;re going to deplete your hand unless you have cards that give you permission to draw more cards than just your allotted one-per-turn.</li>\r\n<li>Recursion&#58; When you&#39;re forced to discard a card you really really wanted to play, you&#39;ll be glad to have some cards that grant you permission to bring that card back from your graveyard. This is called &#34;recursion&#34; by Magic players.</li>\r\n</ul>\r\n\r\n<p>There are other card types that can be useful, but they may be best for specific strategies. The ones I list here are, I believe, pretty universal.\r\n</p>\r\n\r\n<p>You can find lists of cards that fill specific roles with a simple Internet search. For instance, if you realize you have no cards that let you replenish your hand, you might search for &#34;best cards to draw cards MTG&#34; and get directed to a site like <a href=\"https://tappedout.net/mtg-decks/list-of-edh-draw-cards/\" target=\"_blank\">TappedOut.net</a> or <a href=\"https://magic.wizards.com/en/articles/archive/feature/top-50-card-drawing-cards-2003-03-21-0\" target=\"_blank\">magic.wizards.com</a>.</p>\r\n\r\n<p>Go to your local game store or an online vendor to buy just the cards you need. Because there are so many to choose from in any given category, you get to control the price. I have a rule for myself that do not spend over $2 on any single card.\r\n</p>\r\n\r\n<p>When trying to fill roles, I generally aim to get 4 cards that do the thing I need. Sometimes I get exactly the same card 4 times, other times I get a variety of cards to fill the role. Either way, 4 usually feels like a good draw frequency for each role.</p>\r\n\r\n',78,0,0,'CC-BY-SA','magic, mtg, card, tcg',0,0,1),
(3401,'2021-08-16','Mana hacks',1924,'Klaatu muses about mana ramping in Magic the Gathering','<p>The categories of mana ramps I have defined for myself are&#58;</p>\r\n<ul>\r\n<li>Mana acquired outside of the land drop action</li>\r\n<li>Getting more mana for less</li>\r\n<li>Mana saved up over time</li>\r\n</ul>\r\n',78,95,0,'CC-BY-SA','magic, mtg, card, tcg, mana',0,0,1),
(3397,'2021-08-10','What is a PineTime',595,'In this podcast I talk a little bit about the pinetime.','<p>\r\nThis is the first impression of a PineTime watch that I bought about a week ago and have already done some changes to the underlying code. I think this is an interesting project and open source so you can contribute.\r\n</p>\r\n<p>\r\nGithub repository:\r\n<a href=\"https://github.com/JF002/InfiniTime\">https://github.com/JF002/InfiniTime</a>\r\n</p>\r\n<p>\r\nSales page:\r\n<a href=\"https://www.pine64.org/pinetime/\">https://www.pine64.org/pinetime/</a>\r\n</p>',382,0,0,'CC-BY-SA','open source, watch, coding',0,0,1),
(3406,'2021-08-23','A study of cards in games',1633,'Currency, deterrent, coersion, clutter, rules','<p>What function cards have in games.</p>',78,95,0,'CC-BY-SA','card, game',0,0,1),
(3402,'2021-08-17','Reading a manifesto: Declaration of Digital Autonomy',877,'Reading and brief commentary and background on Molly DeBlanc\'s and Karen Sandler\'s techautonomy.org','<p><em>This episode, as its source material, is licensed under the Creative Commons Attribution-ShareAlike 4.0 International license.</em></p>\r\n<h2 id=\"previously\">Previously</h2>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3317\">hpr3317</a> :: Reading a manifesto: Towards A Cooperative Technology Movement</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3326\">hpr3326</a> :: HPR Community News for April 2021</li>\r\n</ul>\r\n<h2 id=\"free-software-timeline\">Free Software Timeline</h2>\r\n<ul>\r\n<li>1983-09: <a href=\"https://www.gnu.org/gnu/initial-announcement.html\">The GNU Project announced</a></li>\r\n<li>1985-03: The GNU Manifesto <a href=\"https://www.gnu.org/gnu/manifesto.en.html\">[1987, GNU]</a> <a href=\"https://archive.org/details/dr_dobbs_journal_vol_10/page/n197/mode/2up\">[Dr. Dobb\'s 1985, Internet Archive]</a></li>\r\n<li>1986-02: The <a href=\"https://www.gnu.org/philosophy/free-sw.en.html\">Free Software Definition</a> <a href=\"https://www.gnu.org/bulletins/bull1.txt\">[original bulletin]</a></li>\r\n<li>1997-05: <a href=\"https://www.catb.org/~esr/writings/cathedral-bazaar/\">The Cathedral and the Bazaar</a></li>\r\n<li>1997-07: The <a href=\"https://www.debian.org/social_contract#guidelines\">Debian Free Software Guidelines</a> <a href=\"https://lists.debian.org/debian-announce/1997/msg00017.html\">[original mail]</a></li>\r\n<li>1998-01: The Mozilla Project</li>\r\n<li>1998-02: The Open Source Initiative</li>\r\n<li>1998-02: The <a href=\"https://opensource.org/osd\">Open Source Definition</a></li>\r\n<li>2011-02: Simon Phipps\'s <a href=\"https://webmink.com/essays/open-by-rule/\">Open-By-Rule Benchmark</a></li>\r\n<li>2015-02: <a href=\"https://opensourcedesign.net/2015/02/01/opensourcedesign-fosdem\">FOSDEM 2015 Open Source Design track</a></li>\r\n<li>2017-07: <a href=\"https://ekprayogblog.wordpress.com/2017/07/13/open-design-manifesto/\">Open Design Manifesto (ekprayog)</a></li>\r\n<li>2018-08: DebConf 18: <em>That\'s a free software Issue!</em> by Sandler and de Blanc <a href=\"https://debconf18.debconf.org/talks/38-thats-a-free-software-issue/\">[debconf]</a> <a href=\"https://peertube.debian.social/videos/watch/1461a829-a7fe-421a-9f0e-ef9b5db96ea9\">[peertube]</a></li>\r\n<li>2019-09: <a href=\"https://stallman.org/archives/2019-jul-oct.html#16_September_2019_%28Resignation%29\">rms resigns from the FSF</a></li>\r\n<li>2020-04: <a href=\"https://github.com/opensourcedesign/opensourcedesign.github.io/blob/e5e2ece7f08d16bc634f5e065cd27251862f616d/manifesto.md\">Open Source Design Manifesto (opensourcedesign.net)</a></li>\r\n<li>2020-07: GUADEC 2020: Principles of Digital Autonomy <a href=\"https://invidious.namazso.eu/watch?v=60cwBKZFIf4\">[invidious]</a> <a href=\"https://www.youtube.com/watch?v=60cwBKZFIf4\">[youtube]</a></li>\r\n<li>2020-08: DebConf 2020: Principles of Digital Autonomy <a href=\"https://debconf20.debconf.org/talks/97-introducing-the-principles-of-digital-autonomy/\">[debconf]</a> <a href=\"https://peertube.debian.social/videos/watch/0ccc2893-06dd-4c36-81d1-838441666bec\">[peertube]</a></li>\r\n<li>2021-03: Simon Phipps\'s <a href=\"https://meshedinsights.com/2021/03/18/rights-ratchet-score-card/\">A Rights Ratchet Score Card</a></li>\r\n<li>2021-03: <a href=\"https://media.libreplanet.org/u/libreplanet/m/unjust-computing-clamps-down/\">LibrePlanet 2021: rms returns to FSF board</a></li>\r\n<li>2021-04: Cooperative Technology manifesto <a href=\"https://hackerpublicradio.org/eps.php?id=3317\">[hpr3317]</a> <a href=\"https://cooperativetechnology.codeberg.page/\">[official]</a></li>\r\n</ul>\r\n<p>Further sources for timeline:</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/History_of_netscape\">https://en.wikipedia.org/wiki/History_of_netscape</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/History_of_free_and_open-source_software\">https://en.wikipedia.org/wiki/History_of_free_and_open-source_software</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar\">https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Open_Source_Initiative\">https://en.wikipedia.org/wiki/Open_Source_Initiative</a></li>\r\n</ul>\r\n<h2 id=\"people\">People</h2>\r\n<h3 id=\"molly-deblanc\">Molly DeBlanc</h3>\r\n<p><a href=\"https://deblanc.net/blog/about/\">https://deblanc.net/blog/about/</a></p>\r\n<ul>\r\n<li>Former Campaigns Manager, FSF</li>\r\n<li>Former President of the Board, OSI</li>\r\n<li>Current Strategic Initiatives Manager, GNOME Foundation</li>\r\n<li>Current Debian Community Team</li>\r\n</ul>\r\n<h3 id=\"karen-sandler\">Karen Sandler</h3>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Karen_Sandler\">https://en.wikipedia.org/wiki/Karen_Sandler</a></p>\r\n<ul>\r\n<li>Former General Counsel, SFLC</li>\r\n<li>Former Executive Director, GNOME Foundation</li>\r\n<li>Current Executive Director, SFC</li>\r\n</ul>\r\n<h2 id=\"manifesto\">Manifesto</h2>\r\n<p><a href=\"https://techautonomy.org/\">https://techautonomy.org/</a></p>\r\n<h3 id=\"declaration-of-digital-autonomy-draft-0-1-\">Declaration of Digital Autonomy (draft 0.1)</h3>\r\n<p>We demand a world in which technology is created to protect and empower the people who use it. Our technology must respect the rights and freedoms of those users. We need to take control for the purpose of collectively building a better world in which technology works in service to the good of human kind, protecting our rights and digital autonomy as individuals.</p>\r\n<p>We have become more reliant than ever on technology that we intertwine into every aspect of our lives. That technology is currently made not for us, those using it. Rather, it is for the companies who intend to monetize its use and whoever owns the associated copyrights and patents. Services are run via networked software  on computers we never directly interact with. Our devices are designed to only function while broadcasting our intimate information regardless of whether the transmission of that information is necessary functionality. We generate data that we do not have access to, that is bought, sold, and traded between corporations and governments. Technologies we\'re increasingly being forced to use reinforce and amplify social inequalities. As schools and jobs go online, high speed computing, centralized services and Internet become inescapably necessary. Technology is designed and implemented to oppress, often with sexist, classist, and racist implications. Rather than being served by these tools, we are instead in service to them. These gatekeepers of our technology are not individual people or public organizations who think about the wellbeing of others, but instead are corporations, governments and others with agendas that do not include our best interests. Our technology has become the basic infrastructure on which our society functions, and yet the individuals who use it have no say or control over its function.</p>\r\n<p>It\'s time to change  our digital destiny.</p>\r\n<p>We believe it is necessary for technology to provide opportunity for: informed consent of use; transparent development and operation; privacy and security from bad actors; interaction without fear of surveillance; technology to work primarily on the terms of the people using it; functionality inside and outside of connected networks; use with other services and other software, repair; and connection, and not alienation, from the technology itself and that which is created from it.</p>\r\n<p>We therefore call for the adoption of the following principles for ethical technology:</p>\r\n<ul>\r\n<li><h4 id=\"in-service-of-the-people-who-use-it\">In service of the people who use it</h4>\r\nFrom conception through to public availability, technology must be in the service of the people and communities who use it. This includes a freedom from surveillance, data gathering, data sales, and vendor and file format lock-in.  When it becomes apparent that the technology, as it is delivered, does not meet the needs of a given person, that person is able to change and repair their technology. Technology must have an option for use without an Internet connection.</li>\r\n<li><h4 id=\"informed-consent\">Informed consent</h4>\r\nPeople must have the ability to study and understand the technology in order to decide whether using it as is is the right choice for them. People must be able to determine, either directly or through third parties, how the technology is operating and what information it is collecting, storing and selling. Additionally, there should be no punitive responses for declining consent -- practical alternatives must be offered, whether those are changes to the underlying technology or compatible updates from the original provider or from third parties.</li>\r\n<li><h4 id=\"empowering-individual-and-collective-digital-action\">Empowering individual and collective digital action</h4>\r\n<p>When people discover that their technology is not functioning in their interest, or that the trade offs to use it have become too burdensome, they must have the ability to change what they are using, including the ability to replace the software on a device that they have purchased if it is not serving their interests and to use the technology while not being connected to a centralized network or choose a different network.</p>\r\n<p>Technology should not just be designed for the individuals using it, but also the communities of users. These communities can be those intentionally built around a piece of technology, geographic in nature, or united by another shared purpose. This includes having the ability and right to organize to repair the technology on and to migrate essential data to other solutions. Ownership of essential data must belong to the community relying on them.</p>\r\n</li>\r\n<li><h4 id=\"protect-people-s-privacy-and-other-rights-by-design\">Protect people\'s privacy and other rights by design</h4>\r\nBuilding technology must be done to respect  the rights of people, including those of privacy, open communication, and the safety to develop ideas without fear of monitoring, risk, or retribution. These cannot be tacked on as afterthoughts, but instead must be considered during the entire design and distribution process. Services should plan to store the minimum amount of data necessary to deliver the service in question, not collect data that may lay the groundwork for a profitable business model down the road. Regular deletion of inessential data should be planned from the outset. Devices need to have the ability to run and function while not transmitting data. All of these requirements are to better ensure privacy, as everytime a device wirelessly transmits or otherwise broadcasts data there is opportunity for interference or theft of that data.</li>\r\n</ul>\r\n<p>We, as individuals, collectives, cultures, and societies, are making this call in the rapidly changing face of technology and its deepening integration into our lives. Technology must support us as we forge our own digital destinies as our connectivity to digital networks and one another changes in ways we anticipate and in ways we have yet to imagine. Technology makers and those who use this technology can form the partnerships necessary to build the equitable, hopeful future we dream of.</p>\r\n<p><em>We\'d love to hear what you think! Let us know by emailing thoughts@ this domain.</em></p>\r\n<p><em>The Declaration of Digital Autonomy is (c) Molly de Blanc and Karen M. Sandler, 2020, licensed under Creative Commons Attribution-ShareAlike 4.0 International.</em></p>\r\n',311,0,1,'CC-BY-SA','manifesto, community, free software, open source, politics, philosophy, digital autonomy',0,0,1),
(3398,'2021-08-11','Anacron',949,'Put down that crontab and get started with anacron','<h2>Setup</h2>\r\n\r\n<pre><code>\r\n$ mkdir -p ~/.local/etc/cron.daily ~/.var/spool/anacron\r\n</code></pre>\r\n\r\n\r\n<p>Create a file called <code>anacrontab</code>&#58;</p>\r\n\r\n<pre><code>\r\n$ touch /.local/etc/anacrontab\r\n</code></pre>\r\n\r\n<p>Set it up to trigger scripts in your <code>cron.daily</code> folder&#58;\r\n</p>\r\n\r\n<pre><code>\r\nSHELL=/bin/sh\r\nPATH=/sbin:/bin:/usr/sbin:/usr/bin\r\n1  0  cron.daily   run-parts $HOME/.local/etc/cron.daily/\r\n</code></pre>\r\n\r\n<p>\r\nValidate your anacrontab&#58;\r\n</p>\r\n\r\n<pre><code>\r\n$ anacron -T -t ~/.local/etc/anacrontab -S ~/.var/spool/anacron\r\n</code></pre>\r\n\r\n<p>Start anacron in a file that gets triggered at login, such as <code>~/.profile</code>&#58;\r\n</p>\r\n\r\n<pre><code>\r\nanacron -t $HOME/.local/etc/anacrontab -S $HOME/.var/spool/anacron\r\n</code></pre>\r\n\r\n<h2>Using</h2>\r\n\r\n<p>Now that everything is set up, just put scripts you want to run regularly in <code>cron.daily</code>, and make them executable.\r\n</p>\r\n\r\n<p>You can set up a weekly directory, too. Just set the time interval in your anacrontab to:\r\n</p>\r\n\r\n<pre><code>\r\nSHELL=/bin/sh\r\nPATH=/sbin:/bin:/usr/sbin:/usr/bin\r\n7  0  cron.weekly   run-parts $HOME/.local/etc/cron.weekly/\r\n</code></pre>',78,0,0,'CC-BY-SA','cron, linux, service, automation',0,0,1),
(3411,'2021-08-30','Dominion card game',1673,'Klaatu talks about the Dominion card game','<p>Dominion is a card game. Lots of fun. You should try it.</p>\r\n\r\n<p>You can even play online for free at <a href=\"https://dominion.games/\">dominion.games</a>\r\n</p>',78,95,0,'CC-BY-SA','card, game',0,0,1),
(3409,'2021-08-26','Linux Inlaws S01E37: All about Hacker Public Radio',5738,'An interview with Ken Fallon, Janitor at Hacker Public Radio','<p>\r\n    In this episode of our beloved open source podcast rapidly approaching its\r\n    zenith of popularity (with hopefully not an equally rapid decline afterwards)\r\n    our two elderly heroes pay tribute to Hacker Public Radio in general and\r\n    Ken Fallon in particular. Plus: a never-heard-of-before peek into Martin\'s\r\n    very own private life (we lift the veil and reveal it all - don\'t miss this!)\r\n</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Hacker Public Radio (HPR): <a href=\"https://hackerpublicradio.org\" target=_blank>https://hackerpublicradio.org</a></li>\r\n<li>HPR mailing list: <a href=\"https://hackerpublicradio.org/mailman/listinfo/hpr_hackerpublicradio.org\" target=_blank>https://hackerpublicradio.org/mailman/listinfo/hpr_hackerpublicradio.org</a></li>\r\n<li>Creative Commons Licenses: <a href=\"https://creativecommons.org\" target=_blank>https://creativecommons.org</a></li>\r\n<li>Static site generators: <a href=\"https://dev.to/oyetoket/which-is-the-best-static-site-generator-and-why-42e2\" target=_blank>https://dev.to/oyetoket/which-is-the-best-static-site-generator-and-why-42e2</a></li>\r\n<li>Richard Stallman issue: <a href=\"https://arstechnica.com/tech-policy/2019/09/richard-stallman-leaves-mit-after-controversial-remarks-on-rape\" target=_blank>https://arstechnica.com/tech-policy/2019/09/richard-stallman-leaves-mit-after-controversial-remarks-on-rape</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','HPR, cleaning, janitoring, having a good time, Richard M. Stallman, stats',0,0,1),
(3417,'2021-09-07','Ceph cluster hardware',729,'Looking into the hardware behind my ceph cluster ','<p>In this video I talk about 4 different computers that could be used in a ceph cluster and what I use and what could be good solutions. If you want to have a visual aid I\'ve created a youtube video talking about the same thing.</p>\r\n<ul>\r\n<li><a href=\"https://youtu.be/B6XXOVcLhzA\" class=\"uri\">https://youtu.be/B6XXOVcLhzA</a></li>\r\n</ul>\r\n',382,0,0,'CC-BY-SA','ceph, cluster, hardware',0,0,1),
(3437,'2021-10-05','The HTML document format',402,'Talking about my favorite document format.','<p>Klaatu asked us what document format we like and why, so this is a response to his podcast. In this podcast I talk about HTML and the importance of good document structure.</p>',382,0,0,'CC-BY-SA','html, document, css, javascript',0,0,1),
(3408,'2021-08-25','Composting',336,'Inspired by episode 3157, Rho`n describes his experience of learning to compost','<h2 id=\"introduction\">Introduction</h2>\r\n<p>Welcome to another episode of Hacker Public Radio. This episode is inspired by HPR episode 3157 entitled Compost by Klaatu. During the early 2000\'s, I lived in a single family home which had a number of oak trees around it. Between the trees, other foliage, and grass, there was a large amount of yard waste. While my city (Baltimore, MD in the US) will pick up your yard waste if you put it in bags by the curb [1], I would use the oak leaves as mulch, and did have a mulch pile of leaves and other yard waste. At that time, I thought about composting food waste, but there is a big issue with rats in Baltimore, and I didn\'t look into ways to compost. I just knew I couldn\'t randomly mix it into my mulch pile.</p>\r\n<p>I am currently living in a different house, without any oak trees, and not as much yard waste (particularly since we hire someone to mow the grass every couple weeks). After listening to the Compost episode, I was inspired to look into the best way to do it given my current living situation. The first thing I did was to look and see if there are any laws against composting in Baltimore City. The rat problem is big enough that the City purchased and distributed a large green plastic trash bin to every physical mailing address in the city. This is the bin you are required to use when putting out your trash. Given the situation, I wasn\'t sure it would be legal to do composting in your back yard. Much to my surprise, it is not only legal, but the city website has a web page on how to compost [2] and just recently started a pilot program for food scrap drop off with seven locations around the city [3].</p>\r\n<h2 id=\"kitchen-compost-bin\">Kitchen Compost Bin</h2>\r\n<p>After determining I wasn\'t going to be a scofflaw, I went to the Internet to see what kind of bins are available for purchase. While Klaatu gives great suggestions for low cost composting bins, I wanted something that would look nice sitting out on a shelf for the small inside bin. I found the Utopia Kitchen Compost Bin [4]. The bin is made of stainless steel and has a volume of 1.3 gallons (4.9 liters). The lid is rounded and has a series of holes around the top. The inside of the lid holds a circular shaped charcoal filter. The combination of holes and charcoal filter capture any odors generated by the food scraps. It works amazingly well and even with onion scraps you need to stick your nose to the holes and inhale deep to smell anything when the lid is closed. It holds three to seven days worth of food scraps, most of which end up being coffee grinds. We have had this bin for 10 months, and the charcoal filter is still effective. There are replacement filters available for this bin, but you could also cut other charcoal filters to fit inside the lid.</p>\r\n<h2 id=\"outside-compost-bin\">Outside Compost Bin</h2>\r\n<p>Given the potential rat and other small critter issues, I wanted the main, outside composter to be fully enclosed, and preferably not sitting directly on the ground. A quick search brings up a number of options, both composters that sit on the ground and ones that are tumbler style, which hang on a frame. I went with a tumbler style compost bin. This provided the desired feature of not being on the ground, and has the added advantage of making it easy to turn the compost every second or third day by just rotating the bin slowly for three or four full turns. I purchased the FCMP Outdoor IM4000 Tumbling Composter [5]. The composter is octagonal shaped column with two chambers inside it. This allows you to fill one chamber while the other side is finishing the composting process. There are also aeration holes for each chamber which can be open to different levels to moderate the amount of moisture. The combined volume of the two chambers is approximately 37 gallons (140 liters).</p>\r\n<h2 id=\"my-composting-experience\">My Composting Experience</h2>\r\n<p>So far I have been very happy with this combination. I just emptied a chamber for the third time. I do have a bit of an issue with the compost being overly damp. I have mixed some drier yard waste in from time to time and that does help, but have had times when parts of it get a little slimy. I have also run into issues with flies and other bugs living in the chamber for a while, but generally I don\'t see them outside of the composter, just when I open the door to add more material. Not ideal, but not so bad that I did anything about it. I have also found certain things do take extra time to compost, and usually need some manual help to break down. Pits of mangoes and avocados in particular along with corn cobs take a long time to break down. They do start to compost, and are easy to crumble in your hands, but keep their basic shape for a long while. Egg shells don\'t really break down, as Klaatu mentioned, but they do become very brittle and I crumble them up manually along with the pits and corn cobs. Another issue I have found with damper compost, particularly in cooler months, it doesn\'t heat up enough to decompose the seeds of some plants. This ended up being a pleasant surprise this summer after mixing in the first batch of compost in our little herb garden during the spring. We now have a combination of plumb and medium sized tomato plants and some kind of squash plant growing in it. If you don\'t want random plants growing in your yard or flower beds, do be careful when composting plants with seeds [6].</p>\r\n<h2 id=\"conclusion\">Conclusion</h2>\r\n<p>While it takes a little extra effort, composting does reduce the amount of garbage you are sending to the dump, and does reduce the smell of your kitchen trash bin. It also gives a rewarding feeling as you watch the material break down into a rich dirt, and then mix it into your garden or yard. I recommend giving it a try, and posting your experience as another episode of Hacker Public Radio.</p>\r\n<h2 id=\"references\">References</h2>\r\n<ol>\r\n<li><a href=\"https://publicworks.baltimorecity.gov/pw-recycling/yard\">Baltimore City Department of Public Works-Yard Waste</a></li>\r\n<li><a href=\"https://publicworks.baltimorecity.gov/pw-bureaus/solid-waste/services\">Baltimore City Department of Public Works-Source Reduction</a></li>\r\n<li><a href=\"https://publicworks.baltimorecity.gov/foodscrapdrop-off\">Baltimore City Department of Public Works-Food Scrap Drop-Off Pilot Program</a></li>\r\n<li><a href=\"https://www.thespruceeats.com/utopia-kitchen-stainless-steel-compost-bin-review-4768116\">Utopia Kitchen Compost Bin</a></li>\r\n<li><a href=\"https://fcmponline.com/products/im4000-dual-chamber-tumbling-composter\">FCMP Outdoor IM4000 Tumbling Composter</a></li>\r\n<li><a href=\"https://www.gardeningknowhow.com/composting/ingredients/composting-tomato-plants.htm\">Composting Tomato Plants: When To Compost Tomatoes</a></li>\r\n</ol>\r\n',293,0,0,'CC-BY-SA','food,rubbish,landfill,gardening,compost,composting',0,0,1),
(3414,'2021-09-02','Critical Thinking may make You Critical of the Covid Crisis',645,'Some Science YOU can observe about covid fallacies, and some preventative medicine.','<hr />\r\n<h3>Counter Point</h3>\r\n<p>Counter points to this show are available:<br />\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3442\">hpr3442 :: What is this thing called science</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3445\">hpr3445 :: True critical thinking seems to be the key</a></li>\r\n</ol>\r\n</p>\r\n<hr />\r\n<p>The homeless weren\'t affected as much as other segments of the population. This Radiolab episode suggests that healthy vitamin D3 levels from being out in the sun often may be the reason.</p>\r\n<p><a href=\"https://www.wnycstudios.org/podcasts/radiolab/articles/invisible-allies\" class=\"uri\">https://www.wnycstudios.org/podcasts/radiolab/articles/invisible-allies</a></p>\r\n<p>A hospital in Spain did a double blind study, solid science. In this study, before any vaccines were available for covid, vitamin D3 made the difference between a 7.6% death rate due to covid, and a 0% death rate with vitamin D3. This YouTube video gets very technical, but tells the story.</p>\r\n<p><a href=\"https://www.youtube.com/watch?v=V8Ks9fUh2k8\" class=\"uri\">https://www.youtube.com/watch?v=V8Ks9fUh2k8</a></p>\r\n<p>Back in the 60s, body temperature\'s effect on fighting viruses was known, that knowledge was lost for a time because of scientists who spoke out, not knowing the whole story, but in 2003, in the aftermath of the previous covid outbreak, a doctor from China documented the need for body heat to fight off covid. Even so, medical professionals in New York set up a covid triage in Central Park during a season when the daytime temperature was in the 50s, and night time temperature was much colder. Just having a PhD behind your name doesn\'t make you right.</p>\r\n<p><a href=\"https://www.bmj.com/rapid-response/2011/10/29/coronavirus-may-be-killed-higher-body-temperature\" class=\"uri\">https://www.bmj.com/rapid-response/2011/10/29/coronavirus-may-be-killed-higher-body-temperature</a></p>\r\n',395,0,1,'CC-BY-SA','covid, vitamin D3, masks, viruses, lawyers',0,0,1),
(3404,'2021-08-19','Suse 15.3 Leap',652,'A short review of Suse 15.3','<p>Short review of Suse 15.3</p>\r\n',129,0,0,'CC-BY-SA','linux, suse, leap, vnc',0,0,1),
(3412,'2021-08-31','Reading a license: Creative Commons Attribution ShareAlike 3.0 Unported',2098,'We are using this license but we didn\'t publish it on HPR ... until now!','<p><em>This show and its notes are licensed under the Creative Commons Attribution 3.0 Unported license: <a href=\"https://creativecommons.org/licenses/by/3.0/\">https://creativecommons.org/licenses/by/3.0/</a></em></p>\r\n<p>The original work is by Creative Commons and has been slightly modified during reading. The text\r\nreproductions below have been modified for formatting, but not intentionally for content.\r\nMisspellings are from the original.</p>\r\n<ul>\r\n<li>The show <a href=\"https://hackerpublicradio.org/eps.php?id=3402\">https://hackerpublicradio.org/eps.php?id=3402</a> is licensed under the Creative Commons Attribution ShareAlike 4.0 International license.</li>\r\n<li>CC-by-SA 3.0 and other 3.0 licenses were released on 2007-02-23: <a href=\"https://creativecommons.org/2007/02/23/version-30-launched/\">https://creativecommons.org/2007/02/23/version-30-launched/</a></li>\r\n<li>The licenses were published on a site that was at the time CC-by 3.0: <a href=\"https://web.archive.org/web/20070225072754/https://creativecommons.org/\">https://web.archive.org/web/20070225072754/https://creativecommons.org/</a></li>\r\n</ul>\r\n<hr>\r\n<h1 id=\"creative-commons-license-deed\">Creative Commons License Deed</h1>\r\n<p>Original: <a href=\"https://creativecommons.org/licenses/by-sa/3.0/\">https://creativecommons.org/licenses/by-sa/3.0/</a></p>\r\n<h2 id=\"attribution-sharealike-3-0-unported-cc-by-sa-3-0-\">Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)</h2>\r\n<p>This is a human-readable summary of (and not a substitute for) the <a href=\"#creative-commons-legal-code\">license</a>.</p>\r\n<h3 id=\"disclaimer\">Disclaimer</h3>\r\n<p>This deed highlights only some of the key features and terms of the actual license. It is not a\r\nlicense and has no legal value. You should carefully review all of the terms and conditions of the actual\r\nlicense before using the licensed material.</p>\r\n<p>Creative Commons is not a law firm and does not provide legal services. Distributing, displaying,\r\nor linking to this deed or the license that it summarizes does not create a lawyer-client or any other\r\nrelationship.</p>\r\n<h3 id=\"you-are-free-to-\">You are free to:</h3>\r\n<ul>\r\n<li><strong>Share</strong> - copy and redistribute the material in any medium or format</li>\r\n<li><strong>Adapt</strong> - remix, transform, and build upon the material for any purpose, even commercially.\r\nThe licensor cannot revoke these freedoms as long as you follow the license terms.</li>\r\n</ul>\r\n<h3 id=\"under-the-following-terms-\">Under the following terms:</h3>\r\n<ul>\r\n<li><strong>Attribution</strong> - You must give\r\n<a href=\"https://wiki.creativecommons.org/License_Versions#Detailed_attribution_comparison_chart\">appropriate credit</a>,\r\nprovide a link to the license, and\r\n<a href=\"https://wiki.creativecommons.org/License_Versions#Modifications_and_adaptations_must_be_marked_as_such\">indicate if changes were made</a>.\r\nYou may do so in any reasonable manner, but not in any way that suggests the licensor endorses\r\nyou or your use.</li>\r\n<li><strong>ShareAlike</strong> - If you remix, transform, or build upon the material, you must\r\ndistribute your contributions under the\r\n<a href=\"https://wiki.creativecommons.org/FAQ#If_I_derive_or_adapt_material_offered_under_a_Creative_Commons_license.2C_which_CC_license.28s.29_can_I_use.3F\">same license</a>\r\nas the original.</li>\r\n<li><strong>No additional restrictions</strong> - You may not apply legal terms or\r\n<a href=\"https://wiki.creativecommons.org/License_Versions#Application_of_effective_technological_measures_by_users_of_CC-licensed_works_prohibited\">technological measures</a>\r\nthat legally restrict others from doing anything the license permits.</li>\r\n</ul>\r\n<h3 id=\"notices-\">Notices:</h3>\r\n<p>You do not have to comply with the license for elements of the material in the public domain or\r\nwhere your use is permitted by an applicable\r\n<a href=\"https://wiki.creativecommons.org/Frequently_Asked_Questions#Do_Creative_Commons_licenses_affect_exceptions_and_limitations_to_copyright.2C_such_as_fair_dealing_and_fair_use.3F\">exception or limitation</a>.</p>\r\n<p>No warranties are given. The license may not give you all of the permissions necessary for your\r\nintended use. For example, other rights such as\r\n<a href=\"https://wiki.creativecommons.org/Considerations_for_licensors_and_licensees\">publicity, privacy, or moral rights</a>\r\nmay limit how you use the material.</p>\r\n<hr>\r\n<h1 id=\"creative-commons-legal-code\">Creative Commons Legal Code</h1>\r\n<p>Original: <a href=\"https://creativecommons.org/licenses/by-sa/3.0/legalcode\">https://creativecommons.org/licenses/by-sa/3.0/legalcode</a></p>\r\n<p>For the rest of the text please see: <a href=\"https://hackerpublicradio.org/eps/hpr3412/\">https://hackerpublicradio.org/eps/hpr3412/</a></p>\r\n',311,0,0,'CC-BY','license, creative commons, recital, reading, legal',0,0,1),
(3407,'2021-08-24','Software Freedom Podcast',3407,'A sample episode of the Free Software Foundation Europe Podcast','<p>\r\nThe <a href=\"https://fsfe.org/news/podcast.en.html\">Free Software Foundation Europe have a podcast</a>, and this is a sample episode.\r\n</p>\r\n<ol>\r\n<li><a href=\"https://fsfe.org/news/podcast.en.html\">Web page: https://fsfe.org/news/podcast.en.html</a></li>\r\n<li><a href=\"https://fsfe.org/news/podcast-opus.en.rss\">Opus Feed: feed://fsfe.org/news/podcast-opus.en.rss</a></li>\r\n<li><a href=\"https://fsfe.org/news/podcast.en.rss\">MP3 Feed: feed://fsfe.org/news/podcast.en.rss</a></li>\r\n<li><a href=\"https://freeculturepodcasts.org/\">Free Culture Podcasts: https://freeculturepodcasts.org/</a></li>\r\n</ol>',30,75,0,'CC-BY-SA','FSFE,Podcast,freeculturepodcasts',0,0,1),
(3419,'2021-09-09','Linux Inlaws S01E38: Tiny kernels',3748,'All you ever wanted to hear and more about micro kernels and other operating system war stories','<p> This episode is dedicated to tiny kernels driving operating systems also\r\n    known as micro-kernels.  While discussing the last 100 years of operating\r\n    system design and implementation, our two aging heroes also shed some\r\n    light on operating systems in general and their recent history (like fifty\r\n    years). Unless you\'re a true OS nerd, you find the episode mildly\r\n    refreshing and educational on the layers of software underneath your\r\n    beloved applications controlling the hardware and other shenanigans. If\r\n    you\'re an OS nerd, this episode may have the potential of closing your few\r\n    remaining knowledge gaps (or something like this).  A fun show for\r\n    children of all ages and beyond.  </p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>IBM VM: <a href=\"https://en.wikipedia.org/wiki/Z/VM\" target=_blank>https://en.wikipedia.org/wiki/Z/VM</a></li>\r\n<li>Modern operating systems by Andy S. Tanenbaum: <a href=\"https://csc-knu.github.io/sys-prog/books/Andrew%20S.%20Tanenbaum%20-%20Modern%20Operating%20Systems.pdf\" target=_blank>https://csc-knu.github.io/sys-prog/books/Andrew%20S.%20Tanenbaum%20-%20Modern%20Operating%20Systems.pdf</a></li>\r\n<li>Short write-up on fashion (for the uninitiated): <a href=\"https://en.wikipedia.org/wiki/Fashion\" target=_blank>https://en.wikipedia.org/wiki/Fashion</a></li>\r\n<li>Multics: <a href=\"https://www.multicians.org\" target=_blank>https://www.multicians.org</a></li>\r\n<li>Unix: <a href=\"https://en.wikipedia.org/wiki/History_of_Unix\" target=_blank>https://en.wikipedia.org/wiki/History_of_Unix</a></li>\r\n<li>CCP/M-86: <a href=\"https://en.wikipedia.org/wiki/Multiuser_DOS#Concurrent_CP/M-86\" target=_blank>https://en.wikipedia.org/wiki/Multiuser_DOS#Concurrent_CP/M-86</a></li>\r\n<li>QDOS: <a href=\"https://en.wikipedia.org/wiki/86-DOS\" target=_blank>https://en.wikipedia.org/wiki/86-DOS</a></li>\r\n<li>VMS: <a href=\"https://vmssoftware.com\" target=_blank>https://vmssoftware.com</a></li>\r\n<li>Digital\'s VAX: <a href=\"https://en.wikipedia.org/wiki/VAX\" target=_blank>https://en.wikipedia.org/wiki/VAX</a></li>\r\n<li>Mach kernel: <a href=\"https://en.wikipedia.org/wiki/Mach_(kernel)\" target=_blank>https://en.wikipedia.org/wiki/Mach_(kernel)</a></li>\r\n<li>Android: <a href=\"https://en.wikipedia.org/wiki/Android_(operating_system)\" target=_blank>https://en.wikipedia.org/wiki/Android_(operating_system)</a></li>\r\n<li>Homebrew: <a href=\"https://brew.sh\" target=_blank>https://brew.sh</a></li>\r\n<li>MacPorts: <a href=\"https://www.macports.org\" target=_blank>https://www.macports.org</a></li>\r\n<li>Usenet war: <a href=\"https://en.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds_debate\" target=_blank>https://en.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds_debate</a></li>\r\n<li>Minix and TPM: <a href=\"https://www.zdnet.com/article/minix-intels-hidden-in-chip-operating-system\" target=_blank>https://www.zdnet.com/article/minix-intels-hidden-in-chip-operating-system</a></li>\r\n<li>Trusted Platform Module: <a href=\"https://link.springer.com/content/pdf/10.1007%2F978-1-4302-6584-9.pdf\" target=_blank>https://link.springer.com/content/pdf/10.1007%2F978-1-4302-6584-9.pdf</a></li>\r\n<li>Secure enclaves: <a href=\"https://software.intel.com/content/www/us/en/develop/topics/software-guard-extensions.html\" target=_blank>https://software.intel.com/content/www/us/en/develop/topics/software-guard-extensions.html</a></li>\r\n<li>The Sleepover: <a href=\"https://www.imdb.com/title/tt10888708/?ref_=fn_al_tt_1\" target=_blank>https://www.imdb.com/title/tt10888708/?ref_=fn_al_tt_1</a></li>\r\n<li>Python Init Podcast episode: <a href=\"https://www.pythonpodcast.com/tony-liu-python-venture-investing-episode-305\" target=_blank>https://www.pythonpodcast.com/tony-liu-python-venture-investing-episode-305</a></li>\r\n<li>Martin\'s trainspotters\' research paper: <a href=\"https://www.diva-portal.org/smash/get/diva2:1340183/FULLTEXT05\" target=_blank>https://www.diva-portal.org/smash/get/diva2:1340183/FULLTEXT05</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Operating systems, kernels, Usenet wars, Linus Torvalds, Andrew Tanenbaum, Minix, trainspotting',0,0,1),
(3421,'2021-09-13','BlacKernel\'s Journey Into Technology: Episode 1',967,'Learning about Assembly and Social Engineering before I could read','<ul>\r\n<li><p>Important Links</p>\r\n<ul>\r\n<li><a href=\"https://gnuworldorder.info/audiophile/gnuWorldOrder_379.ogg\">GNU World Order Episode 379</a></li>\r\n<li><a href=\"https://eater.net/\">Ben Eater\'s Website</a></li>\r\n</ul></li>\r\n<li><p>Wikipedia Pages</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Transistor\">Transistor Wikipedia article</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Logic_gate\">Logic Gates Wikipedia article</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Assembly_language\">Assembly Language Wikipedia article</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/KidDesk\">KidDesk Wikipedia article</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/K9_Web_Protection\">K9 Web Protection Wikipedia article</a></li>\r\n</ul></li>\r\n</ul>',396,0,0,'CC-BY-SA','technology, childhood, stories',0,0,1),
(3413,'2021-09-01','Bash snippet - using coproc with SQLite',2738,'Sending multiple queries to a running instance of sqlite3','<h2 id=\"introduction\">Introduction</h2>\r\n<p>I am in the process of rewriting some scripts I use to manage <a href=\"https://magnatune.com/\" title=\"Magnatune\">Magnatune</a> albums. I’m a lifetime Magnatune member and have access to the whole music collection. I wrote a script for downloading albums and placing them in my <code>~/Music</code> directory which I talked about in 2013 (show <a href=\"https://hackerpublicradio.org/eps.php?id=1204\">1204</a>). The original scripts are still available on <a href=\"https://gitlab.com/davmo/magnatune-downloader\">GitLab</a> and I know of one other person who made use of them!</p>\r\n<p>Since 2013 I have written a few other support scripts, for example one to manage a queue of albums I want to buy and download, and one which summarises the state of this queue.</p>\r\n<p>It’s this <code>\'show_queue\'</code> script I am currently updating (called <a href=\"https://hackerpublicradio.org/eps/hpr3413/show_queue_orig\"><code>show_queue_orig</code></a>, and available in the resources to this show). The original version of this script took Magnatune album URLs from a file (acting as a queue of stuff I wanted to buy), parsed out a piece of the URL and used it to <code>grep</code> a pre-prepared summary in another file. This file of summaries had been made from a master XML file provided by Magnatune (see <code>update_albums</code> on GitLab).</p>\r\n<p>Magnatune has moved away from this master XML file to a SQLite database in recent years, so I want to perform a database lookup for each URL to list its details.</p>\r\n<p>The first version of the new script wasn’t difficult to write: just extract the search data as before and run a query on the database using this data. I have included this script which I call <a href=\"https://hackerpublicradio.org/eps/hpr3413/show_queue_db_1\"><code>show_queue_db_1</code></a> amongst the resources for this episode, so you can see what I’m talking about – and what I want to improve on. It felt bad to be performing multiple calls on the <code>sqlite3</code> command in a loop, so I looked around for an alternative way.</p>\r\n<p>In April 2019 <a href=\"https://hackerpublicradio.org/correspondents/0311.html\">clacke</a> did a show (number <a href=\"https://hackerpublicradio.org/eps.php?id=2793\">2793</a>) about the Bash <code>coproc</code> command.</p>\r\n<p>This command creates a <em>subshell</em> running a command or group of commands which is connected to the calling (<em>parent</em>) process through two file descriptors (<em>FD</em>s). It’s possible for the calling shell to write to the input descriptor and read from the output one and thereby communicate with whatever is running in the subshell.</p>\r\n<p>I was vaguely aware of <code>coproc</code> at the time of clacke’s show but hadn’t looked into it. I found the show fascinating but didn’t have a use for the feature at the time.</p>\r\n<p>To solve my need to show my Magnatune queue of future purchases, it looked as if a <code>sqlite3</code> instance running in a subshell could be given queries one after the other and return the answers I needed. My journey to a Bash script using <code>coproc</code> then followed.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>Follow this link to <a href=\"https://hackerpublicradio.org/eps/hpr3413/full_shownotes.html\">read the detailed notes</a> associated with this episode.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Bash Reference Manual:\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Coprocesses\">3.2.6 Coprocesses</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Duplicating-File-Descriptors\">3.6.8 Duplicating File Descriptors</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Stack Exchange:\r\n<ul>\r\n<li><a href=\"https://unix.stackexchange.com/questions/86270/how-do-you-use-the-command-coproc-in-various-shells\">How do you use the command coproc in various shells?</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Wikipedia:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Expect\">Wikipedia page on <code>expect</code></a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Other links:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1204\">hpr1204 :: My Magnatune Downloader</a></li>\r\n<li><a href=\"https://gitlab.com/davmo/magnatune-downloader\">GitLab repository: original magnatune-downloader</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2793\">hpr2793 :: bash coproc: the future (2009) is here</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Resources:\r\n<ul>\r\n<li>Example files:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3413/coproc_test.sh\">coproc_test.sh</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3413/coproc_test.awk\">coproc_test.awk</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3413/show_queue_orig\">show_queue_orig</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3413/show_queue_db_1\">show_queue_db_1</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3413/show_queue_db_2\">show_queue_db_2</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3413/show_queue.pl.zip\">show_queue.pl.zip</a></li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n',225,42,1,'CC-BY-SA','Bash,coproc,subshell,coprocess,pipe,file descriptor',0,0,1),
(3431,'2021-09-27','Living in the Terminal',2763,'BlacKernel shows you some programs you\'ll need for living life without X org','<h1 id=\"talking-points\">Talking Points</h1>\r\n<h2 id=\"rational\">Rational</h2>\r\n<ul>\r\n<li>Sometimes, X.org just doesn\'t want to work</li>\r\n<li>Esspecially if you are a dumb n00b running Arch</li>\r\n<li>The terminal will always be there for you.</li>\r\n</ul>\r\n<h2 id=\"applications\">Applications:</h2>\r\n<h3 id=\"my-bashrc\">My .bashrc:</h3>\r\n<ul>\r\n<li>Environment Variables:</li>\r\n</ul>\r\n<pre class=\"bash\"><code>export EDITOR=nvim\r\nexport PAGER=most\r\nexport BROWSER=lynx\r\n\r\nexport XDG_DATA_HOME=&quot;$HOME/.local/share&quot;\r\nexport XDG_CONFIG_HOME=&quot;$HOME/.config&quot;\r\n</code></pre>\r\n<p>PS1: <font color=blue>user</font>@<font color=green>hostname</font>:~ (git_branch) $</p>\r\n<pre class=\"bash\"><code>if [[ $EUID == 0 ]]; then\r\n    export PS1=&quot;\\[e[1;31m\\]\\u\\[\\e[m\\]@\\[\\e[0;32m\\]\\h\\[\\e[m\\]:\\w\\$(__git_ps1) # &quot;\r\nelse\r\n    export PS1=&quot;\\[e[1;34m\\]\\u\\[\\e[m\\]@\\[\\e[0;32m\\]\\h\\[\\e[m\\]:\\w\\$(__git_ps1) $ &quot;\r\nfi\r\n</code></pre>\r\n<ul>\r\n<li>Aliases:\r\n<ul>\r\n<li><code>alias vim=nvim</code></li>\r\n<li><code>alias play=mpv</code></li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"productivity-window-manager-tmux\">Productivity (\"Window Manager\"): <a href=\"#show-notes\">tmux</a></h2>\r\n<ul>\r\n<li>Provides an easy way of splitting a tty into various panes</li>\r\n<li>Get multiple workspaces for free with CTL+ALT+F{1,2,3,4,5,6,7}</li>\r\n<li>All of the tiling window manager, none of the X-it</li>\r\n<li>Can set up <code>if [ -t 0 ] &amp;&amp; [[ -z $TMUX ]] &amp;&amp; [[ $- = *i* ]]; then exec tmux; fi</code> in .bashrc in order to have tmux start/stop with your terminal sessiion.</li>\r\n</ul>\r\n<h2 id=\"music-cmus\">Music: <a href=\"#show-notes\">cmus</a></h2>\r\n<ul>\r\n<li>Easy library and playlist management</li>\r\n<li>Dead simple to use (with cmus-tutorial)\r\n<ul>\r\n<li><code>y</code> to yank songs onto a playlist</li>\r\n<li><code>SPA</code> to select a playlist</li>\r\n<li><code>RET</code> to play a song/playlist</li>\r\n<li><code>TAB</code> to switch between panes</li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"pictures-fim\">Pictures: <a href=\"#show-notes\">fim</a></h2>\r\n<ul>\r\n<li>Requires user be in the <code>video</code> group for permission to use the Linux framebuffer</li>\r\n</ul>\r\n<h2 id=\"radiovideosingle-audio-files-mpv\">Radio/Video/single audio files: <a href=\"#show-notes\">mpv</a></h2>\r\n<ul>\r\n<li>Can display video in terminal (badly with libcaca)</li>\r\n<li>Can <em>actually</em> display video in linux framebuffer (with drm)</li>\r\n<li>Can handle all of your somafm files/web-video links</li>\r\n<li>Requires <a href=\"#show-notes\">youtube-dl</a> for video</li>\r\n</ul>\r\n<h2 id=\"podcastsrss-newsboatpodboat\">Podcasts/RSS: <a href=\"#show-notes\">newsboat/podboat</a></h2>\r\n<ul>\r\n<li>Orginizes all of your podcasts and RSS feeds into an easy-to-use ncurses interface</li>\r\n<li>Can be set up with <code>player \"mpv --save-position-on-quit\"</code> to save positions on podcasts</li>\r\n<li><em>Very</em> convinent for articles, less so for podcasts</li>\r\n<li>Really needs better integration with something like cmus</li>\r\n</ul>\r\n<h4 id=\"runner-up-podfox\">Runner Up: <a href=\"#show-notes\">podfox</a></h4>\r\n<ul>\r\n<li>Can be configured with JSON</li>\r\n<li>Has better directory structure than podboat, imo</li>\r\n<li>Tree based structure vs shove everything in ~ by default</li>\r\n</ul>\r\n<h2 id=\"text-editingword-processing-neovimgitx-flavored-markdownpandoc\">Text Editing/Word Processing: <a href=\"#show-notes\">neovim/GitX Flavored Markdown/pandoc</a></h2>\r\n<ul>\r\n<li>Clean modal editing</li>\r\n<li>Can export to whatever with pandoc</li>\r\n<li>Probably not as good as OrgMode if emacs wasn\'t the HFS+ of text editors</li>\r\n</ul>\r\n<h2 id=\"audio-recordingpost-processing-ffmpeg\">Audio Recording/Post-Processing: <a href=\"#show-notes\">ffmpeg</a></h2>\r\n<ul>\r\n<li>One alias and three scripts in my .bashrc\r\n<ul>\r\n<li>record: <code>alias record=\"ffmpeg -f alsa -channels 1 -i hw:1\"</code></li>\r\n<li>atrim, top-tail, and anorm: Allows me to quickly spin up a recording and run post processing</li>\r\n</ul></li>\r\n</ul>\r\n<pre class=\"bash\"><code>function atrim() {\r\n    if [ $1 ]; then\r\n        local in=&quot;$1&quot;\r\n    else\r\n        local in=&quot;-&quot;\r\n    fi\r\n\r\n    if [ $2 ]; then\r\n        local out=&quot;$2&quot;\r\n    else\r\n        local out=&quot;-f nut -&quot;\r\n    fi\r\n\r\n    if [[ $# &gt; 2 ]]; then\r\n        echo &quot;atrim: requires 2 or fewer arguments&quot;\r\n        return 1\r\n    fi\r\n\r\n    if [ $2 ]; then echo &quot;atrim: silencing $in and saving to $out...&quot;; fi\r\n    ffmpeg -i $in -af silenceremove=start_periods=1:stop_periods=-1:start_threshold=-50dB:stop_threshold=-50dB:stop_duration=0.75 $out \\\r\n        2&gt;/dev/null \\\r\n        #1&gt;/dev/null\r\n    if [ $2 ]; then echo &quot;atrim: done&quot;; fi\r\n}\r\n</code></pre>\r\n<pre class=\"bash\"><code>function top-tail() {\r\n    local top=&quot;$HOME/project/hpr-notes/template/intro-music-slick0-cc0.flac&quot;\r\n    local tail=&quot;$HOME/project/hpr-notes/template/outro-mixed-slick0-manon_fallon-cc0.flac&quot;\r\n\r\n    if [ $1 ]; then\r\n        local in=&quot;$1&quot;\r\n    else\r\n        local in=&quot;-&quot;\r\n    fi\r\n\r\n    if [ $2 ]; then\r\n        local out=&quot;$2&quot;\r\n    else\r\n        local out=&quot;-f nut -&quot;\r\n    fi\r\n\r\n    if [[ $# &gt; 2 ]]; then\r\n        echo &quot;hpr-top-tail: requres 2 or fewer arguments&quot;\r\n        return 1\r\n    fi\r\n\r\n    if [ $2 ]; then echo &quot;hpr-top-tail: Topping $in with $top and tailing with $tail...&quot;; fi\r\n    ffmpeg -i &quot;$top&quot; -i $in -i &quot;$tail&quot; -vn -filter_complex &quot;\r\n    [0][1]acrossfade=d=1:c1=tri:c2=tri[a01];\r\n    [a01][2]acrossfade=d=1:c1=tri:c2=tri&quot; \\\r\n    $out \\\r\n        2&gt; /dev/null \\\r\n        #1&gt; /dev/null\r\n    if [ $2 ]; then echo &quot;hpr-top-tail: done&quot;; fi\r\n}\r\n</code></pre>\r\n<pre class=\"bash\"><code>function anorm() {\r\n    if [ $1 ]; then\r\n        local in=&quot;$1&quot;\r\n    else\r\n        local in=&quot;-&quot;\r\n    fi\r\n\r\n    if [ $2 ]; then\r\n        local out=&quot;$2&quot;\r\n    else\r\n        local out=&quot;-f nut -&quot;\r\n    fi\r\n\r\n    if [[ $# &gt; 2 ]]; then\r\n        echo &quot;anorm: requires 2 or fewer arguments&quot;\r\n        return 1\r\n    fi\r\n\r\n    if [ $2 ]; then echo &quot;anorm: normalizing audio $in and saving to $out...&quot;; fi\r\n    ffmpeg -i $in $(ffmpeg-lh $in) $out \\\r\n        #2&gt; /dev/null \\\r\n        1&gt; /dev/null\r\n    if [ $2 ]; then echo &quot;anorm: done&quot;; fi\r\n\r\n}\r\n</code></pre>\r\n<h2 id=\"web-browsing-lynx\">Web Browsing: <a href=\"#show-notes\">lynx</a></h2>\r\n<ul>\r\n<li>Fast and easy text based web browsing</li>\r\n<li>Can leverage Web 4.0 technologies like Gopher!!</li>\r\n<li>Some sites break pretty bad...</li>\r\n</ul>\r\n<h2 id=\"email-mutt\">Email: <a href=\"#show-notes\">mutt*</a></h2>\r\n<ul>\r\n<li><p>I didn\'t really use email very much when I was living on the terminal and now, since I use protonmail, I don\'t really have an easy way not to use the webmail.</p></li>\r\n<li><p>Trying to find a fix to this. Let me know your thoughts!</p></li>\r\n<li><p>This is the mail client I\'ve heard the most good things about that isn\'t built into a text editor I can\'t use</p></li>\r\n</ul>\r\n<hr />\r\n<h1 id=\"show-notes\">Show Notes</h1>\r\n<h3 id=\"important-links\">Important Links:</h3>\r\n<ul>\r\n<li><a href=\"https://github.com/tmux/tmux\">tmux</a></li>\r\n<li><a href=\"https://cmus.github.io\">cmus</a></li>\r\n<li><a href=\"https://fatchancelester.bandcamp.com/album/napalm-lounge\">Napalm Lounge by Fat Chance Lester</a></li>\r\n<li><a href=\"https://www.nongnu.org/fbi-improved\">fim</a></li>\r\n<li><a href=\"https://mpv.io\">mpv</a></li>\r\n<li><a href=\"https://www.youtube-dl.org\">youtube-dl</a></li>\r\n<li><a href=\"https://www.newsboat.org\">newsboat/podboat</a></li>\r\n<li><a href=\"https://neovim.io\">neovim</a></li>\r\n<li><a href=\"https://commonmark.org\">CommonMark</a></li>\r\n<li><a href=\"https://pandoc.org\">pandoc</a></li>\r\n<li><a href=\"https://ffmpeg.org\">ffmpeg</a></li>\r\n<li><a href=\"https://lynx.browser.org\">lynx</a></li>\r\n<li><a href=\"https://mutt.org\">mutt</a></li>\r\n</ul>\r\n<h3 id=\"resources\">Resources:</h3>\r\n<ul>\r\n<li><a href=\"https://gitlab.com/BlacKernel/hpr/-/raw/main/hpr3431/atrim.sh\">atrim.sh</a></li>\r\n<li><a href=\"https://gitlab.com/BlacKernel/hpr/-/raw/main/hpr3431/top-tail.sh\">top-tail.sh</a></li>\r\n<li><a href=\"https://gitlab.com/BlacKernel/hpr/-/raw/main/hpr3431/anorm.sh\">anorm.sh</a></li>\r\n</ul>\r\n<hr />\r\n<h5 id=\"contact-me\">Contact Me</h5>\r\n<ul>\r\n<li><strong>Email</strong>: <a href=\"mailto:izzyleibowitz@pm.me\">izzy leibowitz at pm dot me</a></li>\r\n<li><strong>Mastodon</strong>: <a href=\"https://nixnet.social/BlacKernel\">at blackernel at nixnet dot social</a></li>\r\n</ul>\r\n',396,11,1,'CC-BY-SA','cli, terminal, nox, linux, technology, tty',0,0,1),
(3426,'2021-09-20','Rust 101: Episode 0 - What in Tarnishing?',1348,'BlacKernel teaches you what rust is and how it is different from Python or C.','<h1 id=\"Talking-Points\">Talking Points</h1>\r\n<ul>\r\n<li>What is Rust?\r\n<ul>\r\n<li>\" Garbage Collection \" - Resource Acquisition Is Initialization (RAII)</li>\r\n<li>Strict Typing with Type Inference</li>\r\n<li>Reference pointers</li>\r\n<li>Immutable by default</li>\r\n<li>Unsafe Mode</li>\r\n</ul></li>\r\n<li>Why use Rust over Python?\r\n<ul>\r\n<li>Speed</li>\r\n<li>Compiled\r\n<ol>\r\n<li>Help from compiler</li>\r\n<li>Smaller binary size</li>\r\n<li>Useful in high throughput/embedded applications</li>\r\n</ol></li>\r\n<li>Logically consistent</li>\r\n</ul></li>\r\n<li>Why use Rust over C?\r\n<ul>\r\n<li>Safe by default</li>\r\n<li>Easier to read</li>\r\n<li>Forces you to write good code</li>\r\n<li>Arrays without stupidity++ and built in vectors</li>\r\n<li>Option&lt;T&gt; and Result&lt;T&gt; or a match {} made in heaven</li>\r\n</ul></li>\r\n</ul>\r\n<hr />\r\n<h1 id=\"Show-Notes\">Show Notes</h1>\r\n<h2 id=\"Strict-Typing\">Strict Typing</h2>\r\n<pre><code>fn main() {\r\n\r\n    // Type declared with var: &lt;T&gt; syntax\r\n    let penguin_one: &amp;str = &quot;gentoo&quot;;\r\n    \r\n    // Type &amp;str is inherited from &quot;gentoo&quot;\r\n    let penguin_two = &quot;gentoo&quot;;\r\n    \r\n    // Will not panic if they are the same\r\n    assert_eq!(penguin_one, penguin_two);\r\n}</code></pre>\r\n<h2 id=\"Reference-Pointers\">Reference Pointers</h2>\r\n<p><span id=\"Wrong-Way:\"></span><strong>Wrong Way:</strong></p>\r\n<pre><code>fn print_u8_vector(vec: Vec&lt;u8&gt;) {\r\n    println!(&quot;{:?}&quot;, vec);\r\n}\r\n\r\nfn main() {\r\n    let penguin_ages: Vec&lt;u8&gt; = vec!(2, 4, 6);\r\n    print_u8_vector(penguin_ages);\r\n    \r\n    // This line will throw an error\r\n    println!(&quot;{}&quot;, penguin_ages[0]);\r\n}</code></pre>\r\n<p><span id=\"Correct-Way:\"></span><strong>Correct Way:</strong></p>\r\n<pre><code>fn print_u8_vector(vec: &amp;Vec&lt;u8&gt;) {\r\n    println!(&quot;{:?}&quot;, vec);\r\n}\r\n\r\nfn main() {\r\n    let penguin_ages: Vec&lt;u8&gt; = vec!(2, 4, 6);\r\n    print_u8_vector(&amp;penguin_ages);\r\n    \r\n    // This line will print &#39;2&#39;\r\n    println!(&quot;{}&quot;, penguin_ages[0]);\r\n}</code></pre>\r\n<h2 id=\"Immutable-By-Default\">Immutable By Default</h2>\r\n<p><span id=\"Wrong-Way:\"></span><strong>Wrong Way:</strong></p>\r\n<pre><code>fn main() {\r\n    let my_num = 2;\r\n    \r\n    // This line will throw an error\r\n    my_num = my_num + 1;\r\n    println!(&quot;{}&quot;, my_num);\r\n}</code></pre>\r\n<p><span id=\"Correct-Way:\"></span><strong>Correct Way:</strong></p>\r\n<pre><code>fn main() {\r\n    let mut my_num = 2;\r\n    my_num = my_num + 1;\r\n    \r\n    // This line will print &#39;3&#39;\r\n    println!(&quot;{}&quot;, my_num);\r\n}</code></pre>\r\n<h2 id=\"Unsafe-Code\">Unsafe Code</h2>\r\n<p><span id=\"Hello-World-Program-in-C-in-Rust:\"></span><strong>Hello World Program in C in Rust:</strong></p>\r\n<pre><code>extern &quot;C&quot; {\r\n    fn printf(input: &amp;str);\r\n}\r\n\r\nfn main() {\r\n    unsafe {\r\n        printf(&quot;Hello, World!&quot;);\r\n    }\r\n}</code></pre>\r\n<ul>\r\n<li><span id=\"Important-Links\"></span><strong>Important Links</strong>:\r\n<ul>\r\n<li><a href=\"https://www.rust-lang.org\">Rust Programming Language Homepage</a></li>\r\n<li><a href=\"https://play.rust-lang.org/\">Rust Playground</a></li>\r\n<li><a href=\"https://invidious.snopyta.org/watch?v=yOyaJXpAYZQ\">Ben Eater: Comparing C to machine language</a> &lt;WARNING: YouTube Hosted&gt;</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li><span id=\"Wikipedia-Pages\"></span><strong>Wikipedia Pages</strong>:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Rust_(programming_language)\">Rust Programming Language Wikipedia article</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Resource_acquisition_is_initialization\">Resource Acquisition Is Initialization (RAII)</a></li>\r\n</ul></li>\r\n</ul>\r\n<hr />\r\n<h4 id=\"Contact-Me\">Contact Me</h4>\r\n<p><span id=\"Email:\"></span><strong>Email:</strong> <a href=\"mailto:izzyleibowitz@pm.me\">izzyleibowitz at pm dot me</a></p>\r\n<p><span id=\"Mastodon:\"></span><strong>Mastodon:</strong> <a href=\"https://nixnet.social/BlacKernel\">at blackernel at nixnet dot social</a></p>',396,25,0,'CC-BY-SA','rust, programming, raii, python, c',0,0,1),
(3418,'2021-09-08','My gEeeky Experiment - Part 2',648,'Claudio talks about how he installed Haiku on an Asus Eee PC 900a received from a friend.','<ul>\r\n<li>Eee PC 900a: <a href=\"https://www.notebookcheck.net/Asus-Eee-PC-900A.11751.0.html\" class=\"uri\">https://www.notebookcheck.net/Asus-Eee-PC-900A.11751.0.html</a></li>\r\n</ul>\r\n<!-- . -->\r\n<ul>\r\n<li>Haiku (Wikipedia): <a href=\"https://en.wikipedia.org/wiki/Haiku_(operating_system)\" class=\"uri\">https://en.wikipedia.org/wiki/Haiku_(operating_system)</a></li>\r\n<li>Haiku website: <a href=\"https://www.haiku-os.org\" class=\"uri\">https://www.haiku-os.org</a></li>\r\n<li>Media Release - Haiku R1 Beta 3: <a href=\"https://www.haiku-os.org/news/2021-07-26_media_release_the_haiku_project_celebrates_the_release_of_beta_3\" class=\"uri\">https://www.haiku-os.org/news/2021-07-26_media_release_the_haiku_project_celebrates_the_release_of_beta_3</a></li>\r\n</ul>\r\n<!-- . -->\r\n<ul>\r\n<li>Be Operating System (BeOS): <a href=\"https://en.wikipedia.org/wiki/BeOS\" class=\"uri\">https://en.wikipedia.org/wiki/BeOS</a></li>\r\n<li>Be, Inc.: <a href=\"https://en.wikipedia.org/wiki/Be_Inc\" class=\"uri\">https://en.wikipedia.org/wiki/Be_Inc</a>.</li>\r\n<li>BeBox: <a href=\"https://en.wikipedia.org/wiki/BeBox\" class=\"uri\">https://en.wikipedia.org/wiki/BeBox</a></li>\r\n</ul>\r\n<!-- . -->\r\n<ul>\r\n<li>Motorola StarMax series of Power Macintosh clones: <a href=\"https://en.wikipedia.org/wiki/Motorola_StarMax\" class=\"uri\">https://en.wikipedia.org/wiki/Motorola_StarMax</a></li>\r\n<li>Video of my StarMax 4000/160: <a href=\"https://www.youtube.com/watch?v=zi5DwqqZfUQ\" class=\"uri\">https://www.youtube.com/watch?v=zi5DwqqZfUQ</a></li>\r\n</ul>\r\n<!-- . -->\r\n<ul>\r\n<li><p>Blog post: <a href=\"https://claudiomiranda.wordpress.com/2020/01/12/my-geeeky-experiment-part-2\" class=\"uri\">https://claudiomiranda.wordpress.com/2020/01/12/my-geeeky-experiment-part-2</a></p></li>\r\n<li><p>HP EliteBook 2170p: <a href=\"https://support.hp.com/ro-en/document/c03406489\" class=\"uri\">https://support.hp.com/ro-en/document/c03406489</a></p></li>\r\n</ul>\r\n',152,0,0,'CC-BY-SA','asus,eeepc,haiku,beos,starmax,bebox,motorola,be',0,0,1),
(3423,'2021-09-15','\"upg.sh\" my \"dump.txt\" to \"note.md\"',2278,'I upgraded my scripts.','<h1 id=\"upgsh-my-dumptxt-to-notemd\">upg.sh my dump.txt to note.md</h1>\r\n<p><strong>SYNOPSIS:</strong> <em>upg.sh</em></p>\r\n<ul>\r\n<li>Upgrade your system and store stdout into a markdown file.</li>\r\n</ul>\r\n<pre><code>#!/bin/bash\r\n# upg.sh\r\n\r\nFILENAME=sys-upgrade$(date +%m-%d-%Y).md\r\nDIRECTORY=&quot;${HOME}/Documents/&quot;\r\n\r\n# step 1: formatting.\r\necho -e &quot;# **System Upgrade:** $(date)\\n&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;**Command:** \\`sudo apt-get update; sudo apt-get upgrade --yes\\`\\n&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;**Command Breakdown:**&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;- \\`sudo\\`, Admin Privilages.&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;- \\`apt-get\\`, Package Manager.&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;- \\`update;\\`, Package Manager&#39;s task; update the system software repositories.&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;- \\`sudo apt-get upgrade\\`, Perform system upgrade with updated repositories.&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;- \\`--yes\\`, Answers yes to the prompt.&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\n# step 2: run commands with formatting.\r\necho -e &quot;\\n**Command std-output:**\\n&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;\\`\\`\\`&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n    echo $(date) \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nsudo apt-get update \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;\\n# System update completed.\\n&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nsudo apt-get upgrade --yes \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;\\n# System upgrade completed.\\n&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;\\`\\`\\`\\n&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\n# step 3: additional details with more formatting.\r\necho -e &quot;**Upgraded Package Details:**\\n&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;\\`\\`\\`&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nPKGLIST=$(sed -n &quot;/The following packages will be upgraded:/,/^.. upgraded/p&quot; ${FILENAME} \\\r\n    | sed &#39;1d;$d&#39; | xargs -n 1 | sed &#39;/:i386$/d&#39;) \\\r\n\r\nPKGCACHE=$(echo -e &quot;${PKGLIST}\\n&quot; \\\r\n    | xargs -n1 -I _ apt-cache search _)\r\necho &quot;${PKGCACHE}&quot; &gt; ${DIRECTORY}delete.txt\r\n\r\necho &quot;${PKGLIST}&quot; \\\r\n    | xargs -n 1 -I _ echo &quot;sed -n &#39;/^_ /p&#39;&quot; &quot;${DIRECTORY}delete.txt&quot; \\\r\n    | bash | tee -a ${DIRECTORY}${FILENAME};\r\n\r\necho -e &quot;\\`\\`\\`&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nrm -v ${DIRECTORY}delete.txt;\r\nPKGLIST=\r\nPKGCACHE=\r\n\r\n# step 4: place EOF (end of file).\r\n    sed -i &#39;/EOF/d&#39; ${DIRECTORY}${FILENAME}\r\necho &quot;EOF&quot; &gt;&gt; ${DIRECTORY}${FILENAME}\r\n#EOF\r\n</code></pre>\r\n<p><strong>Script breakdown:</strong> <em>upg.sh</em></p>\r\n<ul>\r\n<li><p>First, we declare bash as our shell with <code>#!/bin/bash</code>. We could also use <code>#!/bin/sh</code> for a more portable script.</p></li>\r\n<li><p>I like to paste the name of the script we\'re working on into the script itself <code># upg.sh</code>.</p></li>\r\n<li><p>Setup a couple of variables to shorten the syntax.</p></li>\r\n</ul>\r\n<pre><code>FILENAME=sys-upgrade$(date +%m-%d-%Y).md\r\nDIRECTORY=&quot;${HOME}/Documents/&quot;\r\n</code></pre>\r\n<ul>\r\n<li><code># step 1: formatting.</code>\r\n<ul>\r\n<li>Build labels and a short breakdown of the update/upgrade commands used.</li>\r\n</ul></li>\r\n</ul>\r\n<pre><code>echo -e &quot;# **System Upgrade:** $(date)\\n&quot; \\                                                    &lt;-- formatting: label with date.\r\n    | tee -a ${DIRECTORY}${FILENAME}                                                           &lt;-- path/to/file\r\necho -e &quot;**Command:** \\`sudo apt-get update; sudo apt-get upgrade --yes\\`\\n&quot; \\                 &lt;-- formatting: command label.\r\n    | tee -a ${DIRECTORY}${FILENAME}                                                           &lt;-- path/to/file\r\necho -e &quot;**Command Breakdown:**&quot; \\                                                             &lt;-- formatting: label.\r\n    | tee -a ${DIRECTORY}${FILENAME}                                                           &lt;-- path/to/file\r\necho -e &quot;- \\`sudo\\`, Admin Privilages.&quot; \\                                                      &lt;-- formatting: label.\r\n    | tee -a ${DIRECTORY}${FILENAME}                                                           &lt;-- path/to/file\r\necho -e &quot;- \\`apt-get\\`, Package Manager.&quot; \\                                                    &lt;-- formatting: label.\r\n    | tee -a ${DIRECTORY}${FILENAME}                                                           &lt;-- path/to/file\r\necho -e &quot;- \\`update;\\`, Package Manager&#39;s task; update the system software repositories.&quot; \\    &lt;-- formatting: label.\r\n    | tee -a ${DIRECTORY}${FILENAME}                                                           &lt;-- path/to/file\r\necho -e &quot;- \\`sudo apt-get upgrade\\`, Perform system upgrade with updated repositories.&quot; \\      &lt;-- formatting: label.\r\n    | tee -a ${DIRECTORY}${FILENAME}                                                           &lt;-- path/to/file\r\necho -e &quot;- \\`--yes\\`, Answers yes to the prompt.&quot; \\                                            &lt;-- formatting: label.\r\n    | tee -a ${DIRECTORY}${FILENAME}                                                           &lt;-- path/to/file\r\n</code></pre>\r\n<ul>\r\n<li><code># step 2: run commands with formatting.</code>,\r\n<ul>\r\n<li>Setup labels and an area for the stdout to be store with markdown formatting.</li>\r\n<li>We place the time and date into the stdout area then run the commands.</li>\r\n</ul></li>\r\n</ul>\r\n<pre><code>echo -e &quot;\\n**Command std-output:**\\n&quot; \\                                                        &lt;-- formatting: label.\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;\\`\\`\\`&quot; \\                                                                             &lt;-- formatting: markdown.\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n    echo $(date) \\                                                                             &lt;-- command: date.\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nsudo apt-get update \\                                                                          &lt;-- command: update.\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;\\n# System update completed.\\n&quot; \\                                                     &lt;-- formatting: label.\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nsudo apt-get upgrade --yes \\                                                                   &lt;-- command: upgrade with &quot;--yes&quot; option.\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;\\n# System upgrade completed.\\n&quot; \\                                                    &lt;-- formatting: label.\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;\\`\\`\\`\\n&quot; \\                                                                           &lt;-- formatting: markdown.\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n</code></pre>\r\n<ul>\r\n<li><code># step 3: additional details with more formatting.</code>,\r\n<ul>\r\n<li>List the packages that were upgraded with details from system cache.</li>\r\n</ul></li>\r\n</ul>\r\n<pre><code>echo -e &quot;**Upgraded Package Details:**\\n&quot; \\                                                    &lt;-- formatting: label.\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;\\`\\`\\`&quot; \\                                                                             &lt;-- formatting: markdown.\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nPKGLIST=$(sed -n &quot;/The following packages will be upgraded:/,/^.. upgraded/p&quot; ${DIRECTORY}${FILENAME} \\  &lt;--| variable with list of packages within it.\r\n    | sed &#39;1d;$d&#39; | xargs -n 1 | sed &#39;/:i386$/d&#39;) \\                                            &lt;--| sed: filter the first and last lines then remove the :i386 duplicate packages.\r\n\r\nPKGCACHE=$(echo -e &quot;${PKGLIST}\\n&quot; \\                                                            &lt;--| variable with massive apt-cache search results.\r\n    | xargs -n1 -I _ apt-cache search _)                                                       &lt;--| xargs runs the PKGLIST (the _ is the value of PKGLIST) into the apt-cache search.\r\necho &quot;${PKGCACHE}&quot; &gt; ${DIRECTORY}delete.txt                                                    &lt;--| I had to put the PKGCACHE in a file. I couldn&#39;t get sed to filter a variable (yet).\r\n\r\necho &quot;${PKGLIST}&quot; \\                                                                            &lt;--| use that PKGLIST to create a few sed commands to filter the file called &quot;delete.txt&quot;.\r\n    | xargs -n 1 -I _ echo &quot;sed -n &#39;/^_ /p&#39;&quot; &quot;${DIRECTORY}delete.txt&quot; \\                        ^--| xargs is used to create the sed commands.\r\n    | bash | tee -a ${DIRECTORY}${FILENAME};                                                   &lt;--| run the sed commands through bash then store them.\r\n\r\necho -e &quot;\\`\\`\\`&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nrm -v ${DIRECTORY}delete.txt;                                                                  &lt;--| use rm to delete the file called &quot;delete.txt&quot; it has the apt-cache search results in it.\r\nPKGLIST=                                                                                       &lt;--| empty the variable. why? why not!\r\nPKGCACHE=                                                                                      &lt;--| empty the variable. why? why not!\r\n</code></pre>\r\n<ul>\r\n<li><code># step 4: place EOF (end of file).</code>,\r\n<ul>\r\n<li>Add EOF (END OF FILE) to the end of the file. If one is already there, -</li>\r\n<li>it\'s removed then replaced in the correct position.</li>\r\n</ul></li>\r\n</ul>\r\n<pre><code>    sed -i &#39;/EOF/d&#39; ${DIRECTORY}${FILENAME}                                                    &lt;--| search for EOF then remove it. we don&#39;t want multiple EOF if we run the script multiple times in the same day.\r\necho &quot;EOF&quot; &gt;&gt; ${DIRECTORY}${FILENAME}                                                          ^--| adds the EOF (End Of File) at the end of the file.  I read it was a nice thing to do.\r\n#EOF                                                                                           &lt;--| Yep. it&#39;s there.\r\n\r\n</code></pre>\r\n<hr />\r\n<p><strong>SYNOPSIS:</strong> <em>note.sh</em> \"command\" \"filename\"</p>\r\n<ul>\r\n<li>example: note.sh \"ls -lhA\" \"basic-list\"</li>\r\n<li>make markdown notes of your commands.</li>\r\n</ul>\r\n<pre><code>#!/bin/bash\r\n# note.sh &quot;command&quot; &quot;filename&quot; no extentions.\r\n\r\n# variables\r\nFILENAME=$2$(date +%m-%d-%Y).md\r\nDIRECTORY=&quot;${HOME}/Documents/&quot;\r\n\r\n# step 1: create file with formatting.\r\necho -e &quot;# **Command:** \\` $1 \\`\\n&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;**Command Breakdown:**&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho &quot;$1&quot; | tr &quot; &quot; &#39;\\n&#39; \\\r\n    | awk &#39;{ print &quot;- `&quot; $0 &quot;`, info.&quot; }&#39; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\n# step 2: run command with more formatting.\r\necho -e &quot;\\n**Command std-output:**&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;\\`\\`\\`\\n$(date)&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\necho $1 | bash \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\necho -e &quot;\\`\\`\\`&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\necho -ne &quot;\\n${FILENAME} has been updated $(date).&quot;\r\n\r\n# step 3: insert EOF (End Of File).\r\nsed -i &#39;/EOF/d&#39; ${DIRECTORY}${FILENAME}\r\necho EOF &gt;&gt; ${DIRECTORY}${FILENAME}\r\n</code></pre>\r\n<p><strong>Script breakdown:</strong> <em>upg.sh</em></p>\r\n<ul>\r\n<li><p>First, we declare bash as our shell with <code>#!/bin/bash</code>. We could also use <code>#!/bin/sh</code> for a more portable script.</p></li>\r\n<li><p>I like to paste the name of the script we\'re working on into the script itself <code># upg.sh</code>.</p></li>\r\n<li><p>Setup a couple of variables to shorten the syntax.</p></li>\r\n</ul>\r\n<pre><code>FILENAME=$2$(date +%m-%d-%Y).md                                                                &lt;--| the &quot;$2&quot; is the second user input (file name) from the commandline.\r\nDIRECTORY=&quot;${HOME}/Documents/&quot;\r\n</code></pre>\r\n<ul>\r\n<li><code># step 1: create file with formatting.</code>\r\n<ul>\r\n<li>Build labels for Command Name with a short breakdown of the command(s) used.</li>\r\n<li><strong>Note:</strong> the breakdown must be entered manually.</li>\r\n</ul></li>\r\n</ul>\r\n<pre><code>echo -e &quot;# **Command:** \\` $1 \\`\\n&quot; \\                                                          &lt;--| the &quot;$1&quot; is the first user input (the command) from the commandline.\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;**Command Breakdown:**&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho &quot;$1&quot; | tr &quot; &quot; &#39;\\n&#39; \\                                                                      &lt;--| This just breaks the command into parts then adds some markdown formatting for use to add -\r\n    | awk &#39;{ print &quot;- `&quot; $0 &quot;`, info.&quot; }&#39; \\                                                    ^--| details to later. I just added the word info so you know to provide info about the command. -\r\n    | tee -a ${DIRECTORY}${FILENAME}                                                           ^--| the formatting gets a bit crazy if you use something like: awk {&#39; print $1 $2 $3 &#39;} path/to/file;  each space becomes a newline with the markdown formatting.\r\n</code></pre>\r\n<ul>\r\n<li><code># step 2: run command with more formatting.</code>\r\n<ul>\r\n<li>Echo the Command into <em>bash</em> with markdown formatting for stdout.</li>\r\n</ul></li>\r\n</ul>\r\n<pre><code>echo -e &quot;\\n**Command std-output:**&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\necho -e &quot;\\`\\`\\`\\n$(date)&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\necho $1 | bash \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\necho -e &quot;\\`\\`\\`&quot; \\\r\n    | tee -a ${DIRECTORY}${FILENAME}\r\n\r\necho -ne &quot;\\n${FILENAME} has been updated $(date).&quot;\r\n</code></pre>\r\n<ul>\r\n<li><code># step 3: insert EOF (End Of File).</code>\r\n<ul>\r\n<li>Add EOF (END OF FILE) to the end of the file. If one is already there, -</li>\r\n<li>it\'s removed then replaced in the correct position.</li>\r\n</ul></li>\r\n</ul>\r\n<pre><code>sed -i &#39;/EOF/d&#39; ${DIRECTORY}${FILENAME}\r\necho EOF &gt;&gt; ${DIRECTORY}${FILENAME}\r\n</code></pre>\r\n<hr />\r\n<p><strong>Correspondent:</strong> <a href=\"https://hackerpublicradio.org/correspondents/0391.html\">Some Guy On The Internet.</a><br />\r\n<strong>Host ID:</strong> 391<br />\r\n<strong>E-mail:</strong> <a href=\"/tmp/.mount_Joplin1UDfeV/resources/app.asar/Lyunpaw@gmail.com\" title=\"Lyunpaw@gmail.com\">Lyunpaw.nospam@nospam.gmail.com</a></p>\r\n<ul>\r\n<li>use <strong>\"hpr391\"</strong> as the subject line for all emails to avoid the junk filter.</li>\r\n<li><a href=\"https://drive.google.com/file/d/1vaGWVv48IcPNXXBknDer8ZBsUvix6qp4/view?usp=sharing\">show notes markdown file</a> <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\"><img src=\"https://i.creativecommons.org/l/by-sa/4.0/88x31.png\" alt=\"Creative Commons License\" /></a> This work is licensed under a <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</li>\r\n</ul>\r\n',391,0,0,'CC-BY-SA','Bash Scripting, sed, awk, xargs, markdown, notes',0,0,1),
(3427,'2021-09-21','Ranger for the Win!',1096,'In this episode, I go over some typical use cases for the Ranger file manager','<h2 id=\"programs-referenced-in-this-episode\">Programs referenced in this episode</h2>\r\n<ul>\r\n<li>ranger</li>\r\n<li>caca-utils</li>\r\n<li>poppler-utils</li>\r\n<li>atool</li>\r\n<li>highlight</li>\r\n<li>trash-cli</li>\r\n<li>xlsx2csv</li>\r\n<li>docs2txt</li>\r\n<li>catdoc (for doc2txt and xls2csv)</li>\r\n<li>ods2tsv</li>\r\n</ul>\r\n',300,0,0,'CC-BY-SA','ranger,file manager,linux',0,0,1),
(3428,'2021-09-22','Bad disk rescue',1794,'Bad disk rescue - tragedy or happy ending?','<p>Here I tell the tale of a bad disk rescue. Is the rescue bad or just the disk? Well the disk is most certainly bad but please listen and tell me if the rescue was good or bad or could have been done better.</p>\r\n<p>Guest stars in this show include:</p>\r\n<ul>\r\n<li>dd</li>\r\n<li>ddrescue</li>\r\n<li>losetup</li>\r\n<li>mount</li>\r\n<li>badblocks</li>\r\n<li>smartctl</li>\r\n<li>The <a href=\"https://www.system-rescue.org\">System rescue distro</a></li>\r\n</ul>',268,0,0,'CC-BY-SA','linux,disk,windows,virtualbox',0,0,1),
(3422,'2021-09-14','Update about Phones and Devices',1341,'An Update about my New Phone and second one that is coming','<p>Small update about my new RedMi 10s and my new Monty Mint phone.</p>\r\n<ul>\r\n<li><a href=\"https://www.gsmarena.com/xiaomi_redmi_note_10s-10769.php\">https://www.gsmarena.com/xiaomi_redmi_note_10s-10769.php</a></li>\r\n<li><a href=\"https://ogadget.com/x/mony\">https://ogadget.com/x/mony</a></li>\r\n</ul>',129,0,0,'CC-BY-SA','Android, phone, Linux, Pine64, Smart Watch',0,0,1),
(3424,'2021-09-16','Infosec Podcasts Part 6 - Infosec Leadership',721,'Presenting my favorite information security leadership podcasts','<p>Inoffensive in every region of the world.</p>\r\n<p>Thank you to everyone who has listened to my previous episodes. This is the final episode in the Infosec Podcasts series.</p>\r\n<p>I listen to many, MANY podcasts. The vast majority of these are related to information security.</p>\r\n<p>Because there are so many podcasts to list, I have broken them down into 6 different episodes based on topics:</p>\r\n<ul>\r\n<li>Part 1 - News & Current Events - Episode 3324</li>\r\n<li>Part 2 - General Information Security - Episode 3334</li>\r\n<li>Part 3 - Career & Personal Development - Episode 3344</li>\r\n<li>Part 4 - Social Engineering - Episode 3368</li>\r\n<li>Part 5 - Episode 3387\r\n<ul>\r\n<li>Hacks & Attacks</li>\r\n<li>Technical Information & Learning</li>\r\n<li>Infosec Community / Social / History</li>\r\n<li>Part 6 - Infosec Leadership</li>\r\n</ul></li>\r\n</ul>\r\n<p><strong>Preamble</strong></p>\r\n<p>Term: CISO</p>\r\n<ul>\r\n<li>Pronounced SEE-so or SAI-so</li>\r\n<li>Chief Information Security Officer</li>\r\n<li>Sounds like executive leadership position, similar to Chief Executive Officer (CEO), Chief Financial Officer (CFO), etc but this is often not the case</li>\r\n</ul>\r\n<p>Security leadership is changing</p>\r\n<p>Old way:</p>\r\n<ul>\r\n<li>Experienced technologists (Usually old white guys) worked way up ranks</li>\r\n<li>Usually reported through IT (CIO/CTO)</li>\r\n<li>Department of \"No\" - Block everything bad</li>\r\n<li>Slows down business</li>\r\n</ul>\r\n<p>New way:</p>\r\n<ul>\r\n<li>Experienced business professionals with leadership skills and security understanding</li>\r\n<li>Can report through:\r\n<ul>\r\n<li>IT (CIO/CTO)</li>\r\n<li>Legal (For compliance reasons)</li>\r\n<li>Finance (CFO) for governance or compliance reasons</li>\r\n<li>Financial impacts of attacks</li>\r\n<li>Direct costs</li>\r\n<li>Fines</li>\r\n<li>CEO - Seat at the table with other C-level execs</li>\r\n<li>Direct to board</li>\r\n</ul></li>\r\n<li>Empowers the business to succeed in a secure way</li>\r\n<li>Can still slow down the business, but only when needed\r\n<ul>\r\n<li>Brakes on a race car</li>\r\n</ul></li>\r\n</ul>\r\n<p><strong>Infosec Leadership Podcasts</strong></p>\r\n<ul>\r\n<li>CISO Tradecraft - G Mark Hardy (Weekly)\r\n<ul>\r\n<li>Discussion of topics related to becoming a CISO or maturing as a CISO</li>\r\n<li><a href=\"https://www.cisotradecraft.com/\" class=\"uri\">https://www.cisotradecraft.com/</a></li>\r\n</ul></li>\r\n<li>CISO Vendor Relationship Podcast - David Spark & Guests (Weekly)\r\n<ul>\r\n<li>Weekly podcast addressing the challenges experienced by both security professionals and the vendors with whom they interact.</li>\r\n<li><a href=\"https://cisoseries.com/subscribe-podcast/\" class=\"uri\">https://cisoseries.com/subscribe-podcast/</a></li>\r\n</ul></li>\r\n<li>CISO Talks (Weekly)\r\n<ul>\r\n<li>The talk show series with discussions of current trends in the world of information security with CISOs on the front line.</li>\r\n<li><a href=\"https://www.lepide.com/ciso-talks.html\" class=\"uri\">https://www.lepide.com/ciso-talks.html</a></li>\r\n</ul></li>\r\n<li>CISO Talk - James Azar (Weekly)\r\n<ul>\r\n<li>Presents the CISO view on cybersecurity, talent development, technology, leadership and much more.</li>\r\n<li><a href=\"https://cisotalk.podbean.com/\" class=\"uri\">https://cisotalk.podbean.com/</a></li>\r\n</ul></li>\r\n<li>The Cyber Ranch Podcast - Allan Alford & Hacker Valley Studios (Weekly)\r\n<ul>\r\n<li>Interviews with security leaders discussing relevant topics</li>\r\n<li><a href=\"https://hackervalley.com/cyberranch/\" class=\"uri\">https://hackervalley.com/cyberranch/</a></li>\r\n</ul></li>\r\n<li>CISO\'s Secrets - Currently hosted by Grant Asplund and sponsored by Checkpoint\r\n<ul>\r\n<li>Interviews with security leaders across a wide range of industries</li>\r\n<li>Addresses real issues facing security professionals and businesses</li>\r\n<li><a href=\"https://cp.buzzsprout.com/\" class=\"uri\">https://cp.buzzsprout.com/</a></li>\r\n</ul></li>\r\n<li>CISO Stories - Hosted by Todd Fitzgerald and Sam Curry and part of the Security Weekly family of podcasts\r\n<ul>\r\n<li>Based originally on interviews with security leaders who contributed to the book \"CISO COMPASS: Navigating Cybersecurity Leadership Challenges with Insights from Pioneers\"</li>\r\n<li>Episodes are usually only about 20 minutes</li>\r\n<li><a href=\"https://securityweekly.com/category-shows/\">https://securityweekly.com/category-shows/the-ciso-stories-podcast/</a></li>\r\n</ul></li>\r\n<li>The New CISO - Hosted by Exabeam\'s Chief Security Strategist, Steve Moore and Sponsored by Exabeam\r\n<ul>\r\n<li>Interviews with industry leading and visionary security leaders</li>\r\n<li>How do lead security teams and business</li>\r\n<li>Interacting with business leaders</li>\r\n<li><a href=\"https://www.exabeam.com/fr/library-by-type/ciso-podcasts/\" class=\"uri\">https://www.exabeam.com/fr/library-by-type/ciso-podcasts/</a></li>\r\n</ul></li>\r\n</ul>\r\n<p>That wraps up this series. I welcome any feedback you might have in the comments section for this episode on the HPR site.</p>\r\n<p>Thank you very much for listening.</p>\r\n',394,75,0,'CC-BY-SA','infosec, podcasts, security, leadership',0,0,1),
(3429,'2021-09-23','Linux Inlaws S01E39: Ubuntu and the Community',5207,'All about your favourite Debian spin and IBM mainframes','<p>\r\n    In this episode, our two hosts host Rhys Davies, a developer advocate from Canonical. So all\r\n    beans will be spilled on one of the most popular Linux distros out there. Like its past, present\r\n    and future. Never mind how Canonical makes its moolah and where this goes... Plus an interesting\r\n    infomercial on old big iron (IBM, if you\'re listening: the mail address is sponsor@linuxinlaws.eu).\r\n</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Canonical: <a href=\"https://canonical.com\" target=_blank>https://canonical.com</a></li>\r\n<li>Ubuntu: <a href=\"https://ubuntu.com\" target=_blank>https://ubuntu.com</a></li>\r\n<li>Manjaro: <a href=\"https://manjaro.org\" target=_blank>https://manjaro.org</a></li>\r\n<li>WSL: <a href=\"https://wiki.ubuntu.com/WSL\" target=_blank>https://wiki.ubuntu.com/WSL</a></li>\r\n<li>Snapcraft: <a href=\"https://snapcraft.io\" target=_blank>https://snapcraft.io</a></li>\r\n<li>Ubuntu community reboot: <a href=\"https://ubuntu.com/blog/reintroducing-the-community-team\" target=_blank>https://ubuntu.com/blog/reintroducing-the-community-team</a></li>\r\n<li>Chromium as a snap: <a href=\"https://snapcraft.io/blog/chromium-in-ubuntu-deb-to-snap-transition\" target=_blank>https://snapcraft.io/blog/chromium-in-ubuntu-deb-to-snap-transition</a></li>\r\n<li>Ubuntu podcast episode on this issue: <a href=\"https://ubuntupodcast.org/2020/06/04/s13e11-inside-out-clothes\" target=_blank>https://ubuntupodcast.org/2020/06/04/s13e11-inside-out-clothes</a></li>\r\n<li>Canonical\'s transition from upstart to systemd: <a href=\"https://lists.ubuntu.com/archives/ubuntu-devel/2016-July/039465.html\" target=_blank>https://lists.ubuntu.com/archives/ubuntu-devel/2016-July/039465.html</a></li>\r\n<li>LinuxONE and Ubuntu: <a href=\"https://ubuntu.com/blog/tag/linuxone\" target=_blank>https://ubuntu.com/blog/tag/linuxone</a></li>\r\n<li>Rhys\' presentation at the Linux App Summit: <a href=\"https://conf.linuxappsummit.org/event/3/contributions/65\" target=_blank>https://conf.linuxappsummit.org/event/3/contributions/65</a></li>\r\n<li>Critical Role: <a href=\"https://critrole.com\" target=_blank>https://critrole.com</a></li>\r\n<li>Hazy Jane: <a href=\"https://www.brewdog.com/eu_de/hazy-jane-440-eu\" target=_blank>https://www.brewdog.com/eu_de/hazy-jane-440-eu</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Debian, Ubuntu, IBM, mainframes, snaps, Canonical',0,0,1),
(3451,'2021-10-25','Bricklink',837,'Custom 3rd Part Lego Shops','<ul>\r\n<li>beware shipping prices</li>\r\n<li>always use Instant Checkout</li>\r\n<li>be sure to check USA</li>\r\n<li>2-3x the cost of lego.com set</li>\r\n<li>paying 3-5 people via paypal ....</li>\r\n<li>no way to easy share wanted list ...</li>\r\n<li>LOST :( https://rmccurdy.com/.scripts/downloaded/CL4P-TP%20Claptrap%20Borderlands%20Bricklink.xml</li>\r\n<li>7 missing out of 216 on one shipment</li>\r\n</ul>\r\n<!-- Photo: -->\r\n<!-- https://drive.google.com/file/d/16r1dyJZzqbLRfx0iKB2orj0MdNC_8yXl/view?usp=sharing -->\r\n<p><em>Photo</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3451/20210829_212454.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3451/20210829_212454_thumbnail.jpg\" alt=\"Photo\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>',36,0,0,'CC-BY-SA','lego',0,0,1),
(3432,'2021-09-28','Reading a license: Creative Commons Attribution ShareAlike 4.0 International',1956,'We jump into the future of 2013 and see how content licensing has changed','<p>Previous episode: <a href=\"https://hackerpublicradio.org/eps.php?id=3412\">https://hackerpublicradio.org/eps.php?id=3412</a><br><em>hpr3412 :: Reading a license: Creative Commons Attribution ShareAlike 3.0 Unported</em></p>\r\n<p>Timeline</p>\r\n<ul>\r\n<li>2007-02-23 <a href=\"https://creativecommons.org/2007/02/23/version-30-launched/\">https://creativecommons.org/2007/02/23/version-30-launched/</a></li>\r\n<li>2007-09-26 <a href=\"https://www.gnu.org/licenses/gpl-3.0.html\">https://www.gnu.org/licenses/gpl-3.0.html</a></li>\r\n<li>2011-11-03 <a href=\"https://creativecommons.org/2011/11/03/copyright-experts-discuss-cc-license-version-4-0-at-the-global-summit/\">https://creativecommons.org/2011/11/03/copyright-experts-discuss-cc-license-version-4-0-at-the-global-summit/</a><ul>\r\n<li>Internationalization</li>\r\n<li>Interoperability</li>\r\n<li>Long-lasting</li>\r\n<li>Data/PSI (Public Sector Information?)/Science/Education</li>\r\n<li>Supporting Existing Adoption Models and Frameworks</li>\r\n</ul>\r\n</li>\r\n<li>2013-11-25 <a href=\"https://creativecommons.org/2013/11/25/ccs-next-generation-licenses-welcome-version-4-0/\">https://creativecommons.org/2013/11/25/ccs-next-generation-licenses-welcome-version-4-0/</a><ul>\r\n<li>30-day violation grace period<br><a href=\"https://creativecommons.org/faq/#how-can-i-lose-my-rights-under-a-creative-commons-license-if-that-happens-how-do-i-get-them-back\">https://creativecommons.org/faq/#how-can-i-lose-my-rights-under-a-creative-commons-license-if-that-happens-how-do-i-get-them-back</a></li>\r\n</ul>\r\n</li>\r\n<li>2013-12-06 16Z--18Z CC site moves to 4.0 -- last snapshot with 3.0 is <a href=\"https://web.archive.org/web/20131206155520/https://creativecommons.org/\">https://web.archive.org/web/20131206155520/https://creativecommons.org/</a></li>\r\n<li>2014-10-21 CC-by-SA 4.0 and Free Art License 1.3 defined as two-way compatible licenses<br><a href=\"https://creativecommons.org/2014/10/21/big-win-for-an-interoperable-commons-by-sa-and-fal-now-compatible/\">https://creativecommons.org/2014/10/21/big-win-for-an-interoperable-commons-by-sa-and-fal-now-compatible/</a></li>\r\n<li>2015-10-08 GPLv3 defined as a one-way compatible license for CC-by-SA 4.0<br><a href=\"https://creativecommons.org/2015/10/08/cc-by-sa-4-0-now-one-way-compatible-with-gplv3/\">https://creativecommons.org/2015/10/08/cc-by-sa-4-0-now-one-way-compatible-with-gplv3/</a></li>\r\n</ul>\r\n<p>Links to license and deed and links from within the texts</p>\r\n<ul>\r\n<li><a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">https://creativecommons.org/licenses/by-sa/4.0/</a></li>\r\n<li><a href=\"https://creativecommons.org/licenses/by-sa/4.0/legalcode\">https://creativecommons.org/licenses/by-sa/4.0/legalcode</a><ul>\r\n<li><em>The text of the Creative Commons public licenses is dedicated to the public domain under the CC0 Public Domain Dedication.</em></li>\r\n</ul>\r\n</li>\r\n<li><a href=\"https://freedomdefined.org/\">https://freedomdefined.org/</a><br>Definition of <em>Free Cultural Works</em></li>\r\n<li><a href=\"https://wiki.creativecommons.org/License_Versions#Detailed_attribution_comparison_chart\">https://wiki.creativecommons.org/License_Versions#Detailed_attribution_comparison_chart</a><br>How to give credit</li>\r\n<li><a href=\"https://wiki.creativecommons.org/License_Versions#Modifications_and_adaptations_must_be_marked_as_such\">https://wiki.creativecommons.org/License_Versions#Modifications_and_adaptations_must_be_marked_as_such</a><br>How to mark a work as modified</li>\r\n<li><a href=\"https://wiki.creativecommons.org/FAQ#If_I_derive_or_adapt_material_offered_under_a_Creative_Commons_license.2C_which_CC_license.28s.29_can_I_use.3F\">https://wiki.creativecommons.org/FAQ#If_I_derive_or_adapt_material_offered_under_a_Creative_Commons_license.2C_which_CC_license.28s.29_can_I_use.3F</a><br>How and when you can relicense a work</li>\r\n<li><a href=\"https://wiki.creativecommons.org/License_Versions#Application_of_effective_technological_measures_by_users_of_CC-licensed_works_prohibited\">https://wiki.creativecommons.org/License_Versions#Application_of_effective_technological_measures_by_users_of_CC-licensed_works_prohibited</a><br>Definition of <em>effective technological measure</em></li>\r\n<li><a href=\"https://wiki.creativecommons.org/Frequently_Asked_Questions#Do_Creative_Commons_licenses_affect_exceptions_and_limitations_to_copyright.2C_such_as_fair_dealing_and_fair_use.3F\">https://wiki.creativecommons.org/Frequently_Asked_Questions#Do_Creative_Commons_licenses_affect_exceptions_and_limitations_to_copyright.2C_such_as_fair_dealing_and_fair_use.3F</a><br>When do you not need a license</li>\r\n<li><a href=\"https://wiki.creativecommons.org/Considerations_for_licensors_and_licensees\">https://wiki.creativecommons.org/Considerations_for_licensors_and_licensees</a><br>Limitations, scope, community practices and advice</li>\r\n<li><a href=\"https://wiki.creativecommons.org/FAQ\">https://wiki.creativecommons.org/FAQ</a></li>\r\n</ul>\r\n<p>Other links</p>\r\n<ul>\r\n<li>39 jurisdiction ports of by-SA 3.0 <a href=\"https://wiki.creativecommons.org/wiki/CC_Ports_by_Jurisdiction\">https://wiki.creativecommons.org/wiki/CC_Ports_by_Jurisdiction</a></li>\r\n<li>Next episode will be based on <a href=\"https://creativecommons.org/version4/\">https://creativecommons.org/version4/</a></li>\r\n</ul>\r\n<hr>\r\n<h2 id=\"creative-commons-license-deed\">Creative Commons License Deed</h2>\r\n<p>Original: <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">https://creativecommons.org/licenses/by-sa/4.0/</a></p>\r\n<p><em>The below is an Adaptation that has been reformatted for simplicity and focus on the text, removed graphical elements such as the Creative Commons Attribution and ShareAlike icons and has simple links to more info where there was originally a popup with a brief description and then a link.</em></p>\r\n<p><em>This Adaptation is released under CC-by 3.0: <a href=\"https://creativecommons.org/licenses/by/3.0/\">https://creativecommons.org/licenses/by/3.0/</a> </em></p>\r\n<h2 id=\"attribution-sharealike-4-0-international-cc-by-sa-4-0-\">Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</h2>\r\n<p>This is a human-readable summary of (and not a substitute for) the <a href=\"/eps/hpr3432/\">license</a>.</p>\r\n<h3 id=\"disclaimer\">Disclaimer</h3>\r\n<blockquote>\r\n<p>This deed highlights only some of the key features and\r\nterms of the actual license. It is not a license and\r\nhas no legal value. You should carefully review all of\r\nthe terms and conditions of the actual license before\r\nusing the licensed material.</p>\r\n<p>Creative Commons is not a law firm and does not\r\nprovide legal services. Distributing, displaying, or\r\nlinking to this deed or the license that it summarizes\r\ndoes not create a lawyer-client or any other\r\nrelationship.</p>\r\n</blockquote>\r\n<h3 id=\"you-are-free-to-\">You are free to:</h3>\r\n<ul>\r\n<li><strong>Share</strong> - copy and redistribute the material in any medium or format</li>\r\n<li><strong>Adapt</strong> - remix, transform, and build upon the material for any purpose, even commercially.</li>\r\n</ul>\r\n<p><a href=\"https://freedomdefined.org/\"><img src=\"https://creativecommons.org/images/deed/seal.png\" alt=\"This license is acceptable for Free Cultural Works.\"></a></p>\r\n<p>The licensor cannot revoke these freedoms as long as you follow the license terms.</p>\r\n<h3 id=\"under-the-following-terms-\">Under the following terms:</h3>\r\n<ul>\r\n<li><strong>Attribution</strong> - You must give <a href=\"https://wiki.creativecommons.org/License_Versions#Detailed_attribution_comparison_chart\">appropriate credit</a>, provide a link to the license, and <a href=\"https://wiki.creativecommons.org/License_Versions#Modifications_and_adaptations_must_be_marked_as_such\">indicate if changes were made</a>. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.</li>\r\n<li><strong>ShareAlike</strong> - If you remix, transform, or build upon the material, you must distribute your contributions under the <a href=\"https://wiki.creativecommons.org/FAQ#If_I_derive_or_adapt_material_offered_under_a_Creative_Commons_license.2C_which_CC_license.28s.29_can_I_use.3F\">same license</a> as the original.</li>\r\n<li><strong>No additional restrictions</strong> - You may not apply legal terms or <a href=\"https://wiki.creativecommons.org/License_Versions#Application_of_effective_technological_measures_by_users_of_CC-licensed_works_prohibited\">technological measures</a> that legally restrict others from doing anything the license permits.</li>\r\n</ul>\r\n<h3 id=\"notices-\">Notices:</h3>\r\n<ul>\r\n<li>You do not have to comply with the license for elements of the material in the public domain or where your use is permitted by an applicable <a href=\"https://wiki.creativecommons.org/Frequently_Asked_Questions#Do_Creative_Commons_licenses_affect_exceptions_and_limitations_to_copyright.2C_such_as_fair_dealing_and_fair_use.3F\">exception or limitation</a>.</li>\r\n<li>No warranties are given. The license may not give you all of the permissions necessary for your intended use. For example, other rights such as <a href=\"https://wiki.creativecommons.org/Considerations_for_licensors_and_licensees\">publicity, privacy, or moral rights</a> may limit how you use the material.</li>\r\n</ul>\r\n<hr>\r\n<h2 id=\"creative-commons-legal-code\">Creative Commons Legal Code</h2>\r\n<p>Original: <a href=\"https://creativecommons.org/licenses/by-sa/4.0/legalcode\">https://creativecommons.org/licenses/by-sa/4.0/legalcode</a>\r\nPlain Adaptation re-hosted on HPR: <a href=\"https://hackerpublicradio.org/eps/hpr3432/\">https://hackerpublicradio.org/eps/hpr3432/</a></p>\r\n',311,0,0,'CC-BY-SA','license, creative commons, recital, reading, legal',0,0,1),
(3433,'2021-09-29','A Squirrels thoughts about RMS',2565,'RMS and the subject of freedom','<hr />\r\n<p>\r\n<strong><em>\r\nThis podcast was provided by <a href=\"https://hackerpublicradio.org/correspondents/0377.html\">Zen_Floater2</a> in his personal capacity. The opinions expressed in this podcast are the author\'s own and do not reflect the view of Hacker Public Radio.<br />\r\n<small><a href=\"https://hackerpublicradio.org/stuff_you_need_to_know.php#not_moderated\">Shownotes Edited by Ken</a> on 2021-09-11T14:35:19Z to <a href=\"https://hackerpublicradio.org/stuff_you_need_to_know.php#explicit\">include disclaimer</a>.</small>\r\n</em></strong>\r\n</p>\r\n<hr />\r\n\r\n\r\n\r\n<p>\r\nA Squirrels thoughts about freedom and RMS.\r\n</p>\r\n<p>\r\nI also cover guns on aircraft. I cover smoking on aircraft.\r\n</p>\r\n<p>\r\nAnd I cover drinking beer on aircraft.\r\n</p>\r\n<p>\r\nAnd COBOL as well.\r\n</p>\r\n',377,0,1,'CC-BY-SA','RMS,Pedophilia,BEER',0,0,1),
(3434,'2021-09-30','From 0 to K8s in 30 minutes',1938,'Build a Kubernetes cluster, run a website, route traffic to website','<p><a href=\"https://people.centos.org/pgreco/\">Install CentOS</a> <a href=\"https://www.raspberrypi.org/software/\">or Debian</a> on a Raspberry Pi. I\'m using CentOS, but I\'ll admit that Debian is the easier option by far.</p>\r\n<p>Do this on 3 separate Pi units, each with the same specs.</p>\r\n<h2 id=\"set-hostnames\">Set hostnames</h2>\r\n<p>You must have unique hostnames for each Pi. Without unique hostnames, your cluster cannot function.</p>\r\n<p>There are several \"kinds\" of hostnames, so to avoid confusion I change all of them.</p>\r\n<p>I use a simple naming scheme: <code>k</code> for \"kubernetes\" + an integer, starting at 100 + <code>c</code> for \"cluster\":</p>\r\n<pre class=\"bash\"><code>$ sudo hostname k100c\r\n$ sudo sysctl kernel.hostname=k100c\r\n$ sudo hostnamectl set-hostname k100c\r\n$ sudo reboot\r\n</code></pre>\r\n<p>Do this for each Pi. At a minimum, you end up with Pi computers named k100c, k101c, and k102c.</p>\r\n<h2 id=\"set-verbose-prompts\">Set verbose prompts</h2>\r\n<p>When working with many different hosts, it\'s helpful to have a very verbose prompt as a constant reminder of which host you\'re connected to. Add this to the <code>~/.bashrc</code> of each Pi:</p>\r\n<pre><code>export PS1=\'\\[&#x005C;033[1;32m\\]\\! \\d \\t \\h:\\w \\n% \\[&#x005C;033[00m\\]\' \r\n</code></pre>\r\n<h2 id=\"install-a-pi-finder-script\">Install a Pi finder script</h2>\r\n<p>Install an LED blinker so you can find a specific Pi when you need one. This brilliant script is by Chris Collins for his article <a href=\"https://opensource.com/article/20/6/find-raspberry-pi\">Use this script to find a Raspberry Pi on your network</a>, which explains how to run it.</p>\r\n<pre class=\"bash\"><code>#!/bin/bash\r\n\r\nset -o errexit\r\nset -o nounset\r\n\r\ntrap quit INT TERM\r\n\r\nCOUNT=0\r\nLED=&quot;/sys/class/leds/led0&quot;\r\n\r\nif ! [ $(id -u) = 0 ]; then\r\n   echo &quot;Must be run as root.&quot;\r\n   exit 1\r\nfi\r\n\r\nif [[ ! -d $LED ]]\r\nthen\r\n  echo &quot;Could not find an LED at ${LED}&quot;\r\n  echo &quot;Perhaps try &#39;/sys/class/leds/ACT&#39;?&quot;\r\n  exit 1\r\nfi\r\n\r\nfunction quit() {\r\n  echo mmc0 &gt;&quot;${LED}/trigger&quot;\r\n}\r\n\r\necho -n &quot;Blinking Raspberry Pi&#39;s LED - press CTRL-C to quit&quot;\r\necho none &gt;&quot;${LED}/trigger&quot;\r\n\r\nwhile true\r\ndo\r\n  let &quot;COUNT=COUNT+1&quot;\r\n  if [[ $COUNT -lt 30 ]]\r\n  then\r\n    echo 1 &gt;&quot;${LED}/brightness&quot;\r\n    sleep 1\r\n    echo 0 &gt;&quot;${LED}/brightness&quot;\r\n    sleep 1\r\n  else\r\n    quit\r\n    break\r\n  fi\r\ndone\r\n</code></pre>\r\n<h2 id=\"install-k3s-on-your-control-plane\">Install K3s on your control plane</h2>\r\n<p>K3s is Kubernetes for IoT and Edge computing. It\'s the easiest, cleanest, and most serious method of getting Kubernetes on an ARM device. You can try other solutions (Microk8s, Minikube, OXD, and so on), but the best support comes from k3s.</p>\r\n<p>First, you must install k3s on one Pi. You can use any of your Pi units for this, but I use host k100c because it\'s the first in the sequence, so it feels logical.</p>\r\n<pre class=\"bash\"><code>[k100c]$ curl -sfL https://get.k3s.io -o install_k3s.sh\r\n[k100c]$ chmod 700 install_k3s.sh\r\n</code></pre>\r\n<p>Read the script to ensure that it seems to do what you expect, and then:</p>\r\n<pre class=\"bash\"><code>[k100c]$ ./install_k3s.sh\r\n</code></pre>\r\n<p>After installation, you\'re prompted to add some arguments to your bootloader. Open <code>/boot/cmdline.txt</code> in a text editor and add <code>cgroup_memory=1 cgroup_enable=memory</code> to the end of it.</p>\r\n<pre class=\"text\"><code>console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p3 rootfstype=ext4 elevator=deadline rootwait cgroup_memory=1 cgroup_enable=memory\r\n</code></pre>\r\n<p>Reboot:</p>\r\n<pre class=\"bash\"><code>[k100c]$ sudo reboot\r\n</code></pre>\r\n<p>Once the Pi is back up, verify that your node is ready:</p>\r\n<pre class=\"bash\"><code>[k100c]$ k3s kubectl get node\r\nNAME    STATUS  ROLES                  AGE\r\nk100c   Ready   control-plane,master   42s\r\n</code></pre>\r\n<p>This Pi is the \"control plane\", meaning it\'s the Pi that you use to administer your cluster.</p>\r\n<h2 id=\"get-the-node-token\">Get the node token</h2>\r\n<p>Obtain the control plane\'s node token. Thanks to k3s, this is autogenerated for you. If you not using k3s, then you must generate your own with the command <code>kubeadm token generate</code>.</p>\r\n<p>Assuming you\'re using k3s:</p>\r\n<pre class=\"bash\"><code>$ MYTOKEN=$(sudo cat /var/lib/rancher/k3s/server/node-token)\r\n$ echo $MYTOKEN\r\nK76351a1c2497d907ba7a156028567e0ccc26b82d2174161c564152ab3add6cc3fb::server:808771e4e695e3e3465ed9a14a0581da\r\n</code></pre>\r\n<h2 id=\"add-your-control-plane-hostname-to-your-hosts-file\">Add your control plane hostname to your hosts file</h2>\r\n<p>If you know how to manage local DNS settings, then you can use a DNS service to identify the hosts in your cluster. Otherwise, the easy way to make your nodes know how to find your control plane is to add the control plane\'s hostname and IP address to the <code>/etc/hosts</code> file on each node. This also assumes that your control plane has a static local IP address. For example, this is the host file of k101c and k102c:</p>\r\n<pre class=\"text\"><code>127.0.0.1  localhost.localdomain localhost\r\n::1        localhost6.localdomain6 localhost6\r\n\r\n10.0.1.100 k100c\r\n</code></pre>\r\n<p>Verify that each host can find the control plane. For example:</p>\r\n<pre class=\"bash\"><code>[k101c]$ ping -c 1 k100c || echo &quot;fail&quot;\r\n[k101c]\r\n</code></pre>\r\n<h2 id=\"add-nodes-to-your-cluster\">Add nodes to your cluster</h2>\r\n<p>Now you can add the other Pi computers to your cluster. On each Pi you want to turn into a computer node, install k3s with the control plane and token as environment variables. On my second Pi, for instance, I run this command:</p>\r\n<pre class=\"bash\"><code>[k101c]$ curl -sfL https://get.k3s.io | K3S_URL=https://k100c:6443 K3S_TOKEN=&quot;${MYTOKEN}&quot; sh -\r\n</code></pre>\r\n<p>On my third and final Pi, I run the same command:</p>\r\n<pre class=\"bash\"><code>[k102c]$ curl -sfL https://get.k3s.io | K3S_URL=https://k100c:6443 K3S_TOKEN=&quot;${MYTOKEN}&quot; sh -\r\n</code></pre>\r\n<h2 id=\"verify-your-cluster\">Verify your cluster</h2>\r\n<p>On your control plane, verify that all nodes are active:</p>\r\n<pre class=\"bash\"><code>% k3s kubectl get nodes\r\nNAME        STATUS     ROLES                  AGE     VERSION\r\nk100c       Ready      control-plane,master   2d23h   v1.21.4+k3s1\r\nk102c       Ready      &lt;none&gt;                 21h     v1.21.4+k3s1\r\nk101c       Ready      &lt;none&gt;                 20h     v1.21.4+k3s1\r\n</code></pre>\r\n<p>It can take a few minutes for the control plane to discover all nodes, so wait a little while and try the command again if you don\'t see all nodes right away.</p>\r\n<p>You now have a Kubernetes cluster running. It isn\'t doing anything yet, but it\'s a functional Kubernetes cluster. That means you have a tiny Pi-based cloud entirely at your disposal. You can use it to learn about Kubernetes, cloud architecture, cloud-native development, and so on.</p>\r\n<h2 id=\"create-a-deployment-and-some-pods\">Create a deployment and some pods</h2>\r\n<p>Now that you have a Kubernetes cluster running, you can start running applications in containers. That\'s what Kubernetes does: it orchestrates and manages containers. You\'ve may have heard of containers. I did an episode about Docker containers in episode 1522 of HPR, you can go listen to that if you need to catch up. I\'ve also done an episode on LXC in episode 371 of my own show, GNU World Order.</p>\r\n<p>There\'s a sequence to launching containers within Kubernetes, a specific order you need to follow, because there are lots of moving parts and those parts have to reference each other. Generally, the hierarchy is this:</p>\r\n<ul>\r\n<li>namespaces are the \"project spaces\" of kubernetes. I cover this in great detail in my GNU World Order episode 13x39.</li>\r\n<li>create a deployment that manage pods.</li>\r\n<li>pods are groups of containers. it helps your cluster scale on demand.</li>\r\n<li>services are front-ends to deployments. A deployment can be running quietly in the background and it\'ll never see the light of day without a service pointing to it.</li>\r\n<li>traffic, or exposure. A service is only available to your cluster until you expose it to the outside world with an external IP address.</li>\r\n</ul>\r\n<p>First, create a namespace for your test application to use.</p>\r\n<pre class=\"bash\"><code>[k100c]$ k3s kubectl create namespace ktest\r\n</code></pre>\r\n<p>The Kubernetes project provides an <a href=\"https://k8s.io/examples/application/deployment.yaml\">example Nginx deployment definition</a>. Read through it to get an idea of what it does. It looks something like this:</p>\r\n<pre class=\"yaml\"><code>apiVersion: apps/v1\r\nkind: Deployment\r\nmetadata:\r\n  name: nginx-deployment\r\nspec:\r\n  selector:\r\n    matchLabels:\r\n      app: nginx\r\n  replicas: 2 # tells deployment to run 2 pods matching the template\r\n  template:\r\n    metadata:\r\n      labels:\r\n        app: nginx\r\n    spec:\r\n      containers:\r\n      - name: nginx\r\n        image: nginx:1.14.2\r\n        ports:\r\n        - containerPort: 80\r\n</code></pre>\r\n<p>This creates metadata named <code>nginx-deployment</code>. It also creates a label called <code>app</code>, and sets it to <code>nginx</code>. This metadata is used as <em>selectors</em> for pods and services later.</p>\r\n<p>For now, create a deployment using the example:</p>\r\n<pre class=\"bash\"><code>[k100c]$ k3s kubectl --namespace ktest \\\r\ncreate -f https://k8s.io/examples/application/deployment.yaml\r\n</code></pre>\r\n<p>Confirm that the deployment has generated and started new pods:</p>\r\n<pre class=\"bash\"><code>[k100c]$ k3s kubectl --namespace ktest get all\r\n3s kubectl --namespace ktest get all\r\nNAME                                  READY\r\npod/nginx-deployment-66b[...]   1/1   Running\r\npod/nginx-deployment-66b[...]   1/1   Running\r\n\r\nNAME                               READY\r\ndeployment.apps/nginx-deployment   2/2\r\n\r\nNAME\r\nreplicaset.apps/nginx-deployment-66b6c48dd5\r\n</code></pre>\r\n<p>See the pods labelled with <code>app: nginx</code>:</p>\r\n<pre class=\"bash\"><code>[k100c]$ k3s kubectl --namespace ktest \\\r\nget pods -l app=nginx\r\nNAME                                READY STATUS\r\nnginx-deployment-66b6c48dd5-9vgg8   1/1   Running\r\nnginx-deployment-66b6c48dd5-prgrf   1/1   Running\r\nnginx-deployment-66b6c48dd5-cqpgf   1/1   Running\r\n</code></pre>\r\n<h2 id=\"create-a-service\">Create a service</h2>\r\n<p>Now you must connect the Nginx instance with a Kubernetes Service.</p>\r\n<p>The <code>selector</code> element is set to <code>nginx</code> to match pods running the <code>nginx</code> application. Without this selector, there would be nothing to correlate your service with the pods running the application you want to serve.</p>\r\n<pre class=\"bash\"><code>[k100c]$ cat &lt;&lt; EOF | k3s kubectl \\\r\n--namespace ktest create -f -\r\napiVersion: v1\r\nkind: Service\r\nmetadata:\r\n  name: nginx-deployment\r\n  labels:\r\n    run: nginx-deployment\r\nspec:\r\n  ports:\r\n  - port: 80\r\n    protocol: TCP\r\n  selector:\r\n    app: nginx\r\nEOF\r\nservice/nginx-deployment created\r\n</code></pre>\r\n<p>Verify that the service exists:</p>\r\n<pre class=\"bash\"><code>[k100c]$ k3s kubectl --namespace ktest get svc nginx-deployment\r\nNAME       TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)   AGE\r\nnginx-deployment   ClusterIP   10.43.32.89   &lt;none&gt;        80/TCP    58s\r\n</code></pre>\r\n<p>A Service is backed by a group of Pods. Pods are exposed through endpoints. A Service uses POST actions to populate Endpoints objects named <code>nginx-deployment</code>. Should a Pod die, it\'s removed from the endpoints, but new Pods matching the same selector are added to the endpoints. This is how Kubernetes ensures your application\'s uptime.</p>\r\n<p>To see more information:</p>\r\n<pre class=\"bash\"><code>[k100c]$ k3s kubectl \\\r\n--namespace ktest \\\r\ndescribe svc nginx-deployment\r\nName:              nginx-deployment\r\nNamespace:         ktest\r\nLabels:            run=nginx-deployment\r\nAnnotations:       &lt;none&gt;\r\nSelector:          app=nginx\r\nType:              ClusterIP\r\nIP Family Policy:  SingleStack\r\nIP Families:       IPv4\r\nIP:                10.43.251.104\r\nIPs:               10.43.251.104\r\nPort:              &lt;unset&gt;  80/TCP\r\nTargetPort:        80/TCP\r\nEndpoints:         10.42.2.8:80,10.42.2.9:80,10.42.3.7:80\r\nSession Affinity:  None\r\nEvents:            &lt;none&gt;\r\n</code></pre>\r\n<p>Notice that the <code>Endpoints</code> value is set to a series of IP addresses. This confirms that instances of Nginx are accessible. The IP of the service is set to 10.43.251.104, and it\'s running on port 80/TCP. That means you can log onto any of your nodes (referred to as \"inside the cluster\") to interact with your Nginx app. This does not work from your control plane, only from a node.</p>\r\n<pre class=\"bash\"><code>[k101c]$ curl https://10.43.251.104\r\n&lt;!DOCTYPE html&gt;\r\n&lt;html&gt;\r\n&lt;head&gt;\r\n&lt;title&gt;Welcome to nginx!&lt;/title&gt;\r\n&lt;/head&gt;\r\n&lt;body&gt;\r\n&lt;h1&gt;Welcome to nginx!&lt;/h1&gt;\r\n&lt;/body&gt;\r\n&lt;/html&gt;\r\n</code></pre>\r\n<p>Nginx is accessible.</p>\r\n<p>The only thing left to do now is to route traffic from the outside world.</p>\r\n<h2 id=\"exposing-a-deployment\">Exposing a deployment</h2>\r\n<p>For a deployed application to be visible outside your cluster, you need to route network traffic to it. There are many tools that provide that functionality.</p>\r\n<p>Install metallb:</p>\r\n<pre class=\"bash\"><code>$ k3s kubectl apply \\\r\n-f https://raw.githubusercontent.com/metallb/metallb/v0.10.2/manifests/namespace.yaml\r\n$ k3s kubectl apply \\\r\n-f https://raw.githubusercontent.com/metallb/metallb/v0.10.2/manifests/metallb.yaml\r\n$ k3s kubectl create secret generic \\\r\n-n metallb-system memberlist \\\r\n--from-literal=secretkey=&quot;$(openssl rand -base64 128)&quot;\r\n</code></pre>\r\n<p>Determine what network range you want your cluster to use. This must not overlap with what your DHCP server is managing.</p>\r\n<pre class=\"bash\"><code>---\r\napiVersion: v1\r\nkind: ConfigMap\r\nmetadata:\r\n  namespace: metallb-system\r\n  name: config\r\ndata:\r\n  config: |\r\n    address-pools:\r\n    - name: address-pool-0\r\n      protocol: layer2\r\n      addresses:\r\n      - 10.0.1.1/26\r\n</code></pre>\r\n<p>Save this as <code>metallb.yaml</code> and apply the configuration:</p>\r\n<pre class=\"bash\"><code>$ k3s kubectl apply -f metallb.yaml\r\n</code></pre>\r\n<p>You now have a configmap for metallb, and metallb is running.</p>\r\n<p>Create a load balance service mapping your deployment\'s ports (port 80 in this case, which you can verify with <code>k3s kubectl -n ktest get all</code>). Save this as <code>loadbalance.yaml</code>:</p>\r\n<pre class=\"bash\"><code>---\r\napiVersion: v1\r\nkind: Service\r\nmetadata:\r\n  name: ktest-ext\r\n  namespace: ktest\r\nspec:\r\n  selector:\r\n    app: nginx\r\n  ports:\r\n    - protocol: TCP\r\n      port: 80\r\n      targetPort: 80\r\n  type: LoadBalancer\r\n</code></pre>\r\n<p>This service selects any deployment in the <code>ktest</code> namespace with an <code>app</code> name of <code>nginx</code>, and maps the container\'s port 80 to a port 80 for an IP address within your address range (in my example, that\'s 10.0.1.1/26, or 10.0.1.1-10.0.1.62).</p>\r\n<pre class=\"bash\"><code>$k3s kubectl apply -f loadbalance.yaml\r\n</code></pre>\r\n<p>Find out what external IP address it got:</p>\r\n<pre><code>$ k3s kubectl get service ktest-ext -n ktest\r\nNAME        TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)\r\nktest   LoadBalancer   10.43.138.91   10.0.1.3                  80:31790/TCP\r\n</code></pre>\r\n<p>Open a web browser and navigate to the external IP address listed (in this example, 10.0.1.3).</p>\r\n<p><img src=\"https://gnuworldorder.info/tank/nginx-welcome.webp\" alt=\"Nginx\" /></p>\r\n',78,61,0,'CC-BY-SA','network, kubernetes, cloud',0,0,1),
(3438,'2021-10-06','Ten privacy friendly Google search alternatives.',551,'Google search is monopolistic here are some alternatives','<p>Here are links to all the search engines and related stuff discussed during this podcast,</p>\r\n<ul>\r\n<li>Searx: <a href=\"https://www.searx.me/\" class=\"uri\">https://www.searx.me/</a>\r\n<ul>\r\n<li>Searx public instances: <a href=\"https://searx.space/\" class=\"uri\">https://searx.space/</a></li>\r\n</ul></li>\r\n<li>Whoogle: <a href=\"https://github.com/benbusby/whoogle-search\" class=\"uri\">https://github.com/benbusby/whoogle-search</a>\r\n<ul>\r\n<li>Whoogle public instances: <a href=\"https://github.com/benbusby/whoogle-search#public-instances\" class=\"uri\">https://github.com/benbusby/whoogle-search#public-instances</a></li>\r\n</ul></li>\r\n<li>MetaGer: <a href=\"https://metager.org/\" class=\"uri\">https://metager.org/</a>\r\n<ul>\r\n<li>MetaGer browser extensions: <a href=\"https://metager.org/plugin\" class=\"uri\">https://metager.org/plugin</a></li>\r\n<li>MetaGer mobile apps: <a href=\"https://metager.org/app\" class=\"uri\">https://metager.org/app</a></li>\r\n<li>MetaGer privacy policy: <a href=\"https://metager.org/datenschutz\" class=\"uri\">https://metager.org/datenschutz</a></li>\r\n</ul></li>\r\n<li>Gigablast: <a href=\"https://gigablast.com/\" class=\"uri\">https://gigablast.com/</a>\r\n<ul>\r\n<li>Gigablast privacy policy: <a href=\"https://gigablast.com/privacy.html\" class=\"uri\">https://gigablast.com/privacy.html</a></li>\r\n</ul></li>\r\n<li>Private.sh: <a href=\"https://private.sh/\" class=\"uri\">https://private.sh/</a>\r\n<ul>\r\n<li>Private.sh privacy policy: <a href=\"https://private.sh/extension.html\" class=\"uri\">https://private.sh/extension.html</a></li>\r\n</ul></li>\r\n<li>Ecosia: <a href=\"https://www.ecosia.org/\" class=\"uri\">https://www.ecosia.org/</a>\r\n<ul>\r\n<li>Ecosia mobile apps: <a href=\"https://info.ecosia.org/mobile\" class=\"uri\">https://info.ecosia.org/mobile</a></li>\r\n<li>Ecosia privacy policy: <a href=\"https://info.ecosia.org/privacy\" class=\"uri\">https://info.ecosia.org/privacy</a></li>\r\n</ul></li>\r\n<li>Startpage: <a href=\"https://www.startpage.com/\" class=\"uri\">https://www.startpage.com/</a>\r\n<ul>\r\n<li>Startpage privacy policy: <a href=\"https://www.startpage.com/en/search/privacy-policy.html\" class=\"uri\">https://www.startpage.com/en/search/privacy-policy.html</a></li>\r\n</ul></li>\r\n<li>Qwant: <a href=\"https://www.qwant.com/\" class=\"uri\">https://www.qwant.com/</a>\r\n<ul>\r\n<li>Qwant Junior: <a href=\"https://www.qwantjunior.com/\" class=\"uri\">https://www.qwantjunior.com/</a></li>\r\n<li>Qwant browser extensions: <a href=\"https://help.qwant.com/help/qwant-search/add-qwant-on-desktop/\" class=\"uri\">https://help.qwant.com/help/qwant-search/add-qwant-on-desktop/</a></li>\r\n<li>Qwant privacy policy: <a href=\"https://about.qwant.com/en/legal/confidentialite/\" class=\"uri\">https://about.qwant.com/en/legal/confidentialite/</a></li>\r\n</ul></li>\r\n<li>Brave Search: <a href=\"https://search.brave.com/\" class=\"uri\">https://search.brave.com/</a>\r\n<ul>\r\n<li>Brave Search privacy policy: <a href=\"https://search.brave.com/help/privacy-policy\" class=\"uri\">https://search.brave.com/help/privacy-policy</a></li>\r\n</ul></li>\r\n<li>DuckDuckGo: <a href=\"https://duckduckgo.com/\" class=\"uri\">https://duckduckgo.com/</a>\r\n<ul>\r\n<li>DuckDuckGo browser extensions &amp; apps: <a href=\"https://duckduckgo.com/app\" class=\"uri\">https://duckduckgo.com/app</a></li>\r\n<li>DuckDuckGo privacy policy: <a href=\"https://duckduckgo.com/privacy\" class=\"uri\">https://duckduckgo.com/privacy</a></li>\r\n</ul></li>\r\n</ul>\r\n<hr />\r\n<p>\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=0773\">hpr0773 :: Interview with Gabriel Weinberg of DuckDuckGo</a></p>\r\n',397,74,0,'CC-BY-SA','searx, whoogle, metager, gigablast, private.sh, ecosia, startpage, qwant, brave, duckduckgo',0,0,1),
(3446,'2021-10-18','Speech To Text',1378,'I talk about converting HPR audio to text and tagging','<ul>\r\n<li><p>speech recognition</p></li>\r\n<li><p>machine_learning (ML)</p></li>\r\n<li><p>artificial_intelligence (AI)</p></li>\r\n<li><p>speech_recognition</p></li>\r\n<li><p>Natural Language Processing (NLP)</p></li>\r\n<li><p><a href=\"https://rmccurdy.com/stuff/NLP/\" class=\"uri\">https://rmccurdy.com/stuff/NLP/</a> ( example files )</p></li>\r\n<li><p>Some higher maf here that is above my head for now ...<br />\r\n<a href=\"https://towardsdatascience.com/using-keyword-extraction-for-unsupervised-text-classification-in-nlp-10433a1c0cf9\" class=\"uri\">https://towardsdatascience.com/using-keyword-extraction-for-unsupervised-text-classification-in-nlp-10433a1c0cf9</a></p></li>\r\n<li><p><a href=\"https://www.interviewquery.com/blog-keyword-extraction/\" class=\"uri\">https://www.interviewquery.com/blog-keyword-extraction/</a></p></li>\r\n</ul>\r\n',36,0,0,'CC-BY-SA','AI,ML,scripting,audio',0,0,1),
(3721,'2022-11-07','HPR Community News for October 2022',3248,'HPR Volunteers talk about shows released and comments posted in October 2022','<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/0411.html\" target=\"_blank\">Paul J</a>, \n    <a href=\"https://hackerpublicradio.org/correspondents/0412.html\" target=\"_blank\">m0dese7en</a>, \n    <a href=\"https://hackerpublicradio.org/correspondents/0413.html\" target=\"_blank\">CCHits.net Team</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=3696\" target=\"_blank\">3696</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-10-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3696\" target=\"_blank\">HPR Community News for September 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3697\" target=\"_blank\">3697</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-10-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3697\" target=\"_blank\">Mis-information, Dis-information, and Fake News. You are a product and target for all of it.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3698\" target=\"_blank\">3698</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-10-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3698\" target=\"_blank\">Spectrogram</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=3699\" target=\"_blank\">3699</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-10-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3699\" target=\"_blank\">Old and new videogames/board games with guest binrc</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0407.html\" target=\"_blank\">Celeste</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3700\" target=\"_blank\">3700</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-10-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3700\" target=\"_blank\">Introduction to Batch Files</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=3701\" target=\"_blank\">3701</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-10-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3701\" target=\"_blank\">ReiserFS - the file system of the future</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0411.html\" target=\"_blank\">Paul J</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3702\" target=\"_blank\">3702</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-10-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3702\" target=\"_blank\">Easter Ogg</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=3703\" target=\"_blank\">3703</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-10-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3703\" target=\"_blank\">McCurdy House Tour</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=3704\" target=\"_blank\">3704</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-10-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3704\" target=\"_blank\">Follow up to hpr3685 :: Budget and an Android app</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=3705\" target=\"_blank\">3705</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-10-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3705\" target=\"_blank\">The Year of the FreeBSD Desktop</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3706\" target=\"_blank\">3706</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-10-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3706\" target=\"_blank\">The Future of Technology</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3707\" target=\"_blank\">3707</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-10-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3707\" target=\"_blank\">Recovering a Massive 3.5 HP Electric Motor from a Treadmill</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3708\" target=\"_blank\">3708</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-10-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3708\" target=\"_blank\">Insomnia as a Hobby</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0389.html\" target=\"_blank\">TrumpetJohn</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3709\" target=\"_blank\">3709</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-10-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3709\" target=\"_blank\">Relationships to games and console generations</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0412.html\" target=\"_blank\">m0dese7en</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3710\" target=\"_blank\">3710</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-10-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3710\" target=\"_blank\">Changing Plans Again</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=3711\" target=\"_blank\">3711</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-10-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3711\" target=\"_blank\">Cars</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=3712\" target=\"_blank\">3712</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-10-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3712\" target=\"_blank\">The last ever CCHits.net Show</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0413.html\" target=\"_blank\">CCHits.net Team</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3713\" target=\"_blank\">3713</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-10-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3713\" target=\"_blank\">Bash snippet - short-circuit evaluation in Bash Boolean expressions</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=3714\" target=\"_blank\">3714</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-10-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3714\" target=\"_blank\">The News with Some Guy On the Internet</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=3715\" target=\"_blank\">3715</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-10-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3715\" target=\"_blank\">Secret hat conversations, Part 2.</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=3716\" target=\"_blank\">3716</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-10-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3716\" target=\"_blank\">How I got in to Tech</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</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 34 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=3693#comments\" target=\"_blank\">hpr3693</a></strong>\n(2022-09-28) \"<em>Fixing the automatic cutoff mechanism to an electric mower</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=3693#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-10-27:\n\"Thank you.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3694#comments\" target=\"_blank\">hpr3694</a></strong>\n(2022-09-29) \"<em>Robo Tripping Ravelords of the Apocalypse</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3694#6\" target=\"_blank\">Comment 6</a>:\nSome Guy On The Internet on 2022-10-27:\n\"Please continue.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3695#comments\" target=\"_blank\">hpr3695</a></strong>\n(2022-09-30) \"<em>How I watch youtube with newsboat</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3695#2\" target=\"_blank\">Comment 2</a>:\nbinrc on 2022-10-01:\n\"RSS THE PLANET\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3695#3\" target=\"_blank\">Comment 3</a>:\nDave Morriss on 2022-10-03:\n\"Great show, but I have questions\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3695#4\" target=\"_blank\">Comment 4</a>:\nNate on 2022-10-20:\n\"use an invidious instance to get the channel id\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 29 comments on 14 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3697#comments\" target=\"_blank\">hpr3697</a></strong>\n(2022-10-04) \"<em>Mis-information, Dis-information, and Fake News. You are a product and target for all of it.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3697#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-10-27:\n\"Bravo, Bravo!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3698#comments\" target=\"_blank\">hpr3698</a></strong>\n(2022-10-05) \"<em>Spectrogram</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=3698#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-10-27:\n\"I gave it a go.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3701#comments\" target=\"_blank\">hpr3701</a></strong>\n(2022-10-10) \"<em>ReiserFS - the file system of the future</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0411.html\" target=\"_blank\">Paul J</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3701#1\" target=\"_blank\">Comment 1</a>:\nwynaut on 2022-10-11:\n\"Very interesting\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3701#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2022-10-11:\n\"Great show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3701#3\" target=\"_blank\">Comment 3</a>:\nBeeza on 2022-10-11:\n\"Perfect First Show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3701#4\" target=\"_blank\">Comment 4</a>:\nWindigo on 2022-10-12:\n\"Excellent first episode!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3701#5\" target=\"_blank\">Comment 5</a>:\nbrian-in-ohio on 2022-10-13:\n\"great show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3702#comments\" target=\"_blank\">hpr3702</a></strong>\n(2022-10-11) \"<em>Easter Ogg</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=3702#1\" target=\"_blank\">Comment 1</a>:\nKinghezy on 2022-10-12:\n\"Jerusalem\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3705#comments\" target=\"_blank\">hpr3705</a></strong>\n(2022-10-14) \"<em>The Year of the FreeBSD Desktop</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3705#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2022-10-18:\n\"Time running out on 2022\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3705#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2022-10-18:\n\"Great show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3706#comments\" target=\"_blank\">hpr3706</a></strong>\n(2022-10-17) \"<em>The Future of Technology</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3706#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-09-10:\n\"Wrong wrong wrong\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3706#2\" target=\"_blank\">Comment 2</a>:\ndnt on 2022-10-18:\n\"Capitalism or technology\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3706#3\" target=\"_blank\">Comment 3</a>:\nWindigo on 2022-10-18:\n\"Relatable\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3707#comments\" target=\"_blank\">hpr3707</a></strong>\n(2022-10-18) \"<em>Recovering a Massive 3.5 HP Electric Motor from a Treadmill</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3707#1\" target=\"_blank\">Comment 1</a>:\none_of_spoons on 2022-10-18:\n\"gravity generator\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3707#2\" target=\"_blank\">Comment 2</a>:\nMechatroniac on 2022-10-23:\n\"electricity\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3707#3\" target=\"_blank\">Comment 3</a>:\nSome Guy On The Internet on 2022-10-27:\n\"Cool beans\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3708#comments\" target=\"_blank\">hpr3708</a></strong>\n(2022-10-19) \"<em>Insomnia as a Hobby</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0389.html\" target=\"_blank\">TrumpetJohn</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3708#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2022-10-22:\n\"Sleep with me\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3710#comments\" target=\"_blank\">hpr3710</a></strong>\n(2022-10-21) \"<em>Changing Plans Again</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=3710#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2022-10-25:\n\"Travelling\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3710#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2022-10-25:\n\"You are most welcome\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3711#comments\" target=\"_blank\">hpr3711</a></strong>\n(2022-10-24) \"<em>Cars</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=3711#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-10-27:\n\"Big Human = Big Vehicle\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3712#comments\" target=\"_blank\">hpr3712</a></strong>\n(2022-10-25) \"<em>The last ever CCHits.net Show</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0413.html\" target=\"_blank\">CCHits.net Team</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3712#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-10-27:\n\"I\'ve never heard of this site until now.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3712#2\" target=\"_blank\">Comment 2</a>:\nthelovebug on 2022-10-29:\n\"CCHits theme tune\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3713#comments\" target=\"_blank\">hpr3713</a></strong>\n(2022-10-26) \"<em>Bash snippet - short-circuit evaluation in Bash Boolean expressions</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=3713#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-10-27:\n\"Great Show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3714#comments\" target=\"_blank\">hpr3714</a></strong>\n(2022-10-27) \"<em>The News with Some Guy On the Internet</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=3714#1\" target=\"_blank\">Comment 1</a>:\nClaudioM on 2022-10-27:\n\"Great Episode!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3714#2\" target=\"_blank\">Comment 2</a>:\nZen_floater2 on 2022-10-27:\n\"OH NO!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3714#3\" target=\"_blank\">Comment 3</a>:\ndnt on 2022-10-28:\n\"This just in:\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3714#4\" target=\"_blank\">Comment 4</a>:\nKevin O&#39;Brien on 2022-10-29:\n\"Wonderful!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3715#comments\" target=\"_blank\">hpr3715</a></strong>\n(2022-10-28) \"<em>Secret hat conversations, Part 2.</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=3715#1\" target=\"_blank\">Comment 1</a>:\nThe hacker formerly known as b-yeezi on 2022-10-29:\n\"Tin foil hat engaged\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3715#2\" target=\"_blank\">Comment 2</a>:\none_of_spoons on 2022-10-31:\n\"Protonmail shopping for law enforcement.\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-October/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-October/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"older-hpr-shows-on-archive.org-phase-2\">Older HPR shows on\narchive.org, phase 2</h3>\n<p>Now that all shows from number 1 to the latest have been uploaded to\nthe Internet Archive there are other tasks to perform. We are\nreprocessing and re-uploading shows in the range 871 to 2429 as\nexplained in the Community News show notes released in <a\nhref=\"http://hackerpublicradio.org/eps.php?id=3586#older-hpr-shows-on-archive.org-phase-2\">May\n2022</a>. We are keeping a running total here to show progress:</p>\n<table>\n<tr>\n<th>\nMonth\n</th>\n<th>\nMonth count\n</th>\n<th>\nRunning total\n</th>\n<th>\nRemainder\n</th>\n</tr>\n<tr>\n<td>\n2022-04\n</td>\n<td>\n130\n</td>\n<td>\n130\n</td>\n<td>\n1428\n</td>\n</tr>\n<tr>\n<td>\n2022-05\n</td>\n<td>\n140\n</td>\n<td>\n270\n</td>\n<td>\n1288\n</td>\n</tr>\n<tr>\n<td>\n2022-06\n</td>\n<td>\n150\n</td>\n<td>\n420\n</td>\n<td>\n1138\n</td>\n</tr>\n<tr>\n<td>\n2022-07\n</td>\n<td>\n155\n</td>\n<td>\n575\n</td>\n<td>\n983\n</td>\n</tr>\n<tr>\n<td>\n2022-08\n</td>\n<td>\n155\n</td>\n<td>\n730\n</td>\n<td>\n828\n</td>\n</tr>\n<tr>\n<td>\n2022-09\n</td>\n<td>\n150\n</td>\n<td>\n880\n</td>\n<td>\n678\n</td>\n</tr>\n<tr>\n<td>\n2022-10\n</td>\n<td>\n155\n</td>\n<td>\n1035\n</td>\n<td>\n523\n</td>\n</tr>\n</table>\n\n<p><small><small>Updated: 2022-11-05 15:28:06</small></small></p>\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3439,'2021-10-07','Linux Inlaws S01E40: The One with the BSDs',5834,'The other One Operating System to Rule them all','<p>In this episode, Martin and Chris host an eclectic panel of contributors to\r\nthe *other* major FLOSS operating system family - you guessed it: the\r\nflavours of the Berkeley Software Distribution (aka BSD among friends).\r\nDisclaimer: you may be tempted to diverge from the Path of the\r\nRighteousness also known as Linux and give this alternative a spin. So\r\nthis episode is *not* for the faint-hearted - listen at your own\r\ndiscretion! Also: the true defective nature of our beloved (?) hosts\' past\r\nwill be revealed - an episode not be missed despite the caveat! Plus\r\na refresher on spaced-out operating system concepts including library\r\noperating systems and a rant on Android and friends. In addition to some\r\ncool BSD trolling...  </p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>OpenBSD: <a href=\"https://www.openbsd.org\" target=_blank>https://www.openbsd.org</a></li>\r\n<li>FeeBSD: <a href=\"https://www.freebsd.org\" target=_blank>https://www.freebsd.org</a></li>\r\n<li>NetBSD: <a href=\"https://www.netbsd.org\" target=_blank>https://www.netbsd.org</a></li>\r\n<li>DragonFlyBSD: <a href=\"https://www.dragonflybsd.org\" target=_blank>https://www.dragonflybsd.org</a></li>\r\n<li>386BSD: <a href=\"https://www.386bsd.org\" target=_blank>https://www.386bsd.org</a></li>\r\n<li>RUMP kernel: <a href=\"https://en.wikipedia.org/wiki/Rump_kernel\" target=_blank>https://en.wikipedia.org/wiki/Rump_kernel</a></li>\r\n<li>Library operating systems: <a href=\"https://www.sigarch.org/leave-your-os-at-home-the-rise-of-library-operating-systems\" target=_blank>https://www.sigarch.org/leave-your-os-at-home-the-rise-of-library-operating-systems</a></li>\r\n<li>Free BSD Linux Compatibility: <a href=\"https://docs.freebsd.org/en/books/handbook/linuxemu\" target=_blank>https://docs.freebsd.org/en/books/handbook/linuxemu</a></li>\r\n<li>BSD Jails (original paper): <a href=\"https://papers.freebsd.org/2000/phk-jails.files/sane2000-jail.pdf\" target=_blank>https://papers.freebsd.org/2000/phk-jails.files/sane2000-jail.pdf</a></li>\r\n<li>FeeBSD Ports: <a href=\"https://www.freebsd.org/ports\" target=_blank>https://www.freebsd.org/ports</a></li>\r\n<li>NetBSD pkgsrc: <a href=\"https://www.netbsd.org/docs/pkgsrc\" target=_blank>https://www.netbsd.org/docs/pkgsrc</a></li>\r\n<li>ZFS: <a href=\"https://en.wikipedia.org/wiki/ZFS\" target=_blank>https://en.wikipedia.org/wiki/ZFS</a></li>\r\n<li>BSD\'s pledge: <a href=\"https://unix.stackexchange.com/questions/410056/what-is-openbsds-pledge-in-short\" target=_blank>https://unix.stackexchange.com/questions/410056/what-is-openbsds-pledge-in-short</a></li>\r\n<li>FreeBSD and Netflix: <a href=\"https://papers.freebsd.org/2019/fosdem/looney-netflix_and_freebsd\" target=_blank>https://papers.freebsd.org/2019/fosdem/looney-netflix_and_freebsd</a></li>\r\n<li>BSD Firewalls: <a href=\"https://docs.freebsd.org/en/books/handbook/firewalls\" target=_blank>https://docs.freebsd.org/en/books/handbook/firewalls</a></li>\r\n<li>Michael W. Lucas\' \"Savaged by Systemd\": <a href=\"hhttps://www.goodreads.com/book/show/36190710-savaged-by-systemd\" target=_blank>hhttps://www.goodreads.com/book/show/36190710-savaged-by-systemd</a></li>\r\n<li>Linux vs. Minix: <a href=\"https://www.oreilly.com/openbook/opensources/book/appa.html\" target=_blank>https://www.oreilly.com/openbook/opensources/book/appa.html</a></li>\r\n<li>Pegasus spyware: <a href=\"https://en.wikipedia.org/wiki/Pegasus_(spyware)\" target=_blank>https://en.wikipedia.org/wiki/Pegasus_(spyware)</a></li>\r\n<li>BSD History presentation: <a href=\"https://www.youtube.com/watch?v=DEEr6dT-4uQ\" target=_blank>https://www.youtube.com/watch?v=DEEr6dT-4uQ</a></li>\r\n<li>The tragedy of systemd: <a href=\"https://www.youtube.com/watch?v=o_AIw9bGogo\" target=_blank>https://www.youtube.com/watch?v=o_AIw9bGogo</a></li>\r\n<li>The Rise and Fall of Copyleft: <a href=\"https://archive.org/download/OhioLinuxfest2013/24-Rob_Landley-The_Rise_and_Fall_of_Copyleft.mp3\" target=_blank>https://archive.org/download/OhioLinuxfest2013/24-Rob_Landley-The_Rise_and_Fall_of_Copyleft.mp3</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Berkeley Software Distribution, library operating systems, Android, Copyleft, BSD License, Usenet',0,0,1),
(3442,'2021-10-12','What is this thing called science',790,'Critical thinking is only part of the equation. Here\'s the other part.','<hr />\r\n<h3>Counter Point</h3>\r\n<p>This show is a counter point to: <a href=\"https://hackerpublicradio.org/eps.php?id=3414\">hpr3414 :: Critical Thinking may make You Critical of the Covid Crisis</a>\r\n</p>\r\n<hr />\r\n\r\n<p>Some time ago, I did some Hacker Public Radio episodes in which I ostensibly demonstrated how to create a PDF with Scribus. Secretly, I was actually demonstrating how unexpected payloads could be embedded into a PDF. Did the PDF I uploaded as part of that episode no longer contain a payload if the listener who downloaded it wasn\'t aware that the payload existed?</p>\r\n<p>I\'ve been diagnosed by educators as a \"life long learner,\" which as far as I can tell is a buzzword referring to someone who takes pleasure in learning new things. In our world of technology, dear listener, I think this term is just \"hacker.\" And that\'s appropriate, because this is Hacker Public Radio you\'re listening to now, and listeners of this show tend to be people who enjoy learning and exploring new ideas, taking apart gadgets to see what makes them tick, reverse engineering code and data to understand how it gets processed, and so on.</p>\r\n<p>The thing about being a hacker or a life-long learner is that there\'s a lot of stuff out there that wants to be hacked, or learnt. And it turns out that it\'s just not possible to learn everything. Sometimes, you\'re out of your depth. It can be tricky to recognize when you\'re out of your depth, and I think there\'s a certain learn-able skill to knowing that you don\'t know something. There\'s a lot of value to this skill, because when you can recognize you don\'t have expertise on something, you\'re able to look around you and find someone who has. That\'s significant because you can learn from someone with expertise.</p>\r\n<p>In my own humdrum life, before getting a full-time job at a tech company, I was commissioned on several occasions to build out infrastructure for a video game development project, an indie radio station, a few different multimedia projects, and so on. When I took on those roles, I became the resident expert. People turned to me for the authoritative word on what technological solutions should be used. When I told them, they were more or less obligated to listen, because that was the role I\'d been hired for. If they were to ask me what a workstation should run, and I said Linux, but they bought a Mac instead, then my role would be unarguably redundant. They could just as easily type the question into a search engine on the Internet, and ignore the result. Or they could roll a die, or whatever.</p>\r\n<p>In those cases, though, it\'s a question of my opinion compared to someone else\'s opinion. Both are valid. Because I was the architect, my opinion mattered more to the long-term plan, but if the long-term plan were to change from having a highly-available cluster for fast 3d model rendering to having workstations with a familiar desktop, then my opinion would be less valid.</p>\r\n<p>But there are some areas in life where opinions don\'t matter. Specifically, that area is science. But what is science, anyway? People talk about science a lot, but it took me a long time, especially as someone who largely came from an artistic background, to comprehend the significance of the term, much less how it worked.</p>\r\n<p>Forget about all the high school classes and pop dietitians and physicists. Science is a framework. It\'s a set of principles designed to help our human brains hack the world around us in a methodical and precise way. Instead of letting our opinions, which may or may not be relevant, influence conclusions and decisions we make, science looks at the results of controlled input and output. Wait a minute. \"Input and output\"? Those are words I understand. Those are computer terms!</p>\r\n<p>Yeah it turns out that computers are the product of science, and in fact building computers and programming computers is a form of Computer Science. Those are just words we made up, but they reveal a lot about what we computer hackers do all day. Computers don\'t understand the influence of opinion, or your force of will, or the power of faith. They just take input and produce output. They do this very reliably.</p>\r\n<p>I don\'t know whether you\'ve ever tried, but it\'s really hard to make a computer. Comprehending how a CPU processes rudimentary electrical pulses to transform them into complex instruction sets is mind-bending, at least to me. I\'ve sat down and thought about it critically. I\'ve set up a few experiments, too. There\'s one you can do with dominoes, believe it or not, that can somewhat help you design a logic circuit. There\'s a Turing Machine you can build with Magic The Gathering cards. And an electronics kit that\'ll help you <a href=\"https://eater.net/8bit\">build an 8bit CPU</a>. But even with all of those experiments, the open RISC-V CPU still eludes my comprehension.</p>\r\n<p>And just to be clear: back in 2008 or so, I was hired to stress test a RISC CPU to determine whether it was efficient at rendering massive amounts of video. I designed tests in an attempt to prove that a RISC CPU could not out-perform the latest Intel Core2duo, and could not achieve the goal (RISC is better, what can I say?) So my affinity for RISC is far from just a passing interest. But I can\'t build a RISC-V or even really explain how a CPU works.</p>\r\n<p>For that, I understand that there are experts. These aren\'t just people I call experts because they\'re labeled that way on their shirt pocket. They\'re experts because they\'re building the RISC-V, and it works. I met some of them back at OSS Con in 2019. I recognize their expertise, because they\'re proving their knowledge.</p>\r\n<p>Let\'s say I approached the RISC-V booth with the preconception that x86 was superior. After all, why would most consumer computers be running x86 if it weren\'t the best? I might be skeptical if I were told that RISC-V is superior for some tasks. Could they have ulterior motives? Could they have been paid off by Big Silicon to lie about RISC\'s performance in order to hurt x86\'s marketshare? Sure, it could happen. And that skepticism is important. It\'s arguably part of the scientific process. Look at the results of an experiment, replicate the input and ensure that the output is reliably the same.</p>\r\n<p>But you can\'t be sure until you\'ve duplicated the experiments that make the claim in the first place. Unfortunately, this often requires some pretty controlled environments, and possibly some pretty high end equipment.</p>\r\n<p>The bottom line is that I\'m never going to get around to doing that, I\'m never going to have access to those resources, and I\'m never going to have the understanding I\'d need to comprehend all the potential variables involved. In short, I just don\'t have the expertise. But I\'m willing to trust the expertise of a lot of people from all over the world working on this project. I\'m going to trust that because they all agree on similar findings, that what they\'re saying about the design and architecture of their CPU, that there\'s a high likelihood that their findings are correct.</p>\r\n<p>The same goes, as it turns out, for biological sciences. No matter how many one-off experiments discover that cigarette smoking is beneficial to your health, the wider scientific consensus is that it\'s harmful. No matter how man \"free-thinkers\" on the Internet discover that Covid-19 is actually no worse than the common cold, the worldwide scientific community asserts that it\'s actually harmful, and medical staffs across the globe assert that increased cases of Covid-19 cause bed and healthcare shortages for everyone else. Somebody online may assert that it\'s an impossibly unified globe-spanning political plot, but that relies on a bunch of untest-able opinions and interpretations of reality that fall well outside any scientific framework.</p>\r\n<p>It seems to me that this line of speculation makes about as much sense as asking whether your computer can really still add numbers accurately. Couldn\'t it occasionally be lying to you? The device you\'re using to listen to my voice right now not to scramble what I\'m saying and accurately play what I recorded in the first place is based on the same scientific principles used by those in biological sciences. We\'re feeding data into functions, whether the function is written in code, forged in silicon, or written on paper as a math formula, and we\'re observing the results. When every expert in their field, across the entire globe, agrees on the output, I think we do too. It\'s either that, or we\'d better all go build our own 8bit circuits out of chickens and batteries and just start to rebuild.</p>\r\n<p>So did the PDF I uploaded as part of the Scribus episode no longer contain a payload if the listener who downloaded it wasn\'t aware that the payload existed? Obviously not. If the listener lacked the foresight or expertise to investigate the PDF for a hidden file, then they could have posted an episode of their own about how my PDF was completely normal. They\'d have been confident in their findings. But you and I know that whatever experiments they might have used to come to the conclusion that Klaatu was NOT a liar was, in the end, insufficient. The payload did exist, but it was just outside this imaginary listener\'s detection or comprehension.</p>\r\n<p>Critical thinking is important. But at the same time, the scientific framework requires more than just critical thinking, just as building a RISC-V CPU requires more than just being a fan of reduced instruction sets. And solving the Covid-19 crisis takes a lot more than just critical thinking and a couple of backyard \"experiments.\" We\'re not in the Dark Ages any more, folks. Get vaccinated. Stay safe, and I\'ll talk to you next time.</p>\r\n',78,0,0,'CC-BY-SA','covid, science, risc-v, cpu',0,0,1),
(3443,'2021-10-13','Neuton battery replacement',593,'Rho`n describes replacing the battery in his Neuton EM 4.1 electric lawn mower','<h1 id=\"audio-notes\">Audio Notes</h1>\r\n<p>During the audio I repeatedly called it the Neutron mower instead of the Neuton mower. I was too lazy edit those mispronunciations.</p>\r\n<h1 id=\"introduction\">Introduction</h1>\r\n<p>After recently reclaiming my Neuton EM 4.1 electric lawn mower from my parents, I needed to replace the battery to make it operational. This mower was purchased in the early 2000s, and replacement batteries for it are no longer available from the manufacturer. Thankfully replacement 12V 10A batteries are available through third parties.</p>\r\n<h1 id=\"replacing-parts\">Replacing Parts</h1>\r\n<p>I faced two issues with finding replacement parts. The Neuton mowers run at 24V and need batteries that can provide 10 amps of current. They come with a battery case that holds two 12V 10A batteries connected in series. The case holds the batteries and provides a connector and circuitry for a 24V DC charger. When I received the mower back from my parents, it didn\'t have a battery case with it. While the <a href=\"https://www.neutonpower.com/\">Neuton website</a> is still online, and looks like you can order some accessories still, they no longer carry replacement battery cases or batteries. I was able to find just the case on EBay. I then found replacement batteries on Amazon.</p>\r\n<p>Installing the batteries in the case is simple. One side of the case has a lid. The lid is held in place by plastic notches on the bottom and two screws at the top. The screws have size 10 star heads. The batteries sit side by side in the case, with their terminals facing the lid. I connected the inner terminals (negative of one battery to positive of the other) with the jumper wire that came with the case. I then connected the outer terminals to the battery case terminal wires, slid the batteries all the way into case, closed, and fastened the lid.</p>\r\n<h1 id=\"conclusion\">Conclusion</h1>\r\n<p>The batteries are currently charging. The red charging light did come on when I plugged in the 24V DC charger, and nothing has exploded yet, so I am optimistic I will be able to use the mower again shortly.</p>\r\n<h1 id=\"references\">References</h1>\r\n<ul>\r\n<li>Neuton CE5.4 24 volt rechargeable battery CASE ONLY - <a href=\"https://www.ebay.com/itm/114952181341\">EBay item</a></li>\r\n<li>Mighty Max Battery 12V 10AH Replaces HE12V127 HGL1012 LCRB1210P NEUTON CE5 POWPS12100 Battery - 2 Pack Brand Product - <a href=\"https://www.amazon.com/gp/product/B00K9713L4/ref=ppx_od_dt_b_asin_title_s00?ie=UTF8&amp;psc=1\">Amazon item</a></li>\r\n</ul>\r\n<h1 id=\"attribution\">Attribution</h1>\r\n<p>The transition sound used between audio clips is found on <a href=\"https://freesound.org/\">freesound.org</a>:<br />\r\nName: <a href=\"https://freesound.org/people/DanJFilms/sounds/529064/\">Harp Transition Music Cue</a><br />\r\nAuthor: <a href=\"https://freesound.org/people/DanJFilms/\">DanJFilms</a><br />\r\nLicense: <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">Creative Commons Zero</a></p>\r\n',293,0,0,'CC-BY-SA','electric lawnmower,lawnmower,rechargeable battery',0,0,1),
(3445,'2021-10-15','True critical thinking seems to be the key',4328,'A response to HPR 3414','<hr>\r\n<h3>Counter Point</h3>\r\n<p>This show is a counter point to: <a href=\"https://hackerpublicradio.org/eps.php?id=3414\">hpr3414 :: Critical Thinking may make You Critical of the Covid Crisis</a>\r\n</p>\r\n<hr />\r\n<h2 id=\"a-response-to-critical-thinking-may-make-you-critical-of-the-covid-crisis\">A response to <em>Critical Thinking may make You Critical of the Covid Crisis</em></h2>\r\n<p><strong>(HPR episode 3414, produced by CoGo and released on 2021-09-02)</strong></p>\r\n<h2 id=\"defining-terms\">Defining terms</h2>\r\n<ul>\r\n<li>What is <em>Critical Thinking</em>?\r\n<ul>\r\n<li>The Wikipedia definition begins: \"<em>Critical thinking is the analysis of facts to form a judgment.</em>\"</li>\r\n<li>It goes on to say: \"<em>The subject is complex, and several different definitions exist, which generally include the rational, skeptical, unbiased analysis, or evaluation of factual evidence.</em>\"</li>\r\n<li>See the references below.</li>\r\n</ul></li>\r\n</ul>\r\n<blockquote>\r\n<p>Note the use of the terms <strong>fact</strong>, <strong>factual evidence</strong> and <strong>unbiased analysis</strong>. It is my contention that HPR episode 3414 fails in these regards in several places.</p>\r\n</blockquote>\r\n<ul>\r\n<li>What is an \"<em>experiment</em>\"?\r\n<ul>\r\n<li>Wikipedia’s definition begins: \"<em>An experiment is a procedure carried out to support or refute a hypothesis. Experiments provide insight into cause-and-effect by demonstrating what outcome occurs when a particular factor is manipulated.</em>\"</li>\r\n</ul></li>\r\n</ul>\r\n<blockquote>\r\n<p>The term <strong>experiment</strong> is often used incorrectly in episode 3414. A better term would be <strong>observation</strong> or <strong>anecdote</strong></p>\r\n</blockquote>\r\n<ul>\r\n<li>The virus:\r\n<ul>\r\n<li>The virus is a <em>coronavirus</em>. There are many viruses classified in this way.</li>\r\n<li>The name of the virus is <em>SARS-CoV-2</em>. The <em>SARS</em> part stands for <em>Severe Acute Respiratory Syndrome</em>, the type of disease caused by the virus. <em>CoV</em> signifies that it is a <em>coronavirus</em> and the <em>2</em> means it’s the second SARS-type corona virus to have caused problems in the recent past. The other one, just called <em>SARS</em> occurred in 2003.</li>\r\n<li>The name of the disease caused by SARS-CoV-2 is <em>COVID-19</em>. The letters <em>COVID</em> define it as a coronavirus disease. The <em>19</em> part is because it was first discovered in 2019.</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li><strong>References</strong>:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Critical_thinking\" title=\"Wikipedia article: Critical thinking\">Wikipedia article on Critical Thinking</a></li>\r\n<li><a href=\"https://www.gre.ac.uk/articles/ils/critical-thinking\" title=\"University of Greenwich article. What is critical thinking?\">University of Greenwich: What is critical thinking?</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Experiment\" title=\"Wikipedia article: Experiment\">Wikipedia article on Experiments</a></li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>Follow this link to <a href=\"https://hackerpublicradio.org/eps/hpr3445/full_shownotes.html\">read the detailed notes</a> associated with this episode.</p>\r\n<h2 id=\"collected-references\">Collected references:</h2>\r\n<ol type=\"1\">\r\n<li>Wikipedia article: Critical thinking:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Critical_thinking\">https://en.wikipedia.org/wiki/Critical_thinking</a></li>\r\n</ul></li>\r\n<li>University of Greenwich article. What is critical thinking?:\r\n<ul>\r\n<li><a href=\"https://www.gre.ac.uk/articles/ils/critical-thinking\">https://www.gre.ac.uk/articles/ils/critical-thinking</a></li>\r\n</ul></li>\r\n<li>Wikipedia article: Experiment:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Experiment\">https://en.wikipedia.org/wiki/Experiment</a></li>\r\n</ul></li>\r\n<li>Where does the six-foot guideline for social distancing come from?:\r\n<ul>\r\n<li><a href=\"https://qz.com/1831100/where-does-the-six-feet-social-distancing-guideline-come-from/\">https://qz.com/1831100/where-does-the-six-feet-social-distancing-guideline-come-from/</a></li>\r\n</ul></li>\r\n<li>Wikipedia article: Social distancing:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Social_distancing\">https://en.wikipedia.org/wiki/Social_distancing</a></li>\r\n</ul></li>\r\n<li>How effective is a mask in preventing COVID‐19 infection?:\r\n<ul>\r\n<li><a href=\"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7883189/\">https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7883189/</a></li>\r\n</ul></li>\r\n<li>Why Masks Work BETTER Than You’d Think:\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/watch?v=Y47t9qLc9I4\">https://www.youtube.com/watch?v=Y47t9qLc9I4</a></li>\r\n</ul></li>\r\n<li>Coronavirus disease (COVID-19): Ventilation and air conditioning:\r\n<ul>\r\n<li><a href=\"https://www.who.int/news-room/q-a-detail/coronavirus-disease-covid-19-ventilation-and-air-conditioning\">https://www.who.int/news-room/q-a-detail/coronavirus-disease-covid-19-ventilation-and-air-conditioning</a></li>\r\n</ul></li>\r\n<li>Ventilation and air conditioning during the coronavirus (COVID-19) pandemic:\r\n<ul>\r\n<li><a href=\"https://www.hse.gov.uk/coronavirus/equipment-and-machinery/air-conditioning-and-ventilation/index.htm\">https://www.hse.gov.uk/coronavirus/equipment-and-machinery/air-conditioning-and-ventilation/index.htm</a></li>\r\n</ul></li>\r\n<li>False Perception of COVID-19’s Impact on the Homeless:\r\n<ul>\r\n<li><a href=\"https://www.factcheck.org/2020/05/false-perception-of-covid-19s-impact-on-the-homeless/\">https://www.factcheck.org/2020/05/false-perception-of-covid-19s-impact-on-the-homeless/</a></li>\r\n</ul></li>\r\n<li>Vitamin D3 as Potential Treatment Adjuncts for COVID-19:\r\n<ul>\r\n<li><a href=\"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7697253/\">https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7697253/</a></li>\r\n</ul></li>\r\n<li>Graphic Outbreak of severe acute respiratory syndrome in Hong Kong Special Administrative Region: case report:\r\n<ul>\r\n<li><a href=\"https://www.bmj.com/content/326/7394/850\">https://www.bmj.com/content/326/7394/850</a></li>\r\n</ul></li>\r\n<li>Response to - Graphic Outbreak of severe acute respiratory syndrome in Hong Kong Special Administrative Region: case report:\r\n<ul>\r\n<li><a href=\"https://www.bmj.com/rapid-response/2011/10/29/coronavirus-may-be-killed-higher-body-temperature\">https://www.bmj.com/rapid-response/2011/10/29/coronavirus-may-be-killed-higher-body-temperature</a></li>\r\n</ul></li>\r\n<li>Childhood Vaccination and the NHS:\r\n<ul>\r\n<li><a href=\"https://peopleshistorynhs.org/encyclopaedia/childhood-vaccination-and-the-nhs/\">https://peopleshistorynhs.org/encyclopaedia/childhood-vaccination-and-the-nhs/</a></li>\r\n</ul></li>\r\n<li>COVID-19 false dichotomies and a comprehensive review of the evidence regarding public health, COVID-19 symptomatology, SARS-CoV-2 transmission, mask wearing, and reinfection:\r\n<ul>\r\n<li><a href=\"https://bmcinfectdis.biomedcentral.com/articles/10.1186/s12879-021-06357-4\">https://bmcinfectdis.biomedcentral.com/articles/10.1186/s12879-021-06357-4</a></li>\r\n</ul></li>\r\n<li>Coronavirus (COVID-19) vaccines side effects and safety:\r\n<ul>\r\n<li><a href=\"https://www.nhs.uk/conditions/coronavirus-covid-19/coronavirus-vaccination/safety-and-side-effects/\">https://www.nhs.uk/conditions/coronavirus-covid-19/coronavirus-vaccination/safety-and-side-effects/</a></li>\r\n</ul></li>\r\n<li>TWiV 802: \"Another epitope with Shane Crotty\":\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/watch?v=nEB4oxO9F1A\">https://www.youtube.com/watch?v=nEB4oxO9F1A</a></li>\r\n</ul></li>\r\n<li>UK parliament discussion on 2m rule.\r\n<ul>\r\n<li><a href=\"https://hansard.parliament.uk/Commons/2020-06-15/debates/AE7AB431-1668-4AAA-AA32-8A0B83124D30/details\">https://hansard.parliament.uk/Commons/2020-06-15/debates/AE7AB431-1668-4AAA-AA32-8A0B83124D30/details</a></li>\r\n</ul></li>\r\n<li>Government minister retracts mask claim.\r\n<ul>\r\n<li><a href=\"https://www.holyrood.com/news/view,john-swinney-apologises-for-sharing-covid-face-mask-graphic\">https://www.holyrood.com/news/view,john-swinney-apologises-for-sharing-covid-face-mask-graphic</a></li>\r\n</ul></li>\r\n<li>Nature paper on masks and aerosols.\r\n<ul>\r\n<li><a href=\"https://www.nature.com/articles/s41598-020-72798-7\">https://www.nature.com/articles/s41598-020-72798-7</a></li>\r\n</ul></li>\r\n<li>Our World in Data.\r\n<ul>\r\n<li><a href=\"https://ourworldindata.org/covid-cases\">https://ourworldindata.org/covid-cases</a></li>\r\n</ul></li>\r\n<li>Nature paper on COVID-19 and T cells.\r\n<ul>\r\n<li><a href=\"https://www.nature.com/articles/s41586-020-2550-z\">https://www.nature.com/articles/s41586-020-2550-z</a></li>\r\n</ul></li>\r\n<li>Antibody waning and COVID-19.\r\n<ul>\r\n<li><a href=\"https://www.ouh.nhs.uk/covid-19/news/article.aspx?id=1415\">https://www.ouh.nhs.uk/covid-19/news/article.aspx?id=1415</a></li>\r\n</ul></li>\r\n</ol>\r\n',225,100,1,'CC-BY-SA','COVID-19,social distancing,masks,aerosol,Vitamin D3,body temperature,vaccines',0,0,1),
(3444,'2021-10-14','The Psion series 5mx',1178,'A show where I talk about my experiences of the Psion 5mx, a portable computer from the late 90s','<p>The psion series 5mx is a portable computer from the late 90s, here\'s my episode talking about it.</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Psion_Series_5\" class=\"uri\">https://en.wikipedia.org/wiki/Psion_Series_5</a></li>\r\n<li>PLPTools (syncing with modern linux): <a href=\"https://github.com/rrthomas/plptools\" class=\"uri\">https://github.com/rrthomas/plptools</a></li>\r\n<li>Nconvert (file converter): <a href=\"https://web.archive.org/web/20161130192611/https://neuon.com/downloads/nconvert/\" class=\"uri\">https://web.archive.org/web/20161130192611/https://neuon.com/downloads/nconvert/</a></li>\r\n<li>Programming book: <a href=\"https://archive.org/details/book_20210531\" class=\"uri\">https://archive.org/details/book_20210531</a></li>\r\n<li>psion linux SDK: <a href=\"https://github.com/static-void/psion_cpp_sdk_linux.git\" class=\"uri\">https://github.com/static-void/psion_cpp_sdk_linux.git</a></li>\r\n<li>Eric Lindsey\'s site, with lots of psion software: <a href=\"https://ericlindsay.com/epoc/index.htm\" class=\"uri\">https://ericlindsay.com/epoc/index.htm</a></li>\r\n</ul>\r\n<p>Apologies for talking quickly!</p>',381,0,0,'CC-BY-SA','retro, psion, programming, pdas',0,0,1),
(3452,'2021-10-26','Neuton battery test',324,'Rho`n describes testing the battery in his Neuton EM 4.1 electric lawn mower','<h2 id=\"introduction\">Introduction</h2>\r\n<p>On today\'s show I test whether the battery replacement for my Neuton mower is a success. This is a follow up to <a href=\"https://hackerpublicradio.org/eps.php?id=3443\">episode 3443</a>. After some audio recording difficulties with the blue tooth headset I used with my phone, we hear if the replacement was successful. Before I could test the battery, I needed to replace the mower key. I think it would have been simple to just jump the terminals with a wire and maybe some alligator clips to hold the wire to the key terminals, but I was worried this would not guarantee the wire shaking loose as I moved. I looked on EBay and found a replacement key for about fifteen dollars US, and decided it was worth the cost and the wait before trying out the mower.</p>\r\n<h2 id=\"testing-the-mower\">Testing the mower</h2>\r\n<p>After putting the key in the mower, pulling and holding the safety levers, and then pressing the start button. The mower wouldn\'t start. I checked the key was set properly, and saw the green LED on the handle lit and indicating that power was available. I pulled the key and battery out, and then reseated both of them, checking once again that the power indicator was lit. After some fooling around with the safety levers and start button, I realized you had to push the start button and then pull and hold the safety levers for the mower to start. The mower runs well, and the cost of the batteries and key will even out over time from the savings on not paying for a lawn service.</p>\r\n<h2 id=\"references\">References</h2>\r\n<ul>\r\n<li>DR Neuton Cordless Walk Behind 14\" Lawn Mower CE2 CE3 CE5 Reset Security Key - <a href=\"https://www.ebay.com/itm/184176055409?ViewItem=&amp;item=184176055409\">EBay item</a></li>\r\n</ul>\r\n<h2 id=\"attribution\">Attribution</h2>\r\n<p>The transition sound used between audio clips is found on <a href=\"https://freesound.org/\">freesound.org</a>:<br />\r\nName: <a href=\"https://freesound.org/people/DanJFilms/sounds/529064/\">Harp Transition Music Cue</a><br />\r\nAuthor: <a href=\"https://freesound.org/people/DanJFilms/\">DanJFilms</a><br />\r\nLicense: <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">Creative Commons Zero</a></p>',293,0,0,'CC-BY-SA','electric lawnmower,lawnmower,rechargeable battery',0,0,1),
(3447,'2021-10-19','BlacKernel\'s Journey Into Technology: Episode 2',1249,'In which BlacKernel struggles to talk about Windows','<h2>Talking Points</h2>\r\n<ul>\r\n	<li>W*ndows Power User\r\n	<ul>\r\n		<li>Programmed a few Visual BASIC programs, but was underwhelmed with how BASIC the programming language was</li>\r\n		<li>Tried installing Python and Ruby to much frustration</li>\r\n		<li>Tried installing Cygw*n to make Python/Ruby easier to work with</li>\r\n		<li>Read on the Cygw*n site about something called <b><a href=\"#show-notes\">Linux</a></b></li>\r\n		<li>Started working with C and C++</li>\r\n	</ul></li>\r\n	<li>Customizing my deck\r\n	<ul>\r\n		<li>Tried to customize as much as I could about my W*ndows install</li>\r\n		<li>Utilized tools to change the boot logo, the start menu, the init scripts, etc.</li>\r\n		<li>Hit a few snags with problems boot-looping, not loading graphically, etc</li>\r\n		<li>Tried editing the W*ndows registry and realized that the programs I was using to edit the operating system necessarily break the security and stability of the OS</li>\r\n		<li>Didn\'t really know/care about open source, but was getting frustrated that I wasn\'t able to just reach in to my system\'s code to fix it.</li>\r\n	</ul></li>\r\n</ul>\r\n\r\n<hr>\r\n\r\n<h2 id=\"show-notes\">Show Notes</h2>\r\n<h4>Important Links:</h4>\r\n<ul>\r\n	<li>I couldn\'t really find any of the stuff that I used and, at this point, I\'m not super motivated to find them.</li>\r\n</ul>\r\n\r\n<h4>Wikipedia Articles:</h4>\r\n<ul>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/Thomas_Hobbes\">https://en.wikipedia.org/wiki/Thomas_Hobbes</a></li>\r\n</ul>\r\n\r\n\r\n<hr>\r\n\r\n<i>Contact Me</i>\r\n<ul>\r\n<li><b>Email: </b><a href=\"mailto:izzyleibowitz@pm.me\">izzyleibowitz at pm dot me</a></li>\r\n<li><b>Mastodon: </b><a href=\"https://nixnet.social/BlacKernel\">at blackernel at nixnet dot social</a></li>\r\n</ul>\r\n\r\n',396,0,1,'CC-BY-SA','technology, windows, w*ndows, losedows, introductions, linux, dos',0,0,1),
(3449,'2021-10-21','Linux Inlaws S01E41: The Halloween Documents',3956,'The Halloween Documents','<p>In this infomercial on Microsoft, our hosts discuss the infamous Halloween\r\ndocuments (\'tis the season after all), a set of ancient scrolls dating back\r\nmore than twenty years and giving an overview of the behemoth\'s then strategy\r\non open source and how to possibly combat it. But fear not, ye of little faith\r\n:-), all is well now as the episode shows also the long way Microsoft has come\r\nsince then and its adoption (and giving back!) as an enterprise technology.</p>\r\n\r\n<p>Plus: How to increase your market cap by using FLOSS. And last but not least:\r\nThe Dark Side is back by popular demand!  With a special episode on the usual\r\nHalloween stuff including vampires, Transylvania, politicians, QAnon, Zoom,\r\nTeams and other horror topics (Ever wondered what happened to Angela Merkel\r\nafter she stepped down as Germany\'s chancelorette in 2021? Then don\'t miss out\r\non this episode!).</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Little Britain: <a href=\"https://www.bbc.co.uk/programmes/b006q2zd\" target=_blank>https://www.bbc.co.uk/programmes/b006q2zd</a></li>\r\n<li>SCO Group: <a href=\"https://en.wikipedia.org/wiki/SCO_Group\" target=_blank>https://en.wikipedia.org/wiki/SCO_Group</a></li>\r\n<li>SCO vs. IBM: <a href=\"https://en.wikipedia.org/wiki/SCO_Group,_Inc._v._International_Business_Machines_Corp.\" target=_blank>https://en.wikipedia.org/wiki/SCO_Group,_Inc._v._International_Business_Machines_Corp.</a></li>\r\n<li>Halloween documents: <a href=\"https://en.wikipedia.org/wiki/Halloween_documents\" target=_blank>https://en.wikipedia.org/wiki/Halloween_documents</a></li>\r\n<li>Microsoft and open source: <a href=\"https://en.wikipedia.org/wiki/Microsoft_and_open_source\" target=_blank>https://en.wikipedia.org/wiki/Microsoft_and_open_source</a></li>\r\n<li>Monsters of Man: <a href=\"https://www.imdb.com/title/tt6456326\" target=_blank>https://www.imdb.com/title/tt6456326</a></li>\r\n<li>Breeders: <a href=\"https://en.wikipedia.org/wiki/Breeders_(TV_series)\" target=_blank>https://en.wikipedia.org/wiki/Breeders_(TV_series)</a></li>\r\n<li>Permanent penis for the Welsh Dragon: <a href=\"https://www.dailymail.co.uk/news/article-9932657/Hilarious-campaigners-demand-famous-red-dragon-given-permanent-penis-Welsh-flags.html\" target=_blank>https://www.dailymail.co.uk/news/article-9932657/Hilarious-campaigners-demand-famous-red-dragon-given-permanent-penis-Welsh-flags.html</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Microsoft, Google, The Dark Side, Halloween, Transylvania, Carmesine-colored Soy Milk, vegan vampire',0,0,1),
(3471,'2021-11-22','The Sony Walkman WM-F41',531,'A quick talk about one of my favorite Legacy Audio devices, a genuine Sony FM/AM cassette Walkman.','<p>This episode is just a quick talk about one of my favorite legacy audio devices, my Sony FM/AM cassette Walkman, model WM-F41.</p>\r\n\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n<li><a href=\"https://retrospekt.com/products/sony-walkman-wm-f31-f41\">Sony Walkman WM-F41</a></li>\r\n<li><a href=\"https://www.behringer.com/product.html?modelCode=P0576\">Behringer Xenyx 502 Mixer</a></li>\r\n<li>Music is from Kimiko Ishizaka\'s <em>The Open Art of Fugue</em>: <a href=\"https://music.kimiko-piano.com/album/j-s-bach-the-art-of-the-fugue-kunst-der-fuge-bwv-1080\">https://music.kimiko-piano.com/album/j-s-bach-the-art-of-the-fugue-kunst-der-fuge-bwv-1080</a>, used by permission of its <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0 1.0 Universal (CC0 1.0) Public Domain Dedication license</a>.</li>\r\n</ul>\r\n\r\n',238,0,0,'CC-BY-SA','audio, vintage audio, cassette tapes, tape players, portable stereos, audio repair',0,0,1),
(3468,'2021-11-17','Distro upgrade intervals on my Raspberry Pi',786,'In this episode I discuss Debian distro upgrade intervals for my raspberry Pi','<h2 id=\"a-discussion-about-debian-lts-distro-upgrade-intervals-on-my-raspberry-pi\">A discussion about Debian LTS distro upgrade intervals on my Raspberry Pi</h2>\r\n<h3 id=\"relevant-links-below\">Relevant links below</h3>\r\n<p><a href=\"https://wiki.debian.org/DebianReleases\">Debian release information</a></p>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=3266\">My previous episode from last year where I covered the upgrade on my raspberry Pi from Debian Jessie 8 to Stretch 9</a></p>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=2901\">A previous episode where I describe my raspberry Pi add-on board and what I use it for</a></p>\r\n',201,0,1,'CC-BY-SA','Linux, Distros, Raspberry Pi, Debian',0,0,1),
(3741,'2022-12-05','HPR Community News for November 2022',3276,'HPR Volunteers talk about shows released and comments posted in November 2022','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0414.html\" target=\"_blank\">Kinghezy</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=3717\" target=\"_blank\">3717</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-11-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3717\" target=\"_blank\">Video editing with Shotcut on a low end PC</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=3718\" target=\"_blank\">3718</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-11-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3718\" target=\"_blank\">Making Ansible playbooks to configure Single Sign On for popular open source applications</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3719\" target=\"_blank\">3719</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-11-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3719\" target=\"_blank\">HPR News</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=3720\" target=\"_blank\">3720</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-11-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3720\" target=\"_blank\">Practicing Batch Files With ECHO</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=3721\" target=\"_blank\">3721</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-11-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3721\" target=\"_blank\">HPR Community News for October 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3722\" target=\"_blank\">3722</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-11-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3722\" target=\"_blank\">Bash snippet - plurals in messages</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=3723\" target=\"_blank\">3723</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-11-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3723\" target=\"_blank\">HPR News</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=3724\" target=\"_blank\">3724</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-11-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3724\" target=\"_blank\">My top Android apps</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=3725\" target=\"_blank\">3725</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-11-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3725\" target=\"_blank\">How to use OSMAnd with Public Transport </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=3726\" target=\"_blank\">3726</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-11-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3726\" target=\"_blank\">Breaches ever reaching</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3727\" target=\"_blank\">3727</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-11-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3727\" target=\"_blank\">Expanding your filesystem with LVM</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=3728\" target=\"_blank\">3728</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-11-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3728\" target=\"_blank\">Pinebook Pro review</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3729\" target=\"_blank\">3729</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-11-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3729\" target=\"_blank\">Contributing to SuperTuxKart</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0407.html\" target=\"_blank\">Celeste</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3730\" target=\"_blank\">3730</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-11-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3730\" target=\"_blank\">Into Arizona</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=3731\" target=\"_blank\">3731</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-11-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3731\" target=\"_blank\">Speech recognition in Kdenlive</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3732\" target=\"_blank\">3732</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-11-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3732\" target=\"_blank\">My experience owning an Atari Jaguar</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0412.html\" target=\"_blank\">m0dese7en</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3733\" target=\"_blank\">3733</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-11-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3733\" target=\"_blank\">Smite</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=3734\" target=\"_blank\">3734</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-11-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3734\" target=\"_blank\">Inetd: the internet super-server</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3735\" target=\"_blank\">3735</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-11-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3735\" target=\"_blank\">i3 Tiling Window Manager</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=3736\" target=\"_blank\">3736</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-11-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3736\" target=\"_blank\">Metasyntactic words</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=3737\" target=\"_blank\">3737</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-11-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3737\" target=\"_blank\">Review of KOBO Libra H20 e-reader</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=3738\" target=\"_blank\">3738</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-11-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3738\" target=\"_blank\">Intro to KMyMoney</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0414.html\" target=\"_blank\">Kinghezy</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 6 comments on\n5 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3698#comments\" target=\"_blank\">hpr3698</a></strong>\n(2022-10-05) \"<em>Spectrogram</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=3698#2\" target=\"_blank\">Comment 2</a>:\nMrX on 2022-11-04:\n\"What a great tip\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3705#comments\" target=\"_blank\">hpr3705</a></strong>\n(2022-10-14) \"<em>The Year of the FreeBSD Desktop</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3705#3\" target=\"_blank\">Comment 3</a>:\nbinrc on 2022-11-03:\n\"additional links\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3711#comments\" target=\"_blank\">hpr3711</a></strong>\n(2022-10-24) \"<em>Cars</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=3711#2\" target=\"_blank\">Comment 2</a>:\ndnt on 2022-11-09:\n\"pedestrians and cyclists\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3714#comments\" target=\"_blank\">hpr3714</a></strong>\n(2022-10-27) \"<em>The News with Some Guy On the Internet</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=3714#5\" target=\"_blank\">Comment 5</a>:\nDave Morriss on 2022-11-02:\n\"Beautifully done!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3715#comments\" target=\"_blank\">hpr3715</a></strong>\n(2022-10-28) \"<em>Secret hat conversations, Part 2.</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=3715#3\" target=\"_blank\">Comment 3</a>:\nDave Morriss on 2022-11-02:\n\"A very interesting discussion\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3715#4\" target=\"_blank\">Comment 4</a>:\nDeepGeek on 2022-11-03:\n\"Phone, Tiling wm,\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 19 comments on 12 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3719#comments\" target=\"_blank\">hpr3719</a></strong>\n(2022-11-03) \"<em>HPR News</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=3719#1\" target=\"_blank\">Comment 1</a>:\nmike M. on 2022-11-04:\n\"Another form of typosquatting\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3721#comments\" target=\"_blank\">hpr3721</a></strong>\n(2022-11-07) \"<em>HPR Community News for October 2022</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3721#1\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2022-11-07:\n\"Weirdos\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3722#comments\" target=\"_blank\">hpr3722</a></strong>\n(2022-11-08) \"<em>Bash snippet - plurals in messages</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=3722#1\" target=\"_blank\">Comment 1</a>:\nrho`n on 2022-11-11:\n\"Great tip!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3722#2\" target=\"_blank\">Comment 2</a>:\nDave Morriss on 2022-11-16:\n\"Thanks rho`n\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3725#comments\" target=\"_blank\">hpr3725</a></strong>\n(2022-11-11) \"<em>How to use OSMAnd with Public Transport </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=3725#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2022-11-14:\n\"Useful and timely\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3726#comments\" target=\"_blank\">hpr3726</a></strong>\n(2022-11-14) \"<em>Breaches ever reaching</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3726#1\" target=\"_blank\">Comment 1</a>:\nhammerron on 2022-11-15:\n\"Old LiveJournal\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3727#comments\" target=\"_blank\">hpr3727</a></strong>\n(2022-11-15) \"<em>Expanding your filesystem with LVM</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3727#1\" target=\"_blank\">Comment 1</a>:\nZen_floater2 on 2022-11-18:\n\"Love server problems\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3728#comments\" target=\"_blank\">hpr3728</a></strong>\n(2022-11-16) \"<em>Pinebook Pro review</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3728#1\" target=\"_blank\">Comment 1</a>:\nZen_floater2 on 2022-11-18:\n\"I liked this show.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3728#2\" target=\"_blank\">Comment 2</a>:\none_of_spoons on 2022-11-21:\n\"Programmable ROM.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3728#3\" target=\"_blank\">Comment 3</a>:\nb on 2022-11-24:\n\"rockchip\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3728#4\" target=\"_blank\">Comment 4</a>:\nsunzu on 2022-11-26:\n\"available distros\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3729#comments\" target=\"_blank\">hpr3729</a></strong>\n(2022-11-17) \"<em>Contributing to SuperTuxKart</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0407.html\" target=\"_blank\">Celeste</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3729#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2022-11-17:\n\"Car rambling\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3730#comments\" target=\"_blank\">hpr3730</a></strong>\n(2022-11-18) \"<em>Into Arizona</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=3730#1\" target=\"_blank\">Comment 1</a>:\nClinton Roy on 2022-11-19:\n\"Dam?\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3731#comments\" target=\"_blank\">hpr3731</a></strong>\n(2022-11-21) \"<em>Speech recognition in Kdenlive</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3731#1\" target=\"_blank\">Comment 1</a>:\nCeleste on 2022-11-21:\n\"didn\'t know the feature\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3731#2\" target=\"_blank\">Comment 2</a>:\ndnt on 2022-11-22:\n\"re: both libre/opensource\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3733#comments\" target=\"_blank\">hpr3733</a></strong>\n(2022-11-23) \"<em>Smite</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=3733#1\" target=\"_blank\">Comment 1</a>:\nLurking Prion on 2022-11-23:\n\"Let\'s do a show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3733#2\" target=\"_blank\">Comment 2</a>:\nSome Guy On The Internet on 2022-11-24:\n\"Sure\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3734#comments\" target=\"_blank\">hpr3734</a></strong>\n(2022-11-24) \"<em>Inetd: the internet super-server</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3734#1\" target=\"_blank\">Comment 1</a>:\nsinza on 2022-11-24:\n\"Great show!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3734#2\" target=\"_blank\">Comment 2</a>:\nZen_floater2 on 2022-11-27:\n\"loved this\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-November/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-November/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"hpr-rss-feeds-and-https-links\">HPR RSS feeds and https\nlinks</h3>\n<p>A question came up in November regarding the HPR RSS feeds. All of\nthe URLs in these feeds use <code>\'http\'</code> as opposed to\n<code>\'https\'</code>.</p>\n<p>Although this may seem odd, this is a fairly common thing to do,\nbecause the RSS standard (such as it is) does not cater for\n<code>\'https\'</code> links. There is a concern that passing an RSS feed\nwith such links to a validator (such as the <a\nhref=\"https://validator.w3.org/feed/\">W3C Feed Validation Service</a>)\nwill result in it being marked as invalid.</p>\n<h3 id=\"older-hpr-shows-on-archive.org-phase-2\">Older HPR shows on\narchive.org, phase 2</h3>\n<p>Now that all shows from number 1 to the latest have been uploaded to\nthe Internet Archive there are other tasks to perform. We are\nreprocessing and re-uploading shows in the range 871 to 2429 as\nexplained in the Community News show notes released in <a\nhref=\"http://hackerpublicradio.org/eps.php?id=3586#older-hpr-shows-on-archive.org-phase-2\">May\n2022</a>. We are keeping a running total here to show progress:</p>\n<!-- . -->\n<table>\n<tr>\n<th>\nMonth\n</th>\n<th>\nMonth count\n</th>\n<th>\nRunning total\n</th>\n<th>\nRemainder\n</th>\n</tr>\n<tr>\n<td>\n2022-04\n</td>\n<td>\n130\n</td>\n<td>\n130\n</td>\n<td>\n1428\n</td>\n</tr>\n<tr>\n<td>\n2022-05\n</td>\n<td>\n140\n</td>\n<td>\n270\n</td>\n<td>\n1288\n</td>\n</tr>\n<tr>\n<td>\n2022-06\n</td>\n<td>\n150\n</td>\n<td>\n420\n</td>\n<td>\n1138\n</td>\n</tr>\n<tr>\n<td>\n2022-07\n</td>\n<td>\n155\n</td>\n<td>\n575\n</td>\n<td>\n983\n</td>\n</tr>\n<tr>\n<td>\n2022-08\n</td>\n<td>\n155\n</td>\n<td>\n730\n</td>\n<td>\n828\n</td>\n</tr>\n<tr>\n<td>\n2022-09\n</td>\n<td>\n150\n</td>\n<td>\n880\n</td>\n<td>\n678\n</td>\n</tr>\n<tr>\n<td>\n2022-10\n</td>\n<td>\n155\n</td>\n<td>\n1035\n</td>\n<td>\n523\n</td>\n</tr>\n<tr>\n<td>\n2022-11\n</td>\n<td>\n230\n</td>\n<td>\n1265\n</td>\n<td>\n293\n</td>\n</tr>\n</table>\n\n<p><small><small>Updated: 2022-12-03 16:10:11</small></small></p>\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3464,'2021-11-11','Being irrational',777,'Being irrational is rational.','<p>When listening to <a href=\"https://hackerpublicradio.org/eps.php?id=3442\">HPR 3442</a> by Klaatu, which I recommend, some thoughts about how we think started rattling about in my head. In this show I riff on that and talk about the importance of our irrational mode of thought.</p>\r\n',268,0,0,'CC-BY-SA','philosophy,mathematics,science,chess,logic,music',0,0,1),
(3465,'2021-11-12','Walmart Onn 7 inch tablet gen 2',863,'Podcast about a new Android go Tablet I purchased ','<p>Just a basic podcast about a tablet.</p>\r\n<p><a href=\"https://www.walmart.com/ip/onn-7-Tablet/930669857\">https://www.walmart.com/ip/onn-7-Tablet/930669857</a></p>\r\n',129,0,0,'CC-BY-SA','Walmart, Android Go, Tablet',0,0,1),
(3466,'2021-11-15','Why HPR has less downloads',551,'A short summary on why podcast listening might be on decline.','<p>I did a show about why I do not listen to non-mainstream podcasts as much as I used to. For me two things happened: I switched from being in the car for 16 hours a week to being a remote sales person at home. So the 16 hours I listened to podcasts every week in the car went away. The second reason I reduced was that many of the podcasts I was listening to were presented by people who do not share my values. So I stopped listening to them. The third reason I listen less is the Army opened up the online book library to retired service members and I do a lot of audio books in the moment.</p>\r\n',129,0,0,'CC-BY-SA','podcasts, dowloads',0,0,1),
(3469,'2021-11-18','Linux Inlaws S01E43: The Great Battle or not',4138,'The Great Battle nor Not','<p>In this episode Martin and one of the Grumpies (as in Grumpy Old Coders)\r\nbattle it out: SQL or NoSQL - which technology is better? If you ever wondered\r\nwhy the Structured Query Language was invented in the first place and why the\r\nhipster abandoned ship for the latest (?) rage of the likes of the NoSQL\r\nvariety, this is for you. Plus: A whole family of never-heard-of sound effects\r\nmake their debut on this bumper of an episode.</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>SQL: <a href=\"https://www.iso.org/standard/63555.html\" target=_blank>https://www.iso.org/standard/63555.html</a></li>\r\n<li>NoSQL: <a href=\"https://en.wikipedia.org/wiki/NoSQL\" target=_blank>https://en.wikipedia.org/wiki/NoSQL</a></li>\r\n<li>NoSQL Geek: <a href=\"https://www.nosqlgeek.org\" target=_blank>https://www.nosqlgeek.org</a></li>\r\n<li>ACID compliance: <a href=\"https://en.wikipedia.org/wiki/ACID\" target=_blank>https://en.wikipedia.org/wiki/ACID</a></li>\r\n<li>redis: <a href=\"https://github.com/redis/redis\" target=_blank>https://github.com/redis/redis</a></li>\r\n<li>CAP theorem: <a href=\"https://en.wikipedia.org/wiki/CAP_theorem\" target=_blank>https://en.wikipedia.org/wiki/CAP_theorem</a></li>\r\n<li>TorroDB: <a href=\"https://github.com/gordol/torrodb-server\" target=_blank>https://github.com/gordol/torrodb-server</a></li>\r\n<li>Grumpy Old Coders episode on the Dark Side: <a href=\"https://soundcloud.com/user-498377588/grumpy-old-coders-ep-11-the-dark-side\" target=_blank>https://soundcloud.com/user-498377588/grumpy-old-coders-ep-11-the-dark-side</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','SQL, NoSQL, Grumpy Old Coders, Hipster databases, mainframes, Execution planners',0,0,1),
(3448,'2021-10-20','Installing GuixSD',2679,'Rho`n records installing GuixSD to an external USB drive to be run on a Mac Mini computer','<h2>Synopsis</h2>\r\n\r\n<p>In this episode Rho`n records his adventure in installing GuixSD on an external USB drive which will be run on a Mac Mini computer. After overcoming the initial difficulty of finding a keyboard that would connect wirelessly to the Mac Mini while using the Guix installer and some network difficulties, he describes the installation steps.</p>\r\n\r\n<p>Guix has a graphical text based installer. It is reminiscent of the mid to late 90s Debian installers. Even with its old school feel, the installer is very nice. It is well laid out, has good onscreen description for each step of the installation process, and provides ample configuration selections from language, to to key board layout, to desktop and software selection.</p>\r\n\r\n<h2>References</h2>\r\n\r\n<ul>\r\n	<li><a href=\"https://guix.gnu.org/\">Guix website</a></li>\r\n	<li><a href=\"https://guix.gnu.org/en/manual/en/html_node/System-Installation.html#System-Installation\">Instructions for installing Guix</a> as the main OS</li>\r\n	<li><a href=\"https://www.riitek.com/product/k12x.html\">Rii 2.4G Mini Wireless Keyboard with Touchpad Mouse</a>,Lightweight Portable Wireless Keyboard Controller with USB Receiver Remote Control for Windows/ Mac/ Android/ PC/Tablets/ TV/Xbox/ PS3. X1-Black - <a href=\"https://www.amazon.com/gp/product/B00I5SW8MC/ref=ppx_yo_dt_b_asin_title_o04_s00?ie=UTF8&th=1\">EBay item</a></li>\r\n</ul>\r\n\r\n<h2>Attribution</h2>\r\n\r\n<p>The transition sound used between audio clips is found on <a href=\"https://freesound.org/\">freesound.org</a>:<br>\r\nName: <a href=\"https://freesound.org/people/DanJFilms/sounds/529064/\">Harp Transition Music Cue</a><br>\r\nAuthor: <a href=\"https://freesound.org/people/DanJFilms/\">DanJFilms</a><br>\r\nLicense: <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">Creative Commons Zero</a></p>\r\n',293,0,0,'CC-BY-SA','Guix,GuixSD,installer,install,USB drive,Mac Mini,grub rescue',0,0,1),
(3461,'2021-11-08','Changes to HPR Branding',2441,'Rho\'n, Dave and Ken read the entire email thread related to changing the HPR theme','<p>\r\nWe didn\'t have time to tackle the discussion in last months community news so today we dedicate an entire show to reading out all the comments relating to the HPR Branding.\r\n<br />\r\nSee <a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-October/thread.html\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-October/thread.html</a>\r\n</p>\r\n<p>\r\nYour comments are appreciated !\r\n</p>',159,47,0,'CC-BY-SA','HPR, Branding, Intro, Outro',0,0,1),
(3453,'2021-10-27','Rust 101: Episode 1 - Hello, World!',1348,'In which BlacKernel introduces the cargo tool and goes into detail on the rust hello world program','<h2>Talking Points</h2>\r\n<ul>\r\n	<li>main.rs\r\n	<ul>\r\n		<li>Like main.cpp in C++ or main.c in C</li>\r\n		<li>Tells the compiler which file to start with</li>\r\n		<li>Can link to other \"<i>crates</i>\" and \"<i>modules</i>\"</li>\r\n	</ul></li>\r\n	<li>Cargo.toml\r\n	<ul>\r\n		<li>Keeps track of application metadata</li>\r\n		<li>This includes dependencies!</li>\r\n	</ul></li>\r\n	<li>Functions\r\n	<ul>\r\n		<li>Strictly typed, like everything in Rust</li>\r\n		<li>Declared by <code>fn</code></li>\r\n		<li>Argument typed with <code>argument: Type</code></li>\r\n		<li>Return typed with <code>-&gt; Type</code> otherwise assumed to return nothing</li>\r\n	</ul></li>\r\n	<li>The Main Function\r\n	<ul>\r\n		<li>Like the main functions in C and C++</li>\r\n		<li>Where the program starts within the main.rs file</li>\r\n		<li>CLI arguments handled by <code>std::env</code>, rather than <code>argv</code> and <code>argc</code> in C</li>\r\n		<li>Can return nothing or a <code>Result&lt;()&gt;</code></li>\r\n	</ul></li>\r\n	<li>Macros\r\n	<ul>\r\n		<li><i>Metafunctions</i> or functions for functions</li>\r\n		<li>More general than functions, having flexibility in the number of arguments, etc, but harder to write</li>\r\n	</ul></li>\r\n	<li>The println! Macro\r\n	<ul>\r\n		<li>Can take any number of arguments that implement the <code>display</code> trait</li>\r\n		<li>Usually things like strings or character literals</li>\r\n		<li>Will format them into a string and display it on the terminal</li>\r\n		<li>Similar to printf in C</li>\r\n	</ul></li>\r\n	<li>The Hello World program\r\n	<ul>\r\n		<li>Can be automagically generated with <code>cargo new</code> and then the name of your application</li>\r\n		<li>Located in <code>Name-Of-Application/src/main.rs</code></li>\r\n	</ul></li>\r\n\r\n</ul>\r\n\r\n<br>\r\n\r\n<pre>\r\nfn main() {\r\n&emsp;&emsp;println!(\"Hello, world!\");\r\n}\r\n</pre>\r\n\r\n<br>\r\n\r\n\r\n<hr>\r\n\r\n<h2 id=\"show-notes\">Show Notes</h2>\r\n<h4>Important Links:</h4>\r\n<ul>\r\n	<li><a href=\"https://gitlab.com/BlacKernel/rust-101\">Git repo for this miniseries</a></li>\r\n	<li><a href=\"https://doc.rust-lang.org/std/\">The Rust Standard Library</a></li>\r\n	<li><a href=\"https://doc.rust-lang.org/std/macro.format.html\">The format! macro</a></li>\r\n	<li><a href=\"https://doc.rust-lang.org/std/macro.println.html\">The println! macro</a></li>\r\n</ul>\r\n\r\n<h4>Wikipedia Articles:</h4>\r\n<ul>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/Rust_(programming_language)\">The Rust Programming Language</a></li>\r\n</ul>\r\n\r\n<hr>\r\n\r\n<i>Contact Me</i>\r\n<ul>\r\n<li><b>Email: </b><a href=\"mailto:izzyleibowitz@pm.me\">izzyleibowitz at pm dot me</a></li>\r\n<li><b>Mastodon: </b><a href=\"https://nixnet.social/BlacKernel\">at blackernel at nixnet dot social</a></li>\r\n</ul>\r\n\r\n',396,25,1,'CC-BY-SA','rust, programming, hello world, macros, functions',0,0,1),
(3455,'2021-10-29','Podcast Recommendation: IBM and Quantum computing',193,'Highlights of a podcast from Moore\'s Lobby','<h2 id=\"moores-lobby\">Moore\'s Lobby</h2>\r\n<h3 id=\"ep.-34-the-latest-from-the-lab-how-ibm-research-is-inventing-whats-next\">Ep. 34 | The Latest from the Lab: How IBM Research Is Inventing What\'s Next</h3>\r\n<p><a href=\"https://www.allaboutcircuits.com/podcast/ep-34-the-latest-from-the-lab-how-ibm-research-is-inventing-whats-next\" class=\"uri\">https://www.allaboutcircuits.com/podcast/ep-34-the-latest-from-the-lab-how-ibm-research-is-inventing-whats-next</a></p>\r\n<ol type=\"1\">\r\n<li>Rss feed: <a href=\"https://eetech.libsyn.com/rss\" class=\"uri\">https://eetech.libsyn.com/rss</a></li>\r\n<li>Interview with Dr. Jeffrey Welser\r\n<ul>\r\n<li>VP of Exploratory Science at IBM Research</li>\r\n<li>IBM Release first 2nm chip this year</li>\r\n</ul></li>\r\n<li>Engineers vs Scientists and how they drive innovations</li>\r\n<li>Goal to replace the transistor when Moore\'s Law stops scaling</li>\r\n<li>Managing thermal loads</li>\r\n<li>Finding new structures and materials to control current</li>\r\n<li>Neural nets, image recognition and AI</li>\r\n<li>Quantum computing\r\n<ul>\r\n<li>Discussion starts at 34:35 into the podcast</li>\r\n<li>Richard Feynman, Early 80\'s\r\n<ul>\r\n<li><a href=\"https://www.feynman.com\" class=\"uri\">https://www.feynman.com</a></li>\r\n</ul></li>\r\n<li>qubits\r\n<ul>\r\n<li>superposition state</li>\r\n<li>\"Spooky action at a distance\"</li>\r\n</ul></li>\r\n<li>Encryption\r\n<ul>\r\n<li>Need millions of qubits to break current encryption\r\n<ul>\r\n<li>Only currently over 100 qubits</li>\r\n<li>At least a decade from having enough qubits</li>\r\n<li>Currently have classical systems that cannot be broken by quantum computers\r\n<ul>\r\n<li>The math does not map onto a quantum system</li>\r\n<li>Currently working with NIST to create quantum safe cryptography\r\n<ul>\r\n<li><a href=\"https://csrc.nist.gov/Projects/Cryptographic-Standards-and-Guidelines\" class=\"uri\">https://csrc.nist.gov/Projects/Cryptographic-Standards-and-Guidelines</a></li>\r\n</ul></li>\r\n</ul></li>\r\n</ul></li>\r\n</ul></li>\r\n<li>Quantum chemistry</li>\r\n<li>Quantum chip - cooling and superconducting\r\n<ul>\r\n<li>Dilution refrigerator\r\n<ul>\r\n<li>Low temperature and pressure</li>\r\n<li>Top is 4 Kelvin, bottom gets to 15 milli Kelvin</li>\r\n<li><a href=\"https://phys.org/news/2019-06-superconducting-quantum-refrigerator.html\" class=\"uri\">https://phys.org/news/2019-06-superconducting-quantum-refrigerator.html</a></li>\r\n<li><a href=\"https://www.nist.gov/si-redefinition/kelvin-introduction\" class=\"uri\">https://www.nist.gov/si-redefinition/kelvin-introduction</a></li>\r\n</ul></li>\r\n</ul></li>\r\n<li>Josephson junction\r\n<ul>\r\n<li>It is the reference Volt as defined by NIST</li>\r\n<li><a href=\"https://www.sciencedirect.com/topics/physics-and-astronomy/josephson-junctions\" class=\"uri\">https://www.sciencedirect.com/topics/physics-and-astronomy/josephson-junctions</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Josephson_voltage_standard\" class=\"uri\">https://en.wikipedia.org/wiki/Josephson_voltage_standard</a></li>\r\n</ul></li>\r\n<li>Use an IBM quantum computer online\r\n<ul>\r\n<li>May 2016 the first quantum computer was put on the \'Net\r\n<ul>\r\n<li><a href=\"https://quantum-computing.ibm.com\" class=\"uri\">https://quantum-computing.ibm.com</a></li>\r\n<li><a href=\"https://newsroom.ibm.com/2016-05-03-IBM-Makes-Quantum-Computing-Available-on-IBM-Cloud-to-Accelerate-Innovation\" class=\"uri\">https://newsroom.ibm.com/2016-05-03-IBM-Makes-Quantum-Computing-Available-on-IBM-Cloud-to-Accelerate-Innovation</a></li>\r\n<li>300,000 users</li>\r\n<li><a href=\"https://qiskit.org/documentation\" class=\"uri\">https://qiskit.org/documentation</a>\r\n<ul>\r\n<li>Qiskit is open-source software for working with quantum computers at the level of circuits, pulses, and algorithms.</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul></li>\r\n</ul></li>\r\n</ol>\r\n',318,0,0,'CC-BY-SA','podcast, moore\'s law, quantum computing, qubits, encryption, cryptography, NIST, Josephson junction',0,0,1),
(3463,'2021-11-10','Clonezilla: A backup story',2046,'Rho`n walks through the process of backing  up his laptop with Clonezilla','<h2>Notes on the audio quality</h2>\r\n<p>I have been looking into the audio quality issues of my shows. I think I have found a solution to them. Unfortunately, this show was recorded before I discovered it.</p>\r\n<h2>Synopsis</h2>\r\n<p>In today\'s episode, I take the audience along my adventure in backing up my laptop\'s hard drives. During recent OS updates, the kernel updates started to fall. In my efforts to resolve the problem, I made things worse &ndash; to the point I decided it was time to reinstall the operating system. To prevent any data loss, I chose Clonezilla to image the drives.</p>\r\n\r\n<p>The Clonezilla Live edition lets you boot into a ncurses menu driven system that walks you through the process of either backing up your hard drives or restoring a Clonezilla backup. Clonezilla backups save space by imaging only the data on your drives (for those filesystems it recognizes &ndash; otherwise it uses <a href=\"#dd\">dd</a> to do a sector-by-sector copy)</p>\r\n\r\n<p>Overall the process was very smooth, and, at the end, I was confident to move forward with wiping my main hard drive and reinstalling the operating system knowing I had a way to restore any lost data.</p>\r\n\r\n<h2>References</h2>\r\n\r\n<ul>\r\n	<li><a href=\"https://clonezilla.org/\">Clonzilla website</a></li>\r\n	<li><a href=\"https://unetbootin.org/\">UNETBOOTIN website</a></li>\r\n	<li><a id=\"dd\" href=\"https://en.wikipedia.org/wiki/Dd_(Unix)\">dd</a>, command line utility for *nix like operating systems</li>\r\n</ul>\r\n\r\n<h2>Attribution</h2>\r\n\r\n<p>The transition sound used between audio clips is found on <a href=\"https://freesound.org/\">freesound.org</a>:<br>\r\nName: <a href=\"https://freesound.org/people/DanJFilms/sounds/529064/\">Harp Transition Music Cue</a><br>\r\nAuthor: <a href=\"https://freesound.org/people/DanJFilms/\">DanJFilms</a><br>\r\nLicense: <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">Creative Commons Zero</a></p>\r\n\r\n',293,0,0,'CC-BY-SA','Clonezilla,backup,backups,cloning,hard drives',0,0,1),
(3454,'2021-10-28','Engineering Notation',736,'Ken runs through the most common Engineering Notation used in HAM radio.','<h1 id=\"engineering-notation\">Engineering Notation</h1>\r\n<h3 id=\"learn-this-table\">Learn this table</h3>\r\n<pre>\r\n giga G 10<sup>9</sup>  1,000,000,000\r\n mega M 10<sup>6</sup>      1,000,000\r\n kilo k 10<sup>3</sup>          1,000\r\n                         1\r\nmilli m 10<sup>−3</sup>             0.001\r\nmicro μ 10<sup>−6</sup>             0.000,001\r\n nano n 10<sup>−9</sup>             0.000,000,001\r\n pico p 10<sup>−12</sup>            0.000,000,000,001\r\n</pre>\r\n<h3 id=\"links\">Links</h3>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Engineering_notation\">Engineering notation</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Metric_prefix#List_of_SI_prefixes\">List of International System of Units (SI)</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3087\">hpr3087 :: Phonetic alphabet</a></li>\r\n</ul>\r\n',30,43,0,'CC-BY-SA','giga,mega,kilo,milli,micro,nano,pico,SI, International System of Units',0,0,1),
(3457,'2021-11-02','Tables',2260,'How and why I convert tables to lists','<p>\nMobile devices don\'t display them nicely.\nMost tables can be converted into a list:\n</p>\n\n<table>\n  <tr>\n    <th>OS</th><th>Init</th><th>Pkg</th>\n  </tr>\n<tr>\n<td>Fedora</td><td>systemd</td><td>dnf</td>\n</tr>\n<tr>\n<td>Slackware</td><td>BSD-style</td><td>slackpkg</td>\n</tr>\n<tr>\n<td>Gentoo</td><td>OpenRC</td><td>emerge</td>\n</tr>\n</table>\n\n<p>Can be represented as a list. In YAML terms, this is a <em>sequence</em> of <em>mappings</em>.\n</p>\n\n<ul><li>Fedora\n<ul><li>Init system: systemd</li>\n<li>Package manager: dnf</li>\n</ul></li>\n<li>Slackware\n<ul>\n<li>Init system: BSD-style</li>\n<li>Package manager: slackpkg</li>\n</ul></li>\n\n<li>Gentoo\n<ul>\n<li>Init system: OpenRC</li>\n<li>Package manager: emerge</li>\n</ul></li>\n</ul>\n\n<p>A table doesn\'t always translate exactly to a list, but it probably can be restructured. </p>\n\n<table>\n<tr>\n<th>OS</th><th>Open source</th><th>Landed on Mars</th></tr>\n<tr>\n<td>Linux</td><td>Yes</td><td>Yes</td>\n</tr>\n<tr>\n<td>BSD</td><td>Yes</td><td>No</td>\n</tr>\n<tr>\n<td>macOS</td><td>No</td><td>No</td>\n</tr>\n</table>\n\n<p>Could be written like this instead:</p>\n\n<p>Linux and BSD are open source operating systems, while macOS is not. Of these POSIX-compliant systems, only Linux has landed on Mars so far.</p>\n\n<p>That\'s pretty casual and loses the visual impact of a table or a list. So alternately, you could summarize what\'s common and highlight differences:</p>\n\n<p>\nThere are a few Linux systems on Mars.\nNeither BSD or macOS have yet landed on Mars.\n</p>\n\n<ul>\n<li>Linux and BSD are both open source.</li>\n<li>macOS is based partially on open source and includes components from the BSD, KDE, GNU, and other projects.</li>\n</ul>\n',78,4,0,'CC-BY-SA','data,tables,communication',0,0,1),
(3458,'2021-11-03','Living in the Terminal 2: The Obligatory Sequel',3648,'A very tired BlacKernel tries to handle feedback from the previous episode','<h2>Talking Points</h2>\r\n<ul>\r\n	<li>Listener Feedback\r\n		<ul>\r\n			<li>Dave Morriss and the Markdown/HTML debacle\r\n				<ul>\r\n					<li>Using validate_html</li>\r\n					<li>Podcast logistics etc.</li>\r\n				</ul>\r\n			</li>\r\n			<li>hackerdefo\'s suggestions\r\n				<ul>\r\n					<li>.less_termcap:<br/>\r\n					<pre>\r\nexport LESS_TERMCAP_mb=$(tput bold; tput setaf 2)\r\nexport LESS_TERMCAP_md=$(tput bold; tput setaf 6)\r\nexport LESS_TERMCAP_me=$(tput sgr0)\r\nexport LESS_TERMCAP_so=$(tput bold; tput setaf 3; tput setab 4)\r\nexport LESS_TERMCAP_se=$(tput rmso; tput sgr0)\r\nexport LESS_TERMCAP_us=$(tput smul; tput bold; tput setaf 7)\r\nexport LESS_TERMCAP_ue=$(tput rmul; tput sgr0)\r\nexport LESS_TERMCAP_mr=$(tput rev)\r\nexport LESS_TERMCAP_mh=$(tput dim)\r\nexport LESS_TERMCAP_ZN=$(tput ssubm)\r\nexport LESS_TERMCAP_ZV=$(tput rsubm)\r\nexport LESS_TERMCAP_ZO=$(tput ssupm)\r\nexport LESS_TERMCAP_ZW=$(tput rsupm)\r\n					</pre><br/>\r\n					.bashrc:<br/>\r\n					<pre>\r\nif [ -f $HOME/.less_termcap ];then\r\n	. $HOME/.less_termcap\r\nfi\r\n					</pre></li>\r\n					<li>poca, castero, and gpodder cli</li>\r\n					<li>My opinion on Python and Java</li>\r\n					<li>ProtonMail Bridge with mutt</li>\r\n				</ul>\r\n			</li>\r\n			<li>Comments from the last episode\r\n				<ul>\r\n					<li>(Please go to the last episode to read the full comments)</li>\r\n					<li>NOTE: If you want a timely response, please email me or mention me on Mastodon</li>\r\n					<li>Operat0r: Kids these days! https://www.nethack.org/</li>\r\n					<li>b-yeezi: +1 for cnus</li>\r\n					<li>sesamemucho: The text</li>\r\n					<li>Dave Morriss: Very enjoyable</li>\r\n					<li>Gumnos: Using \"c\" to pause in cmus</li>\r\n				</ul>\r\n			</li>\r\n		</ul>\r\n	</li>\r\n	<li>New Talking Points\r\n		<ul>\r\n			<li>Here Documents\r\n				<pre>\r\ncat &gt; text.txt &lt;&lt;EOF\r\nHello, World!\r\nEOF\r\n				</pre>\r\n			</li>\r\n			<li>NetHack</li>\r\n		</ul>\r\n	</li>\r\n</ul>\r\n\r\n<hr/>\r\n\r\n<h2>Show Notes</h2>\r\n<h4>Important Links:</h4>\r\n<ul>\r\n	<li><a href=\"https://hackerpublicradio.org/eps.php?id=3431\">HPR Episode 3431: Living in the Terminal by BlacKernel</a></li>\r\n	<li><a href=\"https://brian-thompson.medium.com/setting-up-the-mutt-mail-client-with-protonmail-49c042486b3\">ProtonMail Bridge with Mutt by Medium</a></li>\r\n	<li><a href=\"https://github.com/brokkr/poca/\">poca by brokkr</a></li>\r\n	<li><a href=\"https://github.com/xgi/castero\">castero by xgi</a></li>\r\n	<li><a href=\"https://gpodder.github.io/docs/user-manual.html#command-line-interface\">gpodder CLI interface</a></li>\r\n	<li><a href=\"https://www.nethack.org/\">NetHack (The best game ever)</a></li>\r\n</ul>\r\n\r\n<h4>Wikipedia Articles:</h4>\r\n<ul>\r\n	<li>None</li>\r\n</ul>\r\n\r\n<hr/>\r\n\r\n<i>Contact Me</i>\r\n<ul>\r\n<li><b>Email: </b><a href=\"mailto:izzyleibowitz@pm.me\">izzyleibowitz at pm dot me</a></li>\r\n<li><b>Mastodon: </b><a href=\"https://nixnet.social/BlacKernel\">at blackernel at nixnet dot social</a></li>\r\n</ul>\r\n',396,0,1,'CC-BY-SA','cli, linux, terminal, applications, picks, tired',0,0,1),
(3459,'2021-11-04','Linux Inlaws S01E42: The Open Source Initiative',4396,'The Open Source Initiative','<p>In this episode our two OAPs host Deb Nicholson, the general manager of the\r\nOpen Source Initiative (OSI). Apart from riveting insights into open source\r\nlicensing we discuss the greater FLOSS ecosystem and Deb\'s views on why\r\nwearing shoes is important in certain contexts, open source standards, law\r\nsuits and the differences between US and Europe among other things.</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>OSI: <a href=\"https://opensource.org\" target=_blank>https://opensource.org</a></li>\r\n<li>OSI\'s FLOSS definition: <a href=\"https://opensource.org/osd\" target=_blank>https://opensource.org/osd</a></li>\r\n<li>Commons Clause license: <a href=\"https://commonsclause.com\" target=_blank>https://commonsclause.com</a></li>\r\n<!-- <li>TerminusDB license change: <a href=\"https://blog.terminusdb.com/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb\" target=_blank>https://blog.terminusdb.com/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb</a></li> -->\r\n<li>TerminusDB license change: <a href=\"https://terminusdb.com/blog/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb/\" target=_blank>https://terminusdb.com/blog/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb/</a></li>\r\n<li>Open source licenses: <a href=\"https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licences\" target=_blank>https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licences</a></li>\r\n<li>Open Core model: <a href=\"https://en.wikipedia.org/wiki/Open-core_model\" target=_blank>https://en.wikipedia.org/wiki/Open-core_model</a></li>\r\n<li>Software Freedom Conservancy: <a href=\"https://sfconservancy.org\" target=_blank>https://sfconservancy.org</a></li>\r\n<li>Bruce Perens: <a href=\"https://en.wikipedia.org/wiki/Bruce_Perens\" target=_blank>https://en.wikipedia.org/wiki/Bruce_Perens</a></li>\r\n<li>Loki TV series: <a href=\"https://en.wikipedia.org/wiki/Loki_(TV_series)\" target=_blank>https://en.wikipedia.org/wiki/Loki_(TV_series)</a></li>\r\n<li>Luca movie: <a href=\"https://www.imdb.com/title/tt12801262/?ref_=fn_al_tt_1\" target=_blank>https://www.imdb.com/title/tt12801262/?ref_=fn_al_tt_1</a></li>\r\n<li>The Internet is made of cats: <a href=\"https://www.youtube.com/watch?v=zi8VTeDHjcM\" target=_blank>https://www.youtube.com/watch?v=zi8VTeDHjcM</a></li>\r\n<li>Gnome and systemd: <a href=\"https://blogs.gnome.org/benzea/2019/10/01/gnome-3-34-is-now-managed-using-systemd\" target=_blank>https://blogs.gnome.org/benzea/2019/10/01/gnome-3-34-is-now-managed-using-systemd</a></li>\r\n<li>Apparmor Profile: <a href=\"https://packages.debian.org/bullseye/apparmor-profiles\" target=_blank>https://packages.debian.org/bullseye/apparmor-profiles</a></li>\r\n<li>Apparmor Profile Extra: <a href=\"https://packages.debian.org/bullseye/apparmor-profiles-extra\" target=_blank>https://packages.debian.org/bullseye/apparmor-profiles-extra</a></li>\r\n</ul>\r\n\r\n<p><small><em>Editor\'s Note, 2021-12-09</em>: TerminusDB link changed as requested</small></p>\r\n',384,111,1,'CC-BY-SA','OSI, RMS, Open Core, the Cat Internet, Luca, Loki, open source licensing',0,0,1),
(3462,'2021-11-09','Metal marbles.',618,'Introduction of new host, with reference to semantic playgrounds.','<h2 id=\"title-metal-marbles.\">Title: Metal marbles.</h2>\r\n<h3 id=\"summary-introduction-of-host-with-reference-to-semantic-playgrounds.\">Summary: Introduction of host, with reference to semantic playgrounds.</h3>\r\n<p>Link to the rust converter recipe, which I found to be cheaper, and more sprayable than buckets of gel or paint-like substances which you might find elsewhere:</p>\r\n<p><a href=\"https://www.canada.ca/en/conservation-institute/services/conservation-preservation-publications/canadian-conservation-institute-notes/tannic-acid-rusted-iron-artifacts.html\" class=\"uri\">https://www.canada.ca/en/conservation-institute/services/conservation-preservation-publications/canadian-conservation-institute-notes/tannic-acid-rusted-iron-artifacts.html</a></p>\r\n<p>In case that link moves, search for tannic acid rust converters, then choose your buffers.</p>\r\n<p>Email:<br />\r\nhpr@spoons.one</p>\r\n<p>Mastodon, though very very rarely:<br />\r\n<span class=\"citation\" data-cites=\"one_of_spoons\">@one_of_spoons</span><span class=\"citation\" data-cites=\"hispagatos.space\">@hispagatos.space</span></p>',398,0,1,'CC-BY-SA','host zen',0,0,1),
(3472,'2021-11-23','consuming an AQI API',386,'just because the sky is clear, doesn\'t mean the air is safe to breathe','<h2>AQI</h2>\r\n<p>Air Quality Index - measures particles in the air</p>\r\n<ul>\r\n<li>\r\n<p>Ozone </p>\r\n<ul>\r\n<li>good at high altitudes</li>\r\n<li>bad on the earth surface <a href=\"https://en.wikipedia.org/wiki/Ozone#Low_level_ozone\">https://en.wikipedia.org/wiki/Ozone#Low_level_ozone</a></li>\r\n</ul>\r\n</li>\r\n<li>\r\n<p>PM2.5 </p>\r\n<ul>\r\n<li>Particulate Matter, 2.5 micrometers <a href=\"https://en.wikipedia.org/wiki/Particulates#Size,_shape_and_solubility_matter\">https://en.wikipedia.org/wiki/Particulates#Size,_shape_and_solubility_matter</a></li>\r\n</ul>\r\n</li>\r\n</ul>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Particulates#Wildfire_smoke_risk\">https://en.wikipedia.org/wiki/Particulates#Wildfire_smoke_risk</a></p>\r\n<h2>Getting AQI data</h2>\r\n<p>Determining air quality in my area is as simple as visiting <a href=\"https://www.airnow.gov\">https://www.airnow.gov</a> and entering my zip code. Although my zip code covers 139.56 square miles, the result is accurate enough for my needs. When my zip code was submitted, the web page did not refresh. This means that the client interface made an API call to the backend server. </p>\r\n<p>It sure would be nice if the AQI status was emailed to my phone every hour, if the AQI was above a certain threshold.  </p>\r\n<p>In order to get the data from the API, it is necessary to emulate the request made by the client to the API. This can be accomplished using Firefox.</p>\r\n<ul>\r\n<li>open Firefox</li>\r\n<li>go to <a href=\"https://www.airnow.gov\">https://www.airnow.gov</a></li>\r\n<li>open the Firefox developer tools, either through the menu or with CTRL+SHIFT+i</li>\r\n<li>in the dev tools, select the Network tab</li>\r\n<li>enter the zip code in the form and submit</li>\r\n<li>watch the Network tab for a POST request to https://airnowgovapi.com/reportingarea/get</li>\r\n<li>click on the request in the network tab</li>\r\n</ul>\r\n<p>Another set of tabs are now available to display various bits of information regarding the request. From this data, it is possible to recreate the query. \r\nHowever, I took an even easier route, and right-clicked on the query in the Network tab, and selected <code>Copy > Copy as cURL</code> to get the request as a curl command complete with all necessary arguments prefilled.  Since I didn\'t want to write my entire AQI fetching script in bash, I copied the curl command into a text file and ported the request to Ruby. </p>\r\n<h2>The Finished Script</h2>\r\n<pre><code>#!/usr/bin/env ruby\r\nrequire \'net/http\'\r\nrequire \'uri\'\r\nrequire \'json\'\r\n\r\nuri =\"https://airnowgovapi.com/reportingarea/get\"\r\nparsed_uri = URI.parse(uri)\r\npayload={latitude:39.88,longitude:-120.76,stateCode:\'CA\',maxDistance:50}\r\nresponse = Net::HTTP.post_form(parsed_uri, payload)\r\ndata = JSON.parse(response.body)[0]\r\naqi=data[\"aqi\"].to_i\r\ncategory=data[\'category\']\r\nparameter=data[\'parameter\']\r\n\r\noutput= \"#{parameter}: #{aqi} - #{category}\"\r\nputs output\r\n\r\n\r\n/opt/textjezra \"#{output}\"` if aqi > 70\r\n</code></pre>\r\n',243,25,0,'CC-BY-SA','ruby, api, programming',0,0,1),
